diff --git a/01_Code/physical_computing_interface/.DS_Store b/01_Code/physical_computing_interface/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7d0dddfdc9ef619267093ef33b77a5d6305dec4b Binary files /dev/null and b/01_Code/physical_computing_interface/.DS_Store differ diff --git a/01_Code/physical_computing_interface/app.js b/01_Code/physical_computing_interface/app.js index a4154368b2ca2d07c5fa4707e847bdeee25f1c98..2e6988828ebccf3bb13ceb9af0d49b25718e5fbd 100644 --- a/01_Code/physical_computing_interface/app.js +++ b/01_Code/physical_computing_interface/app.js @@ -16,3 +16,64 @@ initEditor();// todo enclose into class var assembler= new Assembler(three,GLOBALS,1,50,[new THREE.Vector3(0,0,0)],[new THREE.Vector3(GLOBALS.gridSize/2.0*GLOBALS.voxelSpacing,0,0)]); assembler.run(); + +var setup; +$.getJSON("./simulation/json/setup.json", function(json) { + setup=json.setup; + setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; + + +}); + +// var setup={//empty +// nodes: [ +// ], +// edges: [ +// ], + +// //material properties - AISI 1095 Carbon Steel (Spring Steel) +// ndofs : 3*6, + +// animation : { + +// showDisplacement : true, +// exageration : 2000, +// speed:3.0 + +// }, +// viz : { + + +// minStress:-500, +// maxStress: 500, +// colorMaps:[coolwarm,YlGnBu, winter ,jet], +// colorMap:0, + +// }, +// solve: solveFea, +// bar:false + +// }; +// var node=true; +// // init(); +// // initRhino3dm(1,10,createVoxelnotRhino,true,true); +// // play (); + +// // drawStructure(); +// // colorEdges(); +// // animate(); +// var size=5; + +document.addEventListener('runNode', function (e) { + // var tgt=cy.$id(e.detail.id); + // runNode(tgt); //local run node //TODO CHANGE ADD CLOSURE + // console.log(GLOBALS.occupancy); + // console.log(GLOBALS.timeline[0]); + // simulate(size,GLOBALS.timeline,createVoxelnotRhino ); + init(); + drawStructure(); + colorEdges(); + animate(); + +}, false); + diff --git a/01_Code/physical_computing_interface/globals.js b/01_Code/physical_computing_interface/globals.js index ecb3a6a816db00aa708bb5ec088437477c2e771a..a4c9917074db4ef92ef267c3e875dbd2182cebaf 100644 --- a/01_Code/physical_computing_interface/globals.js +++ b/01_Code/physical_computing_interface/globals.js @@ -220,7 +220,7 @@ function globals(utils){ }; - this.grid=this.gridPresets.Dice; + this.grid=this.gridPresets.Cubic; this.utils=utils; this.occupancy=[]; diff --git a/01_Code/physical_computing_interface/index.html b/01_Code/physical_computing_interface/index.html index 5157daa62deae898cc3e7353b785bfe9f2781b22..4c51eb0fea2e23028f7e7e01479f9f38b034a955 100644 --- a/01_Code/physical_computing_interface/index.html +++ b/01_Code/physical_computing_interface/index.html @@ -15,7 +15,7 @@ <div id="threejs"> <div id="threejs1"> <div class="header1"> - <i> 3D</i> + <i> Assembly</i> <!-- Three.js --> </div> @@ -31,16 +31,11 @@ <div id="threejs1"> <div class="header1"> <i> Simulation</i> - <!-- Three.js --> </div> - - <!-- <div id="webgl1"></div> --> <div class="dragbar2"></div> + <div id="webgl1"></div> + </div> - <!-- <div class="slidecontainer"> - <input type="range" min="0" max="0" value="1" class="slider" id="time"> - </div> --> - </div> @@ -134,6 +129,31 @@ <script src="./assembly/InverseKinematic.js"></script><!-- TODO LOCATION --> <script src="./assembly/voxel.js"></script><!-- TODO CHANGE TO DICE PIECES --> +<!-- simulation stuff --> +<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> +<script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> + +<!-- <script async type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> +<script async type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/compute.rhino3d.js"></script> --> + +<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + +<script src="./simulation/lib/stats.js"></script> +<script src="./simulation/lib/SVGRenderer.js"></script> +<script src="./simulation/lib/js-colormaps.js"></script> +<script src="./simulation/lib/LineSegments2.js"></script> +<script src="./simulation/lib/LineSegmentsGeometry.js"></script> +<script src="./simulation/lib/Line2.js"></script> +<script src="./simulation/lib/LineMaterial.js"></script> +<script src="./simulation/lib/LineGeometry.js"></script> +<script src="./simulation/lib/GeometryUtils.js"></script> + +<script src="./simulation/fea/beamFea.js"></script> +<script src="./simulation/visualization/geometry.js"></script> + +<script src="./simulation/visualization/utils.js"></script> +<script src="./simulation/visualization/main.js"></script> + <!-- code --> <script src="./globals.js"></script> <!-- event handling and GLOBALS,UTILS --> @@ -144,6 +164,8 @@ <script src="./json/json.js"></script><!-- json --> + + <script src="./app.js"></script><!-- threejs visualization --> @@ -168,6 +190,7 @@ $('.footer2').css("left",e.pageX+2); }) + onWindowResize();//todo change location }); $('.dragbar1').mousedown(function(e){ @@ -188,6 +211,7 @@ $('#simulation').css("top",e.pageY+2); }) + onWindowResize();//todo change location }); $(document).mouseup(function(e){ diff --git a/01_Code/physical_computing_interface/rhino3dm.wasm b/01_Code/physical_computing_interface/rhino3dm.wasm new file mode 100644 index 0000000000000000000000000000000000000000..bb9fd4db64ebbc879af5f5e916466ea791876dc8 Binary files /dev/null and b/01_Code/physical_computing_interface/rhino3dm.wasm differ diff --git a/01_Code/physical_computing_interface/simulation/.DS_Store b/01_Code/physical_computing_interface/simulation/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..2e3e2ad91ff3cd598996d669a864298882b349a4 Binary files /dev/null and b/01_Code/physical_computing_interface/simulation/.DS_Store differ diff --git a/01_Code/physical_computing_interface/simulation/app.js b/01_Code/physical_computing_interface/simulation/app.js new file mode 100644 index 0000000000000000000000000000000000000000..a98c261621bbac8be2260ed540a040eff04f6e74 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/app.js @@ -0,0 +1,74 @@ +// "use strict"; +var node=true; +var fs = require('fs'); +var THREE=require('three'); +var tf=require('@tensorflow/tfjs'); +const {performance, PerformanceObserver} = require('perf_hooks'); +const editJsonFile = require("edit-json-file"); +eval(fs.readFileSync("./lib/rhino3dm.js")+''); +eval(fs.readFileSync("./lib/js-colormaps.js")+''); + + +////////////////////load +let inputFile = editJsonFile(`${__dirname}/json/emptySetup.json`); +let outputFile = editJsonFile(`${__dirname}/json/setupTest.json`); +var setup=inputFile.toObject(); + +function saveJSON(){ + // console.log(setup); + outputFile.set("setup", setup); + outputFile.save(); +} +////////////////////////////////// +eval(fs.readFileSync("./visualization/utils.js")+''); + +eval(fs.readFileSync("./fea/beamFea.js")+''); +eval(fs.readFileSync('./visualization/geometry.js')+''); + + +//////////////////////spawn julia//////////////////////// + +// const { spawn } = require('child_process'); +// console.log("hi") +// // const ls = spawn('ls', ['', '../']); +// const ls = spawn('julia', ['counter.jl', __dirname]); +// // const npm = which.sync('npm'); +// // console.log(npm) +// // const child = spawn('dir'); + + +// ls.stdout.on('data', (data) => { +// console.log(`stdout: ${data}`); +// }); + +// ls.stderr.on('data', (data) => { +// console.error(`stderr: ${data}`); +// }); + +// ls.on('close', (code) => { +// console.log(`child process exited with code ${code}`); +// }); + + +//////////////////////////////serve ///////////////// + +// var http = require('http'); + +// var finalhandler = require('finalhandler'); +// var serveStatic = require('serve-static'); + +// var serve = serveStatic("./"); + +// var server = http.createServer(function(req, res) { +// var done = finalhandler(req, res); +// serve(req, res, done); +// }); + +// var port=8080; +// server.listen(8080); + +// console.log(`Server listening on port ${port}`); +// console.log(setup) + + + diff --git a/01_Code/physical_computing_interface/simulation/demos/index.html b/01_Code/physical_computing_interface/simulation/demos/index.html new file mode 100644 index 0000000000000000000000000000000000000000..c544dc60b13cd584aca0a6081ff392abcf5406b7 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/index.html @@ -0,0 +1,70 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>MetaVoxel</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> + <!-- <link type="text/css" rel="stylesheet" href="main.css"> --> + <style> + body { + background-color: #f0f0f0; + color: #444; + } + a { + color: #08f; + } + </style> + </head> + <body> + <div id="container"></div> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> + + <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> + + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + + <!-- <script src="./lib/require.js"></script> --> + + <script src="../lib/three.min.js"></script> + + <script src="../lib/stats.js"></script> + <script src="../lib/dat.gui.js"></script> + + <script src="../lib/SVGRenderer.js"></script> + + + <script src="../lib/DragControls.js"></script> + <script src="../lib/OrbitControls.js"></script> + <script src="../lib/TransformControls.js"></script> + + <script src="../lib/js-colormaps.js"></script> + <script src="../lib/LineSegments2.js"></script> + <script src="../lib/LineSegmentsGeometry.js"></script> + <script src="../lib/Line2.js"></script> + <script src="../lib/LineMaterial.js"></script> + <script src="../lib/LineGeometry.js"></script> + <script src="../lib/GeometryUtils.js"></script> + + <script src="../visualization/utils.js"></script> + + <!-- <script src="./beamFea.js"></script> + <script src="./geometry.js"></script> --> + <script src="../visualization/main.js"></script> + + <script> + $.getJSON("../json/setup.json", function(json) { + setup=json.setup; + setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; + init(); + drawStructure(); + colorEdges(); + animate(); + + }); + </script> + + + + + </body> +</html> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexChiral.html b/01_Code/physical_computing_interface/simulation/demos/indexChiral.html new file mode 100644 index 0000000000000000000000000000000000000000..97fda45c89cb198bc785a2806842d9fae720148a --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/indexChiral.html @@ -0,0 +1,70 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>MetaVoxel</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> + <!-- <link type="text/css" rel="stylesheet" href="main.css"> --> + <style> + body { + background-color: #f0f0f0; + color: #444; + } + a { + color: #08f; + } + </style> + </head> + <body> + <div id="container"></div> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> + + <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> + + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + + <!-- <script src="./lib/require.js"></script> --> + + <script src="../lib/three.min.js"></script> + + <script src="../lib/stats.js"></script> + <script src="../lib/dat.gui.js"></script> + + <script src="../lib/SVGRenderer.js"></script> + + + <script src="../lib/DragControls.js"></script> + <script src="../lib/OrbitControls.js"></script> + <script src="../lib/TransformControls.js"></script> + + <script src="../lib/js-colormaps.js"></script> + <script src="../lib/LineSegments2.js"></script> + <script src="../lib/LineSegmentsGeometry.js"></script> + <script src="../lib/Line2.js"></script> + <script src="../lib/LineMaterial.js"></script> + <script src="../lib/LineGeometry.js"></script> + <script src="../lib/GeometryUtils.js"></script> + + <script src="../visualization/utils.js"></script> + + <!-- <script src="./beamFea.js"></script> + <script src="./geometry.js"></script> --> + <script src="../visualization/main.js"></script> + + <script> + $.getJSON("../json/setupChiral.json", function(json) { + setup=json.setup; + setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; + init(); + drawStructure(); + colorEdges(); + animate(); + + }); + </script> + + + + + </body> +</html> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexChiral3.html b/01_Code/physical_computing_interface/simulation/demos/indexChiral3.html new file mode 100644 index 0000000000000000000000000000000000000000..9d6c3938de4d94d2894f1208f7ed7c20cc2c1181 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/indexChiral3.html @@ -0,0 +1,70 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>MetaVoxel</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> + <!-- <link type="text/css" rel="stylesheet" href="main.css"> --> + <style> + body { + background-color: #f0f0f0; + color: #444; + } + a { + color: #08f; + } + </style> + </head> + <body> + <div id="container"></div> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> + + <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> + + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + + <!-- <script src="./lib/require.js"></script> --> + + <script src="../lib/three.min.js"></script> + + <script src="../lib/stats.js"></script> + <script src="../lib/dat.gui.js"></script> + + <script src="../lib/SVGRenderer.js"></script> + + + <script src="../lib/DragControls.js"></script> + <script src="../lib/OrbitControls.js"></script> + <script src="../lib/TransformControls.js"></script> + + <script src="../lib/js-colormaps.js"></script> + <script src="../lib/LineSegments2.js"></script> + <script src="../lib/LineSegmentsGeometry.js"></script> + <script src="../lib/Line2.js"></script> + <script src="../lib/LineMaterial.js"></script> + <script src="../lib/LineGeometry.js"></script> + <script src="../lib/GeometryUtils.js"></script> + + <script src="../visualization/utils.js"></script> + + <!-- <script src="./beamFea.js"></script> + <script src="./geometry.js"></script> --> + <script src="../visualization/main.js"></script> + + <script> + $.getJSON("../json/setupChiral3.json", function(json) { + setup=json.setup; + setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; + init(); + drawStructure(); + colorEdges(); + animate(); + + }); + </script> + + + + + </body> +</html> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexDrone.html b/01_Code/physical_computing_interface/simulation/demos/indexDrone.html new file mode 100644 index 0000000000000000000000000000000000000000..277ebda81f45e098cd499612eb76fe4569d166e7 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/indexDrone.html @@ -0,0 +1,86 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>MetaVoxel</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> + <!-- <link type="text/css" rel="stylesheet" href="main.css"> --> + <style> + body { + background-color: #f0f0f0; + color: #444; + } + a { + color: #08f; + } + </style> + </head> + <body> + <div id="container"></div> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> + + <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> + + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + + <!-- <script src="./lib/require.js"></script> --> + + <script src="../lib/three.min.js"></script> + + <script src="../lib/stats.js"></script> + <script src="../lib/dat.gui.js"></script> + + <script src="../lib/SVGRenderer.js"></script> + + + <script src="../lib/DragControls.js"></script> + <script src="../lib/OrbitControls.js"></script> + <script src="../lib/TransformControls.js"></script> + + <script src="../lib/js-colormaps.js"></script> + <script src="../lib/LineSegments2.js"></script> + <script src="../lib/LineSegmentsGeometry.js"></script> + <script src="../lib/Line2.js"></script> + <script src="../lib/LineMaterial.js"></script> + <script src="../lib/LineGeometry.js"></script> + <script src="../lib/GeometryUtils.js"></script> + + <script src="../visualization/utils.js"></script> + + <!-- <script src="./beamFea.js"></script> + <script src="./geometry.js"></script> --> + <script src="../visualization/main.js"></script> + + <script src="../fea/flight.js"></script> + + <script src="../json/setupFlight.js"></script> + + <script> + var numTimeSteps=100; + var dt=0.01; //?? todo change to recommended step + initialize(setup); + // for(var i=0;i<numTimeSteps;i++){ + // doTimeStep(setup,dt); + // } + + // $.getJSON("../json/setupChiral.json", function(json) { + // setup=json.setup; + // setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; + // init(); + // drawStructure(); + // colorEdges(); + // animate(); + + // }); + + init(); + drawStructure(); + colorEdges(); + animateEuler(); + </script> + + + + + </body> +</html> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexParallel.html b/01_Code/physical_computing_interface/simulation/demos/indexParallel.html new file mode 100644 index 0000000000000000000000000000000000000000..00c931c032efa47f889109a4147d95dab64691ff --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/indexParallel.html @@ -0,0 +1,86 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>MetaVoxel</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> + <!-- <link type="text/css" rel="stylesheet" href="main.css"> --> + <style> + body { + background-color: #f0f0f0; + color: #444; + } + a { + color: #08f; + } + </style> + </head> + <body> + <div id="container"></div> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> + + <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> + + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + + <!-- <script src="./lib/require.js"></script> --> + + <script src="../lib/three.min.js"></script> + + <script src="../lib/stats.js"></script> + <script src="../lib/dat.gui.js"></script> + + <script src="../lib/SVGRenderer.js"></script> + + + <script src="../lib/DragControls.js"></script> + <script src="../lib/OrbitControls.js"></script> + <script src="../lib/TransformControls.js"></script> + + <script src="../lib/js-colormaps.js"></script> + <script src="../lib/LineSegments2.js"></script> + <script src="../lib/LineSegmentsGeometry.js"></script> + <script src="../lib/Line2.js"></script> + <script src="../lib/LineMaterial.js"></script> + <script src="../lib/LineGeometry.js"></script> + <script src="../lib/GeometryUtils.js"></script> + + <script src="../visualization/utils.js"></script> + + <!-- <script src="./beamFea.js"></script> + <script src="./geometry.js"></script> --> + <script src="../visualization/main.js"></script> + + <script src="../fea/parallelFea.js"></script> + + <script src="../json/parallelCube.js"></script> + + <script> + var numTimeSteps=100; + var dt=0.01; //?? todo change to recommended step + initialize(setup); + for(var i=0;i<numTimeSteps;i++){ + doTimeStep(setup,dt); + } + + // $.getJSON("../json/setupChiral.json", function(json) { + // setup=json.setup; + // setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; + // init(); + // drawStructure(); + // colorEdges(); + // animate(); + + // }); + + init(); + drawStructure(); + colorEdges(); + animate(); + </script> + + + + + </body> +</html> diff --git a/01_Code/physical_computing_interface/simulation/demos/indexScaling.html b/01_Code/physical_computing_interface/simulation/demos/indexScaling.html new file mode 100644 index 0000000000000000000000000000000000000000..87d753712436bfd048d95a02d17c52b2fb231958 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/demos/indexScaling.html @@ -0,0 +1,70 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <title>MetaVoxel</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> + <!-- <link type="text/css" rel="stylesheet" href="main.css"> --> + <style> + body { + background-color: #f0f0f0; + color: #444; + } + a { + color: #08f; + } + </style> + </head> + <body> + <div id="container"></div> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> + + <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> + + <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script> + + <!-- <script src="./lib/require.js"></script> --> + + <script src="../lib/three.min.js"></script> + + <script src="../lib/stats.js"></script> + <script src="../lib/dat.gui.js"></script> + + <script src="../lib/SVGRenderer.js"></script> + + + <script src="../lib/DragControls.js"></script> + <script src="../lib/OrbitControls.js"></script> + <script src="../lib/TransformControls.js"></script> + + <script src="../lib/js-colormaps.js"></script> + <script src="../lib/LineSegments2.js"></script> + <script src="../lib/LineSegmentsGeometry.js"></script> + <script src="../lib/Line2.js"></script> + <script src="../lib/LineMaterial.js"></script> + <script src="../lib/LineGeometry.js"></script> + <script src="../lib/GeometryUtils.js"></script> + + <script src="../visualization/utils.js"></script> + + <!-- <script src="./beamFea.js"></script> + <script src="./geometry.js"></script> --> + <script src="../visualization/main.js"></script> + + <script> + $.getJSON("../json/setupScaling.json", function(json) { + setup=json.setup; + setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet]; + init(); + drawStructure(); + colorEdges(); + animate(); + + }); + </script> + + + + + </body> +</html> diff --git a/01_Code/physical_computing_interface/simulation/fea/barFea.js b/01_Code/physical_computing_interface/simulation/fea/barFea.js new file mode 100644 index 0000000000000000000000000000000000000000..c209ada239761634a785c4682bd5f9e30cb58604 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/fea/barFea.js @@ -0,0 +1,186 @@ +////////////3D bar-truss fea///////////////////// +function solveFea(){ + // # determine the global matrices + var M,K,F; + [M,K,F]=getMatrices(setup); + // M.print(); + // K.print(); + // F.print(); + + // M, K, F = get_matrices(properties) + + // [Q,R]=tf.linalg.qr(K); + + var displacements=lusolve(K.arraySync(), F.arraySync(),false); + // console.log(displacements); + + updateDisplacement(displacements); + var X= tf.tensor(displacements);//change later to more effecient solver + console.log("Displacements:") + X.print(); + + // # determine the stresses in each element + var stresses = get_stresses(setup, displacements); + updateStresses(stresses.arraySync()); + + console.log("Stresses:"); + stresses.print() + + // console.log(setup); + //TODO CHECK SINGULARITY AND DOFSC + +} + +function getMatrices(setup){ + + + var M = tf.zeros([setup.ndofs,setup.ndofs]); + var K = tf.zeros([setup.ndofs,setup.ndofs]); + + for(var ii=0;ii<setup.edges.length;ii++){ + var element=setup.edges[ii]; + var fromPoint= toTf3D(setup.nodes[element.source].position); + var toPoint= toTf3D(setup.nodes[element.target].position); + var dofs=[]; + dofs.push(...setup.nodes[element.source].degrees_of_freedom); + dofs.push(...setup.nodes[element.target].degrees_of_freedom); + + var element_vector=tf.sub (toPoint,fromPoint); + + + var length = element_vector.norm(); + var rho = tf.scalar(element.density); + var area = tf.scalar(element.area); + var E = tf.scalar(element.stiffness);// youngs modulus + + var Cm = tf.div(tf.mul(rho,tf.mul(area,length)),tf.scalar(6.0));//rho * area * length /6.0 + var Ck= tf.div(tf.mul(E,area),length);//E * area / length + // Cm.print(); + + var m = tf.tensor ([[2,1],[1,2]]) ; + var k = tf.tensor([[1,-1],[-1,1]]); + + var x_axis=tf.tensor ([1,0,0]); + var y_axis=tf.tensor ([0,1,0]); + var z_axis=tf.tensor ([0,0,1]); + + // # find rotated mass and stifness matrices + var tau = rotation_matrix(element_vector, x_axis,y_axis,z_axis); + var m_r=tf.matMul(tau,tf.matMul(m,tau) ,true ,false) //tau.T.dot(m).dot(tau) + var k_r=tf.matMul(tau,tf.matMul(k,tau) ,true ,false) //tau.T.dot(k).dot(tau) + + // # change from element to global coordinate + var B=tf.zeros([6,setup.ndofs]); + var B=[] + for(var i=0;i<6;i++){ + B.push([]); + for(var j=0;j<setup.ndofs;j++){ + B[i].push(0.0); + } + } + for(var i=0;i<6;i++){ + B[i][dofs[i]]=1.0; + } + + B=tf.tensor(B); + // B.print() + + + var M_rG=tf.matMul(B,tf.matMul(m_r,B) ,true ,false) //B.T.dot(m_r).dot(B) + var K_rG=tf.matMul(B,tf.matMul(k_r,B) ,true ,false) //B.T.dot(k_r).dot(B) + + M=tf.add(M,tf.mul(Cm, M_rG)); //+= Cm * M_rG + K=tf.add(K,tf.mul(Ck, K_rG)); //+= Ck * K_rG + + } + + + + // # construct the force vector + var F=[]; + for(var i=0;i<setup.nodes.length;i++){ + F.push(setup.nodes[i].force.x); + F.push(setup.nodes[i].force.y); + F.push(setup.nodes[i].force.z); + } + F=tf.tensor(F); + // # remove the restrained dofs + var remove_indices=[]; + for(var i=0;i<setup.nodes.length;i++){ + for(var j=0;j<setup.nodes[i].degrees_of_freedom.length;j++){ + if(setup.nodes[i].restrained_degrees_of_freedom[j]){ + remove_indices.push(setup.nodes[i].degrees_of_freedom[j]); + } + } + } + // M.print(); + // K.print(); + // F.print(); + + for(var i=0;i<2;i++){ + M=tf_delete(M,remove_indices,i); + K=tf_delete(K,remove_indices,i); + } + + + F=tf_delete(F,remove_indices,0); + + // M.print() + // K.print() + // F.print() + return [ M,K,F ] +} + +function get_stresses(setup,X){ + // # find the stresses in each member + var stresses=[]; + for(var ii=0;ii<setup.edges.length;ii++){ + var element=setup.edges[ii]; + // # find the element geometry + var fromPoint= toTf3D(setup.nodes[element.source].position); + var toPoint= toTf3D(setup.nodes[element.target].position); + var dofs=[]; + dofs.push(...setup.nodes[element.source].degrees_of_freedom); + dofs.push(...setup.nodes[element.target].degrees_of_freedom); + var element_vector=tf.sub (toPoint,fromPoint); + + var x_axis=tf.tensor ([1,0,0]); + var y_axis=tf.tensor ([0,1,0]); + var z_axis=tf.tensor ([0,0,1]); + + // # find rotated mass and stifness matrices + var tau = rotation_matrix(element_vector, x_axis,y_axis,z_axis); + + var global_displacements=tf.tensor([setup.nodes[element.source].displacement.x,setup.nodes[element.source].displacement.y,setup.nodes[element.source].displacement.z, + setup.nodes[element.target].displacement.x,setup.nodes[element.target].displacement.y,setup.nodes[element.target].displacement.z]) //# todo change + + // # nodal displacement + var q=tf.dot(tau,global_displacements); + var q=tf.unstack(q); + + var strain=tf.div(tf.sub(q[1],q[0]),element_vector.norm()); //todo check smarter way to do it + + var E = tf.scalar(element.stiffness); + var stress=tf.mul(E,strain); + stresses.push(stress); + } + + return tf.stack(stresses,0); +} + +///////utils//////// +function rotation_matrix(element_vector, x_axis, y_axis, z_axis){ + // # find the direction cosines + var x_proj = direction_cosine(element_vector, x_axis); + var y_proj = direction_cosine(element_vector, y_axis); + var z_proj = direction_cosine(element_vector, z_axis); + var zero=tf.tensor([0]); + var temp1=tf.concat([x_proj.expandDims(0), y_proj.expandDims(0), z_proj.expandDims(0), zero, zero, zero]); + var temp2=tf.concat([ zero, zero, zero, x_proj.expandDims(0), y_proj.expandDims(0), z_proj.expandDims(0)]); + return tf.stack([temp1,temp2]); + +} + +function direction_cosine(vec1, vec2){ + return tf.div(tf.dot(vec1,vec2) ,tf.mul( vec1.norm() , vec2.norm())); +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/fea/beamFea.js b/01_Code/physical_computing_interface/simulation/fea/beamFea.js new file mode 100644 index 0000000000000000000000000000000000000000..788518da337c70ecb5f00c81adb378cbd2b4d55f --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/fea/beamFea.js @@ -0,0 +1,274 @@ +////////////3D bar-truss fea///////////////////// +function solveFea(){ + // # determine the global matrices + var M,K,F; + var t0 = performance.now(); + [M,K,F]=getMatrices(setup); + var t1 = performance.now(); + console.log("Call to getMatrices " + (t1 - t0) + " milliseconds."); + + + // M.print(); + // K.print(); + // F.print(); + + // M, K, F = get_matrices(properties) + + // [Q,R]=tf.linalg.qr(K); + t0 = performance.now(); + var displacements=lusolve(K.arraySync(), F.arraySync(),false); + t1 = performance.now(); + console.log("Call to invert " + (t1 - t0) + " milliseconds."); + // console.log(displacements); + + updateDisplacement(displacements); + var X= tf.tensor(displacements);//change later to more effecient solver + console.log("Displacements:"); + X.print(); + + // # determine the stresses in each element + var stresses = get_stresses(setup, displacements); + updateStresses(stresses.arraySync()); + + console.log("Stresses:"); + stresses.print(); + + // console.log(setup); + + // console.log(setup); + //TODO CHECK SINGULARITY AND DOFSC + +} + +function getMatrices(setup){ + + + var M = tf.zeros([setup.ndofs,setup.ndofs]); + var K = tf.zeros([setup.ndofs,setup.ndofs]); + + for(var ii=0;ii<setup.edges.length;ii++){ + var element=setup.edges[ii]; + var fromPoint= toTf3D(setup.nodes[element.source].position); + var toPoint= toTf3D(setup.nodes[element.target].position); + var dofs=[]; + dofs.push(...setup.nodes[element.source].degrees_of_freedom); + dofs.push(...setup.nodes[element.target].degrees_of_freedom); + + var element_vector=tf.sub (toPoint,fromPoint); + + + var length = element_vector.norm(); + var rho = tf.scalar(element.density); + var A = element.area; + var E = element.stiffness;// youngs modulus + var G=1.0;//todo shear_modulus + var ixx = 1.0;//todo section ixx + var iyy = 1.0;//todo section.iyy// + var l0=length.dataSync(); + var j=1.0;//todo check + var l02 = l0 * l0; + var l03 = l0 * l0 * l0; + + + + // var Cm = tf.div(tf.mul(rho,tf.mul(area,length)),tf.scalar(6.0));//rho * area * length /6.0 + // var Ck= tf.div(tf.mul(E,area),length);//E * area / length + // Cm.print(); + + // var m = tf.tensor ([[2,1],[1,2]]) ; + // var k = tf.tensor([[1,-1],[-1,1]]); + k = tf.tensor([ + [E*A/l0, 0, 0, 0, 0, 0, -E*A/l0, 0, 0, 0, 0, 0], + [0, 12*E*ixx/l03, 0, 0, 0, 6*E*ixx/l02, 0, -12*E*ixx/l03, 0, 0, 0, 6*E*ixx/l02], + [0, 0, 12*E*iyy/l03, 0, -6*E*iyy/l02, 0, 0, 0, -12*E*iyy/l03, 0, -6*E*iyy/l02, 0], + [0, 0, 0, G*j/l0, 0, 0, 0, 0, 0, -G*j/l0, 0, 0], + [0, 0, -6*E*iyy/l02, 0, 4*E*iyy/l0, 0, 0, 0, 6*E*iyy/l02, 0, 2*E*iyy/l0, 0], + [0, 6*E*ixx/l02, 0, 0, 0, 4*E*ixx/l0, 0, -6*E*ixx/l02, 0, 0, 0, 2*E*ixx/l0], + [-E*A/l0, 0, 0, 0, 0, 0, E*A/l0, 0, 0, 0, 0, 0], + [0, -12*E*ixx/l03, 0, 0, 0, -6*E*ixx/l02, 0, 12*E*ixx/l03, 0, 0, 0, -6*E*ixx/l02], + [0, 0, -12*E*iyy/l03, 0, 6*E*iyy/l02, 0, 0, 0, 12*E*iyy/l03, 0, 6*E*iyy/l02, 0], + [0, 0, 0, -G*j/l0, 0, 0, 0, 0, 0, G*j/l0, 0, 0], + [0, 0, -6*E*iyy/l02, 0, 2*E*iyy/l0, 0, 0, 0, 6*E*iyy/l02, 0, 4*E*iyy/l0, 0], + [0, 6*E*ixx/l02, 0, 0, 0, 2*E*ixx/l0, 0, -6*E*ixx/l02, 0, 0, 0, 4*E*ixx/l0] + ]); + + var x_axis=tf.tensor ([1,0,0]); + var y_axis=tf.tensor ([0,1,0]); + var z_axis=tf.tensor ([0,0,1]); + + // # find rotated mass and stifness matrices + var tau = rotation_matrix(element_vector, x_axis,y_axis,z_axis); + // var m_r=tf.matMul(tau,tf.matMul(m,tau) ,true ,false) //tau.T.dot(m).dot(tau) + var k_r=tf.matMul(tau,tf.matMul(k,tau) ,true ,false) //tau.T.dot(k).dot(tau) + + // # change from element to global coordinate + // var B=tf.zeros([12,setup.ndofs]); + var B=[]; + for(var i=0;i<12;i++){ + B.push([]); + for(var j=0;j<setup.ndofs;j++){ + B[i].push(0.0); + } + } + for(var i=0;i<12;i++){ + B[i][dofs[i]]=1.0; + } + + B=tf.tensor(B); + // B.print(); + + + // var M_rG=tf.matMul(B,tf.matMul(m_r,B) ,true ,false) //B.T.dot(m_r).dot(B) + var K_rG=tf.matMul(B,tf.matMul(k_r,B) ,true ,false) //B.T.dot(k_r).dot(B) + + // M=tf.add(M,tf.mul(Cm, M_rG)); //+= Cm * M_rG + // K=tf.add(K,tf.mul(Ck, K_rG)); //+= Ck * K_rG + K=tf.add(K, K_rG); //+= Ck * K_rG + + } + + + + // # construct the force vector + var F=[]; + for(var i=0;i<setup.nodes.length;i++){ + F.push(setup.nodes[i].force.x); + F.push(setup.nodes[i].force.y); + F.push(setup.nodes[i].force.z); + F.push(0.0); + F.push(0.0); + F.push(0.0); + } + F=tf.tensor(F); + // # remove the restrained dofs + var remove_indices=[]; + for(var i=0;i<setup.nodes.length;i++){ + for(var j=0;j<setup.nodes[i].degrees_of_freedom.length;j++){ + if(setup.nodes[i].restrained_degrees_of_freedom[j]){ + remove_indices.push(setup.nodes[i].degrees_of_freedom[j]); + } + } + } + // M.print(); + // K.print(); + // F.print(); + + for(var i=0;i<2;i++){ + M=tf_delete(M,remove_indices,i); + K=tf_delete(K,remove_indices,i); + } + + + F=tf_delete(F,remove_indices,0); + + // M.print() + // K.print() + // F.print() + return [ M,K,F ]; +} + +function get_stresses(setup,X){ + // # find the stresses in each member + var stresses=[]; + for(var ii=0;ii<setup.edges.length;ii++){ + var element=setup.edges[ii]; + // # find the element geometry + var fromPoint= toTf3D(setup.nodes[element.source].position); + var toPoint= toTf3D(setup.nodes[element.target].position); + var dofs=[]; + dofs.push(...setup.nodes[element.source].degrees_of_freedom); + dofs.push(...setup.nodes[element.target].degrees_of_freedom); + var element_vector=tf.sub (toPoint,fromPoint); + + var x_axis=tf.tensor ([1,0,0]); + var y_axis=tf.tensor ([0,1,0]); + var z_axis=tf.tensor ([0,0,1]); + + // # find rotated mass and stifness matrices + var tau = rotation_matrix(element_vector, x_axis,y_axis,z_axis); + + var global_displacements=tf.tensor([setup.nodes[element.source].displacement.x,setup.nodes[element.source].displacement.y,setup.nodes[element.source].displacement.z, + setup.nodes[element.source].angle.x,setup.nodes[element.source].angle.y,setup.nodes[element.source].angle.z, + setup.nodes[element.target].displacement.x,setup.nodes[element.target].displacement.y,setup.nodes[element.target].displacement.z, + setup.nodes[element.target].angle.x,setup.nodes[element.target].angle.y,setup.nodes[element.target].angle.z]) //# todo change + + // # nodal displacement + var q=tf.dot(tau,global_displacements); + // console.log("q"); + // q.print(); + var q=tf.unstack(q); + // console.log(q); + + var strain=tf.div(tf.sub(q[6],q[0]),element_vector.norm()); //todo check smarter way to do it + //stress x axis + var E = tf.scalar(element.stiffness); + var stress=tf.mul(E,strain); + stresses.push(stress); + } + + return tf.stack(stresses,0); +} + +///////utils//////// + +function rotation_matrix(element_vector,x_axis, y_axis, z_axis){ //todo check again + + var L=element_vector.norm().arraySync(); + element_vector=element_vector.arraySync(); + // x1 = self.iNode.X + // x2 = self.jNode.X + // y1 = self.iNode.Y + // y2 = self.jNode.Y + // z1 = self.iNode.Z + // z2 = self.jNode.Z + // L = self.L + + // # Calculate direction cosines for the transformation matrix + var l = (element_vector[0])/L; + var m = (element_vector[1])/L; + var n = (element_vector[2])/L; + var D = ( l**2+ m **2+n**2)**0.5; + // console.log(D); + + // if l == 0 and m == 0 and n > 0: + // dirCos = matrix([[0, 0, 1], + // [0, 1, 0], + // [-1, 0, 0]]) + // elif l == 0 and m == 0 and n < 0: + // dirCos = matrix([[0, 0, -1], + // [0, 1, 0], + // [1, 0, 0]]) + // else: + // dirCos = matrix([[l, m, n], + // [-m/D, l/D, 0], + // [-l*n/D, -m*n/D, D]]) + + var transMatrix=tf.tensor([ + [ l, m, n, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ -m/D, l/D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ -l*n/D, -m*n/D, D, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, l, m, n, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, -m/D, l/D, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, -l*n/D, -m*n/D, D, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, l, m, n, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, -m/D, l/D, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, -l*n/D, -m*n/D, D, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, l, m, n], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, -m/D, l/D, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, -l*n/D, -m*n/D, D] + ]); + + + // # Build the transformation matrix + // transMatrix = zeros((12, 12)) + // transMatrix[0:3, 0:3] = dirCos + // transMatrix[3:6, 3:6] = dirCos + // transMatrix[6:9, 6:9] = dirCos + // transMatrix[9:12, 9:12] = dirCos + + return transMatrix; +} + +function direction_cosine(vec1, vec2){ + return tf.div(tf.dot(vec1,vec2) ,tf.mul( vec1.norm() , vec2.norm())); +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/fea/flight.js b/01_Code/physical_computing_interface/simulation/fea/flight.js new file mode 100644 index 0000000000000000000000000000000000000000..21a4a3f38d3bf32d6674209c3213792840a86139 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/fea/flight.js @@ -0,0 +1,124 @@ +function initialize(setup){ + var voxCount = setup.nodes.length; + for(var i=0;i<voxCount;i++){ + setup.nodes[i].currPosition=new THREE.Vector3(setup.nodes[i].position.x,setup.nodes[i].position.y,setup.nodes[i].position.z); + } +} + + + +function doTimeStep(setup,dt){ + var voxCount = setup.nodes.length; + for(var i=0;i<voxCount;i++){ + timeStep(dt,setup.nodes[i]); + } + +} + +function timeStep(dt,node){ + // var previousDt = dt; + // var linMom=node.linMom.clone(); + // var angMom=node.angMom.clone(); + // var orient=node.orient.clone(); + // var pos=new THREE.Vector3(node.currPosition.x,node.currPosition.y,node.currPosition.z); + var massInverse=1.0;//todo ?? later change + + //Translation + var curForce = force(node); + + // Calculate acceleration ( F = ma ) + var A = curForce.clone().multiplyScalar(massInverse); + + // Integrate to get velocity + node.velocity.add(A.clone().multiplyScalar(dt)); + + // Integrate to get position + node.currPosition.add(node.velocity.clone().multiplyScalar(dt)); + + + //var fricForce = curForce.clone(); + + //if (isFloorEnabled()) floorForce(dt, &curForce); //floor force needs dt to calculate threshold to "stop" a slow voxel into static friction. + + //fricForce = curForce - fricForce; + + //assert(!(curForce.x != curForce.x) || !(curForce.y != curForce.y) || !(curForce.z != curForce.z)); //assert non QNAN + // linMom.add(curForce).multiplyScalar(dt); + + // var translate=linMom.clone().multiplyScalar(dt*massInverse);//??massInverse + + // // we need to check for friction conditions here (after calculating the translation) and stop things accordingly + // if (isFloorEnabled() && floorPenetration() >= 0){ //we must catch a slowing voxel here since it all boils down to needing access to the dt of this timestep. + // double work = fricForce.x*translate.x + fricForce.y*translate.y; //F dot disp + // double hKe = 0.5*mat->_massInverse*(linMom.x*linMom.x + linMom.y*linMom.y); //horizontal kinetic energy + + + + // pos.add(translate); + // node.currPosition=pos.clone(); + // node.displacement={ + // x:translate.x+node.displacement.x, + // y:translate.y+node.displacement.y, + // z:translate.z+node.displacement.z}; + + // pos += translate; + + //Rotation + +} + +function force(node) { + //forces from internal bonds + var inverseMass=1.0; + var gravity=new THREE.Vector3(0,-9.81,0); + var Cd = 0.47; // Dimensionless + var rho = 1.22; // kg / m^3 + var v=1; //volume or area + + var totalForce=new THREE.Vector3(0,0,0); + + // Drag force: + // var drag= + + + + totalForce.add(new THREE.Vector3(node.force.x,node.force.y,node.force.z)); + totalForce.add(gravity); + + + + var Fd = node.velocity.clone().multiplyScalar(-1/2 * Cd * rho*v ).multiply( node.velocity ); + + //totalForce.add(Fd); + + + totalForce.add(node.intForce); + + // for (int i=0; i<6; i++){ + // if (links[i]) totalForce += links[i]->force(isNegative((linkDirection)i)); //total force in LCS + // } + // totalForce = RotateVec3D(node.orient,totalForce); //from local to global coordinates + + //assert(!(totalForce.x != totalForce.x) || !(totalForce.y != totalForce.y) || !(totalForce.z != totalForce.z)); //assert non QNAN + + //other forces + + + + + // if (externalExists()) totalForce += external()->force(); //external forces + // totalForce -= velocity()*mat->globalDampingTranslateC(); //global damping f-cv + // totalForce.z += mat->gravityForce(); //gravity, according to f=mg + + // if (isCollisionsEnabled()){ + // for (std::vector<CVX_Collision*>::iterator it=colWatch->begin(); it!=colWatch->end(); it++){ + // totalForce -= (*it)->contactForce(this); + // } + // } + //todo make internal forces 0 again + node.intForce=new THREE.Vector3(0,0,0); + // node.force.x=0; + // node.force.y=0; + // node.force.z=0; + return totalForce; +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/fea/parallelFea.js b/01_Code/physical_computing_interface/simulation/fea/parallelFea.js new file mode 100644 index 0000000000000000000000000000000000000000..82914d984b645281b0e5eb0526304e35fdf8bb8c --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/fea/parallelFea.js @@ -0,0 +1,790 @@ +//BASED ON https://github.com/jonhiller/Voxelyze +var DBL_EPSILONx24 =5.328e-15; //DBL_EPSILON*24 +var DISCARD_ANGLE_RAD= 1e-7; //Anything less than this angle can be considered 0 +var SMALL_ANGLE_RAD= 1.732e-2; //Angles less than this get small angle approximations. To get: Root solve atan(t)/t-1+MAX_ERROR_PERCENT. From: MAX_ERROR_PERCENT = (t-atan(t))/t +var SMALL_ANGLE_W =0.9999625; //quaternion W value corresponding to a SMALL_ANGLE_RAD. To calculate, cos(SMALL_ANGLE_RAD*0.5). +var W_THRESH_ACOS2SQRT= 0.9988; //Threshhold of w above which we can approximate acos(w) with sqrt(2-2w). To get: Root solve 1-sqrt(2-2wt)/acos(wt) - MAX_ERROR_PERCENT. From MAX_ERROR_PERCENT = (acos(wt)-sqrt(2-2wt))/acos(wt) +var X_AXIS = 0; //!< X Axis +var Y_AXIS = 1; //!< Y Axis +var Z_AXIS = 2; //!< Z Axis +var currentTime=0; +var maxStrain=0; + +function initialize(setup){ + var voxCount = setup.nodes.length; + for(var i=0;i<voxCount;i++){ + setup.nodes[i].currPosition=new THREE.Vector3(setup.nodes[i].position.x,setup.nodes[i].position.y,setup.nodes[i].position.z); + } + +} + +function doTimeStep(setup,dt){ + if (dt==0) + return true; + else if (dt<0) + dt = recommendedTimeStep(); + + // if (collisions) updateCollisions(); + + + var collisions=false; + + //Euler integration: + var Diverged = false; + var linkCount = setup.edges.length; + for(var i=0;i<linkCount;i++){ + updateForces(setup.edges[i],setup.nodes[setup.edges[i].source],setup.nodes[setup.edges[i].target]); + // todo: update forces and whatever + if (axialStrain(setup.edges[i]) > 100) { + Diverged = true; //catch divergent condition! (if any thread sets true we will fail, so don't need mutex... + } + + } + if (Diverged){ + console.log("Divergedd!!!!!") + return false; + + } + var voxCount = setup.nodes.length; + + for(var i=0;i<voxCount;i++){ + timeStep(dt,setup.nodes[i]); + // todo: update linMom,angMom, orient and whatever + } + + + currentTime += dt; + return true; + +} + +function updateForces(edge,node1,node2){ + + var pVPos=new THREE.Vector3(node1.position.x,node1.position.y,node1.position.z); + var pVNeg=new THREE.Vector3(node2.position.x,node2.position.y,node2.position.z); + var currentRestLength=pVPos.clone().sub(pVNeg).length(); + edge.currentRestLength=currentRestLength; //todo make sure updated + + + pVPos=node1.currPosition.clone(); + pVNeg=node2.currPosition.clone(); + + // Vec3D<double> three + var oldPos2 = edge.pos2.clone();//?? + var oldAngle1v = edge.angle1v.clone(); + var oldAngle2v = edge.angle2v.clone(); //remember the positions/angles from last timestep to calculate velocity + // var oldAngle1v=new THREE.Vector3(node1.angle.x,node1.angle.y,node1.angle.z);//? + // var oldAngle2v=new THREE.Vector3(node2.angle.x,node2.angle.y,node2.angle.z); //?? + + totalRot= orientLink( edge,node1,node2); //sets pos2, angle1, angle2 /*restLength*/ + + var dPos2=edge.pos2.clone().sub(oldPos2).multiplyScalar(0.5); + var dAngle1=edge.angle1v.clone().sub(oldAngle1v).multiplyScalar(0.5); + var dAngle2=edge.angle2v.clone().sub(oldAngle2v).multiplyScalar(0.5); + + + + + //if volume effects... + //if (!mat->isXyzIndependent() || currentTransverseStrainSum != 0) + //updateTransverseInfo(); //currentTransverseStrainSum != 0 catches when we disable poissons mid-simulation + + + + var _stress=updateStrain((edge.pos2.x/edge.currentRestLength)); + var _stress=updateStrain(1.0); + var scaleFactor=1; + edge.stress = _stress/scaleFactor; + + console.log(edge.stress) + + // if (isFailed()){forceNeg = forcePos = momentNeg = momentPos = Vec3D<double>(0,0,0); return;} + + // var b1=mat->_b1, b2=mat->_b2, b3=mat->_b3, a2=mat->_a2; //local copies //todo get from where i had + + var l = currentRestLength;//?? + var rho = edge.density/scaleFactor; + var A = edge.area/scaleFactor; + var E = edge.stiffness/scaleFactor;// youngs modulus + var G=1.0;//todo shear_modulus + var ixx = 1.0;//todo section ixx + var I=1.0; + var iyy = 1.0;//todo section.iyy// + // var l0=length.dataSync(); + var J=1.0;//todo check + // var l02 = l0 * l0; + // var l03 = l0 * l0 * l0; + var b1= 12*E*I/(l*l*l); + var b2= 6*E*I/(l*l); + var b3= 2*E*I/(l); + var a1= E*A/l; + var a2= G*J/l; + + var currentTransverseArea=1.0;// todo ?? later change + + //Beam equations. All relevant terms are here, even though some are zero for small angle and others are zero for large angle (profiled as negligible performance penalty) + var forceNeg = new THREE.Vector3 ( _stress*currentTransverseArea, //currentA1*pos2.x, + b1*edge.pos2.y - b2*(edge.angle1v.z + edge.angle2v.z), + b1*edge.pos2.z + b2*(edge.angle1v.y + edge.angle2v.y)); //Use Curstress instead of -a1*Pos2.x to account for non-linear deformation + var forcePos = forceNeg.clone().negate(); + + var momentNeg = new THREE.Vector3 ( a2*(edge.angle2v.x - edge.angle1v.x), + -b2*edge.pos2.z - b3*(2*edge.angle1v.y + edge.angle2v.y), + b2*edge.pos2.y - b3*(2*edge.angle1v.z + edge.angle2v.z)); + var momentPos = new THREE.Vector3 ( a2*(edge.angle1v.x - edge.angle2v.x), + -b2*edge.pos2.z - b3*(edge.angle1v.y + 2*edge.angle2v.y), + b2*edge.pos2.y - b3*(edge.angle1v.z + 2*edge.angle2v.z)); + + // console.log( forceNeg ) + // console.log( forcePos ) + // console.log( momentNeg ) + // console.log( momentPos ) + + // //local damping: + // if (isLocalVelocityValid()){ //if we don't have the basis for a good damping calculation, don't do any damping. + // float sqA1=mat->_sqA1, sqA2xIp=mat->_sqA2xIp,sqB1=mat->_sqB1, sqB2xFMp=mat->_sqB2xFMp, sqB3xIp=mat->_sqB3xIp; + // Vec3D<double> posCalc( sqA1*dPos2.x, + // sqB1*dPos2.y - sqB2xFMp*(dAngle1.z+dAngle2.z), + // sqB1*dPos2.z + sqB2xFMp*(dAngle1.y+dAngle2.y)); + + // forceNeg += pVNeg->dampingMultiplier()*posCalc; + // forcePos -= pVPos->dampingMultiplier()*posCalc; + + // momentNeg -= 0.5*pVNeg->dampingMultiplier()*Vec3D<>( -sqA2xIp*(dAngle2.x - dAngle1.x), + // sqB2xFMp*dPos2.z + sqB3xIp*(2*dAngle1.y + dAngle2.y), + // -sqB2xFMp*dPos2.y + sqB3xIp*(2*dAngle1.z + dAngle2.z)); + // momentPos -= 0.5*pVPos->dampingMultiplier()*Vec3D<>( sqA2xIp*(dAngle2.x - dAngle1.x), + // sqB2xFMp*dPos2.z + sqB3xIp*(dAngle1.y + 2*dAngle2.y), + // -sqB2xFMp*dPos2.y + sqB3xIp*(dAngle1.z + 2*dAngle2.z)); + + // } + // else setBoolState(LOCAL_VELOCITY_VALID, true); //we're good for next go-around unless something changes + + // transform forces and moments to local voxel coordinates + var smallAngle=false;//?? todo check + var forceNeg,momentNeg,forcePos,momentPos; + + + + if (!smallAngle){//?? chech + forceNeg = RotateVec3DInv(edge.angle1,forceNeg); + momentNeg = RotateVec3DInv(edge.angle1,momentNeg); + } + forcePos = RotateVec3DInv(edge.angle2,forcePos); + momentPos = RotateVec3DInv(edge.angle2,momentPos); + + + forceNeg =toAxisOriginalVector3(forceNeg,edge.axis); + forcePos =toAxisOriginalVector3(forcePos,edge.axis); + momentNeg=toAxisOriginalQuat(momentNeg,edge.axis); + momentPos=toAxisOriginalQuat(momentPos,edge.axis); + + + node1.intForce.add(forcePos.clone()); + node2.intForce.add(forceNeg.clone()); + node1.intMoment.add(forcePos.clone()); + node2.intMoment.add(momentNeg.clone()); + + // assert(!(forceNeg.x != forceNeg.x) || !(forceNeg.y != forceNeg.y) || !(forceNeg.z != forceNeg.z)); //assert non QNAN + // assert(!(forcePos.x != forcePos.x) || !(forcePos.y != forcePos.y) || !(forcePos.z != forcePos.z)); //assert non QNAN + + console.log("") +} + +function orientLink( edge,node1,node2){ //updates pos2, angle1, angle2, and smallAngle //Quat3D<double> /*double restLength*/ + + var pVPos=node2.currPosition.clone(); + var pVNeg=node1.currPosition.clone(); + + + var currentRestLength=edge.currentRestLength; + // var currentRestLength=0; + + + var pos2 = toAxisXVector3(pVPos.clone().sub(pVNeg),edge.axis); //digit truncation happens here... + + + var angle1 = toAxisXQuat(node1.orient,edge.axis); + var angle2 = toAxisXQuat(node2.orient,edge.axis); + + var totalRot = angle1.conjugate(); //keep track of the total rotation of this bond (after toAxisX()) //Quat3D<double> + pos2 = RotateVec3D(totalRot,pos2); + angle2 = totalRot.clone().multiply(angle2); + angle1 = new THREE.Quaternion(); //zero for now... + + console.log(edge.id) + // console.log(pVPos.clone().sub(pVNeg)) + // console.log(edge.axis) + console.log(pos2) + + //small angle approximation? + // var SmallTurn = ((Math.abs(pos2.z)+Math.abs(pos2.y))/pos2.x); + // var ExtendPerc = (Math.abs(1-pos2.x/currentRestLength)); + // if (!smallAngle /*&& angle2.IsSmallAngle()*/ && SmallTurn < SA_BOND_BEND_RAD && ExtendPerc < SA_BOND_EXT_PERC){ + // smallAngle = true; + // setBoolState(LOCAL_VELOCITY_VALID, false); + // } + // else if (smallAngle && (/*!angle2.IsSmallishAngle() || */SmallTurn > HYSTERESIS_FACTOR*SA_BOND_BEND_RAD || ExtendPerc > HYSTERESIS_FACTOR*SA_BOND_EXT_PERC)){ + // smallAngle = false; + // setBoolState(LOCAL_VELOCITY_VALID, false); + // } + + var smallAngle=false; //todo later remove + + if (smallAngle) { //Align so Angle1 is all zeros + pos2.x -= currentRestLength; //only valid for small angles + } + else { //Large angle. Align so that Pos2.y, Pos2.z are zero. + FromAngleToPosX(angle1,pos2); //get the angle to align Pos2 with the X axis + totalRot = angle1.clone().multiply(totalRot) ; //update our total rotation to reflect this + angle2 = angle1.clone().multiply( angle2); //rotate angle2 + pos2 = new THREE.Vector3(pos2.length() - currentRestLength, 0, 0); + } + + angle1v = ToRotationVector(angle1); + angle2v = ToRotationVector(angle2); + + // assert(!(angle1v.x != angle1v.x) || !(angle1v.y != angle1v.y) || !(angle1v.z != angle1v.z)); //assert non QNAN + // assert(!(angle2v.x != angle2v.x) || !(angle2v.y != angle2v.y) || !(angle2v.z != angle2v.z)); //assert non QNAN + + edge.pos2=pos2.clone(); + edge.angle1v=angle1v.clone(); + edge.angle2v=angle2v.clone(); + edge.angle1=angle1.clone(); + edge.angle2=angle2.clone(); + + + + return totalRot; +} + +function RotateVec3D(a, f) { + var fx=f.x, fy=f.y, fz=f.z; + var tw = fx*a.x + fy*a.y + fz*a.z; + var tx = fx*a.w - fy*a.z + fz*a.y; + var ty = fx*a.z + fy*a.w - fz*a.x; + var tz = -fx*a.y + fy*a.x + fz*a.w; + return new THREE.Vector3(a.w*tx + a.x*tw + a.y*tz - a.z*ty, a.w*ty - a.x*tz + a.y*tw + a.z*tx, a.w*tz + a.x*ty - a.y*tx + a.z*tw); +} //!< Returns a vector representing the specified vector "f" rotated by this quaternion. @param[in] f The vector to transform. + +function RotateVec3DInv(a, f) { + var fx=f.x, fy=f.y, fz=f.z; + var tw = a.x*fx + a.y*fy + a.z*fz; + var tx = a.w*fx - a.y*fz + a.z*fy; + var ty = a.w*fy + a.x*fz - a.z*fx; + var tz = a.w*fz - a.x*fy + a.y*fx; + return new THREE.Vector3(tw*a.x + tx*a.w + ty*a.z - tz*a.y, tw*a.y - tx*a.z + ty*a.w + tz*a.x, tw*a.z + tx*a.y - ty*a.x + tz*a.w); +} //!< Returns a vector representing the specified vector "f" rotated by the inverse of this quaternion. This is the opposite of RotateVec3D. @param[in] f The vector to transform. + +function toAxisOriginalVector3(pV,axis){ + switch (axis){ + case Y_AXIS:{ + var tmp = pV.y; + pV.y=pV.x; + pV.x = -tmp; + break; + } + case Z_AXIS: { + var tmp = pV.z; + pV.z=pV.x; + pV.x = -tmp; + break; + } + default: + break; + } + return pV; +} + +function toAxisOriginalQuat(pQ,axis){ + switch (axis){ + case Y_AXIS: { + var tmp = pQ.y; + pQ.y=pQ.x; + pQ.x = -tmp; + break; + } + case Z_AXIS: { + var tmp = pQ.z; + pQ.z=pQ.x; + pQ.x = -tmp; + break; + } + default: + break; + } + return pQ; +} + +function toAxisXVector3(v,axis){ //TODO CHANGE + switch (axis){ + case Y_AXIS: + return new THREE.Vector3(v.y, -v.x, v.z); + case Z_AXIS: + return new THREE.Vector3(v.z, v.y, -v.x); + default: + return v; + } +} //transforms a vec3D in the original orientation of the bond to that as if the bond was in +X direction + +function toAxisXQuat(q,axis){ + switch (axis){ + case Y_AXIS: + return new THREE.Quaternion(q.w, q.y, -q.x, q.z); + case Z_AXIS: + return new THREE.Quaternion(q.w, q.z, q.y, -q.x); + default: + return q; + } +} //transforms a vec3D in the original orientation of the bond to that as if the bond was in +X direction + +//const Quat3D Conjugate() const {return Quat3D(w, -x, -y, -z);} //!< Returns a quaternion that is the conjugate of this quaternion. This quaternion is not modified. +function ToRotationVector(a) { + if (a.w >= 1.0 || a.w <= -1.0) { + return new THREE.Vector3(0,0,0); + } + var squareLength = 1.0-a.w*a.w; //because x*x + y*y + z*z + w*w = 1.0, but more susceptible to w noise (when + var SLTHRESH_ACOS2SQRT= 2.4e-3; //SquareLength threshhold for when we can use square root optimization for acos. From SquareLength = 1-w*w. (calculate according to 1.0-W_THRESH_ACOS2SQRT*W_THRESH_ACOS2SQRT + + if (squareLength < SLTHRESH_ACOS2SQRT) //??????? + return new THREE.Vector3(a.x, a.y, a.z).multiplyScalar(2.0*Math.sqrt((2-2*a.w)/squareLength)); //acos(w) = sqrt(2*(1-x)) for w close to 1. for w=0.001, error is 1.317e-6 + else + return new THREE.Vector3(a.x, a.y, a.z).multiplyScalar(2.0*Math.acos(a.w)/Math.sqrt(squareLength)); +} //!< Returns a rotation vector representing this quaternion rotation. Adapted from http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/ + +function FromRotationVector( VecIn) { + var q=new THREE.Quaternion(); + var theta = VecIn.clone().divideScalar(2.0); + var s, thetaMag2 = theta.length()*theta.length(); + if (thetaMag2*thetaMag2 < DBL_EPSILONx24 ){ //if the 4th taylor expansion term is negligible + q.w=1.0 - 0.5*thetaMag2; + s=1.0 - thetaMag2 / 6.0; + } + else { + var thetaMag = Math.sqrt(thetaMag2); + q.w=Math.cos(thetaMag); + s=Math.sin(thetaMag) / thetaMag; + } + q.x=theta.x*s; + q.y=theta.y*s; + q.z=theta.z*s; + return q; +} //!< Overwrites this quaternion with values from the specified rotation vector. Adapted from http://physicsforgames.blogspot.com/2010/02/quaternions.html. Note: function changes this quaternion. @param[in] VecIn A rotation vector to calculate this quaternion from. + + +function FromAngleToPosX(a, RotateFrom){ //highly optimized at the expense of readability + if (new THREE.Vector3(0,0,0).equals(RotateFrom)) + return; //leave off if it slows down too much!! + + //Catch and handle small angle: + var YoverX = RotateFrom.y/RotateFrom.x; + var ZoverX = RotateFrom.z/RotateFrom.x; + if (YoverX<SMALL_ANGLE_RAD && YoverX>-SMALL_ANGLE_RAD && ZoverX<SMALL_ANGLE_RAD && ZoverX>-SMALL_ANGLE_RAD){ //??? //Intercept small angle and zero angle + a.x=0; + a.y=0.5*ZoverX; + a.z=-0.5*YoverX; + a.w = 1+0.5*(-a.y*a.y-a.z*a.z); //w=sqrt(1-x*x-y*y), small angle sqrt(1+x) ~= 1+x/2 at x near zero. + return a; + } + + //more accurate non-small angle: + var RotFromNorm = RotateFrom.clone(); + RotFromNorm.normalize(); //Normalize the input... + + var theta = Math.acos(RotFromNorm.x); //because RotFromNorm is normalized, 1,0,0 is normalized, and A.B = |A||B|cos(theta) = cos(theta) + if (theta > Math.PI-DISCARD_ANGLE_RAD) {//?????? + a.w=0; + a.x=0; + a.y=1; + a.z=0; + return a; + } //180 degree rotation (about y axis, since the vector must be pointing in -x direction + + var AxisMagInv = 1.0/Math.sqrt(RotFromNorm.z*RotFromNorm.z+RotFromNorm.y*RotFromNorm.y); + //Here theta is the angle, axis is RotFromNorm.Cross(Vec3D(1,0,0)) = Vec3D(0, RotFromNorm.z/AxisMagInv, -RotFromNorm.y/AxisMagInv), which is still normalized. (super rolled together) + var aa = 0.5*theta; + var s = Math.sin(a); + a.w=Math.cos(aa); + a.x=0; + a.y=RotFromNorm.z*AxisMagInv*s; + a.z = -RotFromNorm.y*AxisMagInv*s; //angle axis function, reduced + return a; + +} //!< Overwrites this quaternion with the calculated rotation that would transform the specified RotateFrom vector to point in the positve X direction. Note: function changes this quaternion. @param[in] RotateFrom An arbitrary direction vector. Does not need to be normalized. + +function axialStrain() { + return strain; +} //!< returns the current overall axial strain (unitless) between the two voxels. + +function axialStrain( positiveEnd) { + //strainRatio = pVPos->material()->E/pVNeg->material()->E; + var strainRatio=1.0; + return positiveEnd ? 2.0 *strain*strainRatio/(1.0+strainRatio) : 2.0*strain/(1.0+strainRatio); +} + +function updateStrain( axialStrain){ //?from where strain + strain = axialStrain; //redundant? + var currentTransverseStrainSum=1.0; //??? todo + var linear=true; + // var maxStrain=100000000000000000000;//?? todo later change + if (linear){ + if (axialStrain > maxStrain) + maxStrain = axialStrain; //remember this maximum for easy reference + return stress(axialStrain, currentTransverseStrainSum); + } + else { + var returnStress; + + if (axialStrain > maxStrain){ //if new territory on the stress/strain curve + maxStrain = axialStrain; //remember this maximum for easy reference + returnStress = stress(axialStrain, currentTransverseStrainSum); //??currentTransverseStrainSum + + if (nu != 0.0) + strainOffset = maxStrain-stress(axialStrain)/(_eHat*(1-nu)); //precalculate strain offset for when we back off + else strainOffset = maxStrain-returnStress/E; //precalculate strain offset for when we back off + + } + else { //backed off a non-linear material, therefore in linear region. + var relativeStrain = axialStrain-strainOffset; // treat the material as linear with a strain offset according to the maximum plastic deformation + + if (nu != 0.0) + returnStress = stress(relativeStrain, currentTransverseStrainSum, true); + else + returnStress = E*relativeStrain; + } + return returnStress; + + } + +} + +function stress( strain, transverseStrainSum, forceLinear){ + //reference: http://www.colorado.edu/engineering/CAS/courses.d/Structures.d/IAST.Lect05.d/IAST.Lect05.pdf page 10 + //if (isFailed(strain)) return 0.0f; //if a failure point is set and exceeded, we've broken! + var E =setup.edges[0].stiffness; //todo change later to material ?? + var scaleFactor=1; + return E*strain/scaleFactor; + + // if (strain <= strainData[1] || linear || forceLinear){ //for compression/first segment and linear materials (forced or otherwise), simple calculation + + // if (nu==0.0) return E*strain; + // else return _eHat*((1-nu)*strain + nu*transverseStrainSum); + //else return eHat()*((1-nu)*strain + nu*transverseStrainSum); + // } + + // //the non-linear feature with non-zero poissons ratio is currently experimental + // int DataCount = modelDataPoints(); + // for (int i=2; i<DataCount; i++){ //go through each segment in the material model (skipping the first segment because it has already been handled. + // if (strain <= strainData[i] || i==DataCount-1){ //if in the segment ending with this point (or if this is the last point extrapolate out) + // float Perc = (strain-strainData[i-1])/(strainData[i]-strainData[i-1]); + // float basicStress = stressData[i-1] + Perc*(stressData[i]-stressData[i-1]); + // if (nu==0.0f) return basicStress; + // else { //accounting for volumetric effects + // float modulus = (stressData[i]-stressData[i-1])/(strainData[i]-strainData[i-1]); + // float modulusHat = modulus/((1-2*nu)*(1+nu)); + // float effectiveStrain = basicStress/modulus; //this is the strain at which a simple linear stress strain line would hit this point at the definied modulus + // float effectiveTransverseStrainSum = transverseStrainSum*(effectiveStrain/strain); + // return modulusHat*((1-nu)*effectiveStrain + nu*effectiveTransverseStrainSum); + // } + // } + // } + + // assert(false); //should never reach this point + // return 0.0f; +} + +function updateTransverseInfo(edge){ + // currentTransverseArea = 0.5*(pVNeg->transverseArea(edge.axis)+pVPos->transverseArea(edge.axis)); + // currentTransverseStrainSum = 0.5*(pVNeg->transverseStrainSum(edge.axis)+pVPos->transverseStrainSum(edge.axis)); + edge.currentTransverseArea = 1; //or 0 + edge.currentTransverseStrainSum = 1;//or 0 + +} + +function transverseArea( axis){ + var size = 1.0;//??(float)mat->nominalSize(); + //if (mat->poissonsRatio() == 0) return size*size; + if (true) return size*size; + + // var psVec = poissonsStrain(); + + // switch (axis){ + // case X_AXIS: return (float)(size*size*(1+psVec.y)*(1+psVec.z)); + // case Y_AXIS: return (float)(size*size*(1+psVec.x)*(1+psVec.z)); + // case Z_AXIS: return (float)(size*size*(1+psVec.x)*(1+psVec.y)); + // default: return size*size; + // } +} + +//http://klas-physics.googlecode.com/svn/trunk/src/general/Integrator.cpp (reference) +function timeStep( dt,node){ + var previousDt = dt; + var linMom=node.linMom.clone(); + var angMom=node.angMom.clone(); + var orient=node.orient.clone(); + var pos=new THREE.Vector3(node.currPosition.x,node.currPosition.y,node.currPosition.z); + if (dt == 0.0) + return; + + var isTrue = (currentValue) => currentValue ==true; + + + if (node.restrained_degrees_of_freedom.every(isTrue)){ + // pos = originalPosition() + ext->translation(); + // orient = ext->rotationQuat(); + // haltMotion(); + pos=new THREE.Vector3(node.position.x,node.position.y,node.position.z); + node.currPosition=pos.clone(); + linMom = new THREE.Vector3(0,0,0); + angMom = new THREE.Vector3(0,0,0); + node.displacement={x:0,y:0,z:0}; + + node.orient=orient.clone(); + node.linMom=linMom.clone(); + node.angMom=angMom.clone(); + return; + } + + //Translation + var curForce = force(node); + //var fricForce = curForce.clone(); + + //if (isFloorEnabled()) floorForce(dt, &curForce); //floor force needs dt to calculate threshold to "stop" a slow voxel into static friction. + + //fricForce = curForce - fricForce; + + //assert(!(curForce.x != curForce.x) || !(curForce.y != curForce.y) || !(curForce.z != curForce.z)); //assert non QNAN + linMom.add(curForce).multiplyScalar(dt); + + var massInverse=1.0;//todo ?? later change + var translate=linMom.clone().multiplyScalar(dt*massInverse);//??massInverse + + // // we need to check for friction conditions here (after calculating the translation) and stop things accordingly + // if (isFloorEnabled() && floorPenetration() >= 0){ //we must catch a slowing voxel here since it all boils down to needing access to the dt of this timestep. + // double work = fricForce.x*translate.x + fricForce.y*translate.y; //F dot disp + // double hKe = 0.5*mat->_massInverse*(linMom.x*linMom.x + linMom.y*linMom.y); //horizontal kinetic energy + + // if(hKe + work <= 0) setFloorStaticFriction(true); //this checks for a change of direction according to the work-energy principle + + // if (isFloorStaticFriction()){ //if we're in a state of static friction, zero out all horizontal motion + // linMom.x = linMom.y = 0; + // translate.x = translate.y = 0; + // } + // } + // else setFloorStaticFriction(false); + pos.add(translate); + node.currPosition=pos.clone(); + node.displacement={ + x:translate.x+node.displacement.x, + y:translate.y+node.displacement.y, + z:translate.z+node.displacement.z}; + + // pos += translate; + + //Rotation + var curMoment = moment(node); + angMom.add(curMoment*dt); + + var momentInertiaInverse=1.0;//todo ?? later change + orient.multiply(FromRotationVector(angMom.clone().multiplyScalar((dt*momentInertiaInverse)))); //update the orientation //momentInertiaInverse + + node.orient=orient.clone(); + node.linMom=linMom.clone(); + node.angMom=angMom.clone(); + + // if (ext){//?? todo fix + // var size = 1;//change + // if (ext->isFixed(X_TRANSLATE)) {pos.x = ix*size + ext->translation().x; linMom.x=0;} + // if (ext->isFixed(Y_TRANSLATE)) {pos.y = iy*size + ext->translation().y; linMom.y=0;} + // if (ext->isFixed(Z_TRANSLATE)) {pos.z = iz*size + ext->translation().z; linMom.z=0;} + // if (ext->isFixedAnyRotation()){ //if any rotation fixed, all are fixed + // if (ext->isFixedAllRotation()){ + // orient = ext->rotationQuat(); + // angMom = Vec3D<double>(); + // } + // else { //partial fixes: slow! + // Vec3D<double> tmpRotVec = orient.ToRotationVector(); + // if (ext->isFixed(X_ROTATE)){ tmpRotVec.x=0; angMom.x=0;} + // if (ext->isFixed(Y_ROTATE)){ tmpRotVec.y=0; angMom.y=0;} + // if (ext->isFixed(Z_ROTATE)){ tmpRotVec.z=0; angMom.z=0;} + // orient.FromRotationVector(tmpRotVec); + // } + // } + // } + + + // poissonsStrainInvalid = true; +} + + +function force(node) { + //forces from internal bonds + var totalForce=new THREE.Vector3(0,0,0); + //new THREE.Vector3(node.force.x,node.force.y,node.force.z); + // todo + + totalForce.add(node.intForce); + + // for (int i=0; i<6; i++){ + // if (links[i]) totalForce += links[i]->force(isNegative((linkDirection)i)); //total force in LCS + // } + totalForce = RotateVec3D(node.orient,totalForce); //from local to global coordinates + + //assert(!(totalForce.x != totalForce.x) || !(totalForce.y != totalForce.y) || !(totalForce.z != totalForce.z)); //assert non QNAN + + //other forces + totalForce.add(new THREE.Vector3(node.force.x,node.force.y,node.force.z)); + + // if (externalExists()) totalForce += external()->force(); //external forces + // totalForce -= velocity()*mat->globalDampingTranslateC(); //global damping f-cv + // totalForce.z += mat->gravityForce(); //gravity, according to f=mg + + // if (isCollisionsEnabled()){ + // for (std::vector<CVX_Collision*>::iterator it=colWatch->begin(); it!=colWatch->end(); it++){ + // totalForce -= (*it)->contactForce(this); + // } + // } + //todo make internal forces 0 again + node.intForce=new THREE.Vector3(0,0,0); + // node.force.x=0; + // node.force.y=0; + // node.force.z=0; + return totalForce; +} + +function moment(node) { + //moments from internal bonds + var totalMoment=new THREE.Vector3(0,0,0); + // for (int i=0; i<6; i++){ + // if (links[i]) totalMoment += links[i]->moment(isNegative((linkDirection)i)); //total force in LCS + // } + totalMoment.add(node.intMoment); + totalMoment = RotateVec3D(node.orient,totalMoment); + + totalMoment.add(new THREE.Vector3(node.moment.x,node.moment.y,node.moment.z)); + + //other moments + // if (externalExists()) totalMoment += external()->moment(); //external moments + // totalMoment -= angularVelocity()*mat->globalDampingRotateC(); //global damping + node.intMoment=new THREE.Vector3(0,0,0); + return totalMoment; +} + +//////////////////////////////////////////////////////////////////////////////////////////////// + +//void haltMotion(){linMom = angMom = Vec3D<>(0,0,0);} //!< Halts all momentum of this block. Unless fixed the voxel will continue to move in subsequent timesteps. + +function recommendedTimeStep() { + // //find the largest natural frequency (sqrt(k/m)) that anything in the simulation will experience, then multiply by 2*pi and invert to get the optimally largest timestep that should retain stability + // float MaxFreq2 = 0.0f; //maximum frequency in the simulation in rad/sec + + // for (std::vector<CVX_Link*>::const_iterator it=linksList.begin(); it != linksList.end(); it++){ //for each link + // CVX_Link* pL = (*it); + // //axial + // float m1 = pL->pVNeg->mat->mass(), m2 = pL->pVPos->mat->mass(); + // float thisMaxFreq2 = pL->axialStiffness()/(m1<m2?m1:m2); + // if (thisMaxFreq2 > MaxFreq2) MaxFreq2 = thisMaxFreq2; + + // //rotational will always be less than or equal + // } + + + // if (MaxFreq2 <= 0.0f){ //didn't find anything (i.e no links) check for individual voxelss + // for (std::vector<CVX_Voxel*>::const_iterator it=voxelsList.begin(); it != voxelsList.end(); it++){ //for each link + // float thisMaxFreq2 = (*it)->mat->youngsModulus()*(*it)->mat->nomSize/(*it)->mat->mass(); + // if (thisMaxFreq2 > MaxFreq2) MaxFreq2 = thisMaxFreq2; + // } + // } + + // if (MaxFreq2 <= 0.0f) return 0.0f; + // else return 1.0f/(6.283185f*sqrt(MaxFreq2)); //the optimal timestep is to advance one radian of the highest natural frequency +} + +function isXyzIndependent() {return nu==0.0;} //!< Returns true if poisson's ratio is zero - i.e. deformations in each dimension are independent of those in other dimensions. + + +function isFailed(edge) { + // return mat->isFailed(maxStrain); +} + +// function isLocalVelocityValid() {return boolStates & LOCAL_VELOCITY_VALID ? true : false;} // + +// function dampingMultiplier() {return 2*mat->_sqrtMass*mat->zetaInternal/previousDt;} //!< Returns the damping multiplier for this voxel. This would normally be called only internally for the internal damping calculations. + +// function setBoolState(linkFlags flag, bool set=true) {set ? boolStates |= (int)flag : boolStates &= ~(int)flag;} + +// function setFixedAll(bool fixed=true) {fixed?setDisplacementAll():clearDisplacementAll();} //!< Sets all 6 degrees of freedom to either fixed or free depending on the value of fixed. Either way, sets all displacements to zero. @param[in] fixed Whether all degrees of freedom should be fixed (true) or free (false). + +// function setDisplacement(dofComponent dof, double displacement=0.0); //!< Fixes the specified degree of freedom and applies the prescribed displacement if specified. @param[in] dof the degree of freedom in question. @param[in] displacement The displacement in meters (translational dofs) or radians (rotational dofs) to apply. Large fixed displacements may cause instability. +// function setDisplacementAll(const Vec3D<double>& translation = Vec3D<double>(0,0,0), const Vec3D<double>& rotation = Vec3D<double>(0,0,0)); //!< Fixes the all degrees of freedom and applies the specified translation and rotation. @param[in] translation The translation in meters from this voxel's nominal position to fix it at. @param[in] rotation The rotation (in the form of a rotation vector) from this voxel's nominal orientation to fix it at. + +function transverseStrainSum(axis){ + // if (mat->poissonsRatio() == 0) return 0; + + // Vec3D<float> psVec = poissonsStrain(); + + // switch (axis){ + // case CVX_Link::X_AXIS: return psVec.y+psVec.z; + // case CVX_Link::Y_AXIS: return psVec.x+psVec.z; + // case CVX_Link::Z_AXIS: return psVec.x+psVec.y; + // default: return 0.0f; + // } + +} + +function transverseStrainSum(axis){ + // if (mat->poissonsRatio() == 0) return 0; + + // Vec3D<float> psVec = poissonsStrain(); + + // switch (axis){ + // case CVX_Link::X_AXIS: return psVec.y+psVec.z; + // case CVX_Link::Y_AXIS: return psVec.x+psVec.z; + // case CVX_Link::Z_AXIS: return psVec.x+psVec.y; + // default: return 0.0f; + // } + +} + +function poissonsStrain(node){ + // if (poissonsStrainInvalid){ + // pStrain = strain(true); + // poissonsStrainInvalid = false; + // } + // return pStrain; +} + +function strain( poissonsStrain) { + //if no connections in the positive and negative directions of a particular axis, strain is zero + //if one connection in positive or negative direction of a particular axis, strain is that strain - ?? and force or constraint? + //if connections in both the positive and negative directions of a particular axis, strain is the average. + + // Vec3D<float> intStrRet(0,0,0); //intermediate strain return value. axes according to linkAxis enum + // int numBondAxis[3] = {0}; //number of bonds in this axis (0,1,2). axes according to linkAxis enum + // bool tension[3] = {false}; + // for (int i=0; i<6; i++){ //cycle through link directions + // if (links[i]){ + // int axis = toAxis((linkDirection)i); + // intStrRet[axis] += links[i]->axialStrain(isNegative((linkDirection)i)); + // numBondAxis[axis]++; + // } + // } + // for (int i=0; i<3; i++){ //cycle through axes + // if (numBondAxis[i]==2) intStrRet[i] *= 0.5f; //average + // if (poissonsStrain){ + // tension[i] = ((numBondAxis[i]==2) || (ext && (numBondAxis[i]==1 && (ext->isFixed((dofComponent)(1<<i)) || ext->force()[i] != 0)))); //if both sides pulling, or just one side and a fixed or forced voxel... + // } + + // } + + // if (poissonsStrain){ + // if (!(tension[0] && tension[1] && tension[2])){ //if at least one isn't in tension + // float add = 0; + // for (int i=0; i<3; i++) if (tension[i]) add+=intStrRet[i]; + // float value = pow( 1.0f + add, -mat->poissonsRatio()) - 1.0f; + // for (int i=0; i<3; i++) if (!tension[i]) intStrRet[i]=value; + // } + // } + + // return intStrRet; +} diff --git a/01_Code/physical_computing_interface/simulation/json/emptySetup.json b/01_Code/physical_computing_interface/simulation/json/emptySetup.json new file mode 100644 index 0000000000000000000000000000000000000000..b2612258e5850384489c30a5eca4d0645fb5ffcb --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/emptySetup.json @@ -0,0 +1,17 @@ +{ + "nodes": [], + "edges": [], + "ndofs" : 0, + "animation" : { + "showDisplacement" : true, + "exageration" : 2000, + "speed":3.0 + }, + "viz" :{ + "minStress":-500, + "maxStress": 500, + "colorMaps":["coolwarm","YlGnBu", "winter" ,"jet"], + "colorMap":0 + }, + "bar":false +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/foo.json b/01_Code/physical_computing_interface/simulation/json/foo.json new file mode 100644 index 0000000000000000000000000000000000000000..448a27de941f3a9e3d8ab2866d83507c9c06f627 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/foo.json @@ -0,0 +1,24 @@ +{ + "planet": "Earth", + "city.name": "anytown", + "name": { + "first": "Johnny", + "last": "B." + }, + "is_student": false, + "planett": [ + "jupiter", + "earth" + ], + "a": { + "new": { + "field": { + "as": { + "object": { + "hello": "world" + } + } + } + } + } +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/parallelCube.js b/01_Code/physical_computing_interface/simulation/json/parallelCube.js new file mode 100644 index 0000000000000000000000000000000000000000..b5f6274f76e6d62a3d705102a95d4d2ff17fdc5c --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/parallelCube.js @@ -0,0 +1,509 @@ +var setup= +{ + nodes: [ + { + id: 'n0', + parent: '11', + degrees_of_freedom:[0,1,2,3,4,5] , + restrained_degrees_of_freedom:[true,true,true,true,true,true], + position: { x: 0, y: 0,z:0 }, + currPosition:new THREE.Vector3(0,0,0), + force:{ x: 0, y: 0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + + }, + { + id: 'n1', + parent: '11', + degrees_of_freedom:[6,7,8,9,10,11] , + restrained_degrees_of_freedom:[false,false,false,false,false,false], + position: { x: 0, y: 5,z:0 }, + currPosition:new THREE.Vector3(0,5,0), + force:{ x: 0, y: -0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + + }, + { + id: 'n2', + parent: '11', + degrees_of_freedom:[12,13,14,15,16,17,18] , + restrained_degrees_of_freedom:[true,true,true,true,true,true], + position: { x: 5, y: 0,z:0 }, + currPosition:new THREE.Vector3(5,0,0), + force:{ x: 0, y: 0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + + }, + { + id: 'n3', + parent: '11', + degrees_of_freedom:[12,13,14,15,16,17,18] , + restrained_degrees_of_freedom:[false,false,false,false,false,false], + position: { x: 5, y: 5,z:0 }, + currPosition:new THREE.Vector3(5,5,0), + force:{ x: 0, y: -0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + + }, + { + id: 'n4', + parent: '11', + degrees_of_freedom:[12,13,14,15,16,17,18] , + restrained_degrees_of_freedom:[true,true,true,true,true,true], + position: { x: 0, y: 0,z:5 }, + currPosition:new THREE.Vector3(0,0,5), + force:{ x: 0, y: 0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + + }, + { + id: 'n5', + parent: '11', + degrees_of_freedom:[12,13,14,15,16,17,18] , + restrained_degrees_of_freedom:[false,false,false,false,false,false], + position: { x: 0, y: 5,z:5 }, + currPosition:new THREE.Vector3(0,5,5), + force:{ x: 0, y: -0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + + }, + { + id: 'n6', + parent: '11', + degrees_of_freedom:[12,13,14,15,16,17,18] , + restrained_degrees_of_freedom:[true,true,true,true,true,true], + position: { x: 5, y: 0,z:5 }, + currPosition:new THREE.Vector3(5,0,5), + force:{ x: 0, y: 0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + + }, + { + id: 'n7', + parent: '11', + degrees_of_freedom:[12,13,14,15,16,17,18] , + restrained_degrees_of_freedom:[false,false,false,false,false,false], + position: { x: 5, y: 5,z:5 }, + currPosition:new THREE.Vector3(5,5,5), + force:{ x: 0, y: -0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + + }, + { + id: 'n8', + parent: '11', + degrees_of_freedom:[12,13,14,15,16,17,18] , + restrained_degrees_of_freedom:[false,false,false,false,false,false], + position: { x: 5, y: 10,z:5 }, + currPosition:new THREE.Vector3(5,10,5), + force:{ x: 0, y: -0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + + }, + { + id: 'n9', + parent: '11', + degrees_of_freedom:[12,13,14,15,16,17,18] , + restrained_degrees_of_freedom:[false,false,false,false,false,false], + position: { x: 0, y: 10,z:5 }, + currPosition:new THREE.Vector3(0,10,5), + force:{ x: 0, y: -0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + + }, + { + id: 'n10', + parent: '11', + degrees_of_freedom:[12,13,14,15,16,17,18] , + restrained_degrees_of_freedom:[false,false,false,false,false,false], + position: { x: 5, y: 10,z:0 }, + currPosition:new THREE.Vector3(5,10,0), + force:{ x: 0, y: 0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + + }, + { + id: 'n11', + parent: '11', + degrees_of_freedom:[6,7,8,9,10,11] , + restrained_degrees_of_freedom:[false,false,false,false,false,false], + position: { x: 0, y: 10,z:0 }, + currPosition:new THREE.Vector3(0,10,0), + force:{ x: -0, y: -0,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + + } + ], + + edges: [ + { + id: 'e0', source: 0, target: 1 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e1', source: 1, target: 3 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:X_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e2', source: 2, target: 3 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e3', source: 0, target: 2 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:X_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e4', source: 4, target: 5 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e5', source: 5, target: 7 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:X_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e6', source: 6, target: 7 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e7', source: 4, target: 6 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:X_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e8', source: 0, target: 4 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Z_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e9', source: 1, target: 5 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Z_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e10', source: 3, target: 7 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Z_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e11', source: 2, target: 6 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Z_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e12', source: 7, target: 8 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e13', source: 5, target: 9 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e14', source: 9, target: 8 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:X_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e15', source: 3, target: 10 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e16', source: 10, target: 8 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Z_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e17', source: 1, target: 11 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Y_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e18', source: 11, target: 10 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:X_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + { + id: 'e19', source: 11, target: 9 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + currentRestLength:0, + axis:Z_AXIS, + pos2: new THREE.Vector3(0,0,0), + angle1v: new THREE.Vector3(0,0,0), + angle2v: new THREE.Vector3(0,0,0), + angle1:new THREE.Quaternion(), + angle2:new THREE.Quaternion(), + currentTransverseArea:0, + currentTransverseStrainSum:0 + + }, + + ], + + //material properties - AISI 1095 Carbon Steel (Spring Steel) + ndofs : 3*6, + + animation : { + + showDisplacement : true, + exageration : 10, + speed:3.0 + + }, + + viz : { + + + minStress:-500, + maxStress: 500, + colorMaps:[YlGnBu, winter, coolwarm,jet], + colorMap:0, + + }, + + bar:false + +}; \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/setup.json b/01_Code/physical_computing_interface/simulation/json/setup.json new file mode 100644 index 0000000000000000000000000000000000000000..64efd9124617d5b481f6ab6b83178c1d7d4dfe4f --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/setup.json @@ -0,0 +1,26062 @@ +{ + "setup": { + "nodes": [ + { + "id": "n0", + "parent": "11", + "degrees_of_freedom": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n1", + "parent": "11", + "degrees_of_freedom": [ + 6, + 7, + 8, + 9, + 10, + 11 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n2", + "parent": "11", + "degrees_of_freedom": [ + 12, + 13, + 14, + 15, + 16, + 17 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n3", + "parent": "11", + "degrees_of_freedom": [ + 18, + 19, + 20, + 21, + 22, + 23 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n4", + "parent": "11", + "degrees_of_freedom": [ + 24, + 25, + 26, + 27, + 28, + 29 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002622864138933497, + "y": -0.00018152241119498953, + "z": -0.000036502713359746806 + }, + "angle": { + "x": -0.0000019768800606990103, + "y": -1.7481234021478985e-7, + "z": 6.762494668535576e-7 + } + }, + { + "id": "n5", + "parent": "11", + "degrees_of_freedom": [ + 30, + 31, + 32, + 33, + 34, + 35 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010664913408883408, + "y": -0.00009241210451338415, + "z": -0.00004622535585178834 + }, + "angle": { + "x": -0.00000572369962540217, + "y": -5.219334338239175e-7, + "z": 0.0000021468004208940566 + } + }, + { + "id": "n6", + "parent": "11", + "degrees_of_freedom": [ + 36, + 37, + 38, + 39, + 40, + 41 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010415579947638816, + "y": -0.00008226901165040695, + "z": -0.000007979642588036861 + }, + "angle": { + "x": -0.0000026790130975322866, + "y": -5.6446188054045654e-8, + "z": 0.0000018599825904017288 + } + }, + { + "id": "n7", + "parent": "11", + "degrees_of_freedom": [ + 42, + 43, + 44, + 45, + 46, + 47 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000059445832525564164, + "y": -0.00019856789825485767, + "z": -0.00004647750477051891 + }, + "angle": { + "x": -0.0000027839207617081436, + "y": -3.601023288326688e-8, + "z": 0.000001021847627569177 + } + }, + { + "id": "n8", + "parent": "11", + "degrees_of_freedom": [ + 48, + 49, + 50, + 51, + 52, + 53 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005378207806999956, + "y": -0.00019661901533700712, + "z": -0.00004927630353978256 + }, + "angle": { + "x": -0.0000022646877012549364, + "y": -0.0000011598684419124896, + "z": 0.0000018845450876241937 + } + }, + { + "id": "n9", + "parent": "11", + "degrees_of_freedom": [ + 54, + 55, + 56, + 57, + 58, + 59 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000047625804339374116, + "y": -0.00018333641312291013, + "z": -0.00002152478119261483 + }, + "angle": { + "x": -0.0000013490505980199579, + "y": -4.998564457158674e-7, + "z": 0.0000013216244407872563 + } + }, + { + "id": "n10", + "parent": "11", + "degrees_of_freedom": [ + 60, + 61, + 62, + 63, + 64, + 65 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007540391387844241, + "y": -0.00012068520685074323, + "z": -0.00006276763116544908 + }, + "angle": { + "x": -0.000008300537310666148, + "y": -0.000003068623712275053, + "z": 0.00000555867424068448 + } + }, + { + "id": "n11", + "parent": "11", + "degrees_of_freedom": [ + 66, + 67, + 68, + 69, + 70, + 71 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006411140617328967, + "y": -0.00009601806195762757, + "z": -0.000009330397719579237 + }, + "angle": { + "x": -0.0000034075054153921752, + "y": 4.738116250052522e-7, + "z": 0.000003859545798817398 + } + }, + { + "id": "n12", + "parent": "11", + "degrees_of_freedom": [ + 72, + 73, + 74, + 75, + 76, + 77 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n13", + "parent": "11", + "degrees_of_freedom": [ + 78, + 79, + 80, + 81, + 82, + 83 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n14", + "parent": "11", + "degrees_of_freedom": [ + 84, + 85, + 86, + 87, + 88, + 89 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n15", + "parent": "11", + "degrees_of_freedom": [ + 90, + 91, + 92, + 93, + 94, + 95 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000024717429382643215, + "y": -0.00017522638850120853, + "z": -3.853412368911661e-19 + }, + "angle": { + "x": -8.287074949742442e-20, + "y": 1.1227513757904977e-20, + "z": 5.393933833152322e-7 + } + }, + { + "id": "n16", + "parent": "11", + "degrees_of_freedom": [ + 96, + 97, + 98, + 99, + 100, + 101 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010415579947638694, + "y": -0.0000822690116504067, + "z": 0.000007979642588036653 + }, + "angle": { + "x": 0.000002679013097532179, + "y": 5.644618805405049e-8, + "z": 0.0000018599825904017314 + } + }, + { + "id": "n17", + "parent": "11", + "degrees_of_freedom": [ + 102, + 103, + 104, + 105, + 106, + 107 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005012652726496924, + "y": -0.0001861618734880066, + "z": -1.831029932104046e-19 + }, + "angle": { + "x": -9.443586347793757e-20, + "y": 6.266117161604259e-20, + "z": 0.0000011293467807969843 + } + }, + { + "id": "n18", + "parent": "11", + "degrees_of_freedom": [ + 108, + 109, + 110, + 111, + 112, + 113 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000047625804339373906, + "y": -0.00018333641312290972, + "z": 0.000021524781192614132 + }, + "angle": { + "x": 0.0000013490505980198643, + "y": 4.998564457158943e-7, + "z": 0.0000013216244407872357 + } + }, + { + "id": "n19", + "parent": "11", + "degrees_of_freedom": [ + 114, + 115, + 116, + 117, + 118, + 119 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006411140617328946, + "y": -0.00009601806195762729, + "z": 0.000009330397719579203 + }, + "angle": { + "x": 0.0000034075054153920927, + "y": -4.7381162500522084e-7, + "z": 0.000003859545798817379 + } + }, + { + "id": "n20", + "parent": "11", + "degrees_of_freedom": [ + 120, + 121, + 122, + 123, + 124, + 125 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n21", + "parent": "11", + "degrees_of_freedom": [ + 126, + 127, + 128, + 129, + 130, + 131 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n22", + "parent": "11", + "degrees_of_freedom": [ + 132, + 133, + 134, + 135, + 136, + 137 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n23", + "parent": "11", + "degrees_of_freedom": [ + 138, + 139, + 140, + 141, + 142, + 143 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000026228641389334866, + "y": -0.0001815224111949885, + "z": 0.00003650271335974602 + }, + "angle": { + "x": 0.0000019768800606988494, + "y": 1.7481234021478752e-7, + "z": 6.762494668535684e-7 + } + }, + { + "id": "n24", + "parent": "11", + "degrees_of_freedom": [ + 144, + 145, + 146, + 147, + 148, + 149 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010664913408883426, + "y": -0.00009241210451338346, + "z": 0.00004622535585178787 + }, + "angle": { + "x": 0.000005723699625402066, + "y": 5.219334338239073e-7, + "z": 0.000002146800420894044 + } + }, + { + "id": "n25", + "parent": "11", + "degrees_of_freedom": [ + 150, + 151, + 152, + 153, + 154, + 155 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000059445832525563805, + "y": -0.00019856789825485624, + "z": 0.00004647750477051813 + }, + "angle": { + "x": 0.000002783920761707973, + "y": 3.601023288328971e-8, + "z": 0.0000010218476275691547 + } + }, + { + "id": "n26", + "parent": "11", + "degrees_of_freedom": [ + 156, + 157, + 158, + 159, + 160, + 161 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000053782078069999177, + "y": -0.0001966190153370055, + "z": 0.000049276303539781696 + }, + "angle": { + "x": 0.000002264687701254841, + "y": 0.0000011598684419124939, + "z": 0.00000188454508762419 + } + }, + { + "id": "n27", + "parent": "11", + "degrees_of_freedom": [ + 162, + 163, + 164, + 165, + 166, + 167 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007540391387844183, + "y": -0.0001206852068507422, + "z": 0.00006276763116544852 + }, + "angle": { + "x": 0.000008300537310666022, + "y": 0.0000030686237122750453, + "z": 0.000005558674240684432 + } + }, + { + "id": "n28", + "parent": "11", + "degrees_of_freedom": [ + 168, + 169, + 170, + 171, + 172, + 173 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003160768617078865, + "y": -0.00038421021479772026, + "z": -0.000044650091188757176 + }, + "angle": { + "x": 2.9443272562560155e-7, + "y": -2.293998372558639e-7, + "z": -1.76532386124594e-7 + } + }, + { + "id": "n29", + "parent": "11", + "degrees_of_freedom": [ + 174, + 175, + 176, + 177, + 178, + 179 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003161301358759842, + "y": -0.0002855993148795416, + "z": -0.00007640073085744396 + }, + "angle": { + "x": -8.587648290117704e-7, + "y": -9.238629242562497e-7, + "z": 5.321007889075065e-7 + } + }, + { + "id": "n30", + "parent": "11", + "degrees_of_freedom": [ + 180, + 181, + 182, + 183, + 184, + 185 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000028408313026056454, + "y": -0.0002807120780898382, + "z": -0.000022341034517885825 + }, + "angle": { + "x": -4.7604157145661206e-7, + "y": -1.7159196943215916e-7, + "z": 4.3131274078675475e-7 + } + }, + { + "id": "n31", + "parent": "11", + "degrees_of_freedom": [ + 186, + 187, + 188, + 189, + 190, + 191 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006892749860208825, + "y": -0.00038845819073154265, + "z": -0.00005534293558019206 + }, + "angle": { + "x": 4.019565988634059e-7, + "y": -9.221794983364167e-7, + "z": 1.961296444558978e-7 + } + }, + { + "id": "n32", + "parent": "11", + "degrees_of_freedom": [ + 192, + 193, + 194, + 195, + 196, + 197 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006345795733542635, + "y": -0.0003851431827692085, + "z": -0.00005786582165786531 + }, + "angle": { + "x": -1.4018277806238246e-7, + "y": -7.468865793878647e-7, + "z": 1.8763856807610548e-7 + } + }, + { + "id": "n33", + "parent": "11", + "degrees_of_freedom": [ + 198, + 199, + 200, + 201, + 202, + 203 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000058538084593703605, + "y": -0.00038732628647417344, + "z": -0.000025729529284394498 + }, + "angle": { + "x": 5.661066533530062e-7, + "y": -5.892213344640755e-7, + "z": 3.2380617736840813e-7 + } + }, + { + "id": "n34", + "parent": "11", + "degrees_of_freedom": [ + 204, + 205, + 206, + 207, + 208, + 209 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010762648421880148, + "y": -0.000296512796866764, + "z": -0.00009229247105260852 + }, + "angle": { + "x": -8.841255398076375e-7, + "y": -0.000002786193548639812, + "z": 6.741295688837753e-7 + } + }, + { + "id": "n35", + "parent": "11", + "degrees_of_freedom": [ + 210, + 211, + 212, + 213, + 214, + 215 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010109469337712761, + "y": -0.00028978280205341455, + "z": -0.000027935201630708098 + }, + "angle": { + "x": -6.063842950789149e-7, + "y": 4.619298488842624e-7, + "z": 6.658395649784975e-7 + } + }, + { + "id": "n36", + "parent": "11", + "degrees_of_freedom": [ + 216, + 217, + 218, + 219, + 220, + 221 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000030317284714468223, + "y": -0.0003875285978614561, + "z": -1.194919092354525e-18 + }, + "angle": { + "x": -1.7828385889214382e-19, + "y": 2.075791753951441e-20, + "z": -1.4608835976100064e-7 + } + }, + { + "id": "n37", + "parent": "11", + "degrees_of_freedom": [ + 222, + 223, + 224, + 225, + 226, + 227 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000028408313026056474, + "y": -0.0002807120780898376, + "z": 0.000022341034517884348 + }, + "angle": { + "x": 4.760415714563734e-7, + "y": 1.7159196943216774e-7, + "z": 4.3131274078675364e-7 + } + }, + { + "id": "n38", + "parent": "11", + "degrees_of_freedom": [ + 228, + 229, + 230, + 231, + 232, + 233 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006012053274386848, + "y": -0.00039249739135155767, + "z": -1.0619821183202947e-18 + }, + "angle": { + "x": -2.083459690311549e-19, + "y": 7.513815153278436e-20, + "z": 2.4751216021238443e-7 + } + }, + { + "id": "n39", + "parent": "11", + "degrees_of_freedom": [ + 234, + 235, + 236, + 237, + 238, + 239 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000058538084593703205, + "y": -0.0003873262864741718, + "z": 0.00002572952928439205 + }, + "angle": { + "x": -5.661066533531945e-7, + "y": 5.892213344641025e-7, + "z": 3.238061773684067e-7 + } + }, + { + "id": "n40", + "parent": "11", + "degrees_of_freedom": [ + 240, + 241, + 242, + 243, + 244, + 245 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010109469337712688, + "y": -0.00028978280205341336, + "z": 0.000027935201630706898 + }, + "angle": { + "x": 6.063842950786683e-7, + "y": -4.6192984888421117e-7, + "z": 6.658395649785294e-7 + } + }, + { + "id": "n41", + "parent": "11", + "degrees_of_freedom": [ + 246, + 247, + 248, + 249, + 250, + 251 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003160768617078852, + "y": -0.0003842102147977177, + "z": 0.00004465009118875448 + }, + "angle": { + "x": -2.9443272562591257e-7, + "y": 2.2939983725586816e-7, + "z": -1.765323861246122e-7 + } + }, + { + "id": "n42", + "parent": "11", + "degrees_of_freedom": [ + 252, + 253, + 254, + 255, + 256, + 257 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003161301358759837, + "y": -0.00028559931487953904, + "z": 0.00007640073085744211 + }, + "angle": { + "x": 8.587648290115321e-7, + "y": 9.238629242562462e-7, + "z": 5.321007889074905e-7 + } + }, + { + "id": "n43", + "parent": "11", + "degrees_of_freedom": [ + 258, + 259, + 260, + 261, + 262, + 263 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006892749860208768, + "y": -0.0003884581907315404, + "z": 0.0000553429355801896 + }, + "angle": { + "x": -4.0195659886368765e-7, + "y": 9.221794983364658e-7, + "z": 1.961296444559091e-7 + } + }, + { + "id": "n44", + "parent": "11", + "degrees_of_freedom": [ + 264, + 265, + 266, + 267, + 268, + 269 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006345795733542579, + "y": -0.0003851431827692051, + "z": 0.00005786582165786268 + }, + "angle": { + "x": 1.401827780621872e-7, + "y": 7.468865793879056e-7, + "z": 1.8763856807612788e-7 + } + }, + { + "id": "n45", + "parent": "11", + "degrees_of_freedom": [ + 270, + 271, + 272, + 273, + 274, + 275 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010762648421880038, + "y": -0.0002965127968667615, + "z": 0.00009229247105260663 + }, + "angle": { + "x": 8.841255398074132e-7, + "y": 0.000002786193548639784, + "z": 6.741295688836934e-7 + } + }, + { + "id": "n46", + "parent": "11", + "degrees_of_freedom": [ + 276, + 277, + 278, + 279, + 280, + 281 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000026405098020731667, + "y": -0.0005931493327102243, + "z": -0.000027709128814633563 + }, + "angle": { + "x": 0.0000024673344647704618, + "y": -5.999429791782009e-7, + "z": 5.048200775847035e-7 + } + }, + { + "id": "n47", + "parent": "11", + "degrees_of_freedom": [ + 282, + 283, + 284, + 285, + 286, + 287 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002740240428211587, + "y": -0.0004820596370546303, + "z": -0.00007585217201456155 + }, + "angle": { + "x": 0.0000017227333381704394, + "y": -0.000001130804891854178, + "z": -2.2252296271655502e-7 + } + }, + { + "id": "n48", + "parent": "11", + "degrees_of_freedom": [ + 288, + 289, + 290, + 291, + 292, + 293 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000025535958326455337, + "y": -0.000490848017066856, + "z": -0.000017616299692986213 + }, + "angle": { + "x": 0.000001021940880091436, + "y": -1.6383332858675318e-7, + "z": -2.204093323274601e-7 + } + }, + { + "id": "n49", + "parent": "11", + "degrees_of_freedom": [ + 294, + 295, + 296, + 297, + 298, + 299 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00005208971150769329, + "y": -0.0005903548977356445, + "z": -0.000037209253327273345 + }, + "angle": { + "x": 0.0000041435060670169986, + "y": -0.000002073939313508303, + "z": -0.000004549619498392542 + } + }, + { + "id": "n50", + "parent": "11", + "degrees_of_freedom": [ + 300, + 301, + 302, + 303, + 304, + 305 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00005113513655497014, + "y": -0.0005794589123228938, + "z": -0.000030945392960982035 + }, + "angle": { + "x": 0.000011069653781772074, + "y": -6.028261131402947e-8, + "z": -9.422709454847621e-7 + } + }, + { + "id": "n51", + "parent": "11", + "degrees_of_freedom": [ + 306, + 307, + 308, + 309, + 310, + 311 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000048105683213181485, + "y": -0.0005958373815721199, + "z": -0.000017253755035667718 + }, + "angle": { + "x": -3.656830818070209e-7, + "y": -3.05360456932557e-7, + "z": -8.754255138801362e-8 + } + }, + { + "id": "n52", + "parent": "11", + "degrees_of_freedom": [ + 312, + 313, + 314, + 315, + 316, + 317 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000108168090970198, + "y": -0.00047901916813383326, + "z": -0.00009177257356267015 + }, + "angle": { + "x": 0.0000023095703953609793, + "y": -0.0000032458917860641926, + "z": -7.731334344398806e-7 + } + }, + { + "id": "n53", + "parent": "11", + "degrees_of_freedom": [ + 318, + 319, + 320, + 321, + 322, + 323 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001043177048887908, + "y": -0.0004915846699266274, + "z": -0.00002261287974413449 + }, + "angle": { + "x": 9.954939324093213e-7, + "y": 6.077758991967776e-7, + "z": -3.1246012986313475e-7 + } + }, + { + "id": "n54", + "parent": "11", + "degrees_of_freedom": [ + 324, + 325, + 326, + 327, + 328, + 329 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00002543991581872975, + "y": -0.0005881537225982241, + "z": -2.7558674017484822e-18 + }, + "angle": { + "x": -3.699916165174321e-19, + "y": 1.6846287173131103e-20, + "z": 5.812481567599484e-7 + } + }, + { + "id": "n55", + "parent": "11", + "degrees_of_freedom": [ + 330, + 331, + 332, + 333, + 334, + 335 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002553595832645503, + "y": -0.0004908480170668536, + "z": 0.000017616299692982523 + }, + "angle": { + "x": -0.000001021940880091788, + "y": 1.6383332858677586e-7, + "z": -2.2040933232744966e-7 + } + }, + { + "id": "n56", + "parent": "11", + "degrees_of_freedom": [ + 336, + 337, + 338, + 339, + 340, + 341 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000043620878852821605, + "y": -0.0005877899587063024, + "z": -2.574081631139398e-18 + }, + "angle": { + "x": -3.243465598104418e-19, + "y": 3.0975083704044344e-20, + "z": -0.000004934135523425825 + } + }, + { + "id": "n57", + "parent": "11", + "degrees_of_freedom": [ + 342, + 343, + 344, + 345, + 346, + 347 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000048105683213181235, + "y": -0.0005958373815721175, + "z": 0.00001725375503566255 + }, + "angle": { + "x": 3.6568308180673576e-7, + "y": 3.0536045693259046e-7, + "z": -8.754255138798024e-8 + } + }, + { + "id": "n58", + "parent": "11", + "degrees_of_freedom": [ + 348, + 349, + 350, + 351, + 352, + 353 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010431770488879024, + "y": -0.0004915846699266254, + "z": 0.000022612879744131052 + }, + "angle": { + "x": -9.954939324096824e-7, + "y": -6.077758991967072e-7, + "z": -3.12460129863148e-7 + } + }, + { + "id": "n59", + "parent": "11", + "degrees_of_freedom": [ + 354, + 355, + 356, + 357, + 358, + 359 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000026405098020731504, + "y": -0.0005931493327102205, + "z": 0.000027709128814628613 + }, + "angle": { + "x": -0.000002467334464770669, + "y": 5.999429791782108e-7, + "z": 5.048200775847721e-7 + } + }, + { + "id": "n60", + "parent": "11", + "degrees_of_freedom": [ + 360, + 361, + 362, + 363, + 364, + 365 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000027402404282115712, + "y": -0.0004820596370546261, + "z": 0.00007585217201455743 + }, + "angle": { + "x": -0.0000017227333381706965, + "y": 0.0000011308048918541725, + "z": -2.2252296271656294e-7 + } + }, + { + "id": "n61", + "parent": "11", + "degrees_of_freedom": [ + 366, + 367, + 368, + 369, + 370, + 371 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00005208971150769275, + "y": -0.0005903548977356411, + "z": 0.000037209253327268534 + }, + "angle": { + "x": -0.000004143506067017332, + "y": 0.0000020739393135083857, + "z": -0.0000045496194983924395 + } + }, + { + "id": "n62", + "parent": "11", + "degrees_of_freedom": [ + 372, + 373, + 374, + 375, + 376, + 377 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000051135136554969566, + "y": -0.0005794589123228891, + "z": 0.000030945392960977095 + }, + "angle": { + "x": -0.000011069653781772267, + "y": 6.02826113140686e-8, + "z": -9.422709454847609e-7 + } + }, + { + "id": "n63", + "parent": "11", + "degrees_of_freedom": [ + 378, + 379, + 380, + 381, + 382, + 383 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010816809097019691, + "y": -0.0004790191681338291, + "z": 0.0000917725735626664 + }, + "angle": { + "x": -0.0000023095703953612445, + "y": 0.0000032458917860642375, + "z": -7.731334344399108e-7 + } + }, + { + "id": "n64", + "parent": "11", + "degrees_of_freedom": [ + 384, + 385, + 386, + 387, + 388, + 389 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n65", + "parent": "11", + "degrees_of_freedom": [ + 390, + 391, + 392, + 393, + 394, + 395 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n66", + "parent": "11", + "degrees_of_freedom": [ + 396, + 397, + 398, + 399, + 400, + 401 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n67", + "parent": "11", + "degrees_of_freedom": [ + 402, + 403, + 404, + 405, + 406, + 407 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000026228641392648245, + "y": -0.00018152241119447863, + "z": -0.00003650271336470909 + }, + "angle": { + "x": -0.0000019768800599221883, + "y": 1.748123359346037e-7, + "z": -6.762494670897101e-7 + } + }, + { + "id": "n68", + "parent": "11", + "degrees_of_freedom": [ + 408, + 409, + 410, + 411, + 412, + 413 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010664913418784987, + "y": -0.00009241210451487291, + "z": -0.000046225355854331 + }, + "angle": { + "x": -0.000005723699626264722, + "y": 5.21933433849803e-7, + "z": -0.000002146800421902141 + } + }, + { + "id": "n69", + "parent": "11", + "degrees_of_freedom": [ + 414, + 415, + 416, + 417, + 418, + 419 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010415579939559989, + "y": -0.00008226901165096286, + "z": -0.00000797964258976351 + }, + "angle": { + "x": -0.0000026790130977719537, + "y": 5.644618780749575e-8, + "z": -0.0000018599825896138035 + } + }, + { + "id": "n70", + "parent": "11", + "degrees_of_freedom": [ + 420, + 421, + 422, + 423, + 424, + 425 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 1.3865310070578829e-14, + "y": -0.00018193038371290828, + "z": -0.000039690145134755384 + }, + "angle": { + "x": -0.0000021862065854465846, + "y": 5.620235320330761e-16, + "z": -4.532483204300491e-16 + } + }, + { + "id": "n71", + "parent": "11", + "degrees_of_freedom": [ + 426, + 427, + 428, + 429, + 430, + 431 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -9.146846399893487e-15, + "y": -0.0001745430109100038, + "z": -0.000018338419031203287 + }, + "angle": { + "x": -0.0000010183576346988434, + "y": 5.442796898523196e-16, + "z": 8.934549440530761e-17 + } + }, + { + "id": "n72", + "parent": "11", + "degrees_of_freedom": [ + 432, + 433, + 434, + 435, + 436, + 437 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n73", + "parent": "11", + "degrees_of_freedom": [ + 438, + 439, + 440, + 441, + 442, + 443 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n74", + "parent": "11", + "degrees_of_freedom": [ + 444, + 445, + 446, + 447, + 448, + 449 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000024717429366741733, + "y": -0.0001752263885062386, + "z": -3.2445890372668854e-19 + }, + "angle": { + "x": -9.941394774839273e-20, + "y": -2.2050403508485116e-20, + "z": -5.393933824513366e-7 + } + }, + { + "id": "n75", + "parent": "11", + "degrees_of_freedom": [ + 450, + 451, + 452, + 453, + 454, + 455 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010415579939559846, + "y": -0.00008226901165096248, + "z": 0.000007979642589763355 + }, + "angle": { + "x": 0.0000026790130977718576, + "y": -5.644618780751206e-8, + "z": -0.0000018599825896137957 + } + }, + { + "id": "n76", + "parent": "11", + "degrees_of_freedom": [ + 456, + 457, + 458, + 459, + 460, + 461 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -9.146868016137978e-15, + "y": -0.00017454301091000284, + "z": 0.00001833841903120248 + }, + "angle": { + "x": 0.0000010183576346987417, + "y": -5.442910403146435e-16, + "z": 8.936909668004068e-17 + } + }, + { + "id": "n77", + "parent": "11", + "degrees_of_freedom": [ + 462, + 463, + 464, + 465, + 466, + 467 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n78", + "parent": "11", + "degrees_of_freedom": [ + 468, + 469, + 470, + 471, + 472, + 473 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n79", + "parent": "11", + "degrees_of_freedom": [ + 474, + 475, + 476, + 477, + 478, + 479 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000026228641392647832, + "y": -0.00018152241119447752, + "z": 0.0000365027133647083 + }, + "angle": { + "x": 0.0000019768800599220465, + "y": -1.7481233593465926e-7, + "z": -6.762494670897014e-7 + } + }, + { + "id": "n80", + "parent": "11", + "degrees_of_freedom": [ + 480, + 481, + 482, + 483, + 484, + 485 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010664913418784801, + "y": -0.00009241210451487213, + "z": 0.000046225355854330546 + }, + "angle": { + "x": 0.0000057236996262646225, + "y": -5.219334338498097e-7, + "z": -0.0000021468004219020885 + } + }, + { + "id": "n81", + "parent": "11", + "degrees_of_freedom": [ + 486, + 487, + 488, + 489, + 490, + 491 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 1.3865045924245275e-14, + "y": -0.00018193038371290687, + "z": 0.00003969014513475457 + }, + "angle": { + "x": 0.0000021862065854464774, + "y": -5.620114981167697e-16, + "z": -4.532399343459023e-16 + } + }, + { + "id": "n82", + "parent": "11", + "degrees_of_freedom": [ + 492, + 493, + 494, + 495, + 496, + 497 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000031607686171082855, + "y": -0.00038421021479061586, + "z": -0.00004465009118692885 + }, + "angle": { + "x": 2.9443273476968776e-7, + "y": 2.2939982418207863e-7, + "z": 1.7653238669694965e-7 + } + }, + { + "id": "n83", + "parent": "11", + "degrees_of_freedom": [ + 498, + 499, + 500, + 501, + 502, + 503 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003161301364191379, + "y": -0.00028559931485821837, + "z": -0.00007640073086263446 + }, + "angle": { + "x": -8.587648287860664e-7, + "y": 9.23862923146645e-7, + "z": -5.321007890563879e-7 + } + }, + { + "id": "n84", + "parent": "11", + "degrees_of_freedom": [ + 504, + 505, + 506, + 507, + 508, + 509 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000028408312982396557, + "y": -0.0002807120781040109, + "z": -0.00002234103452478317 + }, + "angle": { + "x": -4.760415708928076e-7, + "y": 1.715919684411197e-7, + "z": -4.313127391205318e-7 + } + }, + { + "id": "n85", + "parent": "11", + "degrees_of_freedom": [ + 510, + 511, + 512, + 513, + 514, + 515 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 3.255016297830612e-14, + "y": -0.00038493872549210073, + "z": -0.00004733548982648204 + }, + "angle": { + "x": -1.0342566701619179e-7, + "y": -1.822989349504809e-16, + "z": 1.7984461454393334e-15 + } + }, + { + "id": "n86", + "parent": "11", + "degrees_of_freedom": [ + 516, + 517, + 518, + 519, + 520, + 521 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -2.968816801827531e-14, + "y": -0.0003866369923737763, + "z": -0.00002228626119342783 + }, + "angle": { + "x": 5.165062652975513e-7, + "y": -5.708909286840247e-17, + "z": -1.0322239859218117e-15 + } + }, + { + "id": "n87", + "parent": "11", + "degrees_of_freedom": [ + 522, + 523, + 524, + 525, + 526, + 527 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000030317284651357665, + "y": -0.00038752859789879254, + "z": -1.1435733884629091e-18 + }, + "angle": { + "x": -2.753096115154352e-19, + "y": -4.8710194128888875e-20, + "z": 1.4608835965311038e-7 + } + }, + { + "id": "n88", + "parent": "11", + "degrees_of_freedom": [ + 528, + 529, + 530, + 531, + 532, + 533 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000028408312982396527, + "y": -0.00028071207810400966, + "z": 0.000022341034524781774 + }, + "angle": { + "x": 4.760415708925626e-7, + "y": -1.7159196844115568e-7, + "z": -4.3131273912051177e-7 + } + }, + { + "id": "n89", + "parent": "11", + "degrees_of_freedom": [ + 534, + 535, + 536, + 537, + 538, + 539 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -2.968829500940246e-14, + "y": -0.00038663699237377516, + "z": 0.00002228626119342523 + }, + "angle": { + "x": -5.165062652977329e-7, + "y": 5.707837635506336e-17, + "z": -1.0321844175584516e-15 + } + }, + { + "id": "n90", + "parent": "11", + "degrees_of_freedom": [ + 540, + 541, + 542, + 543, + 544, + 545 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003160768617108225, + "y": -0.0003842102147906132, + "z": 0.00004465009118692614 + }, + "angle": { + "x": -2.9443273476985955e-7, + "y": -2.2939982418215052e-7, + "z": 1.765323866969835e-7 + } + }, + { + "id": "n91", + "parent": "11", + "degrees_of_freedom": [ + 546, + 547, + 548, + 549, + 550, + 551 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003161301364191288, + "y": -0.00028559931485821593, + "z": 0.00007640073086263249 + }, + "angle": { + "x": 8.587648287858303e-7, + "y": -9.238629231466718e-7, + "z": -5.321007890563738e-7 + } + }, + { + "id": "n92", + "parent": "11", + "degrees_of_freedom": [ + 552, + 553, + 554, + 555, + 556, + 557 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 3.254977062589042e-14, + "y": -0.00038493872549209753, + "z": 0.000047335489826479304 + }, + "angle": { + "x": 1.0342566701600252e-7, + "y": 1.8228758147608519e-16, + "z": 1.7984315371793024e-15 + } + }, + { + "id": "n93", + "parent": "11", + "degrees_of_freedom": [ + 558, + 559, + 560, + 561, + 562, + 563 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000026405097980038503, + "y": -0.0005931493326894829, + "z": -0.000027709128760260146 + }, + "angle": { + "x": 0.000002467334482367695, + "y": 5.999429541723965e-7, + "z": -5.048200770190845e-7 + } + }, + { + "id": "n94", + "parent": "11", + "degrees_of_freedom": [ + 564, + 565, + 566, + 567, + 568, + 569 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000027402404369942827, + "y": -0.00048205963697686255, + "z": -0.00007585217197516203 + }, + "angle": { + "x": 0.0000017227333487273865, + "y": 0.00000113080487749215, + "z": 2.225229670888826e-7 + } + }, + { + "id": "n95", + "parent": "11", + "degrees_of_freedom": [ + 570, + 571, + 572, + 573, + 574, + 575 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000025535958223377268, + "y": -0.0004908480171067353, + "z": -0.000017616299675157945 + }, + "angle": { + "x": 0.0000010219408852435415, + "y": 1.6383332147626562e-7, + "z": 2.2040933468033704e-7 + } + }, + { + "id": "n96", + "parent": "11", + "degrees_of_freedom": [ + 576, + 577, + 578, + 579, + 580, + 581 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 9.736456600040849e-15, + "y": -0.0005718424560634143, + "z": -0.000019931375832840092 + }, + "angle": { + "x": 0.00001178417105853316, + "y": -5.6878378315461154e-15, + "z": 6.739964749751976e-15 + } + }, + { + "id": "n97", + "parent": "11", + "degrees_of_freedom": [ + 582, + 583, + 584, + 585, + 586, + 587 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -4.99682200349907e-14, + "y": -0.0005850546833667759, + "z": -0.00001413602530237457 + }, + "angle": { + "x": -4.765969534013898e-7, + "y": -3.702941744809042e-15, + "z": -2.0247247534559328e-15 + } + }, + { + "id": "n98", + "parent": "11", + "degrees_of_freedom": [ + 588, + 589, + 590, + 591, + 592, + 593 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000025439915684441715, + "y": -0.0005881537226239135, + "z": -2.724112538624098e-18 + }, + "angle": { + "x": -4.344174163810944e-19, + "y": -4.558322855001377e-20, + "z": -5.812481585711673e-7 + } + }, + { + "id": "n99", + "parent": "11", + "degrees_of_freedom": [ + 594, + 595, + 596, + 597, + 598, + 599 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002553595822337649, + "y": -0.0004908480171067319, + "z": 0.000017616299675154285 + }, + "angle": { + "x": -0.0000010219408852438797, + "y": -1.6383332147630217e-7, + "z": 2.2040933468032222e-7 + } + }, + { + "id": "n100", + "parent": "11", + "degrees_of_freedom": [ + 600, + 601, + 602, + 603, + 604, + 605 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -4.996835990448244e-14, + "y": -0.000585054683366772, + "z": 0.000014136025302369293 + }, + "angle": { + "x": 4.765969534010602e-7, + "y": 3.702907304422507e-15, + "z": -2.024706765271598e-15 + } + }, + { + "id": "n101", + "parent": "11", + "degrees_of_freedom": [ + 606, + 607, + 608, + 609, + 610, + 611 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000026405097980038164, + "y": -0.0005931493326894797, + "z": 0.000027709128760255542 + }, + "angle": { + "x": -0.000002467334482367723, + "y": -5.999429541724549e-7, + "z": -5.048200770191665e-7 + } + }, + { + "id": "n102", + "parent": "11", + "degrees_of_freedom": [ + 612, + 613, + 614, + 615, + 616, + 617 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002740240436994185, + "y": -0.0004820596369768592, + "z": 0.0000758521719751583 + }, + "angle": { + "x": -0.0000017227333487276454, + "y": -0.0000011308048774922007, + "z": 2.225229670887843e-7 + } + }, + { + "id": "n103", + "parent": "11", + "degrees_of_freedom": [ + 618, + 619, + 620, + 621, + 622, + 623 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 9.7362380078371e-15, + "y": -0.0005718424560634094, + "z": 0.000019931375832835223 + }, + "angle": { + "x": -0.000011784171058533358, + "y": 5.687781308282235e-15, + "z": 6.739886503662898e-15 + } + }, + { + "id": "n104", + "parent": "11", + "degrees_of_freedom": [ + 624, + 625, + 626, + 627, + 628, + 629 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n105", + "parent": "11", + "degrees_of_freedom": [ + 630, + 631, + 632, + 633, + 634, + 635 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n106", + "parent": "11", + "degrees_of_freedom": [ + 636, + 637, + 638, + 639, + 640, + 641 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n107", + "parent": "11", + "degrees_of_freedom": [ + 642, + 643, + 644, + 645, + 646, + 647 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005944583252241687, + "y": -0.00019856789825608407, + "z": -0.000046477504784309474 + }, + "angle": { + "x": -0.0000027839207618292698, + "y": 3.601023199099333e-8, + "z": -0.0000010218476270654885 + } + }, + { + "id": "n108", + "parent": "11", + "degrees_of_freedom": [ + 648, + 649, + 650, + 651, + 652, + 653 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007540391388246572, + "y": -0.000120685206855352, + "z": -0.00006276763117223869 + }, + "angle": { + "x": -0.000008300537312807266, + "y": 0.000003068623712135185, + "z": -0.000005558674241558133 + } + }, + { + "id": "n109", + "parent": "11", + "degrees_of_freedom": [ + 654, + 655, + 656, + 657, + 658, + 659 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006411140616864552, + "y": -0.00009601806195606804, + "z": -0.000009330397723028237 + }, + "angle": { + "x": -0.0000034075054162034553, + "y": -4.7381162517355096e-7, + "z": -0.000003859545797888439 + } + }, + { + "id": "n110", + "parent": "11", + "degrees_of_freedom": [ + 660, + 661, + 662, + 663, + 664, + 665 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005378207808231139, + "y": -0.00019661901533295394, + "z": -0.000049276303548698676 + }, + "angle": { + "x": -0.00000226468770110246, + "y": 0.0000011598684429887083, + "z": -0.0000018845450883154209 + } + }, + { + "id": "n111", + "parent": "11", + "degrees_of_freedom": [ + 666, + 667, + 668, + 669, + 670, + 671 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004762580432586523, + "y": -0.0001833364131284662, + "z": -0.000021524781196956013 + }, + "angle": { + "x": -0.0000013490505991030951, + "y": 4.998564465831843e-7, + "z": -0.0000013216244404100134 + } + }, + { + "id": "n112", + "parent": "11", + "degrees_of_freedom": [ + 672, + 673, + 674, + 675, + 676, + 677 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n113", + "parent": "11", + "degrees_of_freedom": [ + 678, + 679, + 680, + 681, + 682, + 683 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n114", + "parent": "11", + "degrees_of_freedom": [ + 684, + 685, + 686, + 687, + 688, + 689 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005012652725192152, + "y": -0.0001861618734919221, + "z": -4.846201756675599e-20 + }, + "angle": { + "x": -1.0007121751771408e-19, + "y": -8.889855267028227e-20, + "z": -0.0000011293467808656173 + } + }, + { + "id": "n115", + "parent": "11", + "degrees_of_freedom": [ + 690, + 691, + 692, + 693, + 694, + 695 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006411140616864515, + "y": -0.0000960180619560677, + "z": 0.000009330397723028323 + }, + "angle": { + "x": 0.000003407505416203405, + "y": 4.738116251735091e-7, + "z": -0.0000038595457978884055 + } + }, + { + "id": "n116", + "parent": "11", + "degrees_of_freedom": [ + 696, + 697, + 698, + 699, + 700, + 701 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000047625804325864815, + "y": -0.00018333641312846558, + "z": 0.000021524781196955532 + }, + "angle": { + "x": 0.0000013490505991030077, + "y": -4.998564465832304e-7, + "z": -0.0000013216244404100102 + } + }, + { + "id": "n117", + "parent": "11", + "degrees_of_freedom": [ + 702, + 703, + 704, + 705, + 706, + 707 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n118", + "parent": "11", + "degrees_of_freedom": [ + 708, + 709, + 710, + 711, + 712, + 713 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n119", + "parent": "11", + "degrees_of_freedom": [ + 714, + 715, + 716, + 717, + 718, + 719 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000059445832522416156, + "y": -0.00019856789825608282, + "z": 0.00004647750478430896 + }, + "angle": { + "x": 0.0000027839207618291033, + "y": -3.601023199103048e-8, + "z": -0.000001021847627065472 + } + }, + { + "id": "n120", + "parent": "11", + "degrees_of_freedom": [ + 720, + 721, + 722, + 723, + 724, + 725 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000754039138824648, + "y": -0.00012068520685535087, + "z": 0.00006276763117223824 + }, + "angle": { + "x": 0.000008300537312807185, + "y": -0.0000030686237121352015, + "z": -0.000005558674241558062 + } + }, + { + "id": "n121", + "parent": "11", + "degrees_of_freedom": [ + 726, + 727, + 728, + 729, + 730, + 731 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000053782078082310475, + "y": -0.00019661901533295196, + "z": 0.000049276303548697985 + }, + "angle": { + "x": 0.0000022646877011023464, + "y": -0.000001159868442988749, + "z": -0.0000018845450883153963 + } + }, + { + "id": "n122", + "parent": "11", + "degrees_of_freedom": [ + 732, + 733, + 734, + 735, + 736, + 737 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006892749860133515, + "y": -0.0003884581907178515, + "z": -0.00005534293559208053 + }, + "angle": { + "x": 4.01956622566068e-7, + "y": 9.22179489610602e-7, + "z": -1.9612964409224827e-7 + } + }, + { + "id": "n123", + "parent": "11", + "degrees_of_freedom": [ + 738, + 739, + 740, + 741, + 742, + 743 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010762648422462989, + "y": -0.0002965127968419432, + "z": -0.00009229247107130932 + }, + "angle": { + "x": -8.841255409541756e-7, + "y": 0.000002786193550641583, + "z": -6.74129573548594e-7 + } + }, + { + "id": "n124", + "parent": "11", + "degrees_of_freedom": [ + 744, + 745, + 746, + 747, + 748, + 749 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010109469335822341, + "y": -0.00028978280207679234, + "z": -0.000027935201654142714 + }, + "angle": { + "x": -6.063842940180793e-7, + "y": -4.619298475960664e-7, + "z": -6.658395623725542e-7 + } + }, + { + "id": "n125", + "parent": "11", + "degrees_of_freedom": [ + 750, + 751, + 752, + 753, + 754, + 755 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006345795739038817, + "y": -0.00038514318266884366, + "z": -0.00005786582164591502 + }, + "angle": { + "x": -1.401827650309121e-7, + "y": 7.468865776852472e-7, + "z": -1.876385647964746e-7 + } + }, + { + "id": "n126", + "parent": "11", + "degrees_of_freedom": [ + 756, + 757, + 758, + 759, + 760, + 761 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005853808453893822, + "y": -0.00038732628653611695, + "z": -0.000025729529278811263 + }, + "angle": { + "x": 5.661066604269594e-7, + "y": 5.89221334037529e-7, + "z": -3.2380617969460883e-7 + } + }, + { + "id": "n127", + "parent": "11", + "degrees_of_freedom": [ + 762, + 763, + 764, + 765, + 766, + 767 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000060120532705302504, + "y": -0.00039249739144821906, + "z": -8.791616395436295e-19 + }, + "angle": { + "x": -2.4222545859726697e-19, + "y": -1.0111675771986626e-19, + "z": -2.475121608794427e-7 + } + }, + { + "id": "n128", + "parent": "11", + "degrees_of_freedom": [ + 768, + 769, + 770, + 771, + 772, + 773 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010109469335822235, + "y": -0.0002897828020767911, + "z": 0.000027935201654141837 + }, + "angle": { + "x": 6.063842940178336e-7, + "y": 4.619298475959887e-7, + "z": -6.658395623725646e-7 + } + }, + { + "id": "n129", + "parent": "11", + "degrees_of_freedom": [ + 774, + 775, + 776, + 777, + 778, + 779 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005853808453893766, + "y": -0.00038732628653611435, + "z": 0.000025729529278809007 + }, + "angle": { + "x": -5.661066604271746e-7, + "y": -5.89221334037595e-7, + "z": -3.2380617969464e-7 + } + }, + { + "id": "n130", + "parent": "11", + "degrees_of_freedom": [ + 780, + 781, + 782, + 783, + 784, + 785 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006892749860133422, + "y": -0.0003884581907178489, + "z": 0.00005534293559207841 + }, + "angle": { + "x": -4.019566225662346e-7, + "y": -9.221794896106594e-7, + "z": -1.9612964409229314e-7 + } + }, + { + "id": "n131", + "parent": "11", + "degrees_of_freedom": [ + 786, + 787, + 788, + 789, + 790, + 791 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010762648422462862, + "y": -0.00029651279684194065, + "z": 0.00009229247107130778 + }, + "angle": { + "x": 8.841255409539619e-7, + "y": -0.000002786193550641577, + "z": -6.741295735485422e-7 + } + }, + { + "id": "n132", + "parent": "11", + "degrees_of_freedom": [ + 792, + 793, + 794, + 795, + 796, + 797 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006345795739038705, + "y": -0.00038514318266884105, + "z": 0.00005786582164591272 + }, + "angle": { + "x": 1.401827650308591e-7, + "y": -7.468865776853203e-7, + "z": -1.8763856479649913e-7 + } + }, + { + "id": "n133", + "parent": "11", + "degrees_of_freedom": [ + 798, + 799, + 800, + 801, + 802, + 803 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000052089711519681175, + "y": -0.000590354897685957, + "z": -0.00003720925289857247 + }, + "angle": { + "x": 0.000004143506526762335, + "y": 0.0000020739390559793468, + "z": 0.0000045496194979031535 + } + }, + { + "id": "n134", + "parent": "11", + "degrees_of_freedom": [ + 804, + 805, + 806, + 807, + 808, + 809 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010816809105545167, + "y": -0.0004790191679042, + "z": -0.00009177257352139102 + }, + "angle": { + "x": 0.0000023095703916438083, + "y": 0.0000032458918109570895, + "z": 7.731334165728316e-7 + } + }, + { + "id": "n135", + "parent": "11", + "degrees_of_freedom": [ + 810, + 811, + 812, + 813, + 814, + 815 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001043177047858302, + "y": -0.0004915846700814171, + "z": -0.000022612879740108442 + }, + "angle": { + "x": 9.954939256819974e-7, + "y": -6.077758800670688e-7, + "z": 3.1246014300343336e-7 + } + }, + { + "id": "n136", + "parent": "11", + "degrees_of_freedom": [ + 816, + 817, + 818, + 819, + 820, + 821 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00005113513665098508, + "y": -0.0005794589120844551, + "z": -0.000030945392819969935 + }, + "angle": { + "x": 0.000011069653774592236, + "y": 6.028261060566622e-8, + "z": 9.42270980866201e-7 + } + }, + { + "id": "n137", + "parent": "11", + "degrees_of_freedom": [ + 822, + 823, + 824, + 825, + 826, + 827 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00004810568308869591, + "y": -0.0005958373817388597, + "z": -0.00001725375497258348 + }, + "angle": { + "x": -3.6568309644701887e-7, + "y": 3.0536045753396326e-7, + "z": 8.754252705793524e-8 + } + }, + { + "id": "n138", + "parent": "11", + "degrees_of_freedom": [ + 828, + 829, + 830, + 831, + 832, + 833 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000043620878762194955, + "y": -0.0005877899588706887, + "z": -2.330120749063402e-18 + }, + "angle": { + "x": -2.8681405724903353e-19, + "y": 2.4448007945963985e-21, + "z": 0.000004934135526035945 + } + }, + { + "id": "n139", + "parent": "11", + "degrees_of_freedom": [ + 834, + 835, + 836, + 837, + 838, + 839 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010431770478582986, + "y": -0.0004915846700814151, + "z": 0.00002261287974010536 + }, + "angle": { + "x": -9.954939256823351e-7, + "y": 6.077758800670022e-7, + "z": 3.1246014300336475e-7 + } + }, + { + "id": "n140", + "parent": "11", + "degrees_of_freedom": [ + 840, + 841, + 842, + 843, + 844, + 845 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00004810568308869575, + "y": -0.0005958373817388572, + "z": 0.000017253754972578756 + }, + "angle": { + "x": 3.65683096446793e-7, + "y": -3.0536045753406554e-7, + "z": 8.754252705783169e-8 + } + }, + { + "id": "n141", + "parent": "11", + "degrees_of_freedom": [ + 846, + 847, + 848, + 849, + 850, + 851 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00005208971151968049, + "y": -0.0005903548976859546, + "z": 0.00003720925289856861 + }, + "angle": { + "x": -0.00000414350652676247, + "y": -0.0000020739390559795183, + "z": 0.000004549619497903155 + } + }, + { + "id": "n142", + "parent": "11", + "degrees_of_freedom": [ + 852, + 853, + 854, + 855, + 856, + 857 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010816809105545065, + "y": -0.0004790191679041972, + "z": 0.00009177257352138808 + }, + "angle": { + "x": -0.0000023095703916440637, + "y": -0.0000032458918109571323, + "z": 7.731334165728396e-7 + } + }, + { + "id": "n143", + "parent": "11", + "degrees_of_freedom": [ + 858, + 859, + 860, + 861, + 862, + 863 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000051135136650984146, + "y": -0.0005794589120844523, + "z": 0.000030945392819965666 + }, + "angle": { + "x": -0.000011069653774592379, + "y": -6.028261060579193e-8, + "z": 9.422709808661569e-7 + } + } + ], + "edges": [ + { + "id": "e0", + "source": 0, + "target": 1, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1", + "source": 1, + "target": 2, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e2", + "source": 2, + "target": 3, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e3", + "source": 3, + "target": 0, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e4", + "source": 4, + "target": 5, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -238.1629638671875 + }, + { + "id": "e5", + "source": 5, + "target": 0, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -138.56024169921875 + }, + { + "id": "e6", + "source": 0, + "target": 6, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -270.7459716796875 + }, + { + "id": "e7", + "source": 6, + "target": 4, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.19097900390625 + }, + { + "id": "e8", + "source": 7, + "target": 8, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 25.38766098022461 + }, + { + "id": "e9", + "source": 8, + "target": 4, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 120.9810791015625 + }, + { + "id": "e10", + "source": 4, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 109.12527465820312 + }, + { + "id": "e11", + "source": 9, + "target": 7, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 110.31824493408203 + }, + { + "id": "e12", + "source": 2, + "target": 10, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -173.75271606445312 + }, + { + "id": "e13", + "source": 10, + "target": 7, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -184.7776641845703 + }, + { + "id": "e14", + "source": 7, + "target": 11, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -196.20819091796875 + }, + { + "id": "e15", + "source": 11, + "target": 2, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -316.04534912109375 + }, + { + "id": "e16", + "source": 8, + "target": 10, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -162.93592834472656 + }, + { + "id": "e17", + "source": 10, + "target": 1, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -135.84388732910156 + }, + { + "id": "e18", + "source": 1, + "target": 5, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.23101806640625 + }, + { + "id": "e19", + "source": 5, + "target": 8, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -183.26922607421875 + }, + { + "id": "e20", + "source": 6, + "target": 3, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -278.05377197265625 + }, + { + "id": "e21", + "source": 3, + "target": 11, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -95.71995544433594 + }, + { + "id": "e22", + "source": 11, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.49818420410156 + }, + { + "id": "e23", + "source": 9, + "target": 6, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -191.57150268554688 + }, + { + "id": "e24", + "source": 12, + "target": 3, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e25", + "source": 3, + "target": 13, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e26", + "source": 13, + "target": 14, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e27", + "source": 14, + "target": 12, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e28", + "source": 15, + "target": 6, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -254.9331817626953 + }, + { + "id": "e29", + "source": 6, + "target": 12, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -222.86810302734375 + }, + { + "id": "e30", + "source": 12, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -222.86810302734375 + }, + { + "id": "e31", + "source": 16, + "target": 15, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -254.9331817626953 + }, + { + "id": "e32", + "source": 17, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 72.0765151977539 + }, + { + "id": "e33", + "source": 9, + "target": 15, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.29946899414062 + }, + { + "id": "e34", + "source": 15, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.29946899414062 + }, + { + "id": "e35", + "source": 18, + "target": 17, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 72.0765151977539 + }, + { + "id": "e36", + "source": 13, + "target": 11, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -260.06298828125 + }, + { + "id": "e37", + "source": 11, + "target": 17, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -242.44024658203125 + }, + { + "id": "e38", + "source": 17, + "target": 19, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -242.44024658203125 + }, + { + "id": "e39", + "source": 19, + "target": 13, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -260.06298828125 + }, + { + "id": "e40", + "source": 16, + "target": 14, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -278.05377197265625 + }, + { + "id": "e41", + "source": 14, + "target": 19, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -95.71995544433594 + }, + { + "id": "e42", + "source": 19, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.49818420410156 + }, + { + "id": "e43", + "source": 18, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -191.57150268554688 + }, + { + "id": "e44", + "source": 20, + "target": 14, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e45", + "source": 14, + "target": 21, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e46", + "source": 21, + "target": 22, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e47", + "source": 22, + "target": 20, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e48", + "source": 23, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.19097900390625 + }, + { + "id": "e49", + "source": 16, + "target": 20, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -270.7459716796875 + }, + { + "id": "e50", + "source": 20, + "target": 24, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -138.56024169921875 + }, + { + "id": "e51", + "source": 24, + "target": 23, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -238.1629638671875 + }, + { + "id": "e52", + "source": 25, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 110.31824493408203 + }, + { + "id": "e53", + "source": 18, + "target": 23, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 109.12527465820312 + }, + { + "id": "e54", + "source": 23, + "target": 26, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 120.9810791015625 + }, + { + "id": "e55", + "source": 26, + "target": 25, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 25.38766098022461 + }, + { + "id": "e56", + "source": 21, + "target": 19, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -316.04534912109375 + }, + { + "id": "e57", + "source": 19, + "target": 25, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -196.20819091796875 + }, + { + "id": "e58", + "source": 25, + "target": 27, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -184.7776641845703 + }, + { + "id": "e59", + "source": 27, + "target": 21, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -173.75271606445312 + }, + { + "id": "e60", + "source": 24, + "target": 22, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.23101806640625 + }, + { + "id": "e61", + "source": 22, + "target": 27, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -135.84388732910156 + }, + { + "id": "e62", + "source": 27, + "target": 26, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -162.93592834472656 + }, + { + "id": "e63", + "source": 26, + "target": 24, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -183.26922607421875 + }, + { + "id": "e64", + "source": 28, + "target": 29, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -200.58062744140625 + }, + { + "id": "e65", + "source": 29, + "target": 4, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -192.53672790527344 + }, + { + "id": "e66", + "source": 4, + "target": 30, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.08404541015625 + }, + { + "id": "e67", + "source": 30, + "target": 28, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -243.56716918945312 + }, + { + "id": "e68", + "source": 31, + "target": 32, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 23.977283477783203 + }, + { + "id": "e69", + "source": 32, + "target": 28, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 135.19801330566406 + }, + { + "id": "e70", + "source": 28, + "target": 33, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.55287170410156 + }, + { + "id": "e71", + "source": 33, + "target": 31, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 120.0084457397461 + }, + { + "id": "e72", + "source": 7, + "target": 34, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -156.3897705078125 + }, + { + "id": "e73", + "source": 34, + "target": 31, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.9876251220703 + }, + { + "id": "e74", + "source": 31, + "target": 35, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -213.80300903320312 + }, + { + "id": "e75", + "source": 35, + "target": 7, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -218.01776123046875 + }, + { + "id": "e76", + "source": 32, + "target": 34, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -133.38563537597656 + }, + { + "id": "e77", + "source": 34, + "target": 8, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -138.1481170654297 + }, + { + "id": "e78", + "source": 8, + "target": 29, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -200.43370056152344 + }, + { + "id": "e79", + "source": 29, + "target": 32, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.09674072265625 + }, + { + "id": "e80", + "source": 30, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -234.47459411621094 + }, + { + "id": "e81", + "source": 9, + "target": 35, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -158.93252563476562 + }, + { + "id": "e82", + "source": 35, + "target": 33, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.96058654785156 + }, + { + "id": "e83", + "source": 33, + "target": 30, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -229.4532928466797 + }, + { + "id": "e84", + "source": 36, + "target": 30, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -253.42637634277344 + }, + { + "id": "e85", + "source": 30, + "target": 15, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -249.43397521972656 + }, + { + "id": "e86", + "source": 15, + "target": 37, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -249.43397521972656 + }, + { + "id": "e87", + "source": 37, + "target": 36, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -253.42637634277344 + }, + { + "id": "e88", + "source": 38, + "target": 33, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 81.93592834472656 + }, + { + "id": "e89", + "source": 33, + "target": 36, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 161.85098266601562 + }, + { + "id": "e90", + "source": 36, + "target": 39, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 161.85098266601562 + }, + { + "id": "e91", + "source": 39, + "target": 38, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 81.93592834472656 + }, + { + "id": "e92", + "source": 17, + "target": 35, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -227.05714416503906 + }, + { + "id": "e93", + "source": 35, + "target": 38, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -224.3381805419922 + }, + { + "id": "e94", + "source": 38, + "target": 40, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -224.3381805419922 + }, + { + "id": "e95", + "source": 40, + "target": 17, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -227.05714416503906 + }, + { + "id": "e96", + "source": 37, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -234.47459411621094 + }, + { + "id": "e97", + "source": 18, + "target": 40, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -158.93252563476562 + }, + { + "id": "e98", + "source": 40, + "target": 39, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.96058654785156 + }, + { + "id": "e99", + "source": 39, + "target": 37, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -229.4532928466797 + }, + { + "id": "e100", + "source": 41, + "target": 37, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -243.56716918945312 + }, + { + "id": "e101", + "source": 37, + "target": 23, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.08404541015625 + }, + { + "id": "e102", + "source": 23, + "target": 42, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -192.53672790527344 + }, + { + "id": "e103", + "source": 42, + "target": 41, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -200.58062744140625 + }, + { + "id": "e104", + "source": 43, + "target": 39, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 120.0084457397461 + }, + { + "id": "e105", + "source": 39, + "target": 41, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.55287170410156 + }, + { + "id": "e106", + "source": 41, + "target": 44, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 135.19801330566406 + }, + { + "id": "e107", + "source": 44, + "target": 43, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 23.977283477783203 + }, + { + "id": "e108", + "source": 25, + "target": 40, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -218.01776123046875 + }, + { + "id": "e109", + "source": 40, + "target": 43, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -213.80300903320312 + }, + { + "id": "e110", + "source": 43, + "target": 45, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.9876251220703 + }, + { + "id": "e111", + "source": 45, + "target": 25, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -156.3897705078125 + }, + { + "id": "e112", + "source": 42, + "target": 26, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -200.43370056152344 + }, + { + "id": "e113", + "source": 26, + "target": 45, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -138.1481170654297 + }, + { + "id": "e114", + "source": 45, + "target": 44, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -133.38563537597656 + }, + { + "id": "e115", + "source": 44, + "target": 42, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.09674072265625 + }, + { + "id": "e116", + "source": 46, + "target": 47, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -188.84005737304688 + }, + { + "id": "e117", + "source": 47, + "target": 28, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -199.94207763671875 + }, + { + "id": "e118", + "source": 28, + "target": 48, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -238.81210327148438 + }, + { + "id": "e119", + "source": 48, + "target": 46, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -276.6253662109375 + }, + { + "id": "e120", + "source": 49, + "target": 50, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -15.927849769592285 + }, + { + "id": "e121", + "source": 50, + "target": 46, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 83.89891052246094 + }, + { + "id": "e122", + "source": 46, + "target": 51, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 96.46788787841797 + }, + { + "id": "e123", + "source": 51, + "target": 49, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 71.81858825683594 + }, + { + "id": "e124", + "source": 31, + "target": 52, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -162.39405822753906 + }, + { + "id": "e125", + "source": 52, + "target": 49, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -170.31727600097656 + }, + { + "id": "e126", + "source": 49, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -252.52163696289062 + }, + { + "id": "e127", + "source": 53, + "target": 31, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -211.18917846679688 + }, + { + "id": "e128", + "source": 50, + "target": 52, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -130.22030639648438 + }, + { + "id": "e129", + "source": 52, + "target": 32, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -147.49752807617188 + }, + { + "id": "e130", + "source": 32, + "target": 47, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -182.58273315429688 + }, + { + "id": "e131", + "source": 47, + "target": 50, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.99954223632812 + }, + { + "id": "e132", + "source": 48, + "target": 33, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -211.55886840820312 + }, + { + "id": "e133", + "source": 33, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -175.43618774414062 + }, + { + "id": "e134", + "source": 53, + "target": 51, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -144.12208557128906 + }, + { + "id": "e135", + "source": 51, + "target": 48, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -247.25880432128906 + }, + { + "id": "e136", + "source": 54, + "target": 48, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -239.0681915283203 + }, + { + "id": "e137", + "source": 48, + "target": 36, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -257.10943603515625 + }, + { + "id": "e138", + "source": 36, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -257.10943603515625 + }, + { + "id": "e139", + "source": 55, + "target": 54, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -239.0681915283203 + }, + { + "id": "e140", + "source": 56, + "target": 51, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 38.30683898925781 + }, + { + "id": "e141", + "source": 51, + "target": 54, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 119.75855255126953 + }, + { + "id": "e142", + "source": 54, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 119.75855255126953 + }, + { + "id": "e143", + "source": 57, + "target": 56, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 38.30683898925781 + }, + { + "id": "e144", + "source": 38, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -229.4231719970703 + }, + { + "id": "e145", + "source": 53, + "target": 56, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.7774200439453 + }, + { + "id": "e146", + "source": 56, + "target": 58, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.7774200439453 + }, + { + "id": "e147", + "source": 58, + "target": 38, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -229.4231719970703 + }, + { + "id": "e148", + "source": 55, + "target": 39, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -211.55886840820312 + }, + { + "id": "e149", + "source": 39, + "target": 58, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -175.43618774414062 + }, + { + "id": "e150", + "source": 58, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -144.12208557128906 + }, + { + "id": "e151", + "source": 57, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -247.25880432128906 + }, + { + "id": "e152", + "source": 59, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -276.6253662109375 + }, + { + "id": "e153", + "source": 55, + "target": 41, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -238.81210327148438 + }, + { + "id": "e154", + "source": 41, + "target": 60, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -199.94207763671875 + }, + { + "id": "e155", + "source": 60, + "target": 59, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -188.84005737304688 + }, + { + "id": "e156", + "source": 61, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 71.81858825683594 + }, + { + "id": "e157", + "source": 57, + "target": 59, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 96.46788787841797 + }, + { + "id": "e158", + "source": 59, + "target": 62, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 83.89891052246094 + }, + { + "id": "e159", + "source": 62, + "target": 61, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -15.927849769592285 + }, + { + "id": "e160", + "source": 43, + "target": 58, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -211.18917846679688 + }, + { + "id": "e161", + "source": 58, + "target": 61, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -252.52163696289062 + }, + { + "id": "e162", + "source": 61, + "target": 63, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -170.31727600097656 + }, + { + "id": "e163", + "source": 63, + "target": 43, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -162.39405822753906 + }, + { + "id": "e164", + "source": 60, + "target": 44, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -182.58273315429688 + }, + { + "id": "e165", + "source": 44, + "target": 63, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -147.49752807617188 + }, + { + "id": "e166", + "source": 63, + "target": 62, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -130.22030639648438 + }, + { + "id": "e167", + "source": 62, + "target": 60, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.99954223632812 + }, + { + "id": "e168", + "source": 64, + "target": 65, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e169", + "source": 65, + "target": 0, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e170", + "source": 0, + "target": 66, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e171", + "source": 66, + "target": 64, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e172", + "source": 67, + "target": 68, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -238.1629638671875 + }, + { + "id": "e173", + "source": 68, + "target": 64, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -138.56024169921875 + }, + { + "id": "e174", + "source": 64, + "target": 69, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -270.7459716796875 + }, + { + "id": "e175", + "source": 69, + "target": 67, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.19097900390625 + }, + { + "id": "e176", + "source": 4, + "target": 70, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 88.24822235107422 + }, + { + "id": "e177", + "source": 70, + "target": 67, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 88.24822235107422 + }, + { + "id": "e178", + "source": 67, + "target": 71, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.17880249023438 + }, + { + "id": "e179", + "source": 71, + "target": 4, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.17880249023438 + }, + { + "id": "e180", + "source": 70, + "target": 5, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -236.56015014648438 + }, + { + "id": "e181", + "source": 5, + "target": 65, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -245.2415771484375 + }, + { + "id": "e182", + "source": 65, + "target": 68, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -245.2415771484375 + }, + { + "id": "e183", + "source": 68, + "target": 70, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -236.56015014648438 + }, + { + "id": "e184", + "source": 69, + "target": 66, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -215.560302734375 + }, + { + "id": "e185", + "source": 66, + "target": 6, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -215.560302734375 + }, + { + "id": "e186", + "source": 6, + "target": 71, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -245.57522583007812 + }, + { + "id": "e187", + "source": 71, + "target": 69, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -245.57522583007812 + }, + { + "id": "e188", + "source": 72, + "target": 66, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e189", + "source": 66, + "target": 12, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e190", + "source": 12, + "target": 73, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e191", + "source": 73, + "target": 72, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e192", + "source": 74, + "target": 69, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -254.9331817626953 + }, + { + "id": "e193", + "source": 69, + "target": 72, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -222.86810302734375 + }, + { + "id": "e194", + "source": 72, + "target": 75, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -222.86810302734375 + }, + { + "id": "e195", + "source": 75, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -254.9331817626953 + }, + { + "id": "e196", + "source": 15, + "target": 71, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 129.16754150390625 + }, + { + "id": "e197", + "source": 71, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 129.16754150390625 + }, + { + "id": "e198", + "source": 74, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 129.16754150390625 + }, + { + "id": "e199", + "source": 76, + "target": 15, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 129.16754150390625 + }, + { + "id": "e200", + "source": 75, + "target": 73, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -215.560302734375 + }, + { + "id": "e201", + "source": 73, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -215.560302734375 + }, + { + "id": "e202", + "source": 16, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -245.57522583007812 + }, + { + "id": "e203", + "source": 76, + "target": 75, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -245.57522583007812 + }, + { + "id": "e204", + "source": 77, + "target": 73, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e205", + "source": 73, + "target": 20, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e206", + "source": 20, + "target": 78, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e207", + "source": 78, + "target": 77, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e208", + "source": 79, + "target": 75, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.19097900390625 + }, + { + "id": "e209", + "source": 75, + "target": 77, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -270.7459716796875 + }, + { + "id": "e210", + "source": 77, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -138.56024169921875 + }, + { + "id": "e211", + "source": 80, + "target": 79, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -238.1629638671875 + }, + { + "id": "e212", + "source": 23, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.17880249023438 + }, + { + "id": "e213", + "source": 76, + "target": 79, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.17880249023438 + }, + { + "id": "e214", + "source": 79, + "target": 81, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 88.24822235107422 + }, + { + "id": "e215", + "source": 81, + "target": 23, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 88.24822235107422 + }, + { + "id": "e216", + "source": 80, + "target": 78, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -245.2415771484375 + }, + { + "id": "e217", + "source": 78, + "target": 24, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -245.2415771484375 + }, + { + "id": "e218", + "source": 24, + "target": 81, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -236.56015014648438 + }, + { + "id": "e219", + "source": 81, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -236.56015014648438 + }, + { + "id": "e220", + "source": 82, + "target": 83, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -200.58062744140625 + }, + { + "id": "e221", + "source": 83, + "target": 67, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -192.53672790527344 + }, + { + "id": "e222", + "source": 67, + "target": 84, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.08404541015625 + }, + { + "id": "e223", + "source": 84, + "target": 82, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -243.56716918945312 + }, + { + "id": "e224", + "source": 28, + "target": 85, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.8792495727539 + }, + { + "id": "e225", + "source": 85, + "target": 82, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.8792495727539 + }, + { + "id": "e226", + "source": 82, + "target": 86, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 161.91453552246094 + }, + { + "id": "e227", + "source": 86, + "target": 28, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 161.91453552246094 + }, + { + "id": "e228", + "source": 85, + "target": 29, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.17921447753906 + }, + { + "id": "e229", + "source": 29, + "target": 70, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.1677703857422 + }, + { + "id": "e230", + "source": 70, + "target": 83, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.1677703857422 + }, + { + "id": "e231", + "source": 83, + "target": 85, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.17921447753906 + }, + { + "id": "e232", + "source": 84, + "target": 71, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -233.2823028564453 + }, + { + "id": "e233", + "source": 71, + "target": 30, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -233.2823028564453 + }, + { + "id": "e234", + "source": 30, + "target": 86, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -232.54978942871094 + }, + { + "id": "e235", + "source": 86, + "target": 84, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -232.54978942871094 + }, + { + "id": "e236", + "source": 87, + "target": 84, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -253.42637634277344 + }, + { + "id": "e237", + "source": 84, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -249.43397521972656 + }, + { + "id": "e238", + "source": 74, + "target": 88, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -249.43397521972656 + }, + { + "id": "e239", + "source": 88, + "target": 87, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -253.42637634277344 + }, + { + "id": "e240", + "source": 36, + "target": 86, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 157.81063842773438 + }, + { + "id": "e241", + "source": 86, + "target": 87, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 157.81063842773438 + }, + { + "id": "e242", + "source": 87, + "target": 89, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 157.81063842773438 + }, + { + "id": "e243", + "source": 89, + "target": 36, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 157.81063842773438 + }, + { + "id": "e244", + "source": 88, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -233.2823028564453 + }, + { + "id": "e245", + "source": 76, + "target": 37, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -233.2823028564453 + }, + { + "id": "e246", + "source": 37, + "target": 89, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -232.54978942871094 + }, + { + "id": "e247", + "source": 89, + "target": 88, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -232.54978942871094 + }, + { + "id": "e248", + "source": 90, + "target": 88, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -243.56716918945312 + }, + { + "id": "e249", + "source": 88, + "target": 79, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.08404541015625 + }, + { + "id": "e250", + "source": 79, + "target": 91, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -192.53672790527344 + }, + { + "id": "e251", + "source": 91, + "target": 90, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -200.58062744140625 + }, + { + "id": "e252", + "source": 41, + "target": 89, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 161.91453552246094 + }, + { + "id": "e253", + "source": 89, + "target": 90, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 161.91453552246094 + }, + { + "id": "e254", + "source": 90, + "target": 92, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.8792495727539 + }, + { + "id": "e255", + "source": 92, + "target": 41, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.8792495727539 + }, + { + "id": "e256", + "source": 91, + "target": 81, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.1677703857422 + }, + { + "id": "e257", + "source": 81, + "target": 42, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.1677703857422 + }, + { + "id": "e258", + "source": 42, + "target": 92, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.17921447753906 + }, + { + "id": "e259", + "source": 92, + "target": 91, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.17921447753906 + }, + { + "id": "e260", + "source": 93, + "target": 94, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -188.84005737304688 + }, + { + "id": "e261", + "source": 94, + "target": 82, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -199.94207763671875 + }, + { + "id": "e262", + "source": 82, + "target": 95, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -238.81210327148438 + }, + { + "id": "e263", + "source": 95, + "target": 93, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -276.6253662109375 + }, + { + "id": "e264", + "source": 46, + "target": 96, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 55.88203048706055 + }, + { + "id": "e265", + "source": 96, + "target": 93, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 55.88203048706055 + }, + { + "id": "e266", + "source": 93, + "target": 97, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 119.93460845947266 + }, + { + "id": "e267", + "source": 97, + "target": 46, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 119.93460845947266 + }, + { + "id": "e268", + "source": 96, + "target": 47, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -187.14126586914062 + }, + { + "id": "e269", + "source": 47, + "target": 85, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -209.15550231933594 + }, + { + "id": "e270", + "source": 85, + "target": 94, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -209.15550231933594 + }, + { + "id": "e271", + "source": 94, + "target": 96, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -187.14126586914062 + }, + { + "id": "e272", + "source": 95, + "target": 86, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -236.0252227783203 + }, + { + "id": "e273", + "source": 86, + "target": 48, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -236.0252227783203 + }, + { + "id": "e274", + "source": 48, + "target": 97, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -206.01214599609375 + }, + { + "id": "e275", + "source": 97, + "target": 95, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -206.01214599609375 + }, + { + "id": "e276", + "source": 98, + "target": 95, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -239.0681915283203 + }, + { + "id": "e277", + "source": 95, + "target": 87, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -257.10943603515625 + }, + { + "id": "e278", + "source": 87, + "target": 99, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -257.10943603515625 + }, + { + "id": "e279", + "source": 99, + "target": 98, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -239.0681915283203 + }, + { + "id": "e280", + "source": 54, + "target": 97, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 118.72782897949219 + }, + { + "id": "e281", + "source": 97, + "target": 98, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 118.72782897949219 + }, + { + "id": "e282", + "source": 98, + "target": 100, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 118.72782897949219 + }, + { + "id": "e283", + "source": 100, + "target": 54, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 118.72782897949219 + }, + { + "id": "e284", + "source": 99, + "target": 89, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -236.0252227783203 + }, + { + "id": "e285", + "source": 89, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -236.0252227783203 + }, + { + "id": "e286", + "source": 55, + "target": 100, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -206.01214599609375 + }, + { + "id": "e287", + "source": 100, + "target": 99, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -206.01214599609375 + }, + { + "id": "e288", + "source": 101, + "target": 99, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -276.6253662109375 + }, + { + "id": "e289", + "source": 99, + "target": 90, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -238.81210327148438 + }, + { + "id": "e290", + "source": 90, + "target": 102, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -199.94207763671875 + }, + { + "id": "e291", + "source": 102, + "target": 101, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -188.84005737304688 + }, + { + "id": "e292", + "source": 59, + "target": 100, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 119.93460845947266 + }, + { + "id": "e293", + "source": 100, + "target": 101, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 119.93460845947266 + }, + { + "id": "e294", + "source": 101, + "target": 103, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 55.88203048706055 + }, + { + "id": "e295", + "source": 103, + "target": 59, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 55.88203048706055 + }, + { + "id": "e296", + "source": 102, + "target": 92, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -209.15550231933594 + }, + { + "id": "e297", + "source": 92, + "target": 60, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -209.15550231933594 + }, + { + "id": "e298", + "source": 60, + "target": 103, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -187.14126586914062 + }, + { + "id": "e299", + "source": 103, + "target": 102, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -187.14126586914062 + }, + { + "id": "e300", + "source": 104, + "target": 105, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e301", + "source": 105, + "target": 64, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e302", + "source": 64, + "target": 106, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e303", + "source": 106, + "target": 104, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e304", + "source": 107, + "target": 108, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -184.7776641845703 + }, + { + "id": "e305", + "source": 108, + "target": 104, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -173.75271606445312 + }, + { + "id": "e306", + "source": 104, + "target": 109, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -316.04534912109375 + }, + { + "id": "e307", + "source": 109, + "target": 107, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -196.20819091796875 + }, + { + "id": "e308", + "source": 67, + "target": 110, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 120.9810791015625 + }, + { + "id": "e309", + "source": 110, + "target": 107, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 25.38766098022461 + }, + { + "id": "e310", + "source": 107, + "target": 111, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 110.31824493408203 + }, + { + "id": "e311", + "source": 111, + "target": 67, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 109.12527465820312 + }, + { + "id": "e312", + "source": 110, + "target": 68, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -183.26922607421875 + }, + { + "id": "e313", + "source": 68, + "target": 105, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.23101806640625 + }, + { + "id": "e314", + "source": 105, + "target": 108, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -135.84388732910156 + }, + { + "id": "e315", + "source": 108, + "target": 110, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -162.93592834472656 + }, + { + "id": "e316", + "source": 109, + "target": 106, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -95.71995544433594 + }, + { + "id": "e317", + "source": 106, + "target": 69, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -278.05377197265625 + }, + { + "id": "e318", + "source": 69, + "target": 111, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -191.57150268554688 + }, + { + "id": "e319", + "source": 111, + "target": 109, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.49818420410156 + }, + { + "id": "e320", + "source": 112, + "target": 106, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e321", + "source": 106, + "target": 72, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e322", + "source": 72, + "target": 113, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e323", + "source": 113, + "target": 112, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e324", + "source": 114, + "target": 109, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -242.44024658203125 + }, + { + "id": "e325", + "source": 109, + "target": 112, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -260.06298828125 + }, + { + "id": "e326", + "source": 112, + "target": 115, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -260.06298828125 + }, + { + "id": "e327", + "source": 115, + "target": 114, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -242.44024658203125 + }, + { + "id": "e328", + "source": 74, + "target": 111, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.29946899414062 + }, + { + "id": "e329", + "source": 111, + "target": 114, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 72.0765151977539 + }, + { + "id": "e330", + "source": 114, + "target": 116, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 72.0765151977539 + }, + { + "id": "e331", + "source": 116, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.29946899414062 + }, + { + "id": "e332", + "source": 115, + "target": 113, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -95.71995544433594 + }, + { + "id": "e333", + "source": 113, + "target": 75, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -278.05377197265625 + }, + { + "id": "e334", + "source": 75, + "target": 116, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -191.57150268554688 + }, + { + "id": "e335", + "source": 116, + "target": 115, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.49818420410156 + }, + { + "id": "e336", + "source": 117, + "target": 113, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e337", + "source": 113, + "target": 77, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e338", + "source": 77, + "target": 118, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e339", + "source": 118, + "target": 117, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e340", + "source": 119, + "target": 115, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -196.20819091796875 + }, + { + "id": "e341", + "source": 115, + "target": 117, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -316.04534912109375 + }, + { + "id": "e342", + "source": 117, + "target": 120, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -173.75271606445312 + }, + { + "id": "e343", + "source": 120, + "target": 119, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -184.7776641845703 + }, + { + "id": "e344", + "source": 79, + "target": 116, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 109.12527465820312 + }, + { + "id": "e345", + "source": 116, + "target": 119, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 110.31824493408203 + }, + { + "id": "e346", + "source": 119, + "target": 121, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 25.38766098022461 + }, + { + "id": "e347", + "source": 121, + "target": 79, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 120.9810791015625 + }, + { + "id": "e348", + "source": 120, + "target": 118, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -135.84388732910156 + }, + { + "id": "e349", + "source": 118, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.23101806640625 + }, + { + "id": "e350", + "source": 80, + "target": 121, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -183.26922607421875 + }, + { + "id": "e351", + "source": 121, + "target": 120, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -162.93592834472656 + }, + { + "id": "e352", + "source": 122, + "target": 123, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.9876251220703 + }, + { + "id": "e353", + "source": 123, + "target": 107, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -156.3897705078125 + }, + { + "id": "e354", + "source": 107, + "target": 124, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -218.01776123046875 + }, + { + "id": "e355", + "source": 124, + "target": 122, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -213.80300903320312 + }, + { + "id": "e356", + "source": 82, + "target": 125, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 135.19801330566406 + }, + { + "id": "e357", + "source": 125, + "target": 122, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 23.977283477783203 + }, + { + "id": "e358", + "source": 122, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 120.0084457397461 + }, + { + "id": "e359", + "source": 126, + "target": 82, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.55287170410156 + }, + { + "id": "e360", + "source": 125, + "target": 83, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.09674072265625 + }, + { + "id": "e361", + "source": 83, + "target": 110, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -200.43370056152344 + }, + { + "id": "e362", + "source": 110, + "target": 123, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -138.1481170654297 + }, + { + "id": "e363", + "source": 123, + "target": 125, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -133.38563537597656 + }, + { + "id": "e364", + "source": 124, + "target": 111, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -158.93252563476562 + }, + { + "id": "e365", + "source": 111, + "target": 84, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -234.47459411621094 + }, + { + "id": "e366", + "source": 84, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -229.4532928466797 + }, + { + "id": "e367", + "source": 126, + "target": 124, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.96058654785156 + }, + { + "id": "e368", + "source": 127, + "target": 124, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -224.3381805419922 + }, + { + "id": "e369", + "source": 124, + "target": 114, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -227.05714416503906 + }, + { + "id": "e370", + "source": 114, + "target": 128, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -227.05714416503906 + }, + { + "id": "e371", + "source": 128, + "target": 127, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -224.3381805419922 + }, + { + "id": "e372", + "source": 87, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 161.8509979248047 + }, + { + "id": "e373", + "source": 126, + "target": 127, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 81.93592834472656 + }, + { + "id": "e374", + "source": 127, + "target": 129, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 81.93592834472656 + }, + { + "id": "e375", + "source": 129, + "target": 87, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 161.8509979248047 + }, + { + "id": "e376", + "source": 128, + "target": 116, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -158.93252563476562 + }, + { + "id": "e377", + "source": 116, + "target": 88, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -234.47459411621094 + }, + { + "id": "e378", + "source": 88, + "target": 129, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -229.4532928466797 + }, + { + "id": "e379", + "source": 129, + "target": 128, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.96058654785156 + }, + { + "id": "e380", + "source": 130, + "target": 128, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -213.80300903320312 + }, + { + "id": "e381", + "source": 128, + "target": 119, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -218.01776123046875 + }, + { + "id": "e382", + "source": 119, + "target": 131, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -156.3897705078125 + }, + { + "id": "e383", + "source": 131, + "target": 130, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.9876251220703 + }, + { + "id": "e384", + "source": 90, + "target": 129, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.55287170410156 + }, + { + "id": "e385", + "source": 129, + "target": 130, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 120.0084457397461 + }, + { + "id": "e386", + "source": 130, + "target": 132, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 23.977283477783203 + }, + { + "id": "e387", + "source": 132, + "target": 90, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 135.19801330566406 + }, + { + "id": "e388", + "source": 131, + "target": 121, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -138.1481170654297 + }, + { + "id": "e389", + "source": 121, + "target": 91, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -200.43370056152344 + }, + { + "id": "e390", + "source": 91, + "target": 132, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.09674072265625 + }, + { + "id": "e391", + "source": 132, + "target": 131, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -133.38563537597656 + }, + { + "id": "e392", + "source": 133, + "target": 134, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -170.31727600097656 + }, + { + "id": "e393", + "source": 134, + "target": 122, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -162.39405822753906 + }, + { + "id": "e394", + "source": 122, + "target": 135, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -211.18917846679688 + }, + { + "id": "e395", + "source": 135, + "target": 133, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -252.52163696289062 + }, + { + "id": "e396", + "source": 93, + "target": 136, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 83.89891052246094 + }, + { + "id": "e397", + "source": 136, + "target": 133, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -15.927849769592285 + }, + { + "id": "e398", + "source": 133, + "target": 137, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 71.81858825683594 + }, + { + "id": "e399", + "source": 137, + "target": 93, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 96.46786499023438 + }, + { + "id": "e400", + "source": 136, + "target": 94, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.99954223632812 + }, + { + "id": "e401", + "source": 94, + "target": 125, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -182.58273315429688 + }, + { + "id": "e402", + "source": 125, + "target": 134, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -147.49752807617188 + }, + { + "id": "e403", + "source": 134, + "target": 136, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -130.22030639648438 + }, + { + "id": "e404", + "source": 135, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -175.43618774414062 + }, + { + "id": "e405", + "source": 126, + "target": 95, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -211.55886840820312 + }, + { + "id": "e406", + "source": 95, + "target": 137, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -247.25880432128906 + }, + { + "id": "e407", + "source": 137, + "target": 135, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -144.12208557128906 + }, + { + "id": "e408", + "source": 138, + "target": 135, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.7774200439453 + }, + { + "id": "e409", + "source": 135, + "target": 127, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -229.4231719970703 + }, + { + "id": "e410", + "source": 127, + "target": 139, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -229.4231719970703 + }, + { + "id": "e411", + "source": 139, + "target": 138, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.7774200439453 + }, + { + "id": "e412", + "source": 98, + "target": 137, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 119.75855255126953 + }, + { + "id": "e413", + "source": 137, + "target": 138, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 38.306854248046875 + }, + { + "id": "e414", + "source": 138, + "target": 140, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 38.306854248046875 + }, + { + "id": "e415", + "source": 140, + "target": 98, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 119.75855255126953 + }, + { + "id": "e416", + "source": 139, + "target": 129, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -175.43618774414062 + }, + { + "id": "e417", + "source": 129, + "target": 99, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -211.55886840820312 + }, + { + "id": "e418", + "source": 99, + "target": 140, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -247.25880432128906 + }, + { + "id": "e419", + "source": 140, + "target": 139, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -144.12208557128906 + }, + { + "id": "e420", + "source": 141, + "target": 139, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -252.52163696289062 + }, + { + "id": "e421", + "source": 139, + "target": 130, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -211.18917846679688 + }, + { + "id": "e422", + "source": 130, + "target": 142, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -162.39405822753906 + }, + { + "id": "e423", + "source": 142, + "target": 141, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -170.31727600097656 + }, + { + "id": "e424", + "source": 101, + "target": 140, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 96.46786499023438 + }, + { + "id": "e425", + "source": 140, + "target": 141, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 71.81858825683594 + }, + { + "id": "e426", + "source": 141, + "target": 143, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -15.927849769592285 + }, + { + "id": "e427", + "source": 143, + "target": 101, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 83.89891052246094 + }, + { + "id": "e428", + "source": 142, + "target": 132, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -147.49752807617188 + }, + { + "id": "e429", + "source": 132, + "target": 102, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -182.58273315429688 + }, + { + "id": "e430", + "source": 102, + "target": 143, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.99954223632812 + }, + { + "id": "e431", + "source": 143, + "target": 142, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -130.22030639648438 + } + ], + "ndofs": 864, + "animation": { + "showDisplacement": true, + "exageration": 2000, + "speed": 3 + }, + "viz": { + "minStress": -347.64988403320314, + "maxStress": 178.10598907470705, + "colorMaps": [ + [ + [ + 0, + [ + 0.23, + 0.299, + 0.754 + ] + ], + [ + 0.002, + [ + 0.23, + 0.299, + 0.754 + ] + ], + [ + 0.004, + [ + 0.234, + 0.306, + 0.76 + ] + ], + [ + 0.006, + [ + 0.234, + 0.306, + 0.76 + ] + ], + [ + 0.008, + [ + 0.239, + 0.312, + 0.766 + ] + ], + [ + 0.01, + [ + 0.239, + 0.312, + 0.766 + ] + ], + [ + 0.012, + [ + 0.244, + 0.319, + 0.772 + ] + ], + [ + 0.014, + [ + 0.244, + 0.319, + 0.772 + ] + ], + [ + 0.016, + [ + 0.248, + 0.326, + 0.778 + ] + ], + [ + 0.018, + [ + 0.248, + 0.326, + 0.778 + ] + ], + [ + 0.02, + [ + 0.253, + 0.333, + 0.784 + ] + ], + [ + 0.022, + [ + 0.253, + 0.333, + 0.784 + ] + ], + [ + 0.023, + [ + 0.257, + 0.34, + 0.79 + ] + ], + [ + 0.025, + [ + 0.257, + 0.34, + 0.79 + ] + ], + [ + 0.027, + [ + 0.262, + 0.346, + 0.796 + ] + ], + [ + 0.029, + [ + 0.262, + 0.346, + 0.796 + ] + ], + [ + 0.031, + [ + 0.266, + 0.353, + 0.802 + ] + ], + [ + 0.033, + [ + 0.266, + 0.353, + 0.802 + ] + ], + [ + 0.035, + [ + 0.271, + 0.36, + 0.807 + ] + ], + [ + 0.037, + [ + 0.271, + 0.36, + 0.807 + ] + ], + [ + 0.039, + [ + 0.276, + 0.367, + 0.813 + ] + ], + [ + 0.041, + [ + 0.276, + 0.367, + 0.813 + ] + ], + [ + 0.043, + [ + 0.281, + 0.373, + 0.818 + ] + ], + [ + 0.045, + [ + 0.281, + 0.373, + 0.818 + ] + ], + [ + 0.047, + [ + 0.285, + 0.38, + 0.823 + ] + ], + [ + 0.049, + [ + 0.285, + 0.38, + 0.823 + ] + ], + [ + 0.051, + [ + 0.29, + 0.387, + 0.829 + ] + ], + [ + 0.053, + [ + 0.29, + 0.387, + 0.829 + ] + ], + [ + 0.055, + [ + 0.295, + 0.394, + 0.834 + ] + ], + [ + 0.057, + [ + 0.295, + 0.394, + 0.834 + ] + ], + [ + 0.059, + [ + 0.299, + 0.4, + 0.84 + ] + ], + [ + 0.061, + [ + 0.299, + 0.4, + 0.84 + ] + ], + [ + 0.063, + [ + 0.304, + 0.407, + 0.845 + ] + ], + [ + 0.065, + [ + 0.304, + 0.407, + 0.845 + ] + ], + [ + 0.067, + [ + 0.309, + 0.413, + 0.85 + ] + ], + [ + 0.068, + [ + 0.309, + 0.413, + 0.85 + ] + ], + [ + 0.07, + [ + 0.314, + 0.42, + 0.855 + ] + ], + [ + 0.072, + [ + 0.314, + 0.42, + 0.855 + ] + ], + [ + 0.074, + [ + 0.319, + 0.427, + 0.86 + ] + ], + [ + 0.076, + [ + 0.319, + 0.427, + 0.86 + ] + ], + [ + 0.078, + [ + 0.324, + 0.433, + 0.865 + ] + ], + [ + 0.08, + [ + 0.324, + 0.433, + 0.865 + ] + ], + [ + 0.082, + [ + 0.329, + 0.44, + 0.87 + ] + ], + [ + 0.084, + [ + 0.329, + 0.44, + 0.87 + ] + ], + [ + 0.086, + [ + 0.333, + 0.446, + 0.874 + ] + ], + [ + 0.088, + [ + 0.333, + 0.446, + 0.874 + ] + ], + [ + 0.09, + [ + 0.338, + 0.453, + 0.879 + ] + ], + [ + 0.092, + [ + 0.338, + 0.453, + 0.879 + ] + ], + [ + 0.094, + [ + 0.343, + 0.459, + 0.884 + ] + ], + [ + 0.096, + [ + 0.343, + 0.459, + 0.884 + ] + ], + [ + 0.098, + [ + 0.348, + 0.466, + 0.888 + ] + ], + [ + 0.1, + [ + 0.348, + 0.466, + 0.888 + ] + ], + [ + 0.102, + [ + 0.353, + 0.472, + 0.893 + ] + ], + [ + 0.104, + [ + 0.353, + 0.472, + 0.893 + ] + ], + [ + 0.106, + [ + 0.358, + 0.478, + 0.897 + ] + ], + [ + 0.108, + [ + 0.358, + 0.478, + 0.897 + ] + ], + [ + 0.11, + [ + 0.363, + 0.485, + 0.901 + ] + ], + [ + 0.112, + [ + 0.363, + 0.485, + 0.901 + ] + ], + [ + 0.114, + [ + 0.369, + 0.491, + 0.905 + ] + ], + [ + 0.115, + [ + 0.369, + 0.491, + 0.905 + ] + ], + [ + 0.117, + [ + 0.374, + 0.497, + 0.909 + ] + ], + [ + 0.119, + [ + 0.374, + 0.497, + 0.909 + ] + ], + [ + 0.121, + [ + 0.379, + 0.504, + 0.914 + ] + ], + [ + 0.123, + [ + 0.379, + 0.504, + 0.914 + ] + ], + [ + 0.125, + [ + 0.384, + 0.51, + 0.918 + ] + ], + [ + 0.127, + [ + 0.384, + 0.51, + 0.918 + ] + ], + [ + 0.129, + [ + 0.389, + 0.516, + 0.921 + ] + ], + [ + 0.131, + [ + 0.389, + 0.516, + 0.921 + ] + ], + [ + 0.133, + [ + 0.394, + 0.522, + 0.925 + ] + ], + [ + 0.135, + [ + 0.394, + 0.522, + 0.925 + ] + ], + [ + 0.137, + [ + 0.399, + 0.529, + 0.928 + ] + ], + [ + 0.139, + [ + 0.399, + 0.529, + 0.928 + ] + ], + [ + 0.141, + [ + 0.404, + 0.535, + 0.932 + ] + ], + [ + 0.143, + [ + 0.404, + 0.535, + 0.932 + ] + ], + [ + 0.145, + [ + 0.41, + 0.541, + 0.936 + ] + ], + [ + 0.147, + [ + 0.41, + 0.541, + 0.936 + ] + ], + [ + 0.149, + [ + 0.415, + 0.547, + 0.939 + ] + ], + [ + 0.151, + [ + 0.415, + 0.547, + 0.939 + ] + ], + [ + 0.153, + [ + 0.42, + 0.553, + 0.943 + ] + ], + [ + 0.155, + [ + 0.42, + 0.553, + 0.943 + ] + ], + [ + 0.157, + [ + 0.425, + 0.559, + 0.946 + ] + ], + [ + 0.159, + [ + 0.425, + 0.559, + 0.946 + ] + ], + [ + 0.16, + [ + 0.431, + 0.565, + 0.949 + ] + ], + [ + 0.162, + [ + 0.431, + 0.565, + 0.949 + ] + ], + [ + 0.164, + [ + 0.436, + 0.571, + 0.952 + ] + ], + [ + 0.166, + [ + 0.436, + 0.571, + 0.952 + ] + ], + [ + 0.168, + [ + 0.441, + 0.577, + 0.955 + ] + ], + [ + 0.17, + [ + 0.441, + 0.577, + 0.955 + ] + ], + [ + 0.172, + [ + 0.446, + 0.582, + 0.957 + ] + ], + [ + 0.174, + [ + 0.446, + 0.582, + 0.957 + ] + ], + [ + 0.176, + [ + 0.452, + 0.588, + 0.96 + ] + ], + [ + 0.178, + [ + 0.452, + 0.588, + 0.96 + ] + ], + [ + 0.18, + [ + 0.457, + 0.594, + 0.963 + ] + ], + [ + 0.182, + [ + 0.457, + 0.594, + 0.963 + ] + ], + [ + 0.184, + [ + 0.462, + 0.6, + 0.966 + ] + ], + [ + 0.186, + [ + 0.462, + 0.6, + 0.966 + ] + ], + [ + 0.188, + [ + 0.468, + 0.606, + 0.969 + ] + ], + [ + 0.19, + [ + 0.468, + 0.606, + 0.969 + ] + ], + [ + 0.192, + [ + 0.473, + 0.611, + 0.971 + ] + ], + [ + 0.194, + [ + 0.473, + 0.611, + 0.971 + ] + ], + [ + 0.196, + [ + 0.478, + 0.617, + 0.973 + ] + ], + [ + 0.198, + [ + 0.478, + 0.617, + 0.973 + ] + ], + [ + 0.2, + [ + 0.484, + 0.622, + 0.975 + ] + ], + [ + 0.202, + [ + 0.484, + 0.622, + 0.975 + ] + ], + [ + 0.204, + [ + 0.489, + 0.628, + 0.977 + ] + ], + [ + 0.205, + [ + 0.489, + 0.628, + 0.977 + ] + ], + [ + 0.207, + [ + 0.495, + 0.633, + 0.979 + ] + ], + [ + 0.209, + [ + 0.495, + 0.633, + 0.979 + ] + ], + [ + 0.211, + [ + 0.5, + 0.639, + 0.981 + ] + ], + [ + 0.213, + [ + 0.5, + 0.639, + 0.981 + ] + ], + [ + 0.215, + [ + 0.505, + 0.644, + 0.983 + ] + ], + [ + 0.217, + [ + 0.505, + 0.644, + 0.983 + ] + ], + [ + 0.219, + [ + 0.511, + 0.649, + 0.985 + ] + ], + [ + 0.221, + [ + 0.511, + 0.649, + 0.985 + ] + ], + [ + 0.223, + [ + 0.516, + 0.654, + 0.986 + ] + ], + [ + 0.225, + [ + 0.516, + 0.654, + 0.986 + ] + ], + [ + 0.227, + [ + 0.522, + 0.66, + 0.988 + ] + ], + [ + 0.229, + [ + 0.522, + 0.66, + 0.988 + ] + ], + [ + 0.231, + [ + 0.527, + 0.665, + 0.989 + ] + ], + [ + 0.233, + [ + 0.527, + 0.665, + 0.989 + ] + ], + [ + 0.235, + [ + 0.533, + 0.67, + 0.99 + ] + ], + [ + 0.237, + [ + 0.533, + 0.67, + 0.99 + ] + ], + [ + 0.239, + [ + 0.538, + 0.675, + 0.992 + ] + ], + [ + 0.241, + [ + 0.538, + 0.675, + 0.992 + ] + ], + [ + 0.243, + [ + 0.543, + 0.68, + 0.993 + ] + ], + [ + 0.245, + [ + 0.543, + 0.68, + 0.993 + ] + ], + [ + 0.247, + [ + 0.549, + 0.685, + 0.994 + ] + ], + [ + 0.249, + [ + 0.549, + 0.685, + 0.994 + ] + ], + [ + 0.25, + [ + 0.554, + 0.69, + 0.996 + ] + ], + [ + 0.252, + [ + 0.554, + 0.69, + 0.996 + ] + ], + [ + 0.254, + [ + 0.56, + 0.695, + 0.996 + ] + ], + [ + 0.256, + [ + 0.56, + 0.695, + 0.996 + ] + ], + [ + 0.258, + [ + 0.565, + 0.699, + 0.997 + ] + ], + [ + 0.26, + [ + 0.565, + 0.699, + 0.997 + ] + ], + [ + 0.262, + [ + 0.571, + 0.704, + 0.997 + ] + ], + [ + 0.264, + [ + 0.571, + 0.704, + 0.997 + ] + ], + [ + 0.266, + [ + 0.576, + 0.709, + 0.998 + ] + ], + [ + 0.268, + [ + 0.576, + 0.709, + 0.998 + ] + ], + [ + 0.27, + [ + 0.581, + 0.713, + 0.998 + ] + ], + [ + 0.272, + [ + 0.581, + 0.713, + 0.998 + ] + ], + [ + 0.274, + [ + 0.587, + 0.718, + 0.999 + ] + ], + [ + 0.276, + [ + 0.587, + 0.718, + 0.999 + ] + ], + [ + 0.278, + [ + 0.592, + 0.723, + 0.999 + ] + ], + [ + 0.28, + [ + 0.592, + 0.723, + 0.999 + ] + ], + [ + 0.282, + [ + 0.598, + 0.727, + 1 + ] + ], + [ + 0.284, + [ + 0.598, + 0.727, + 1 + ] + ], + [ + 0.286, + [ + 0.603, + 0.732, + 1 + ] + ], + [ + 0.288, + [ + 0.603, + 0.732, + 1 + ] + ], + [ + 0.29, + [ + 0.609, + 0.736, + 0.999 + ] + ], + [ + 0.292, + [ + 0.609, + 0.736, + 0.999 + ] + ], + [ + 0.294, + [ + 0.614, + 0.74, + 0.999 + ] + ], + [ + 0.295, + [ + 0.614, + 0.74, + 0.999 + ] + ], + [ + 0.297, + [ + 0.619, + 0.744, + 0.999 + ] + ], + [ + 0.299, + [ + 0.619, + 0.744, + 0.999 + ] + ], + [ + 0.301, + [ + 0.625, + 0.748, + 0.999 + ] + ], + [ + 0.303, + [ + 0.625, + 0.748, + 0.999 + ] + ], + [ + 0.305, + [ + 0.63, + 0.753, + 0.999 + ] + ], + [ + 0.307, + [ + 0.63, + 0.753, + 0.999 + ] + ], + [ + 0.309, + [ + 0.635, + 0.757, + 0.998 + ] + ], + [ + 0.311, + [ + 0.635, + 0.757, + 0.998 + ] + ], + [ + 0.313, + [ + 0.641, + 0.761, + 0.998 + ] + ], + [ + 0.315, + [ + 0.641, + 0.761, + 0.998 + ] + ], + [ + 0.317, + [ + 0.646, + 0.764, + 0.997 + ] + ], + [ + 0.319, + [ + 0.646, + 0.764, + 0.997 + ] + ], + [ + 0.321, + [ + 0.651, + 0.768, + 0.996 + ] + ], + [ + 0.323, + [ + 0.651, + 0.768, + 0.996 + ] + ], + [ + 0.325, + [ + 0.657, + 0.772, + 0.995 + ] + ], + [ + 0.327, + [ + 0.657, + 0.772, + 0.995 + ] + ], + [ + 0.329, + [ + 0.662, + 0.775, + 0.994 + ] + ], + [ + 0.331, + [ + 0.662, + 0.775, + 0.994 + ] + ], + [ + 0.333, + [ + 0.667, + 0.779, + 0.993 + ] + ], + [ + 0.335, + [ + 0.667, + 0.779, + 0.993 + ] + ], + [ + 0.337, + [ + 0.673, + 0.783, + 0.992 + ] + ], + [ + 0.339, + [ + 0.673, + 0.783, + 0.992 + ] + ], + [ + 0.341, + [ + 0.678, + 0.787, + 0.991 + ] + ], + [ + 0.342, + [ + 0.678, + 0.787, + 0.991 + ] + ], + [ + 0.344, + [ + 0.683, + 0.79, + 0.99 + ] + ], + [ + 0.346, + [ + 0.683, + 0.79, + 0.99 + ] + ], + [ + 0.348, + [ + 0.688, + 0.793, + 0.988 + ] + ], + [ + 0.35, + [ + 0.688, + 0.793, + 0.988 + ] + ], + [ + 0.352, + [ + 0.693, + 0.796, + 0.986 + ] + ], + [ + 0.354, + [ + 0.693, + 0.796, + 0.986 + ] + ], + [ + 0.356, + [ + 0.698, + 0.799, + 0.985 + ] + ], + [ + 0.358, + [ + 0.698, + 0.799, + 0.985 + ] + ], + [ + 0.36, + [ + 0.704, + 0.803, + 0.983 + ] + ], + [ + 0.362, + [ + 0.704, + 0.803, + 0.983 + ] + ], + [ + 0.364, + [ + 0.709, + 0.806, + 0.981 + ] + ], + [ + 0.366, + [ + 0.709, + 0.806, + 0.981 + ] + ], + [ + 0.368, + [ + 0.714, + 0.809, + 0.979 + ] + ], + [ + 0.37, + [ + 0.714, + 0.809, + 0.979 + ] + ], + [ + 0.372, + [ + 0.719, + 0.812, + 0.978 + ] + ], + [ + 0.374, + [ + 0.719, + 0.812, + 0.978 + ] + ], + [ + 0.376, + [ + 0.724, + 0.815, + 0.976 + ] + ], + [ + 0.378, + [ + 0.724, + 0.815, + 0.976 + ] + ], + [ + 0.38, + [ + 0.729, + 0.817, + 0.973 + ] + ], + [ + 0.382, + [ + 0.729, + 0.817, + 0.973 + ] + ], + [ + 0.384, + [ + 0.734, + 0.82, + 0.971 + ] + ], + [ + 0.386, + [ + 0.734, + 0.82, + 0.971 + ] + ], + [ + 0.387, + [ + 0.739, + 0.823, + 0.968 + ] + ], + [ + 0.389, + [ + 0.739, + 0.823, + 0.968 + ] + ], + [ + 0.391, + [ + 0.744, + 0.825, + 0.966 + ] + ], + [ + 0.393, + [ + 0.744, + 0.825, + 0.966 + ] + ], + [ + 0.395, + [ + 0.749, + 0.828, + 0.963 + ] + ], + [ + 0.397, + [ + 0.749, + 0.828, + 0.963 + ] + ], + [ + 0.399, + [ + 0.754, + 0.83, + 0.961 + ] + ], + [ + 0.401, + [ + 0.754, + 0.83, + 0.961 + ] + ], + [ + 0.403, + [ + 0.759, + 0.833, + 0.958 + ] + ], + [ + 0.405, + [ + 0.759, + 0.833, + 0.958 + ] + ], + [ + 0.407, + [ + 0.763, + 0.835, + 0.956 + ] + ], + [ + 0.409, + [ + 0.763, + 0.835, + 0.956 + ] + ], + [ + 0.411, + [ + 0.768, + 0.837, + 0.952 + ] + ], + [ + 0.413, + [ + 0.768, + 0.837, + 0.952 + ] + ], + [ + 0.415, + [ + 0.773, + 0.839, + 0.949 + ] + ], + [ + 0.417, + [ + 0.773, + 0.839, + 0.949 + ] + ], + [ + 0.419, + [ + 0.777, + 0.841, + 0.946 + ] + ], + [ + 0.421, + [ + 0.777, + 0.841, + 0.946 + ] + ], + [ + 0.423, + [ + 0.782, + 0.843, + 0.943 + ] + ], + [ + 0.425, + [ + 0.782, + 0.843, + 0.943 + ] + ], + [ + 0.427, + [ + 0.787, + 0.845, + 0.94 + ] + ], + [ + 0.429, + [ + 0.787, + 0.845, + 0.94 + ] + ], + [ + 0.431, + [ + 0.791, + 0.847, + 0.937 + ] + ], + [ + 0.432, + [ + 0.791, + 0.847, + 0.937 + ] + ], + [ + 0.434, + [ + 0.796, + 0.849, + 0.933 + ] + ], + [ + 0.436, + [ + 0.796, + 0.849, + 0.933 + ] + ], + [ + 0.438, + [ + 0.801, + 0.85, + 0.93 + ] + ], + [ + 0.44, + [ + 0.801, + 0.85, + 0.93 + ] + ], + [ + 0.442, + [ + 0.805, + 0.852, + 0.926 + ] + ], + [ + 0.444, + [ + 0.805, + 0.852, + 0.926 + ] + ], + [ + 0.446, + [ + 0.809, + 0.853, + 0.922 + ] + ], + [ + 0.448, + [ + 0.809, + 0.853, + 0.922 + ] + ], + [ + 0.45, + [ + 0.814, + 0.854, + 0.918 + ] + ], + [ + 0.452, + [ + 0.814, + 0.854, + 0.918 + ] + ], + [ + 0.454, + [ + 0.818, + 0.856, + 0.915 + ] + ], + [ + 0.456, + [ + 0.818, + 0.856, + 0.915 + ] + ], + [ + 0.458, + [ + 0.822, + 0.857, + 0.911 + ] + ], + [ + 0.46, + [ + 0.822, + 0.857, + 0.911 + ] + ], + [ + 0.462, + [ + 0.827, + 0.858, + 0.907 + ] + ], + [ + 0.464, + [ + 0.827, + 0.858, + 0.907 + ] + ], + [ + 0.466, + [ + 0.831, + 0.86, + 0.903 + ] + ], + [ + 0.468, + [ + 0.831, + 0.86, + 0.903 + ] + ], + [ + 0.47, + [ + 0.835, + 0.861, + 0.899 + ] + ], + [ + 0.472, + [ + 0.835, + 0.861, + 0.899 + ] + ], + [ + 0.474, + [ + 0.839, + 0.861, + 0.894 + ] + ], + [ + 0.476, + [ + 0.839, + 0.861, + 0.894 + ] + ], + [ + 0.477, + [ + 0.843, + 0.862, + 0.89 + ] + ], + [ + 0.479, + [ + 0.843, + 0.862, + 0.89 + ] + ], + [ + 0.481, + [ + 0.847, + 0.862, + 0.886 + ] + ], + [ + 0.483, + [ + 0.847, + 0.862, + 0.886 + ] + ], + [ + 0.485, + [ + 0.851, + 0.863, + 0.881 + ] + ], + [ + 0.487, + [ + 0.851, + 0.863, + 0.881 + ] + ], + [ + 0.489, + [ + 0.855, + 0.864, + 0.877 + ] + ], + [ + 0.491, + [ + 0.855, + 0.864, + 0.877 + ] + ], + [ + 0.493, + [ + 0.859, + 0.864, + 0.872 + ] + ], + [ + 0.495, + [ + 0.859, + 0.864, + 0.872 + ] + ], + [ + 0.497, + [ + 0.863, + 0.865, + 0.868 + ] + ], + [ + 0.499, + [ + 0.863, + 0.865, + 0.868 + ] + ], + [ + 0.501, + [ + 0.867, + 0.864, + 0.863 + ] + ], + [ + 0.503, + [ + 0.867, + 0.864, + 0.863 + ] + ], + [ + 0.505, + [ + 0.871, + 0.862, + 0.857 + ] + ], + [ + 0.507, + [ + 0.871, + 0.862, + 0.857 + ] + ], + [ + 0.509, + [ + 0.876, + 0.86, + 0.851 + ] + ], + [ + 0.511, + [ + 0.876, + 0.86, + 0.851 + ] + ], + [ + 0.513, + [ + 0.88, + 0.858, + 0.846 + ] + ], + [ + 0.515, + [ + 0.88, + 0.858, + 0.846 + ] + ], + [ + 0.517, + [ + 0.884, + 0.856, + 0.84 + ] + ], + [ + 0.519, + [ + 0.884, + 0.856, + 0.84 + ] + ], + [ + 0.521, + [ + 0.888, + 0.854, + 0.835 + ] + ], + [ + 0.523, + [ + 0.888, + 0.854, + 0.835 + ] + ], + [ + 0.524, + [ + 0.892, + 0.852, + 0.829 + ] + ], + [ + 0.526, + [ + 0.892, + 0.852, + 0.829 + ] + ], + [ + 0.528, + [ + 0.896, + 0.85, + 0.823 + ] + ], + [ + 0.53, + [ + 0.896, + 0.85, + 0.823 + ] + ], + [ + 0.532, + [ + 0.9, + 0.848, + 0.818 + ] + ], + [ + 0.534, + [ + 0.9, + 0.848, + 0.818 + ] + ], + [ + 0.536, + [ + 0.903, + 0.845, + 0.812 + ] + ], + [ + 0.538, + [ + 0.903, + 0.845, + 0.812 + ] + ], + [ + 0.54, + [ + 0.906, + 0.842, + 0.806 + ] + ], + [ + 0.542, + [ + 0.906, + 0.842, + 0.806 + ] + ], + [ + 0.544, + [ + 0.909, + 0.839, + 0.8 + ] + ], + [ + 0.546, + [ + 0.909, + 0.839, + 0.8 + ] + ], + [ + 0.548, + [ + 0.913, + 0.837, + 0.795 + ] + ], + [ + 0.55, + [ + 0.913, + 0.837, + 0.795 + ] + ], + [ + 0.552, + [ + 0.916, + 0.834, + 0.789 + ] + ], + [ + 0.554, + [ + 0.916, + 0.834, + 0.789 + ] + ], + [ + 0.556, + [ + 0.919, + 0.831, + 0.783 + ] + ], + [ + 0.558, + [ + 0.919, + 0.831, + 0.783 + ] + ], + [ + 0.56, + [ + 0.923, + 0.829, + 0.777 + ] + ], + [ + 0.562, + [ + 0.923, + 0.829, + 0.777 + ] + ], + [ + 0.564, + [ + 0.926, + 0.826, + 0.771 + ] + ], + [ + 0.566, + [ + 0.926, + 0.826, + 0.771 + ] + ], + [ + 0.568, + [ + 0.928, + 0.822, + 0.765 + ] + ], + [ + 0.569, + [ + 0.928, + 0.822, + 0.765 + ] + ], + [ + 0.571, + [ + 0.931, + 0.819, + 0.759 + ] + ], + [ + 0.573, + [ + 0.931, + 0.819, + 0.759 + ] + ], + [ + 0.575, + [ + 0.933, + 0.816, + 0.753 + ] + ], + [ + 0.577, + [ + 0.933, + 0.816, + 0.753 + ] + ], + [ + 0.579, + [ + 0.936, + 0.812, + 0.747 + ] + ], + [ + 0.581, + [ + 0.936, + 0.812, + 0.747 + ] + ], + [ + 0.583, + [ + 0.938, + 0.809, + 0.741 + ] + ], + [ + 0.585, + [ + 0.938, + 0.809, + 0.741 + ] + ], + [ + 0.587, + [ + 0.941, + 0.806, + 0.735 + ] + ], + [ + 0.589, + [ + 0.941, + 0.806, + 0.735 + ] + ], + [ + 0.591, + [ + 0.943, + 0.802, + 0.729 + ] + ], + [ + 0.593, + [ + 0.943, + 0.802, + 0.729 + ] + ], + [ + 0.595, + [ + 0.946, + 0.799, + 0.723 + ] + ], + [ + 0.597, + [ + 0.946, + 0.799, + 0.723 + ] + ], + [ + 0.599, + [ + 0.947, + 0.795, + 0.717 + ] + ], + [ + 0.601, + [ + 0.947, + 0.795, + 0.717 + ] + ], + [ + 0.603, + [ + 0.949, + 0.791, + 0.711 + ] + ], + [ + 0.605, + [ + 0.949, + 0.791, + 0.711 + ] + ], + [ + 0.607, + [ + 0.951, + 0.787, + 0.705 + ] + ], + [ + 0.609, + [ + 0.951, + 0.787, + 0.705 + ] + ], + [ + 0.611, + [ + 0.953, + 0.783, + 0.699 + ] + ], + [ + 0.613, + [ + 0.953, + 0.783, + 0.699 + ] + ], + [ + 0.614, + [ + 0.955, + 0.779, + 0.693 + ] + ], + [ + 0.616, + [ + 0.955, + 0.779, + 0.693 + ] + ], + [ + 0.618, + [ + 0.956, + 0.775, + 0.686 + ] + ], + [ + 0.62, + [ + 0.956, + 0.775, + 0.686 + ] + ], + [ + 0.622, + [ + 0.958, + 0.771, + 0.68 + ] + ], + [ + 0.624, + [ + 0.958, + 0.771, + 0.68 + ] + ], + [ + 0.626, + [ + 0.96, + 0.767, + 0.674 + ] + ], + [ + 0.628, + [ + 0.96, + 0.767, + 0.674 + ] + ], + [ + 0.63, + [ + 0.961, + 0.763, + 0.668 + ] + ], + [ + 0.632, + [ + 0.961, + 0.763, + 0.668 + ] + ], + [ + 0.634, + [ + 0.962, + 0.758, + 0.662 + ] + ], + [ + 0.636, + [ + 0.962, + 0.758, + 0.662 + ] + ], + [ + 0.638, + [ + 0.963, + 0.754, + 0.656 + ] + ], + [ + 0.64, + [ + 0.963, + 0.754, + 0.656 + ] + ], + [ + 0.642, + [ + 0.964, + 0.749, + 0.649 + ] + ], + [ + 0.644, + [ + 0.964, + 0.749, + 0.649 + ] + ], + [ + 0.646, + [ + 0.965, + 0.745, + 0.643 + ] + ], + [ + 0.648, + [ + 0.965, + 0.745, + 0.643 + ] + ], + [ + 0.65, + [ + 0.966, + 0.74, + 0.637 + ] + ], + [ + 0.652, + [ + 0.966, + 0.74, + 0.637 + ] + ], + [ + 0.654, + [ + 0.967, + 0.736, + 0.631 + ] + ], + [ + 0.656, + [ + 0.967, + 0.736, + 0.631 + ] + ], + [ + 0.658, + [ + 0.968, + 0.731, + 0.625 + ] + ], + [ + 0.659, + [ + 0.968, + 0.731, + 0.625 + ] + ], + [ + 0.661, + [ + 0.968, + 0.726, + 0.618 + ] + ], + [ + 0.663, + [ + 0.968, + 0.726, + 0.618 + ] + ], + [ + 0.665, + [ + 0.968, + 0.721, + 0.612 + ] + ], + [ + 0.667, + [ + 0.968, + 0.721, + 0.612 + ] + ], + [ + 0.669, + [ + 0.969, + 0.716, + 0.606 + ] + ], + [ + 0.671, + [ + 0.969, + 0.716, + 0.606 + ] + ], + [ + 0.673, + [ + 0.969, + 0.711, + 0.6 + ] + ], + [ + 0.675, + [ + 0.969, + 0.711, + 0.6 + ] + ], + [ + 0.677, + [ + 0.969, + 0.706, + 0.594 + ] + ], + [ + 0.679, + [ + 0.969, + 0.706, + 0.594 + ] + ], + [ + 0.681, + [ + 0.97, + 0.701, + 0.588 + ] + ], + [ + 0.683, + [ + 0.97, + 0.701, + 0.588 + ] + ], + [ + 0.685, + [ + 0.97, + 0.696, + 0.581 + ] + ], + [ + 0.687, + [ + 0.97, + 0.696, + 0.581 + ] + ], + [ + 0.689, + [ + 0.97, + 0.69, + 0.575 + ] + ], + [ + 0.691, + [ + 0.97, + 0.69, + 0.575 + ] + ], + [ + 0.693, + [ + 0.969, + 0.685, + 0.569 + ] + ], + [ + 0.695, + [ + 0.969, + 0.685, + 0.569 + ] + ], + [ + 0.697, + [ + 0.969, + 0.679, + 0.563 + ] + ], + [ + 0.699, + [ + 0.969, + 0.679, + 0.563 + ] + ], + [ + 0.701, + [ + 0.968, + 0.674, + 0.557 + ] + ], + [ + 0.703, + [ + 0.968, + 0.674, + 0.557 + ] + ], + [ + 0.705, + [ + 0.968, + 0.668, + 0.55 + ] + ], + [ + 0.706, + [ + 0.968, + 0.668, + 0.55 + ] + ], + [ + 0.708, + [ + 0.968, + 0.663, + 0.544 + ] + ], + [ + 0.71, + [ + 0.968, + 0.663, + 0.544 + ] + ], + [ + 0.712, + [ + 0.967, + 0.657, + 0.538 + ] + ], + [ + 0.714, + [ + 0.967, + 0.657, + 0.538 + ] + ], + [ + 0.716, + [ + 0.967, + 0.652, + 0.532 + ] + ], + [ + 0.718, + [ + 0.967, + 0.652, + 0.532 + ] + ], + [ + 0.72, + [ + 0.966, + 0.646, + 0.526 + ] + ], + [ + 0.722, + [ + 0.966, + 0.646, + 0.526 + ] + ], + [ + 0.724, + [ + 0.965, + 0.64, + 0.52 + ] + ], + [ + 0.726, + [ + 0.965, + 0.64, + 0.52 + ] + ], + [ + 0.728, + [ + 0.964, + 0.634, + 0.514 + ] + ], + [ + 0.73, + [ + 0.964, + 0.634, + 0.514 + ] + ], + [ + 0.732, + [ + 0.963, + 0.628, + 0.508 + ] + ], + [ + 0.734, + [ + 0.963, + 0.628, + 0.508 + ] + ], + [ + 0.736, + [ + 0.962, + 0.622, + 0.502 + ] + ], + [ + 0.738, + [ + 0.962, + 0.622, + 0.502 + ] + ], + [ + 0.74, + [ + 0.96, + 0.616, + 0.495 + ] + ], + [ + 0.742, + [ + 0.96, + 0.616, + 0.495 + ] + ], + [ + 0.744, + [ + 0.959, + 0.61, + 0.489 + ] + ], + [ + 0.746, + [ + 0.959, + 0.61, + 0.489 + ] + ], + [ + 0.748, + [ + 0.958, + 0.604, + 0.483 + ] + ], + [ + 0.75, + [ + 0.958, + 0.604, + 0.483 + ] + ], + [ + 0.751, + [ + 0.957, + 0.598, + 0.477 + ] + ], + [ + 0.753, + [ + 0.957, + 0.598, + 0.477 + ] + ], + [ + 0.755, + [ + 0.955, + 0.592, + 0.471 + ] + ], + [ + 0.757, + [ + 0.955, + 0.592, + 0.471 + ] + ], + [ + 0.759, + [ + 0.953, + 0.585, + 0.465 + ] + ], + [ + 0.761, + [ + 0.953, + 0.585, + 0.465 + ] + ], + [ + 0.763, + [ + 0.951, + 0.579, + 0.459 + ] + ], + [ + 0.765, + [ + 0.951, + 0.579, + 0.459 + ] + ], + [ + 0.767, + [ + 0.949, + 0.572, + 0.453 + ] + ], + [ + 0.769, + [ + 0.949, + 0.572, + 0.453 + ] + ], + [ + 0.771, + [ + 0.948, + 0.566, + 0.447 + ] + ], + [ + 0.773, + [ + 0.948, + 0.566, + 0.447 + ] + ], + [ + 0.775, + [ + 0.946, + 0.56, + 0.442 + ] + ], + [ + 0.777, + [ + 0.946, + 0.56, + 0.442 + ] + ], + [ + 0.779, + [ + 0.944, + 0.553, + 0.436 + ] + ], + [ + 0.781, + [ + 0.944, + 0.553, + 0.436 + ] + ], + [ + 0.783, + [ + 0.942, + 0.546, + 0.43 + ] + ], + [ + 0.785, + [ + 0.942, + 0.546, + 0.43 + ] + ], + [ + 0.787, + [ + 0.939, + 0.54, + 0.424 + ] + ], + [ + 0.789, + [ + 0.939, + 0.54, + 0.424 + ] + ], + [ + 0.791, + [ + 0.937, + 0.533, + 0.418 + ] + ], + [ + 0.793, + [ + 0.937, + 0.533, + 0.418 + ] + ], + [ + 0.795, + [ + 0.934, + 0.526, + 0.412 + ] + ], + [ + 0.796, + [ + 0.934, + 0.526, + 0.412 + ] + ], + [ + 0.798, + [ + 0.932, + 0.519, + 0.406 + ] + ], + [ + 0.8, + [ + 0.932, + 0.519, + 0.406 + ] + ], + [ + 0.802, + [ + 0.929, + 0.512, + 0.401 + ] + ], + [ + 0.804, + [ + 0.929, + 0.512, + 0.401 + ] + ], + [ + 0.806, + [ + 0.927, + 0.505, + 0.395 + ] + ], + [ + 0.808, + [ + 0.927, + 0.505, + 0.395 + ] + ], + [ + 0.81, + [ + 0.924, + 0.499, + 0.389 + ] + ], + [ + 0.812, + [ + 0.924, + 0.499, + 0.389 + ] + ], + [ + 0.814, + [ + 0.921, + 0.491, + 0.383 + ] + ], + [ + 0.816, + [ + 0.921, + 0.491, + 0.383 + ] + ], + [ + 0.818, + [ + 0.918, + 0.484, + 0.378 + ] + ], + [ + 0.82, + [ + 0.918, + 0.484, + 0.378 + ] + ], + [ + 0.822, + [ + 0.915, + 0.477, + 0.372 + ] + ], + [ + 0.824, + [ + 0.915, + 0.477, + 0.372 + ] + ], + [ + 0.826, + [ + 0.912, + 0.47, + 0.367 + ] + ], + [ + 0.828, + [ + 0.912, + 0.47, + 0.367 + ] + ], + [ + 0.83, + [ + 0.909, + 0.462, + 0.361 + ] + ], + [ + 0.832, + [ + 0.909, + 0.462, + 0.361 + ] + ], + [ + 0.834, + [ + 0.906, + 0.455, + 0.355 + ] + ], + [ + 0.836, + [ + 0.906, + 0.455, + 0.355 + ] + ], + [ + 0.838, + [ + 0.903, + 0.448, + 0.35 + ] + ], + [ + 0.84, + [ + 0.903, + 0.448, + 0.35 + ] + ], + [ + 0.841, + [ + 0.9, + 0.441, + 0.344 + ] + ], + [ + 0.843, + [ + 0.9, + 0.441, + 0.344 + ] + ], + [ + 0.845, + [ + 0.896, + 0.433, + 0.339 + ] + ], + [ + 0.847, + [ + 0.896, + 0.433, + 0.339 + ] + ], + [ + 0.849, + [ + 0.892, + 0.425, + 0.333 + ] + ], + [ + 0.851, + [ + 0.892, + 0.425, + 0.333 + ] + ], + [ + 0.853, + [ + 0.888, + 0.418, + 0.328 + ] + ], + [ + 0.855, + [ + 0.888, + 0.418, + 0.328 + ] + ], + [ + 0.857, + [ + 0.885, + 0.41, + 0.323 + ] + ], + [ + 0.859, + [ + 0.885, + 0.41, + 0.323 + ] + ], + [ + 0.861, + [ + 0.881, + 0.402, + 0.317 + ] + ], + [ + 0.863, + [ + 0.881, + 0.402, + 0.317 + ] + ], + [ + 0.865, + [ + 0.877, + 0.395, + 0.312 + ] + ], + [ + 0.867, + [ + 0.877, + 0.395, + 0.312 + ] + ], + [ + 0.869, + [ + 0.873, + 0.387, + 0.306 + ] + ], + [ + 0.871, + [ + 0.873, + 0.387, + 0.306 + ] + ], + [ + 0.873, + [ + 0.87, + 0.379, + 0.301 + ] + ], + [ + 0.875, + [ + 0.87, + 0.379, + 0.301 + ] + ], + [ + 0.877, + [ + 0.865, + 0.371, + 0.296 + ] + ], + [ + 0.879, + [ + 0.865, + 0.371, + 0.296 + ] + ], + [ + 0.881, + [ + 0.861, + 0.363, + 0.291 + ] + ], + [ + 0.883, + [ + 0.861, + 0.363, + 0.291 + ] + ], + [ + 0.885, + [ + 0.857, + 0.355, + 0.285 + ] + ], + [ + 0.886, + [ + 0.857, + 0.355, + 0.285 + ] + ], + [ + 0.888, + [ + 0.852, + 0.346, + 0.28 + ] + ], + [ + 0.89, + [ + 0.852, + 0.346, + 0.28 + ] + ], + [ + 0.892, + [ + 0.848, + 0.338, + 0.275 + ] + ], + [ + 0.894, + [ + 0.848, + 0.338, + 0.275 + ] + ], + [ + 0.896, + [ + 0.844, + 0.33, + 0.27 + ] + ], + [ + 0.898, + [ + 0.844, + 0.33, + 0.27 + ] + ], + [ + 0.9, + [ + 0.839, + 0.322, + 0.265 + ] + ], + [ + 0.902, + [ + 0.839, + 0.322, + 0.265 + ] + ], + [ + 0.904, + [ + 0.835, + 0.314, + 0.26 + ] + ], + [ + 0.906, + [ + 0.835, + 0.314, + 0.26 + ] + ], + [ + 0.908, + [ + 0.83, + 0.305, + 0.255 + ] + ], + [ + 0.91, + [ + 0.83, + 0.305, + 0.255 + ] + ], + [ + 0.912, + [ + 0.825, + 0.296, + 0.25 + ] + ], + [ + 0.914, + [ + 0.825, + 0.296, + 0.25 + ] + ], + [ + 0.916, + [ + 0.82, + 0.287, + 0.245 + ] + ], + [ + 0.918, + [ + 0.82, + 0.287, + 0.245 + ] + ], + [ + 0.92, + [ + 0.816, + 0.278, + 0.24 + ] + ], + [ + 0.922, + [ + 0.816, + 0.278, + 0.24 + ] + ], + [ + 0.924, + [ + 0.811, + 0.269, + 0.235 + ] + ], + [ + 0.926, + [ + 0.811, + 0.269, + 0.235 + ] + ], + [ + 0.928, + [ + 0.806, + 0.26, + 0.231 + ] + ], + [ + 0.93, + [ + 0.806, + 0.26, + 0.231 + ] + ], + [ + 0.932, + [ + 0.801, + 0.251, + 0.226 + ] + ], + [ + 0.933, + [ + 0.801, + 0.251, + 0.226 + ] + ], + [ + 0.935, + [ + 0.796, + 0.242, + 0.221 + ] + ], + [ + 0.937, + [ + 0.796, + 0.242, + 0.221 + ] + ], + [ + 0.939, + [ + 0.791, + 0.231, + 0.216 + ] + ], + [ + 0.941, + [ + 0.791, + 0.231, + 0.216 + ] + ], + [ + 0.943, + [ + 0.785, + 0.221, + 0.212 + ] + ], + [ + 0.945, + [ + 0.785, + 0.221, + 0.212 + ] + ], + [ + 0.947, + [ + 0.78, + 0.21, + 0.207 + ] + ], + [ + 0.949, + [ + 0.78, + 0.21, + 0.207 + ] + ], + [ + 0.951, + [ + 0.774, + 0.2, + 0.203 + ] + ], + [ + 0.953, + [ + 0.774, + 0.2, + 0.203 + ] + ], + [ + 0.955, + [ + 0.769, + 0.189, + 0.198 + ] + ], + [ + 0.957, + [ + 0.769, + 0.189, + 0.198 + ] + ], + [ + 0.959, + [ + 0.764, + 0.179, + 0.193 + ] + ], + [ + 0.961, + [ + 0.764, + 0.179, + 0.193 + ] + ], + [ + 0.963, + [ + 0.758, + 0.168, + 0.189 + ] + ], + [ + 0.965, + [ + 0.758, + 0.168, + 0.189 + ] + ], + [ + 0.967, + [ + 0.753, + 0.158, + 0.184 + ] + ], + [ + 0.969, + [ + 0.753, + 0.158, + 0.184 + ] + ], + [ + 0.971, + [ + 0.747, + 0.14, + 0.18 + ] + ], + [ + 0.973, + [ + 0.747, + 0.14, + 0.18 + ] + ], + [ + 0.975, + [ + 0.741, + 0.122, + 0.176 + ] + ], + [ + 0.977, + [ + 0.741, + 0.122, + 0.176 + ] + ], + [ + 0.978, + [ + 0.735, + 0.104, + 0.171 + ] + ], + [ + 0.98, + [ + 0.735, + 0.104, + 0.171 + ] + ], + [ + 0.982, + [ + 0.729, + 0.087, + 0.167 + ] + ], + [ + 0.984, + [ + 0.729, + 0.087, + 0.167 + ] + ], + [ + 0.986, + [ + 0.723, + 0.069, + 0.163 + ] + ], + [ + 0.988, + [ + 0.723, + 0.069, + 0.163 + ] + ], + [ + 0.99, + [ + 0.717, + 0.051, + 0.159 + ] + ], + [ + 0.992, + [ + 0.717, + 0.051, + 0.159 + ] + ], + [ + 0.994, + [ + 0.712, + 0.033, + 0.154 + ] + ], + [ + 0.996, + [ + 0.712, + 0.033, + 0.154 + ] + ], + [ + 0.998, + [ + 0.706, + 0.016, + 0.15 + ] + ], + [ + 1, + [ + 0.706, + 0.016, + 0.15 + ] + ] + ], + [ + [ + 0, + [ + 1, + 1, + 0.851 + ] + ], + [ + 0.002, + [ + 1, + 1, + 0.851 + ] + ], + [ + 0.004, + [ + 0.998, + 0.999, + 0.846 + ] + ], + [ + 0.006, + [ + 0.998, + 0.999, + 0.846 + ] + ], + [ + 0.008, + [ + 0.996, + 0.998, + 0.841 + ] + ], + [ + 0.01, + [ + 0.996, + 0.998, + 0.841 + ] + ], + [ + 0.012, + [ + 0.993, + 0.997, + 0.836 + ] + ], + [ + 0.014, + [ + 0.993, + 0.997, + 0.836 + ] + ], + [ + 0.016, + [ + 0.991, + 0.997, + 0.831 + ] + ], + [ + 0.018, + [ + 0.991, + 0.997, + 0.831 + ] + ], + [ + 0.02, + [ + 0.989, + 0.996, + 0.826 + ] + ], + [ + 0.022, + [ + 0.989, + 0.996, + 0.826 + ] + ], + [ + 0.023, + [ + 0.987, + 0.995, + 0.821 + ] + ], + [ + 0.025, + [ + 0.987, + 0.995, + 0.821 + ] + ], + [ + 0.027, + [ + 0.984, + 0.994, + 0.817 + ] + ], + [ + 0.029, + [ + 0.984, + 0.994, + 0.817 + ] + ], + [ + 0.031, + [ + 0.982, + 0.993, + 0.812 + ] + ], + [ + 0.033, + [ + 0.982, + 0.993, + 0.812 + ] + ], + [ + 0.035, + [ + 0.98, + 0.992, + 0.807 + ] + ], + [ + 0.037, + [ + 0.98, + 0.992, + 0.807 + ] + ], + [ + 0.039, + [ + 0.978, + 0.991, + 0.802 + ] + ], + [ + 0.041, + [ + 0.978, + 0.991, + 0.802 + ] + ], + [ + 0.043, + [ + 0.976, + 0.991, + 0.797 + ] + ], + [ + 0.045, + [ + 0.976, + 0.991, + 0.797 + ] + ], + [ + 0.047, + [ + 0.973, + 0.99, + 0.792 + ] + ], + [ + 0.049, + [ + 0.973, + 0.99, + 0.792 + ] + ], + [ + 0.051, + [ + 0.971, + 0.989, + 0.787 + ] + ], + [ + 0.053, + [ + 0.971, + 0.989, + 0.787 + ] + ], + [ + 0.055, + [ + 0.969, + 0.988, + 0.782 + ] + ], + [ + 0.057, + [ + 0.969, + 0.988, + 0.782 + ] + ], + [ + 0.059, + [ + 0.967, + 0.987, + 0.777 + ] + ], + [ + 0.061, + [ + 0.967, + 0.987, + 0.777 + ] + ], + [ + 0.063, + [ + 0.965, + 0.986, + 0.772 + ] + ], + [ + 0.065, + [ + 0.965, + 0.986, + 0.772 + ] + ], + [ + 0.067, + [ + 0.962, + 0.985, + 0.767 + ] + ], + [ + 0.068, + [ + 0.962, + 0.985, + 0.767 + ] + ], + [ + 0.07, + [ + 0.96, + 0.984, + 0.762 + ] + ], + [ + 0.072, + [ + 0.96, + 0.984, + 0.762 + ] + ], + [ + 0.074, + [ + 0.958, + 0.984, + 0.757 + ] + ], + [ + 0.076, + [ + 0.958, + 0.984, + 0.757 + ] + ], + [ + 0.078, + [ + 0.956, + 0.983, + 0.753 + ] + ], + [ + 0.08, + [ + 0.956, + 0.983, + 0.753 + ] + ], + [ + 0.082, + [ + 0.953, + 0.982, + 0.748 + ] + ], + [ + 0.084, + [ + 0.953, + 0.982, + 0.748 + ] + ], + [ + 0.086, + [ + 0.951, + 0.981, + 0.743 + ] + ], + [ + 0.088, + [ + 0.951, + 0.981, + 0.743 + ] + ], + [ + 0.09, + [ + 0.949, + 0.98, + 0.738 + ] + ], + [ + 0.092, + [ + 0.949, + 0.98, + 0.738 + ] + ], + [ + 0.094, + [ + 0.947, + 0.979, + 0.733 + ] + ], + [ + 0.096, + [ + 0.947, + 0.979, + 0.733 + ] + ], + [ + 0.098, + [ + 0.945, + 0.978, + 0.728 + ] + ], + [ + 0.1, + [ + 0.945, + 0.978, + 0.728 + ] + ], + [ + 0.102, + [ + 0.942, + 0.978, + 0.723 + ] + ], + [ + 0.104, + [ + 0.942, + 0.978, + 0.723 + ] + ], + [ + 0.106, + [ + 0.94, + 0.977, + 0.718 + ] + ], + [ + 0.108, + [ + 0.94, + 0.977, + 0.718 + ] + ], + [ + 0.11, + [ + 0.938, + 0.976, + 0.713 + ] + ], + [ + 0.112, + [ + 0.938, + 0.976, + 0.713 + ] + ], + [ + 0.114, + [ + 0.936, + 0.975, + 0.708 + ] + ], + [ + 0.115, + [ + 0.936, + 0.975, + 0.708 + ] + ], + [ + 0.117, + [ + 0.934, + 0.974, + 0.703 + ] + ], + [ + 0.119, + [ + 0.934, + 0.974, + 0.703 + ] + ], + [ + 0.121, + [ + 0.931, + 0.973, + 0.698 + ] + ], + [ + 0.123, + [ + 0.931, + 0.973, + 0.698 + ] + ], + [ + 0.125, + [ + 0.929, + 0.972, + 0.694 + ] + ], + [ + 0.127, + [ + 0.929, + 0.972, + 0.694 + ] + ], + [ + 0.129, + [ + 0.924, + 0.97, + 0.695 + ] + ], + [ + 0.131, + [ + 0.924, + 0.97, + 0.695 + ] + ], + [ + 0.133, + [ + 0.919, + 0.969, + 0.695 + ] + ], + [ + 0.135, + [ + 0.919, + 0.969, + 0.695 + ] + ], + [ + 0.137, + [ + 0.915, + 0.967, + 0.695 + ] + ], + [ + 0.139, + [ + 0.915, + 0.967, + 0.695 + ] + ], + [ + 0.141, + [ + 0.91, + 0.965, + 0.696 + ] + ], + [ + 0.143, + [ + 0.91, + 0.965, + 0.696 + ] + ], + [ + 0.145, + [ + 0.905, + 0.963, + 0.696 + ] + ], + [ + 0.147, + [ + 0.905, + 0.963, + 0.696 + ] + ], + [ + 0.149, + [ + 0.901, + 0.961, + 0.696 + ] + ], + [ + 0.151, + [ + 0.901, + 0.961, + 0.696 + ] + ], + [ + 0.153, + [ + 0.896, + 0.959, + 0.697 + ] + ], + [ + 0.155, + [ + 0.896, + 0.959, + 0.697 + ] + ], + [ + 0.157, + [ + 0.891, + 0.958, + 0.697 + ] + ], + [ + 0.159, + [ + 0.891, + 0.958, + 0.697 + ] + ], + [ + 0.16, + [ + 0.887, + 0.956, + 0.697 + ] + ], + [ + 0.162, + [ + 0.887, + 0.956, + 0.697 + ] + ], + [ + 0.164, + [ + 0.882, + 0.954, + 0.698 + ] + ], + [ + 0.166, + [ + 0.882, + 0.954, + 0.698 + ] + ], + [ + 0.168, + [ + 0.877, + 0.952, + 0.698 + ] + ], + [ + 0.17, + [ + 0.877, + 0.952, + 0.698 + ] + ], + [ + 0.172, + [ + 0.873, + 0.95, + 0.699 + ] + ], + [ + 0.174, + [ + 0.873, + 0.95, + 0.699 + ] + ], + [ + 0.176, + [ + 0.868, + 0.948, + 0.699 + ] + ], + [ + 0.178, + [ + 0.868, + 0.948, + 0.699 + ] + ], + [ + 0.18, + [ + 0.863, + 0.946, + 0.699 + ] + ], + [ + 0.182, + [ + 0.863, + 0.946, + 0.699 + ] + ], + [ + 0.184, + [ + 0.859, + 0.945, + 0.7 + ] + ], + [ + 0.186, + [ + 0.859, + 0.945, + 0.7 + ] + ], + [ + 0.188, + [ + 0.854, + 0.943, + 0.7 + ] + ], + [ + 0.19, + [ + 0.854, + 0.943, + 0.7 + ] + ], + [ + 0.192, + [ + 0.849, + 0.941, + 0.7 + ] + ], + [ + 0.194, + [ + 0.849, + 0.941, + 0.7 + ] + ], + [ + 0.196, + [ + 0.845, + 0.939, + 0.701 + ] + ], + [ + 0.198, + [ + 0.845, + 0.939, + 0.701 + ] + ], + [ + 0.2, + [ + 0.84, + 0.937, + 0.701 + ] + ], + [ + 0.202, + [ + 0.84, + 0.937, + 0.701 + ] + ], + [ + 0.204, + [ + 0.835, + 0.935, + 0.702 + ] + ], + [ + 0.205, + [ + 0.835, + 0.935, + 0.702 + ] + ], + [ + 0.207, + [ + 0.831, + 0.934, + 0.702 + ] + ], + [ + 0.209, + [ + 0.831, + 0.934, + 0.702 + ] + ], + [ + 0.211, + [ + 0.826, + 0.932, + 0.702 + ] + ], + [ + 0.213, + [ + 0.826, + 0.932, + 0.702 + ] + ], + [ + 0.215, + [ + 0.821, + 0.93, + 0.703 + ] + ], + [ + 0.217, + [ + 0.821, + 0.93, + 0.703 + ] + ], + [ + 0.219, + [ + 0.817, + 0.928, + 0.703 + ] + ], + [ + 0.221, + [ + 0.817, + 0.928, + 0.703 + ] + ], + [ + 0.223, + [ + 0.812, + 0.926, + 0.703 + ] + ], + [ + 0.225, + [ + 0.812, + 0.926, + 0.703 + ] + ], + [ + 0.227, + [ + 0.807, + 0.924, + 0.704 + ] + ], + [ + 0.229, + [ + 0.807, + 0.924, + 0.704 + ] + ], + [ + 0.231, + [ + 0.803, + 0.922, + 0.704 + ] + ], + [ + 0.233, + [ + 0.803, + 0.922, + 0.704 + ] + ], + [ + 0.235, + [ + 0.798, + 0.921, + 0.704 + ] + ], + [ + 0.237, + [ + 0.798, + 0.921, + 0.704 + ] + ], + [ + 0.239, + [ + 0.793, + 0.919, + 0.705 + ] + ], + [ + 0.241, + [ + 0.793, + 0.919, + 0.705 + ] + ], + [ + 0.243, + [ + 0.789, + 0.917, + 0.705 + ] + ], + [ + 0.245, + [ + 0.789, + 0.917, + 0.705 + ] + ], + [ + 0.247, + [ + 0.784, + 0.915, + 0.706 + ] + ], + [ + 0.249, + [ + 0.784, + 0.915, + 0.706 + ] + ], + [ + 0.25, + [ + 0.778, + 0.913, + 0.706 + ] + ], + [ + 0.252, + [ + 0.778, + 0.913, + 0.706 + ] + ], + [ + 0.254, + [ + 0.769, + 0.909, + 0.707 + ] + ], + [ + 0.256, + [ + 0.769, + 0.909, + 0.707 + ] + ], + [ + 0.258, + [ + 0.76, + 0.906, + 0.708 + ] + ], + [ + 0.26, + [ + 0.76, + 0.906, + 0.708 + ] + ], + [ + 0.262, + [ + 0.752, + 0.903, + 0.709 + ] + ], + [ + 0.264, + [ + 0.752, + 0.903, + 0.709 + ] + ], + [ + 0.266, + [ + 0.743, + 0.899, + 0.71 + ] + ], + [ + 0.268, + [ + 0.743, + 0.899, + 0.71 + ] + ], + [ + 0.27, + [ + 0.734, + 0.896, + 0.71 + ] + ], + [ + 0.272, + [ + 0.734, + 0.896, + 0.71 + ] + ], + [ + 0.274, + [ + 0.725, + 0.892, + 0.711 + ] + ], + [ + 0.276, + [ + 0.725, + 0.892, + 0.711 + ] + ], + [ + 0.278, + [ + 0.716, + 0.889, + 0.712 + ] + ], + [ + 0.28, + [ + 0.716, + 0.889, + 0.712 + ] + ], + [ + 0.282, + [ + 0.707, + 0.885, + 0.713 + ] + ], + [ + 0.284, + [ + 0.707, + 0.885, + 0.713 + ] + ], + [ + 0.286, + [ + 0.698, + 0.882, + 0.714 + ] + ], + [ + 0.288, + [ + 0.698, + 0.882, + 0.714 + ] + ], + [ + 0.29, + [ + 0.69, + 0.878, + 0.715 + ] + ], + [ + 0.292, + [ + 0.69, + 0.878, + 0.715 + ] + ], + [ + 0.294, + [ + 0.681, + 0.875, + 0.716 + ] + ], + [ + 0.295, + [ + 0.681, + 0.875, + 0.716 + ] + ], + [ + 0.297, + [ + 0.672, + 0.872, + 0.716 + ] + ], + [ + 0.299, + [ + 0.672, + 0.872, + 0.716 + ] + ], + [ + 0.301, + [ + 0.663, + 0.868, + 0.717 + ] + ], + [ + 0.303, + [ + 0.663, + 0.868, + 0.717 + ] + ], + [ + 0.305, + [ + 0.654, + 0.865, + 0.718 + ] + ], + [ + 0.307, + [ + 0.654, + 0.865, + 0.718 + ] + ], + [ + 0.309, + [ + 0.645, + 0.861, + 0.719 + ] + ], + [ + 0.311, + [ + 0.645, + 0.861, + 0.719 + ] + ], + [ + 0.313, + [ + 0.636, + 0.858, + 0.72 + ] + ], + [ + 0.315, + [ + 0.636, + 0.858, + 0.72 + ] + ], + [ + 0.317, + [ + 0.628, + 0.854, + 0.721 + ] + ], + [ + 0.319, + [ + 0.628, + 0.854, + 0.721 + ] + ], + [ + 0.321, + [ + 0.619, + 0.851, + 0.722 + ] + ], + [ + 0.323, + [ + 0.619, + 0.851, + 0.722 + ] + ], + [ + 0.325, + [ + 0.61, + 0.847, + 0.722 + ] + ], + [ + 0.327, + [ + 0.61, + 0.847, + 0.722 + ] + ], + [ + 0.329, + [ + 0.601, + 0.844, + 0.723 + ] + ], + [ + 0.331, + [ + 0.601, + 0.844, + 0.723 + ] + ], + [ + 0.333, + [ + 0.592, + 0.841, + 0.724 + ] + ], + [ + 0.335, + [ + 0.592, + 0.841, + 0.724 + ] + ], + [ + 0.337, + [ + 0.583, + 0.837, + 0.725 + ] + ], + [ + 0.339, + [ + 0.583, + 0.837, + 0.725 + ] + ], + [ + 0.341, + [ + 0.574, + 0.834, + 0.726 + ] + ], + [ + 0.342, + [ + 0.574, + 0.834, + 0.726 + ] + ], + [ + 0.344, + [ + 0.566, + 0.83, + 0.727 + ] + ], + [ + 0.346, + [ + 0.566, + 0.83, + 0.727 + ] + ], + [ + 0.348, + [ + 0.557, + 0.827, + 0.728 + ] + ], + [ + 0.35, + [ + 0.557, + 0.827, + 0.728 + ] + ], + [ + 0.352, + [ + 0.548, + 0.823, + 0.728 + ] + ], + [ + 0.354, + [ + 0.548, + 0.823, + 0.728 + ] + ], + [ + 0.356, + [ + 0.539, + 0.82, + 0.729 + ] + ], + [ + 0.358, + [ + 0.539, + 0.82, + 0.729 + ] + ], + [ + 0.36, + [ + 0.53, + 0.816, + 0.73 + ] + ], + [ + 0.362, + [ + 0.53, + 0.816, + 0.73 + ] + ], + [ + 0.364, + [ + 0.521, + 0.813, + 0.731 + ] + ], + [ + 0.366, + [ + 0.521, + 0.813, + 0.731 + ] + ], + [ + 0.368, + [ + 0.512, + 0.81, + 0.732 + ] + ], + [ + 0.37, + [ + 0.512, + 0.81, + 0.732 + ] + ], + [ + 0.372, + [ + 0.504, + 0.806, + 0.733 + ] + ], + [ + 0.374, + [ + 0.504, + 0.806, + 0.733 + ] + ], + [ + 0.376, + [ + 0.495, + 0.803, + 0.734 + ] + ], + [ + 0.378, + [ + 0.495, + 0.803, + 0.734 + ] + ], + [ + 0.38, + [ + 0.488, + 0.8, + 0.735 + ] + ], + [ + 0.382, + [ + 0.488, + 0.8, + 0.735 + ] + ], + [ + 0.384, + [ + 0.48, + 0.797, + 0.736 + ] + ], + [ + 0.386, + [ + 0.48, + 0.797, + 0.736 + ] + ], + [ + 0.387, + [ + 0.472, + 0.794, + 0.737 + ] + ], + [ + 0.389, + [ + 0.472, + 0.794, + 0.737 + ] + ], + [ + 0.391, + [ + 0.465, + 0.792, + 0.738 + ] + ], + [ + 0.393, + [ + 0.465, + 0.792, + 0.738 + ] + ], + [ + 0.395, + [ + 0.457, + 0.789, + 0.739 + ] + ], + [ + 0.397, + [ + 0.457, + 0.789, + 0.739 + ] + ], + [ + 0.399, + [ + 0.449, + 0.786, + 0.74 + ] + ], + [ + 0.401, + [ + 0.449, + 0.786, + 0.74 + ] + ], + [ + 0.403, + [ + 0.442, + 0.783, + 0.741 + ] + ], + [ + 0.405, + [ + 0.442, + 0.783, + 0.741 + ] + ], + [ + 0.407, + [ + 0.434, + 0.78, + 0.743 + ] + ], + [ + 0.409, + [ + 0.434, + 0.78, + 0.743 + ] + ], + [ + 0.411, + [ + 0.427, + 0.777, + 0.744 + ] + ], + [ + 0.413, + [ + 0.427, + 0.777, + 0.744 + ] + ], + [ + 0.415, + [ + 0.419, + 0.775, + 0.745 + ] + ], + [ + 0.417, + [ + 0.419, + 0.775, + 0.745 + ] + ], + [ + 0.419, + [ + 0.411, + 0.772, + 0.746 + ] + ], + [ + 0.421, + [ + 0.411, + 0.772, + 0.746 + ] + ], + [ + 0.423, + [ + 0.404, + 0.769, + 0.747 + ] + ], + [ + 0.425, + [ + 0.404, + 0.769, + 0.747 + ] + ], + [ + 0.427, + [ + 0.396, + 0.766, + 0.748 + ] + ], + [ + 0.429, + [ + 0.396, + 0.766, + 0.748 + ] + ], + [ + 0.431, + [ + 0.388, + 0.763, + 0.749 + ] + ], + [ + 0.432, + [ + 0.388, + 0.763, + 0.749 + ] + ], + [ + 0.434, + [ + 0.381, + 0.76, + 0.75 + ] + ], + [ + 0.436, + [ + 0.381, + 0.76, + 0.75 + ] + ], + [ + 0.438, + [ + 0.373, + 0.758, + 0.751 + ] + ], + [ + 0.44, + [ + 0.373, + 0.758, + 0.751 + ] + ], + [ + 0.442, + [ + 0.366, + 0.755, + 0.753 + ] + ], + [ + 0.444, + [ + 0.366, + 0.755, + 0.753 + ] + ], + [ + 0.446, + [ + 0.358, + 0.752, + 0.754 + ] + ], + [ + 0.448, + [ + 0.358, + 0.752, + 0.754 + ] + ], + [ + 0.45, + [ + 0.35, + 0.749, + 0.755 + ] + ], + [ + 0.452, + [ + 0.35, + 0.749, + 0.755 + ] + ], + [ + 0.454, + [ + 0.343, + 0.746, + 0.756 + ] + ], + [ + 0.456, + [ + 0.343, + 0.746, + 0.756 + ] + ], + [ + 0.458, + [ + 0.335, + 0.743, + 0.757 + ] + ], + [ + 0.46, + [ + 0.335, + 0.743, + 0.757 + ] + ], + [ + 0.462, + [ + 0.327, + 0.741, + 0.758 + ] + ], + [ + 0.464, + [ + 0.327, + 0.741, + 0.758 + ] + ], + [ + 0.466, + [ + 0.32, + 0.738, + 0.759 + ] + ], + [ + 0.468, + [ + 0.32, + 0.738, + 0.759 + ] + ], + [ + 0.47, + [ + 0.312, + 0.735, + 0.76 + ] + ], + [ + 0.472, + [ + 0.312, + 0.735, + 0.76 + ] + ], + [ + 0.474, + [ + 0.304, + 0.732, + 0.761 + ] + ], + [ + 0.476, + [ + 0.304, + 0.732, + 0.761 + ] + ], + [ + 0.477, + [ + 0.297, + 0.729, + 0.763 + ] + ], + [ + 0.479, + [ + 0.297, + 0.729, + 0.763 + ] + ], + [ + 0.481, + [ + 0.289, + 0.726, + 0.764 + ] + ], + [ + 0.483, + [ + 0.289, + 0.726, + 0.764 + ] + ], + [ + 0.485, + [ + 0.282, + 0.724, + 0.765 + ] + ], + [ + 0.487, + [ + 0.282, + 0.724, + 0.765 + ] + ], + [ + 0.489, + [ + 0.274, + 0.721, + 0.766 + ] + ], + [ + 0.491, + [ + 0.274, + 0.721, + 0.766 + ] + ], + [ + 0.493, + [ + 0.266, + 0.718, + 0.767 + ] + ], + [ + 0.495, + [ + 0.266, + 0.718, + 0.767 + ] + ], + [ + 0.497, + [ + 0.259, + 0.715, + 0.768 + ] + ], + [ + 0.499, + [ + 0.259, + 0.715, + 0.768 + ] + ], + [ + 0.501, + [ + 0.253, + 0.711, + 0.768 + ] + ], + [ + 0.503, + [ + 0.253, + 0.711, + 0.768 + ] + ], + [ + 0.505, + [ + 0.248, + 0.707, + 0.768 + ] + ], + [ + 0.507, + [ + 0.248, + 0.707, + 0.768 + ] + ], + [ + 0.509, + [ + 0.244, + 0.702, + 0.767 + ] + ], + [ + 0.511, + [ + 0.244, + 0.702, + 0.767 + ] + ], + [ + 0.513, + [ + 0.239, + 0.698, + 0.767 + ] + ], + [ + 0.515, + [ + 0.239, + 0.698, + 0.767 + ] + ], + [ + 0.517, + [ + 0.235, + 0.693, + 0.766 + ] + ], + [ + 0.519, + [ + 0.235, + 0.693, + 0.766 + ] + ], + [ + 0.521, + [ + 0.231, + 0.689, + 0.766 + ] + ], + [ + 0.523, + [ + 0.231, + 0.689, + 0.766 + ] + ], + [ + 0.524, + [ + 0.226, + 0.684, + 0.765 + ] + ], + [ + 0.526, + [ + 0.226, + 0.684, + 0.765 + ] + ], + [ + 0.528, + [ + 0.222, + 0.68, + 0.765 + ] + ], + [ + 0.53, + [ + 0.222, + 0.68, + 0.765 + ] + ], + [ + 0.532, + [ + 0.217, + 0.675, + 0.764 + ] + ], + [ + 0.534, + [ + 0.217, + 0.675, + 0.764 + ] + ], + [ + 0.536, + [ + 0.213, + 0.67, + 0.764 + ] + ], + [ + 0.538, + [ + 0.213, + 0.67, + 0.764 + ] + ], + [ + 0.54, + [ + 0.208, + 0.666, + 0.763 + ] + ], + [ + 0.542, + [ + 0.208, + 0.666, + 0.763 + ] + ], + [ + 0.544, + [ + 0.204, + 0.661, + 0.763 + ] + ], + [ + 0.546, + [ + 0.204, + 0.661, + 0.763 + ] + ], + [ + 0.548, + [ + 0.2, + 0.657, + 0.762 + ] + ], + [ + 0.55, + [ + 0.2, + 0.657, + 0.762 + ] + ], + [ + 0.552, + [ + 0.195, + 0.652, + 0.762 + ] + ], + [ + 0.554, + [ + 0.195, + 0.652, + 0.762 + ] + ], + [ + 0.556, + [ + 0.191, + 0.648, + 0.761 + ] + ], + [ + 0.558, + [ + 0.191, + 0.648, + 0.761 + ] + ], + [ + 0.56, + [ + 0.186, + 0.643, + 0.761 + ] + ], + [ + 0.562, + [ + 0.186, + 0.643, + 0.761 + ] + ], + [ + 0.564, + [ + 0.182, + 0.639, + 0.761 + ] + ], + [ + 0.566, + [ + 0.182, + 0.639, + 0.761 + ] + ], + [ + 0.568, + [ + 0.177, + 0.634, + 0.76 + ] + ], + [ + 0.569, + [ + 0.177, + 0.634, + 0.76 + ] + ], + [ + 0.571, + [ + 0.173, + 0.63, + 0.76 + ] + ], + [ + 0.573, + [ + 0.173, + 0.63, + 0.76 + ] + ], + [ + 0.575, + [ + 0.169, + 0.625, + 0.759 + ] + ], + [ + 0.577, + [ + 0.169, + 0.625, + 0.759 + ] + ], + [ + 0.579, + [ + 0.164, + 0.62, + 0.759 + ] + ], + [ + 0.581, + [ + 0.164, + 0.62, + 0.759 + ] + ], + [ + 0.583, + [ + 0.16, + 0.616, + 0.758 + ] + ], + [ + 0.585, + [ + 0.16, + 0.616, + 0.758 + ] + ], + [ + 0.587, + [ + 0.155, + 0.611, + 0.758 + ] + ], + [ + 0.589, + [ + 0.155, + 0.611, + 0.758 + ] + ], + [ + 0.591, + [ + 0.151, + 0.607, + 0.757 + ] + ], + [ + 0.593, + [ + 0.151, + 0.607, + 0.757 + ] + ], + [ + 0.595, + [ + 0.146, + 0.602, + 0.757 + ] + ], + [ + 0.597, + [ + 0.146, + 0.602, + 0.757 + ] + ], + [ + 0.599, + [ + 0.142, + 0.598, + 0.756 + ] + ], + [ + 0.601, + [ + 0.142, + 0.598, + 0.756 + ] + ], + [ + 0.603, + [ + 0.138, + 0.593, + 0.756 + ] + ], + [ + 0.605, + [ + 0.138, + 0.593, + 0.756 + ] + ], + [ + 0.607, + [ + 0.133, + 0.589, + 0.755 + ] + ], + [ + 0.609, + [ + 0.133, + 0.589, + 0.755 + ] + ], + [ + 0.611, + [ + 0.129, + 0.584, + 0.755 + ] + ], + [ + 0.613, + [ + 0.129, + 0.584, + 0.755 + ] + ], + [ + 0.614, + [ + 0.124, + 0.579, + 0.754 + ] + ], + [ + 0.616, + [ + 0.124, + 0.579, + 0.754 + ] + ], + [ + 0.618, + [ + 0.12, + 0.575, + 0.754 + ] + ], + [ + 0.62, + [ + 0.12, + 0.575, + 0.754 + ] + ], + [ + 0.622, + [ + 0.115, + 0.57, + 0.753 + ] + ], + [ + 0.624, + [ + 0.115, + 0.57, + 0.753 + ] + ], + [ + 0.626, + [ + 0.114, + 0.565, + 0.751 + ] + ], + [ + 0.628, + [ + 0.114, + 0.565, + 0.751 + ] + ], + [ + 0.63, + [ + 0.115, + 0.558, + 0.748 + ] + ], + [ + 0.632, + [ + 0.115, + 0.558, + 0.748 + ] + ], + [ + 0.634, + [ + 0.115, + 0.552, + 0.745 + ] + ], + [ + 0.636, + [ + 0.115, + 0.552, + 0.745 + ] + ], + [ + 0.638, + [ + 0.116, + 0.546, + 0.742 + ] + ], + [ + 0.64, + [ + 0.116, + 0.546, + 0.742 + ] + ], + [ + 0.642, + [ + 0.117, + 0.54, + 0.739 + ] + ], + [ + 0.644, + [ + 0.117, + 0.54, + 0.739 + ] + ], + [ + 0.646, + [ + 0.117, + 0.533, + 0.736 + ] + ], + [ + 0.648, + [ + 0.117, + 0.533, + 0.736 + ] + ], + [ + 0.65, + [ + 0.118, + 0.527, + 0.733 + ] + ], + [ + 0.652, + [ + 0.118, + 0.527, + 0.733 + ] + ], + [ + 0.654, + [ + 0.118, + 0.521, + 0.73 + ] + ], + [ + 0.656, + [ + 0.118, + 0.521, + 0.73 + ] + ], + [ + 0.658, + [ + 0.119, + 0.515, + 0.727 + ] + ], + [ + 0.659, + [ + 0.119, + 0.515, + 0.727 + ] + ], + [ + 0.661, + [ + 0.12, + 0.508, + 0.725 + ] + ], + [ + 0.663, + [ + 0.12, + 0.508, + 0.725 + ] + ], + [ + 0.665, + [ + 0.12, + 0.502, + 0.722 + ] + ], + [ + 0.667, + [ + 0.12, + 0.502, + 0.722 + ] + ], + [ + 0.669, + [ + 0.121, + 0.496, + 0.719 + ] + ], + [ + 0.671, + [ + 0.121, + 0.496, + 0.719 + ] + ], + [ + 0.673, + [ + 0.121, + 0.489, + 0.716 + ] + ], + [ + 0.675, + [ + 0.121, + 0.489, + 0.716 + ] + ], + [ + 0.677, + [ + 0.122, + 0.483, + 0.713 + ] + ], + [ + 0.679, + [ + 0.122, + 0.483, + 0.713 + ] + ], + [ + 0.681, + [ + 0.123, + 0.477, + 0.71 + ] + ], + [ + 0.683, + [ + 0.123, + 0.477, + 0.71 + ] + ], + [ + 0.685, + [ + 0.123, + 0.471, + 0.707 + ] + ], + [ + 0.687, + [ + 0.123, + 0.471, + 0.707 + ] + ], + [ + 0.689, + [ + 0.124, + 0.464, + 0.704 + ] + ], + [ + 0.691, + [ + 0.124, + 0.464, + 0.704 + ] + ], + [ + 0.693, + [ + 0.125, + 0.458, + 0.701 + ] + ], + [ + 0.695, + [ + 0.125, + 0.458, + 0.701 + ] + ], + [ + 0.697, + [ + 0.125, + 0.452, + 0.698 + ] + ], + [ + 0.699, + [ + 0.125, + 0.452, + 0.698 + ] + ], + [ + 0.701, + [ + 0.126, + 0.445, + 0.695 + ] + ], + [ + 0.703, + [ + 0.126, + 0.445, + 0.695 + ] + ], + [ + 0.705, + [ + 0.126, + 0.439, + 0.692 + ] + ], + [ + 0.706, + [ + 0.126, + 0.439, + 0.692 + ] + ], + [ + 0.708, + [ + 0.127, + 0.433, + 0.689 + ] + ], + [ + 0.71, + [ + 0.127, + 0.433, + 0.689 + ] + ], + [ + 0.712, + [ + 0.128, + 0.427, + 0.686 + ] + ], + [ + 0.714, + [ + 0.128, + 0.427, + 0.686 + ] + ], + [ + 0.716, + [ + 0.128, + 0.42, + 0.683 + ] + ], + [ + 0.718, + [ + 0.128, + 0.42, + 0.683 + ] + ], + [ + 0.72, + [ + 0.129, + 0.414, + 0.68 + ] + ], + [ + 0.722, + [ + 0.129, + 0.414, + 0.68 + ] + ], + [ + 0.724, + [ + 0.129, + 0.408, + 0.677 + ] + ], + [ + 0.726, + [ + 0.129, + 0.408, + 0.677 + ] + ], + [ + 0.728, + [ + 0.13, + 0.402, + 0.674 + ] + ], + [ + 0.73, + [ + 0.13, + 0.402, + 0.674 + ] + ], + [ + 0.732, + [ + 0.131, + 0.395, + 0.671 + ] + ], + [ + 0.734, + [ + 0.131, + 0.395, + 0.671 + ] + ], + [ + 0.736, + [ + 0.131, + 0.389, + 0.668 + ] + ], + [ + 0.738, + [ + 0.131, + 0.389, + 0.668 + ] + ], + [ + 0.74, + [ + 0.132, + 0.383, + 0.665 + ] + ], + [ + 0.742, + [ + 0.132, + 0.383, + 0.665 + ] + ], + [ + 0.744, + [ + 0.133, + 0.376, + 0.663 + ] + ], + [ + 0.746, + [ + 0.133, + 0.376, + 0.663 + ] + ], + [ + 0.748, + [ + 0.133, + 0.37, + 0.66 + ] + ], + [ + 0.75, + [ + 0.133, + 0.37, + 0.66 + ] + ], + [ + 0.751, + [ + 0.134, + 0.365, + 0.657 + ] + ], + [ + 0.753, + [ + 0.134, + 0.365, + 0.657 + ] + ], + [ + 0.755, + [ + 0.134, + 0.36, + 0.655 + ] + ], + [ + 0.757, + [ + 0.134, + 0.36, + 0.655 + ] + ], + [ + 0.759, + [ + 0.134, + 0.354, + 0.652 + ] + ], + [ + 0.761, + [ + 0.134, + 0.354, + 0.652 + ] + ], + [ + 0.763, + [ + 0.135, + 0.349, + 0.65 + ] + ], + [ + 0.765, + [ + 0.135, + 0.349, + 0.65 + ] + ], + [ + 0.767, + [ + 0.135, + 0.344, + 0.647 + ] + ], + [ + 0.769, + [ + 0.135, + 0.344, + 0.647 + ] + ], + [ + 0.771, + [ + 0.135, + 0.339, + 0.645 + ] + ], + [ + 0.773, + [ + 0.135, + 0.339, + 0.645 + ] + ], + [ + 0.775, + [ + 0.136, + 0.334, + 0.642 + ] + ], + [ + 0.777, + [ + 0.136, + 0.334, + 0.642 + ] + ], + [ + 0.779, + [ + 0.136, + 0.329, + 0.64 + ] + ], + [ + 0.781, + [ + 0.136, + 0.329, + 0.64 + ] + ], + [ + 0.783, + [ + 0.137, + 0.323, + 0.637 + ] + ], + [ + 0.785, + [ + 0.137, + 0.323, + 0.637 + ] + ], + [ + 0.787, + [ + 0.137, + 0.318, + 0.635 + ] + ], + [ + 0.789, + [ + 0.137, + 0.318, + 0.635 + ] + ], + [ + 0.791, + [ + 0.137, + 0.313, + 0.632 + ] + ], + [ + 0.793, + [ + 0.137, + 0.313, + 0.632 + ] + ], + [ + 0.795, + [ + 0.138, + 0.308, + 0.63 + ] + ], + [ + 0.796, + [ + 0.138, + 0.308, + 0.63 + ] + ], + [ + 0.798, + [ + 0.138, + 0.303, + 0.627 + ] + ], + [ + 0.8, + [ + 0.138, + 0.303, + 0.627 + ] + ], + [ + 0.802, + [ + 0.138, + 0.298, + 0.625 + ] + ], + [ + 0.804, + [ + 0.138, + 0.298, + 0.625 + ] + ], + [ + 0.806, + [ + 0.139, + 0.292, + 0.623 + ] + ], + [ + 0.808, + [ + 0.139, + 0.292, + 0.623 + ] + ], + [ + 0.81, + [ + 0.139, + 0.287, + 0.62 + ] + ], + [ + 0.812, + [ + 0.139, + 0.287, + 0.62 + ] + ], + [ + 0.814, + [ + 0.14, + 0.282, + 0.618 + ] + ], + [ + 0.816, + [ + 0.14, + 0.282, + 0.618 + ] + ], + [ + 0.818, + [ + 0.14, + 0.277, + 0.615 + ] + ], + [ + 0.82, + [ + 0.14, + 0.277, + 0.615 + ] + ], + [ + 0.822, + [ + 0.14, + 0.272, + 0.613 + ] + ], + [ + 0.824, + [ + 0.14, + 0.272, + 0.613 + ] + ], + [ + 0.826, + [ + 0.141, + 0.267, + 0.61 + ] + ], + [ + 0.828, + [ + 0.141, + 0.267, + 0.61 + ] + ], + [ + 0.83, + [ + 0.141, + 0.261, + 0.608 + ] + ], + [ + 0.832, + [ + 0.141, + 0.261, + 0.608 + ] + ], + [ + 0.834, + [ + 0.141, + 0.256, + 0.605 + ] + ], + [ + 0.836, + [ + 0.141, + 0.256, + 0.605 + ] + ], + [ + 0.838, + [ + 0.142, + 0.251, + 0.603 + ] + ], + [ + 0.84, + [ + 0.142, + 0.251, + 0.603 + ] + ], + [ + 0.841, + [ + 0.142, + 0.246, + 0.6 + ] + ], + [ + 0.843, + [ + 0.142, + 0.246, + 0.6 + ] + ], + [ + 0.845, + [ + 0.142, + 0.241, + 0.598 + ] + ], + [ + 0.847, + [ + 0.142, + 0.241, + 0.598 + ] + ], + [ + 0.849, + [ + 0.143, + 0.236, + 0.595 + ] + ], + [ + 0.851, + [ + 0.143, + 0.236, + 0.595 + ] + ], + [ + 0.853, + [ + 0.143, + 0.23, + 0.593 + ] + ], + [ + 0.855, + [ + 0.143, + 0.23, + 0.593 + ] + ], + [ + 0.857, + [ + 0.144, + 0.225, + 0.591 + ] + ], + [ + 0.859, + [ + 0.144, + 0.225, + 0.591 + ] + ], + [ + 0.861, + [ + 0.144, + 0.22, + 0.588 + ] + ], + [ + 0.863, + [ + 0.144, + 0.22, + 0.588 + ] + ], + [ + 0.865, + [ + 0.144, + 0.215, + 0.586 + ] + ], + [ + 0.867, + [ + 0.144, + 0.215, + 0.586 + ] + ], + [ + 0.869, + [ + 0.145, + 0.21, + 0.583 + ] + ], + [ + 0.871, + [ + 0.145, + 0.21, + 0.583 + ] + ], + [ + 0.873, + [ + 0.145, + 0.205, + 0.581 + ] + ], + [ + 0.875, + [ + 0.145, + 0.205, + 0.581 + ] + ], + [ + 0.877, + [ + 0.142, + 0.201, + 0.574 + ] + ], + [ + 0.879, + [ + 0.142, + 0.201, + 0.574 + ] + ], + [ + 0.881, + [ + 0.138, + 0.199, + 0.567 + ] + ], + [ + 0.883, + [ + 0.138, + 0.199, + 0.567 + ] + ], + [ + 0.885, + [ + 0.135, + 0.196, + 0.559 + ] + ], + [ + 0.886, + [ + 0.135, + 0.196, + 0.559 + ] + ], + [ + 0.888, + [ + 0.131, + 0.193, + 0.552 + ] + ], + [ + 0.89, + [ + 0.131, + 0.193, + 0.552 + ] + ], + [ + 0.892, + [ + 0.128, + 0.19, + 0.544 + ] + ], + [ + 0.894, + [ + 0.128, + 0.19, + 0.544 + ] + ], + [ + 0.896, + [ + 0.124, + 0.187, + 0.537 + ] + ], + [ + 0.898, + [ + 0.124, + 0.187, + 0.537 + ] + ], + [ + 0.9, + [ + 0.121, + 0.184, + 0.53 + ] + ], + [ + 0.902, + [ + 0.121, + 0.184, + 0.53 + ] + ], + [ + 0.904, + [ + 0.117, + 0.182, + 0.522 + ] + ], + [ + 0.906, + [ + 0.117, + 0.182, + 0.522 + ] + ], + [ + 0.908, + [ + 0.113, + 0.179, + 0.515 + ] + ], + [ + 0.91, + [ + 0.113, + 0.179, + 0.515 + ] + ], + [ + 0.912, + [ + 0.11, + 0.176, + 0.507 + ] + ], + [ + 0.914, + [ + 0.11, + 0.176, + 0.507 + ] + ], + [ + 0.916, + [ + 0.106, + 0.173, + 0.5 + ] + ], + [ + 0.918, + [ + 0.106, + 0.173, + 0.5 + ] + ], + [ + 0.92, + [ + 0.103, + 0.17, + 0.493 + ] + ], + [ + 0.922, + [ + 0.103, + 0.17, + 0.493 + ] + ], + [ + 0.924, + [ + 0.099, + 0.167, + 0.485 + ] + ], + [ + 0.926, + [ + 0.099, + 0.167, + 0.485 + ] + ], + [ + 0.928, + [ + 0.096, + 0.165, + 0.478 + ] + ], + [ + 0.93, + [ + 0.096, + 0.165, + 0.478 + ] + ], + [ + 0.932, + [ + 0.092, + 0.162, + 0.471 + ] + ], + [ + 0.933, + [ + 0.092, + 0.162, + 0.471 + ] + ], + [ + 0.935, + [ + 0.088, + 0.159, + 0.463 + ] + ], + [ + 0.937, + [ + 0.088, + 0.159, + 0.463 + ] + ], + [ + 0.939, + [ + 0.085, + 0.156, + 0.456 + ] + ], + [ + 0.941, + [ + 0.085, + 0.156, + 0.456 + ] + ], + [ + 0.943, + [ + 0.081, + 0.153, + 0.448 + ] + ], + [ + 0.945, + [ + 0.081, + 0.153, + 0.448 + ] + ], + [ + 0.947, + [ + 0.078, + 0.151, + 0.441 + ] + ], + [ + 0.949, + [ + 0.078, + 0.151, + 0.441 + ] + ], + [ + 0.951, + [ + 0.074, + 0.148, + 0.434 + ] + ], + [ + 0.953, + [ + 0.074, + 0.148, + 0.434 + ] + ], + [ + 0.955, + [ + 0.071, + 0.145, + 0.426 + ] + ], + [ + 0.957, + [ + 0.071, + 0.145, + 0.426 + ] + ], + [ + 0.959, + [ + 0.067, + 0.142, + 0.419 + ] + ], + [ + 0.961, + [ + 0.067, + 0.142, + 0.419 + ] + ], + [ + 0.963, + [ + 0.063, + 0.139, + 0.412 + ] + ], + [ + 0.965, + [ + 0.063, + 0.139, + 0.412 + ] + ], + [ + 0.967, + [ + 0.06, + 0.136, + 0.404 + ] + ], + [ + 0.969, + [ + 0.06, + 0.136, + 0.404 + ] + ], + [ + 0.971, + [ + 0.056, + 0.134, + 0.397 + ] + ], + [ + 0.973, + [ + 0.056, + 0.134, + 0.397 + ] + ], + [ + 0.975, + [ + 0.053, + 0.131, + 0.389 + ] + ], + [ + 0.977, + [ + 0.053, + 0.131, + 0.389 + ] + ], + [ + 0.978, + [ + 0.049, + 0.128, + 0.382 + ] + ], + [ + 0.98, + [ + 0.049, + 0.128, + 0.382 + ] + ], + [ + 0.982, + [ + 0.046, + 0.125, + 0.375 + ] + ], + [ + 0.984, + [ + 0.046, + 0.125, + 0.375 + ] + ], + [ + 0.986, + [ + 0.042, + 0.122, + 0.367 + ] + ], + [ + 0.988, + [ + 0.042, + 0.122, + 0.367 + ] + ], + [ + 0.99, + [ + 0.039, + 0.119, + 0.36 + ] + ], + [ + 0.992, + [ + 0.039, + 0.119, + 0.36 + ] + ], + [ + 0.994, + [ + 0.035, + 0.117, + 0.352 + ] + ], + [ + 0.996, + [ + 0.035, + 0.117, + 0.352 + ] + ], + [ + 0.998, + [ + 0.031, + 0.114, + 0.345 + ] + ], + [ + 1, + [ + 0.031, + 0.114, + 0.345 + ] + ] + ], + [ + [ + 0, + [ + 0, + 0, + 1 + ] + ], + [ + 0.002, + [ + 0, + 0, + 1 + ] + ], + [ + 0.004, + [ + 0, + 0.004, + 0.998 + ] + ], + [ + 0.006, + [ + 0, + 0.004, + 0.998 + ] + ], + [ + 0.008, + [ + 0, + 0.008, + 0.996 + ] + ], + [ + 0.01, + [ + 0, + 0.008, + 0.996 + ] + ], + [ + 0.012, + [ + 0, + 0.012, + 0.994 + ] + ], + [ + 0.014, + [ + 0, + 0.012, + 0.994 + ] + ], + [ + 0.016, + [ + 0, + 0.016, + 0.992 + ] + ], + [ + 0.018, + [ + 0, + 0.016, + 0.992 + ] + ], + [ + 0.02, + [ + 0, + 0.02, + 0.99 + ] + ], + [ + 0.022, + [ + 0, + 0.02, + 0.99 + ] + ], + [ + 0.023, + [ + 0, + 0.024, + 0.988 + ] + ], + [ + 0.025, + [ + 0, + 0.024, + 0.988 + ] + ], + [ + 0.027, + [ + 0, + 0.027, + 0.986 + ] + ], + [ + 0.029, + [ + 0, + 0.027, + 0.986 + ] + ], + [ + 0.031, + [ + 0, + 0.031, + 0.984 + ] + ], + [ + 0.033, + [ + 0, + 0.031, + 0.984 + ] + ], + [ + 0.035, + [ + 0, + 0.035, + 0.982 + ] + ], + [ + 0.037, + [ + 0, + 0.035, + 0.982 + ] + ], + [ + 0.039, + [ + 0, + 0.039, + 0.98 + ] + ], + [ + 0.041, + [ + 0, + 0.039, + 0.98 + ] + ], + [ + 0.043, + [ + 0, + 0.043, + 0.978 + ] + ], + [ + 0.045, + [ + 0, + 0.043, + 0.978 + ] + ], + [ + 0.047, + [ + 0, + 0.047, + 0.976 + ] + ], + [ + 0.049, + [ + 0, + 0.047, + 0.976 + ] + ], + [ + 0.051, + [ + 0, + 0.051, + 0.975 + ] + ], + [ + 0.053, + [ + 0, + 0.051, + 0.975 + ] + ], + [ + 0.055, + [ + 0, + 0.055, + 0.973 + ] + ], + [ + 0.057, + [ + 0, + 0.055, + 0.973 + ] + ], + [ + 0.059, + [ + 0, + 0.059, + 0.971 + ] + ], + [ + 0.061, + [ + 0, + 0.059, + 0.971 + ] + ], + [ + 0.063, + [ + 0, + 0.063, + 0.969 + ] + ], + [ + 0.065, + [ + 0, + 0.063, + 0.969 + ] + ], + [ + 0.067, + [ + 0, + 0.067, + 0.967 + ] + ], + [ + 0.068, + [ + 0, + 0.067, + 0.967 + ] + ], + [ + 0.07, + [ + 0, + 0.071, + 0.965 + ] + ], + [ + 0.072, + [ + 0, + 0.071, + 0.965 + ] + ], + [ + 0.074, + [ + 0, + 0.075, + 0.963 + ] + ], + [ + 0.076, + [ + 0, + 0.075, + 0.963 + ] + ], + [ + 0.078, + [ + 0, + 0.078, + 0.961 + ] + ], + [ + 0.08, + [ + 0, + 0.078, + 0.961 + ] + ], + [ + 0.082, + [ + 0, + 0.082, + 0.959 + ] + ], + [ + 0.084, + [ + 0, + 0.082, + 0.959 + ] + ], + [ + 0.086, + [ + 0, + 0.086, + 0.957 + ] + ], + [ + 0.088, + [ + 0, + 0.086, + 0.957 + ] + ], + [ + 0.09, + [ + 0, + 0.09, + 0.955 + ] + ], + [ + 0.092, + [ + 0, + 0.09, + 0.955 + ] + ], + [ + 0.094, + [ + 0, + 0.094, + 0.953 + ] + ], + [ + 0.096, + [ + 0, + 0.094, + 0.953 + ] + ], + [ + 0.098, + [ + 0, + 0.098, + 0.951 + ] + ], + [ + 0.1, + [ + 0, + 0.098, + 0.951 + ] + ], + [ + 0.102, + [ + 0, + 0.102, + 0.949 + ] + ], + [ + 0.104, + [ + 0, + 0.102, + 0.949 + ] + ], + [ + 0.106, + [ + 0, + 0.106, + 0.947 + ] + ], + [ + 0.108, + [ + 0, + 0.106, + 0.947 + ] + ], + [ + 0.11, + [ + 0, + 0.11, + 0.945 + ] + ], + [ + 0.112, + [ + 0, + 0.11, + 0.945 + ] + ], + [ + 0.114, + [ + 0, + 0.114, + 0.943 + ] + ], + [ + 0.115, + [ + 0, + 0.114, + 0.943 + ] + ], + [ + 0.117, + [ + 0, + 0.118, + 0.941 + ] + ], + [ + 0.119, + [ + 0, + 0.118, + 0.941 + ] + ], + [ + 0.121, + [ + 0, + 0.122, + 0.939 + ] + ], + [ + 0.123, + [ + 0, + 0.122, + 0.939 + ] + ], + [ + 0.125, + [ + 0, + 0.125, + 0.937 + ] + ], + [ + 0.127, + [ + 0, + 0.125, + 0.937 + ] + ], + [ + 0.129, + [ + 0, + 0.129, + 0.935 + ] + ], + [ + 0.131, + [ + 0, + 0.129, + 0.935 + ] + ], + [ + 0.133, + [ + 0, + 0.133, + 0.933 + ] + ], + [ + 0.135, + [ + 0, + 0.133, + 0.933 + ] + ], + [ + 0.137, + [ + 0, + 0.137, + 0.931 + ] + ], + [ + 0.139, + [ + 0, + 0.137, + 0.931 + ] + ], + [ + 0.141, + [ + 0, + 0.141, + 0.929 + ] + ], + [ + 0.143, + [ + 0, + 0.141, + 0.929 + ] + ], + [ + 0.145, + [ + 0, + 0.145, + 0.927 + ] + ], + [ + 0.147, + [ + 0, + 0.145, + 0.927 + ] + ], + [ + 0.149, + [ + 0, + 0.149, + 0.925 + ] + ], + [ + 0.151, + [ + 0, + 0.149, + 0.925 + ] + ], + [ + 0.153, + [ + 0, + 0.153, + 0.924 + ] + ], + [ + 0.155, + [ + 0, + 0.153, + 0.924 + ] + ], + [ + 0.157, + [ + 0, + 0.157, + 0.922 + ] + ], + [ + 0.159, + [ + 0, + 0.157, + 0.922 + ] + ], + [ + 0.16, + [ + 0, + 0.161, + 0.92 + ] + ], + [ + 0.162, + [ + 0, + 0.161, + 0.92 + ] + ], + [ + 0.164, + [ + 0, + 0.165, + 0.918 + ] + ], + [ + 0.166, + [ + 0, + 0.165, + 0.918 + ] + ], + [ + 0.168, + [ + 0, + 0.169, + 0.916 + ] + ], + [ + 0.17, + [ + 0, + 0.169, + 0.916 + ] + ], + [ + 0.172, + [ + 0, + 0.173, + 0.914 + ] + ], + [ + 0.174, + [ + 0, + 0.173, + 0.914 + ] + ], + [ + 0.176, + [ + 0, + 0.176, + 0.912 + ] + ], + [ + 0.178, + [ + 0, + 0.176, + 0.912 + ] + ], + [ + 0.18, + [ + 0, + 0.18, + 0.91 + ] + ], + [ + 0.182, + [ + 0, + 0.18, + 0.91 + ] + ], + [ + 0.184, + [ + 0, + 0.184, + 0.908 + ] + ], + [ + 0.186, + [ + 0, + 0.184, + 0.908 + ] + ], + [ + 0.188, + [ + 0, + 0.188, + 0.906 + ] + ], + [ + 0.19, + [ + 0, + 0.188, + 0.906 + ] + ], + [ + 0.192, + [ + 0, + 0.192, + 0.904 + ] + ], + [ + 0.194, + [ + 0, + 0.192, + 0.904 + ] + ], + [ + 0.196, + [ + 0, + 0.196, + 0.902 + ] + ], + [ + 0.198, + [ + 0, + 0.196, + 0.902 + ] + ], + [ + 0.2, + [ + 0, + 0.2, + 0.9 + ] + ], + [ + 0.202, + [ + 0, + 0.2, + 0.9 + ] + ], + [ + 0.204, + [ + 0, + 0.204, + 0.898 + ] + ], + [ + 0.205, + [ + 0, + 0.204, + 0.898 + ] + ], + [ + 0.207, + [ + 0, + 0.208, + 0.896 + ] + ], + [ + 0.209, + [ + 0, + 0.208, + 0.896 + ] + ], + [ + 0.211, + [ + 0, + 0.212, + 0.894 + ] + ], + [ + 0.213, + [ + 0, + 0.212, + 0.894 + ] + ], + [ + 0.215, + [ + 0, + 0.216, + 0.892 + ] + ], + [ + 0.217, + [ + 0, + 0.216, + 0.892 + ] + ], + [ + 0.219, + [ + 0, + 0.22, + 0.89 + ] + ], + [ + 0.221, + [ + 0, + 0.22, + 0.89 + ] + ], + [ + 0.223, + [ + 0, + 0.224, + 0.888 + ] + ], + [ + 0.225, + [ + 0, + 0.224, + 0.888 + ] + ], + [ + 0.227, + [ + 0, + 0.227, + 0.886 + ] + ], + [ + 0.229, + [ + 0, + 0.227, + 0.886 + ] + ], + [ + 0.231, + [ + 0, + 0.231, + 0.884 + ] + ], + [ + 0.233, + [ + 0, + 0.231, + 0.884 + ] + ], + [ + 0.235, + [ + 0, + 0.235, + 0.882 + ] + ], + [ + 0.237, + [ + 0, + 0.235, + 0.882 + ] + ], + [ + 0.239, + [ + 0, + 0.239, + 0.88 + ] + ], + [ + 0.241, + [ + 0, + 0.239, + 0.88 + ] + ], + [ + 0.243, + [ + 0, + 0.243, + 0.878 + ] + ], + [ + 0.245, + [ + 0, + 0.243, + 0.878 + ] + ], + [ + 0.247, + [ + 0, + 0.247, + 0.876 + ] + ], + [ + 0.249, + [ + 0, + 0.247, + 0.876 + ] + ], + [ + 0.25, + [ + 0, + 0.251, + 0.875 + ] + ], + [ + 0.252, + [ + 0, + 0.251, + 0.875 + ] + ], + [ + 0.254, + [ + 0, + 0.255, + 0.873 + ] + ], + [ + 0.256, + [ + 0, + 0.255, + 0.873 + ] + ], + [ + 0.258, + [ + 0, + 0.259, + 0.871 + ] + ], + [ + 0.26, + [ + 0, + 0.259, + 0.871 + ] + ], + [ + 0.262, + [ + 0, + 0.263, + 0.869 + ] + ], + [ + 0.264, + [ + 0, + 0.263, + 0.869 + ] + ], + [ + 0.266, + [ + 0, + 0.267, + 0.867 + ] + ], + [ + 0.268, + [ + 0, + 0.267, + 0.867 + ] + ], + [ + 0.27, + [ + 0, + 0.271, + 0.865 + ] + ], + [ + 0.272, + [ + 0, + 0.271, + 0.865 + ] + ], + [ + 0.274, + [ + 0, + 0.275, + 0.863 + ] + ], + [ + 0.276, + [ + 0, + 0.275, + 0.863 + ] + ], + [ + 0.278, + [ + 0, + 0.278, + 0.861 + ] + ], + [ + 0.28, + [ + 0, + 0.278, + 0.861 + ] + ], + [ + 0.282, + [ + 0, + 0.282, + 0.859 + ] + ], + [ + 0.284, + [ + 0, + 0.282, + 0.859 + ] + ], + [ + 0.286, + [ + 0, + 0.286, + 0.857 + ] + ], + [ + 0.288, + [ + 0, + 0.286, + 0.857 + ] + ], + [ + 0.29, + [ + 0, + 0.29, + 0.855 + ] + ], + [ + 0.292, + [ + 0, + 0.29, + 0.855 + ] + ], + [ + 0.294, + [ + 0, + 0.294, + 0.853 + ] + ], + [ + 0.295, + [ + 0, + 0.294, + 0.853 + ] + ], + [ + 0.297, + [ + 0, + 0.298, + 0.851 + ] + ], + [ + 0.299, + [ + 0, + 0.298, + 0.851 + ] + ], + [ + 0.301, + [ + 0, + 0.302, + 0.849 + ] + ], + [ + 0.303, + [ + 0, + 0.302, + 0.849 + ] + ], + [ + 0.305, + [ + 0, + 0.306, + 0.847 + ] + ], + [ + 0.307, + [ + 0, + 0.306, + 0.847 + ] + ], + [ + 0.309, + [ + 0, + 0.31, + 0.845 + ] + ], + [ + 0.311, + [ + 0, + 0.31, + 0.845 + ] + ], + [ + 0.313, + [ + 0, + 0.314, + 0.843 + ] + ], + [ + 0.315, + [ + 0, + 0.314, + 0.843 + ] + ], + [ + 0.317, + [ + 0, + 0.318, + 0.841 + ] + ], + [ + 0.319, + [ + 0, + 0.318, + 0.841 + ] + ], + [ + 0.321, + [ + 0, + 0.322, + 0.839 + ] + ], + [ + 0.323, + [ + 0, + 0.322, + 0.839 + ] + ], + [ + 0.325, + [ + 0, + 0.325, + 0.837 + ] + ], + [ + 0.327, + [ + 0, + 0.325, + 0.837 + ] + ], + [ + 0.329, + [ + 0, + 0.329, + 0.835 + ] + ], + [ + 0.331, + [ + 0, + 0.329, + 0.835 + ] + ], + [ + 0.333, + [ + 0, + 0.333, + 0.833 + ] + ], + [ + 0.335, + [ + 0, + 0.333, + 0.833 + ] + ], + [ + 0.337, + [ + 0, + 0.337, + 0.831 + ] + ], + [ + 0.339, + [ + 0, + 0.337, + 0.831 + ] + ], + [ + 0.341, + [ + 0, + 0.341, + 0.829 + ] + ], + [ + 0.342, + [ + 0, + 0.341, + 0.829 + ] + ], + [ + 0.344, + [ + 0, + 0.345, + 0.827 + ] + ], + [ + 0.346, + [ + 0, + 0.345, + 0.827 + ] + ], + [ + 0.348, + [ + 0, + 0.349, + 0.825 + ] + ], + [ + 0.35, + [ + 0, + 0.349, + 0.825 + ] + ], + [ + 0.352, + [ + 0, + 0.353, + 0.824 + ] + ], + [ + 0.354, + [ + 0, + 0.353, + 0.824 + ] + ], + [ + 0.356, + [ + 0, + 0.357, + 0.822 + ] + ], + [ + 0.358, + [ + 0, + 0.357, + 0.822 + ] + ], + [ + 0.36, + [ + 0, + 0.361, + 0.82 + ] + ], + [ + 0.362, + [ + 0, + 0.361, + 0.82 + ] + ], + [ + 0.364, + [ + 0, + 0.365, + 0.818 + ] + ], + [ + 0.366, + [ + 0, + 0.365, + 0.818 + ] + ], + [ + 0.368, + [ + 0, + 0.369, + 0.816 + ] + ], + [ + 0.37, + [ + 0, + 0.369, + 0.816 + ] + ], + [ + 0.372, + [ + 0, + 0.373, + 0.814 + ] + ], + [ + 0.374, + [ + 0, + 0.373, + 0.814 + ] + ], + [ + 0.376, + [ + 0, + 0.376, + 0.812 + ] + ], + [ + 0.378, + [ + 0, + 0.376, + 0.812 + ] + ], + [ + 0.38, + [ + 0, + 0.38, + 0.81 + ] + ], + [ + 0.382, + [ + 0, + 0.38, + 0.81 + ] + ], + [ + 0.384, + [ + 0, + 0.384, + 0.808 + ] + ], + [ + 0.386, + [ + 0, + 0.384, + 0.808 + ] + ], + [ + 0.387, + [ + 0, + 0.388, + 0.806 + ] + ], + [ + 0.389, + [ + 0, + 0.388, + 0.806 + ] + ], + [ + 0.391, + [ + 0, + 0.392, + 0.804 + ] + ], + [ + 0.393, + [ + 0, + 0.392, + 0.804 + ] + ], + [ + 0.395, + [ + 0, + 0.396, + 0.802 + ] + ], + [ + 0.397, + [ + 0, + 0.396, + 0.802 + ] + ], + [ + 0.399, + [ + 0, + 0.4, + 0.8 + ] + ], + [ + 0.401, + [ + 0, + 0.4, + 0.8 + ] + ], + [ + 0.403, + [ + 0, + 0.404, + 0.798 + ] + ], + [ + 0.405, + [ + 0, + 0.404, + 0.798 + ] + ], + [ + 0.407, + [ + 0, + 0.408, + 0.796 + ] + ], + [ + 0.409, + [ + 0, + 0.408, + 0.796 + ] + ], + [ + 0.411, + [ + 0, + 0.412, + 0.794 + ] + ], + [ + 0.413, + [ + 0, + 0.412, + 0.794 + ] + ], + [ + 0.415, + [ + 0, + 0.416, + 0.792 + ] + ], + [ + 0.417, + [ + 0, + 0.416, + 0.792 + ] + ], + [ + 0.419, + [ + 0, + 0.42, + 0.79 + ] + ], + [ + 0.421, + [ + 0, + 0.42, + 0.79 + ] + ], + [ + 0.423, + [ + 0, + 0.424, + 0.788 + ] + ], + [ + 0.425, + [ + 0, + 0.424, + 0.788 + ] + ], + [ + 0.427, + [ + 0, + 0.427, + 0.786 + ] + ], + [ + 0.429, + [ + 0, + 0.427, + 0.786 + ] + ], + [ + 0.431, + [ + 0, + 0.431, + 0.784 + ] + ], + [ + 0.432, + [ + 0, + 0.431, + 0.784 + ] + ], + [ + 0.434, + [ + 0, + 0.435, + 0.782 + ] + ], + [ + 0.436, + [ + 0, + 0.435, + 0.782 + ] + ], + [ + 0.438, + [ + 0, + 0.439, + 0.78 + ] + ], + [ + 0.44, + [ + 0, + 0.439, + 0.78 + ] + ], + [ + 0.442, + [ + 0, + 0.443, + 0.778 + ] + ], + [ + 0.444, + [ + 0, + 0.443, + 0.778 + ] + ], + [ + 0.446, + [ + 0, + 0.447, + 0.776 + ] + ], + [ + 0.448, + [ + 0, + 0.447, + 0.776 + ] + ], + [ + 0.45, + [ + 0, + 0.451, + 0.775 + ] + ], + [ + 0.452, + [ + 0, + 0.451, + 0.775 + ] + ], + [ + 0.454, + [ + 0, + 0.455, + 0.773 + ] + ], + [ + 0.456, + [ + 0, + 0.455, + 0.773 + ] + ], + [ + 0.458, + [ + 0, + 0.459, + 0.771 + ] + ], + [ + 0.46, + [ + 0, + 0.459, + 0.771 + ] + ], + [ + 0.462, + [ + 0, + 0.463, + 0.769 + ] + ], + [ + 0.464, + [ + 0, + 0.463, + 0.769 + ] + ], + [ + 0.466, + [ + 0, + 0.467, + 0.767 + ] + ], + [ + 0.468, + [ + 0, + 0.467, + 0.767 + ] + ], + [ + 0.47, + [ + 0, + 0.471, + 0.765 + ] + ], + [ + 0.472, + [ + 0, + 0.471, + 0.765 + ] + ], + [ + 0.474, + [ + 0, + 0.475, + 0.763 + ] + ], + [ + 0.476, + [ + 0, + 0.475, + 0.763 + ] + ], + [ + 0.477, + [ + 0, + 0.478, + 0.761 + ] + ], + [ + 0.479, + [ + 0, + 0.478, + 0.761 + ] + ], + [ + 0.481, + [ + 0, + 0.482, + 0.759 + ] + ], + [ + 0.483, + [ + 0, + 0.482, + 0.759 + ] + ], + [ + 0.485, + [ + 0, + 0.486, + 0.757 + ] + ], + [ + 0.487, + [ + 0, + 0.486, + 0.757 + ] + ], + [ + 0.489, + [ + 0, + 0.49, + 0.755 + ] + ], + [ + 0.491, + [ + 0, + 0.49, + 0.755 + ] + ], + [ + 0.493, + [ + 0, + 0.494, + 0.753 + ] + ], + [ + 0.495, + [ + 0, + 0.494, + 0.753 + ] + ], + [ + 0.497, + [ + 0, + 0.498, + 0.751 + ] + ], + [ + 0.499, + [ + 0, + 0.498, + 0.751 + ] + ], + [ + 0.501, + [ + 0, + 0.502, + 0.749 + ] + ], + [ + 0.503, + [ + 0, + 0.502, + 0.749 + ] + ], + [ + 0.505, + [ + 0, + 0.506, + 0.747 + ] + ], + [ + 0.507, + [ + 0, + 0.506, + 0.747 + ] + ], + [ + 0.509, + [ + 0, + 0.51, + 0.745 + ] + ], + [ + 0.511, + [ + 0, + 0.51, + 0.745 + ] + ], + [ + 0.513, + [ + 0, + 0.514, + 0.743 + ] + ], + [ + 0.515, + [ + 0, + 0.514, + 0.743 + ] + ], + [ + 0.517, + [ + 0, + 0.518, + 0.741 + ] + ], + [ + 0.519, + [ + 0, + 0.518, + 0.741 + ] + ], + [ + 0.521, + [ + 0, + 0.522, + 0.739 + ] + ], + [ + 0.523, + [ + 0, + 0.522, + 0.739 + ] + ], + [ + 0.524, + [ + 0, + 0.525, + 0.737 + ] + ], + [ + 0.526, + [ + 0, + 0.525, + 0.737 + ] + ], + [ + 0.528, + [ + 0, + 0.529, + 0.735 + ] + ], + [ + 0.53, + [ + 0, + 0.529, + 0.735 + ] + ], + [ + 0.532, + [ + 0, + 0.533, + 0.733 + ] + ], + [ + 0.534, + [ + 0, + 0.533, + 0.733 + ] + ], + [ + 0.536, + [ + 0, + 0.537, + 0.731 + ] + ], + [ + 0.538, + [ + 0, + 0.537, + 0.731 + ] + ], + [ + 0.54, + [ + 0, + 0.541, + 0.729 + ] + ], + [ + 0.542, + [ + 0, + 0.541, + 0.729 + ] + ], + [ + 0.544, + [ + 0, + 0.545, + 0.727 + ] + ], + [ + 0.546, + [ + 0, + 0.545, + 0.727 + ] + ], + [ + 0.548, + [ + 0, + 0.549, + 0.725 + ] + ], + [ + 0.55, + [ + 0, + 0.549, + 0.725 + ] + ], + [ + 0.552, + [ + 0, + 0.553, + 0.724 + ] + ], + [ + 0.554, + [ + 0, + 0.553, + 0.724 + ] + ], + [ + 0.556, + [ + 0, + 0.557, + 0.722 + ] + ], + [ + 0.558, + [ + 0, + 0.557, + 0.722 + ] + ], + [ + 0.56, + [ + 0, + 0.561, + 0.72 + ] + ], + [ + 0.562, + [ + 0, + 0.561, + 0.72 + ] + ], + [ + 0.564, + [ + 0, + 0.565, + 0.718 + ] + ], + [ + 0.566, + [ + 0, + 0.565, + 0.718 + ] + ], + [ + 0.568, + [ + 0, + 0.569, + 0.716 + ] + ], + [ + 0.569, + [ + 0, + 0.569, + 0.716 + ] + ], + [ + 0.571, + [ + 0, + 0.573, + 0.714 + ] + ], + [ + 0.573, + [ + 0, + 0.573, + 0.714 + ] + ], + [ + 0.575, + [ + 0, + 0.576, + 0.712 + ] + ], + [ + 0.577, + [ + 0, + 0.576, + 0.712 + ] + ], + [ + 0.579, + [ + 0, + 0.58, + 0.71 + ] + ], + [ + 0.581, + [ + 0, + 0.58, + 0.71 + ] + ], + [ + 0.583, + [ + 0, + 0.584, + 0.708 + ] + ], + [ + 0.585, + [ + 0, + 0.584, + 0.708 + ] + ], + [ + 0.587, + [ + 0, + 0.588, + 0.706 + ] + ], + [ + 0.589, + [ + 0, + 0.588, + 0.706 + ] + ], + [ + 0.591, + [ + 0, + 0.592, + 0.704 + ] + ], + [ + 0.593, + [ + 0, + 0.592, + 0.704 + ] + ], + [ + 0.595, + [ + 0, + 0.596, + 0.702 + ] + ], + [ + 0.597, + [ + 0, + 0.596, + 0.702 + ] + ], + [ + 0.599, + [ + 0, + 0.6, + 0.7 + ] + ], + [ + 0.601, + [ + 0, + 0.6, + 0.7 + ] + ], + [ + 0.603, + [ + 0, + 0.604, + 0.698 + ] + ], + [ + 0.605, + [ + 0, + 0.604, + 0.698 + ] + ], + [ + 0.607, + [ + 0, + 0.608, + 0.696 + ] + ], + [ + 0.609, + [ + 0, + 0.608, + 0.696 + ] + ], + [ + 0.611, + [ + 0, + 0.612, + 0.694 + ] + ], + [ + 0.613, + [ + 0, + 0.612, + 0.694 + ] + ], + [ + 0.614, + [ + 0, + 0.616, + 0.692 + ] + ], + [ + 0.616, + [ + 0, + 0.616, + 0.692 + ] + ], + [ + 0.618, + [ + 0, + 0.62, + 0.69 + ] + ], + [ + 0.62, + [ + 0, + 0.62, + 0.69 + ] + ], + [ + 0.622, + [ + 0, + 0.624, + 0.688 + ] + ], + [ + 0.624, + [ + 0, + 0.624, + 0.688 + ] + ], + [ + 0.626, + [ + 0, + 0.627, + 0.686 + ] + ], + [ + 0.628, + [ + 0, + 0.627, + 0.686 + ] + ], + [ + 0.63, + [ + 0, + 0.631, + 0.684 + ] + ], + [ + 0.632, + [ + 0, + 0.631, + 0.684 + ] + ], + [ + 0.634, + [ + 0, + 0.635, + 0.682 + ] + ], + [ + 0.636, + [ + 0, + 0.635, + 0.682 + ] + ], + [ + 0.638, + [ + 0, + 0.639, + 0.68 + ] + ], + [ + 0.64, + [ + 0, + 0.639, + 0.68 + ] + ], + [ + 0.642, + [ + 0, + 0.643, + 0.678 + ] + ], + [ + 0.644, + [ + 0, + 0.643, + 0.678 + ] + ], + [ + 0.646, + [ + 0, + 0.647, + 0.676 + ] + ], + [ + 0.648, + [ + 0, + 0.647, + 0.676 + ] + ], + [ + 0.65, + [ + 0, + 0.651, + 0.675 + ] + ], + [ + 0.652, + [ + 0, + 0.651, + 0.675 + ] + ], + [ + 0.654, + [ + 0, + 0.655, + 0.673 + ] + ], + [ + 0.656, + [ + 0, + 0.655, + 0.673 + ] + ], + [ + 0.658, + [ + 0, + 0.659, + 0.671 + ] + ], + [ + 0.659, + [ + 0, + 0.659, + 0.671 + ] + ], + [ + 0.661, + [ + 0, + 0.663, + 0.669 + ] + ], + [ + 0.663, + [ + 0, + 0.663, + 0.669 + ] + ], + [ + 0.665, + [ + 0, + 0.667, + 0.667 + ] + ], + [ + 0.667, + [ + 0, + 0.667, + 0.667 + ] + ], + [ + 0.669, + [ + 0, + 0.671, + 0.665 + ] + ], + [ + 0.671, + [ + 0, + 0.671, + 0.665 + ] + ], + [ + 0.673, + [ + 0, + 0.675, + 0.663 + ] + ], + [ + 0.675, + [ + 0, + 0.675, + 0.663 + ] + ], + [ + 0.677, + [ + 0, + 0.678, + 0.661 + ] + ], + [ + 0.679, + [ + 0, + 0.678, + 0.661 + ] + ], + [ + 0.681, + [ + 0, + 0.682, + 0.659 + ] + ], + [ + 0.683, + [ + 0, + 0.682, + 0.659 + ] + ], + [ + 0.685, + [ + 0, + 0.686, + 0.657 + ] + ], + [ + 0.687, + [ + 0, + 0.686, + 0.657 + ] + ], + [ + 0.689, + [ + 0, + 0.69, + 0.655 + ] + ], + [ + 0.691, + [ + 0, + 0.69, + 0.655 + ] + ], + [ + 0.693, + [ + 0, + 0.694, + 0.653 + ] + ], + [ + 0.695, + [ + 0, + 0.694, + 0.653 + ] + ], + [ + 0.697, + [ + 0, + 0.698, + 0.651 + ] + ], + [ + 0.699, + [ + 0, + 0.698, + 0.651 + ] + ], + [ + 0.701, + [ + 0, + 0.702, + 0.649 + ] + ], + [ + 0.703, + [ + 0, + 0.702, + 0.649 + ] + ], + [ + 0.705, + [ + 0, + 0.706, + 0.647 + ] + ], + [ + 0.706, + [ + 0, + 0.706, + 0.647 + ] + ], + [ + 0.708, + [ + 0, + 0.71, + 0.645 + ] + ], + [ + 0.71, + [ + 0, + 0.71, + 0.645 + ] + ], + [ + 0.712, + [ + 0, + 0.714, + 0.643 + ] + ], + [ + 0.714, + [ + 0, + 0.714, + 0.643 + ] + ], + [ + 0.716, + [ + 0, + 0.718, + 0.641 + ] + ], + [ + 0.718, + [ + 0, + 0.718, + 0.641 + ] + ], + [ + 0.72, + [ + 0, + 0.722, + 0.639 + ] + ], + [ + 0.722, + [ + 0, + 0.722, + 0.639 + ] + ], + [ + 0.724, + [ + 0, + 0.725, + 0.637 + ] + ], + [ + 0.726, + [ + 0, + 0.725, + 0.637 + ] + ], + [ + 0.728, + [ + 0, + 0.729, + 0.635 + ] + ], + [ + 0.73, + [ + 0, + 0.729, + 0.635 + ] + ], + [ + 0.732, + [ + 0, + 0.733, + 0.633 + ] + ], + [ + 0.734, + [ + 0, + 0.733, + 0.633 + ] + ], + [ + 0.736, + [ + 0, + 0.737, + 0.631 + ] + ], + [ + 0.738, + [ + 0, + 0.737, + 0.631 + ] + ], + [ + 0.74, + [ + 0, + 0.741, + 0.629 + ] + ], + [ + 0.742, + [ + 0, + 0.741, + 0.629 + ] + ], + [ + 0.744, + [ + 0, + 0.745, + 0.627 + ] + ], + [ + 0.746, + [ + 0, + 0.745, + 0.627 + ] + ], + [ + 0.748, + [ + 0, + 0.749, + 0.625 + ] + ], + [ + 0.75, + [ + 0, + 0.749, + 0.625 + ] + ], + [ + 0.751, + [ + 0, + 0.753, + 0.624 + ] + ], + [ + 0.753, + [ + 0, + 0.753, + 0.624 + ] + ], + [ + 0.755, + [ + 0, + 0.757, + 0.622 + ] + ], + [ + 0.757, + [ + 0, + 0.757, + 0.622 + ] + ], + [ + 0.759, + [ + 0, + 0.761, + 0.62 + ] + ], + [ + 0.761, + [ + 0, + 0.761, + 0.62 + ] + ], + [ + 0.763, + [ + 0, + 0.765, + 0.618 + ] + ], + [ + 0.765, + [ + 0, + 0.765, + 0.618 + ] + ], + [ + 0.767, + [ + 0, + 0.769, + 0.616 + ] + ], + [ + 0.769, + [ + 0, + 0.769, + 0.616 + ] + ], + [ + 0.771, + [ + 0, + 0.773, + 0.614 + ] + ], + [ + 0.773, + [ + 0, + 0.773, + 0.614 + ] + ], + [ + 0.775, + [ + 0, + 0.776, + 0.612 + ] + ], + [ + 0.777, + [ + 0, + 0.776, + 0.612 + ] + ], + [ + 0.779, + [ + 0, + 0.78, + 0.61 + ] + ], + [ + 0.781, + [ + 0, + 0.78, + 0.61 + ] + ], + [ + 0.783, + [ + 0, + 0.784, + 0.608 + ] + ], + [ + 0.785, + [ + 0, + 0.784, + 0.608 + ] + ], + [ + 0.787, + [ + 0, + 0.788, + 0.606 + ] + ], + [ + 0.789, + [ + 0, + 0.788, + 0.606 + ] + ], + [ + 0.791, + [ + 0, + 0.792, + 0.604 + ] + ], + [ + 0.793, + [ + 0, + 0.792, + 0.604 + ] + ], + [ + 0.795, + [ + 0, + 0.796, + 0.602 + ] + ], + [ + 0.796, + [ + 0, + 0.796, + 0.602 + ] + ], + [ + 0.798, + [ + 0, + 0.8, + 0.6 + ] + ], + [ + 0.8, + [ + 0, + 0.8, + 0.6 + ] + ], + [ + 0.802, + [ + 0, + 0.804, + 0.598 + ] + ], + [ + 0.804, + [ + 0, + 0.804, + 0.598 + ] + ], + [ + 0.806, + [ + 0, + 0.808, + 0.596 + ] + ], + [ + 0.808, + [ + 0, + 0.808, + 0.596 + ] + ], + [ + 0.81, + [ + 0, + 0.812, + 0.594 + ] + ], + [ + 0.812, + [ + 0, + 0.812, + 0.594 + ] + ], + [ + 0.814, + [ + 0, + 0.816, + 0.592 + ] + ], + [ + 0.816, + [ + 0, + 0.816, + 0.592 + ] + ], + [ + 0.818, + [ + 0, + 0.82, + 0.59 + ] + ], + [ + 0.82, + [ + 0, + 0.82, + 0.59 + ] + ], + [ + 0.822, + [ + 0, + 0.824, + 0.588 + ] + ], + [ + 0.824, + [ + 0, + 0.824, + 0.588 + ] + ], + [ + 0.826, + [ + 0, + 0.827, + 0.586 + ] + ], + [ + 0.828, + [ + 0, + 0.827, + 0.586 + ] + ], + [ + 0.83, + [ + 0, + 0.831, + 0.584 + ] + ], + [ + 0.832, + [ + 0, + 0.831, + 0.584 + ] + ], + [ + 0.834, + [ + 0, + 0.835, + 0.582 + ] + ], + [ + 0.836, + [ + 0, + 0.835, + 0.582 + ] + ], + [ + 0.838, + [ + 0, + 0.839, + 0.58 + ] + ], + [ + 0.84, + [ + 0, + 0.839, + 0.58 + ] + ], + [ + 0.841, + [ + 0, + 0.843, + 0.578 + ] + ], + [ + 0.843, + [ + 0, + 0.843, + 0.578 + ] + ], + [ + 0.845, + [ + 0, + 0.847, + 0.576 + ] + ], + [ + 0.847, + [ + 0, + 0.847, + 0.576 + ] + ], + [ + 0.849, + [ + 0, + 0.851, + 0.575 + ] + ], + [ + 0.851, + [ + 0, + 0.851, + 0.575 + ] + ], + [ + 0.853, + [ + 0, + 0.855, + 0.573 + ] + ], + [ + 0.855, + [ + 0, + 0.855, + 0.573 + ] + ], + [ + 0.857, + [ + 0, + 0.859, + 0.571 + ] + ], + [ + 0.859, + [ + 0, + 0.859, + 0.571 + ] + ], + [ + 0.861, + [ + 0, + 0.863, + 0.569 + ] + ], + [ + 0.863, + [ + 0, + 0.863, + 0.569 + ] + ], + [ + 0.865, + [ + 0, + 0.867, + 0.567 + ] + ], + [ + 0.867, + [ + 0, + 0.867, + 0.567 + ] + ], + [ + 0.869, + [ + 0, + 0.871, + 0.565 + ] + ], + [ + 0.871, + [ + 0, + 0.871, + 0.565 + ] + ], + [ + 0.873, + [ + 0, + 0.875, + 0.563 + ] + ], + [ + 0.875, + [ + 0, + 0.875, + 0.563 + ] + ], + [ + 0.877, + [ + 0, + 0.878, + 0.561 + ] + ], + [ + 0.879, + [ + 0, + 0.878, + 0.561 + ] + ], + [ + 0.881, + [ + 0, + 0.882, + 0.559 + ] + ], + [ + 0.883, + [ + 0, + 0.882, + 0.559 + ] + ], + [ + 0.885, + [ + 0, + 0.886, + 0.557 + ] + ], + [ + 0.886, + [ + 0, + 0.886, + 0.557 + ] + ], + [ + 0.888, + [ + 0, + 0.89, + 0.555 + ] + ], + [ + 0.89, + [ + 0, + 0.89, + 0.555 + ] + ], + [ + 0.892, + [ + 0, + 0.894, + 0.553 + ] + ], + [ + 0.894, + [ + 0, + 0.894, + 0.553 + ] + ], + [ + 0.896, + [ + 0, + 0.898, + 0.551 + ] + ], + [ + 0.898, + [ + 0, + 0.898, + 0.551 + ] + ], + [ + 0.9, + [ + 0, + 0.902, + 0.549 + ] + ], + [ + 0.902, + [ + 0, + 0.902, + 0.549 + ] + ], + [ + 0.904, + [ + 0, + 0.906, + 0.547 + ] + ], + [ + 0.906, + [ + 0, + 0.906, + 0.547 + ] + ], + [ + 0.908, + [ + 0, + 0.91, + 0.545 + ] + ], + [ + 0.91, + [ + 0, + 0.91, + 0.545 + ] + ], + [ + 0.912, + [ + 0, + 0.914, + 0.543 + ] + ], + [ + 0.914, + [ + 0, + 0.914, + 0.543 + ] + ], + [ + 0.916, + [ + 0, + 0.918, + 0.541 + ] + ], + [ + 0.918, + [ + 0, + 0.918, + 0.541 + ] + ], + [ + 0.92, + [ + 0, + 0.922, + 0.539 + ] + ], + [ + 0.922, + [ + 0, + 0.922, + 0.539 + ] + ], + [ + 0.924, + [ + 0, + 0.925, + 0.537 + ] + ], + [ + 0.926, + [ + 0, + 0.925, + 0.537 + ] + ], + [ + 0.928, + [ + 0, + 0.929, + 0.535 + ] + ], + [ + 0.93, + [ + 0, + 0.929, + 0.535 + ] + ], + [ + 0.932, + [ + 0, + 0.933, + 0.533 + ] + ], + [ + 0.933, + [ + 0, + 0.933, + 0.533 + ] + ], + [ + 0.935, + [ + 0, + 0.937, + 0.531 + ] + ], + [ + 0.937, + [ + 0, + 0.937, + 0.531 + ] + ], + [ + 0.939, + [ + 0, + 0.941, + 0.529 + ] + ], + [ + 0.941, + [ + 0, + 0.941, + 0.529 + ] + ], + [ + 0.943, + [ + 0, + 0.945, + 0.527 + ] + ], + [ + 0.945, + [ + 0, + 0.945, + 0.527 + ] + ], + [ + 0.947, + [ + 0, + 0.949, + 0.525 + ] + ], + [ + 0.949, + [ + 0, + 0.949, + 0.525 + ] + ], + [ + 0.951, + [ + 0, + 0.953, + 0.524 + ] + ], + [ + 0.953, + [ + 0, + 0.953, + 0.524 + ] + ], + [ + 0.955, + [ + 0, + 0.957, + 0.522 + ] + ], + [ + 0.957, + [ + 0, + 0.957, + 0.522 + ] + ], + [ + 0.959, + [ + 0, + 0.961, + 0.52 + ] + ], + [ + 0.961, + [ + 0, + 0.961, + 0.52 + ] + ], + [ + 0.963, + [ + 0, + 0.965, + 0.518 + ] + ], + [ + 0.965, + [ + 0, + 0.965, + 0.518 + ] + ], + [ + 0.967, + [ + 0, + 0.969, + 0.516 + ] + ], + [ + 0.969, + [ + 0, + 0.969, + 0.516 + ] + ], + [ + 0.971, + [ + 0, + 0.973, + 0.514 + ] + ], + [ + 0.973, + [ + 0, + 0.973, + 0.514 + ] + ], + [ + 0.975, + [ + 0, + 0.976, + 0.512 + ] + ], + [ + 0.977, + [ + 0, + 0.976, + 0.512 + ] + ], + [ + 0.978, + [ + 0, + 0.98, + 0.51 + ] + ], + [ + 0.98, + [ + 0, + 0.98, + 0.51 + ] + ], + [ + 0.982, + [ + 0, + 0.984, + 0.508 + ] + ], + [ + 0.984, + [ + 0, + 0.984, + 0.508 + ] + ], + [ + 0.986, + [ + 0, + 0.988, + 0.506 + ] + ], + [ + 0.988, + [ + 0, + 0.988, + 0.506 + ] + ], + [ + 0.99, + [ + 0, + 0.992, + 0.504 + ] + ], + [ + 0.992, + [ + 0, + 0.992, + 0.504 + ] + ], + [ + 0.994, + [ + 0, + 0.996, + 0.502 + ] + ], + [ + 0.996, + [ + 0, + 0.996, + 0.502 + ] + ], + [ + 0.998, + [ + 0, + 1, + 0.5 + ] + ], + [ + 1, + [ + 0, + 1, + 0.5 + ] + ] + ], + [ + [ + 0, + [ + 0, + 0, + 0.5 + ] + ], + [ + 0.002, + [ + 0, + 0, + 0.5 + ] + ], + [ + 0.004, + [ + 0, + 0, + 0.518 + ] + ], + [ + 0.006, + [ + 0, + 0, + 0.518 + ] + ], + [ + 0.008, + [ + 0, + 0, + 0.536 + ] + ], + [ + 0.01, + [ + 0, + 0, + 0.536 + ] + ], + [ + 0.012, + [ + 0, + 0, + 0.553 + ] + ], + [ + 0.014, + [ + 0, + 0, + 0.553 + ] + ], + [ + 0.016, + [ + 0, + 0, + 0.571 + ] + ], + [ + 0.018, + [ + 0, + 0, + 0.571 + ] + ], + [ + 0.02, + [ + 0, + 0, + 0.589 + ] + ], + [ + 0.022, + [ + 0, + 0, + 0.589 + ] + ], + [ + 0.023, + [ + 0, + 0, + 0.607 + ] + ], + [ + 0.025, + [ + 0, + 0, + 0.607 + ] + ], + [ + 0.027, + [ + 0, + 0, + 0.625 + ] + ], + [ + 0.029, + [ + 0, + 0, + 0.625 + ] + ], + [ + 0.031, + [ + 0, + 0, + 0.643 + ] + ], + [ + 0.033, + [ + 0, + 0, + 0.643 + ] + ], + [ + 0.035, + [ + 0, + 0, + 0.66 + ] + ], + [ + 0.037, + [ + 0, + 0, + 0.66 + ] + ], + [ + 0.039, + [ + 0, + 0, + 0.678 + ] + ], + [ + 0.041, + [ + 0, + 0, + 0.678 + ] + ], + [ + 0.043, + [ + 0, + 0, + 0.696 + ] + ], + [ + 0.045, + [ + 0, + 0, + 0.696 + ] + ], + [ + 0.047, + [ + 0, + 0, + 0.714 + ] + ], + [ + 0.049, + [ + 0, + 0, + 0.714 + ] + ], + [ + 0.051, + [ + 0, + 0, + 0.732 + ] + ], + [ + 0.053, + [ + 0, + 0, + 0.732 + ] + ], + [ + 0.055, + [ + 0, + 0, + 0.75 + ] + ], + [ + 0.057, + [ + 0, + 0, + 0.75 + ] + ], + [ + 0.059, + [ + 0, + 0, + 0.767 + ] + ], + [ + 0.061, + [ + 0, + 0, + 0.767 + ] + ], + [ + 0.063, + [ + 0, + 0, + 0.785 + ] + ], + [ + 0.065, + [ + 0, + 0, + 0.785 + ] + ], + [ + 0.067, + [ + 0, + 0, + 0.803 + ] + ], + [ + 0.068, + [ + 0, + 0, + 0.803 + ] + ], + [ + 0.07, + [ + 0, + 0, + 0.821 + ] + ], + [ + 0.072, + [ + 0, + 0, + 0.821 + ] + ], + [ + 0.074, + [ + 0, + 0, + 0.839 + ] + ], + [ + 0.076, + [ + 0, + 0, + 0.839 + ] + ], + [ + 0.078, + [ + 0, + 0, + 0.857 + ] + ], + [ + 0.08, + [ + 0, + 0, + 0.857 + ] + ], + [ + 0.082, + [ + 0, + 0, + 0.874 + ] + ], + [ + 0.084, + [ + 0, + 0, + 0.874 + ] + ], + [ + 0.086, + [ + 0, + 0, + 0.892 + ] + ], + [ + 0.088, + [ + 0, + 0, + 0.892 + ] + ], + [ + 0.09, + [ + 0, + 0, + 0.91 + ] + ], + [ + 0.092, + [ + 0, + 0, + 0.91 + ] + ], + [ + 0.094, + [ + 0, + 0, + 0.928 + ] + ], + [ + 0.096, + [ + 0, + 0, + 0.928 + ] + ], + [ + 0.098, + [ + 0, + 0, + 0.946 + ] + ], + [ + 0.1, + [ + 0, + 0, + 0.946 + ] + ], + [ + 0.102, + [ + 0, + 0, + 0.963 + ] + ], + [ + 0.104, + [ + 0, + 0, + 0.963 + ] + ], + [ + 0.106, + [ + 0, + 0, + 0.981 + ] + ], + [ + 0.108, + [ + 0, + 0, + 0.981 + ] + ], + [ + 0.11, + [ + 0, + 0, + 0.999 + ] + ], + [ + 0.112, + [ + 0, + 0, + 0.999 + ] + ], + [ + 0.114, + [ + 0, + 0, + 1 + ] + ], + [ + 0.115, + [ + 0, + 0, + 1 + ] + ], + [ + 0.117, + [ + 0, + 0, + 1 + ] + ], + [ + 0.119, + [ + 0, + 0, + 1 + ] + ], + [ + 0.121, + [ + 0, + 0, + 1 + ] + ], + [ + 0.123, + [ + 0, + 0, + 1 + ] + ], + [ + 0.125, + [ + 0, + 0.002, + 1 + ] + ], + [ + 0.127, + [ + 0, + 0.002, + 1 + ] + ], + [ + 0.129, + [ + 0, + 0.018, + 1 + ] + ], + [ + 0.131, + [ + 0, + 0.018, + 1 + ] + ], + [ + 0.133, + [ + 0, + 0.033, + 1 + ] + ], + [ + 0.135, + [ + 0, + 0.033, + 1 + ] + ], + [ + 0.137, + [ + 0, + 0.049, + 1 + ] + ], + [ + 0.139, + [ + 0, + 0.049, + 1 + ] + ], + [ + 0.141, + [ + 0, + 0.065, + 1 + ] + ], + [ + 0.143, + [ + 0, + 0.065, + 1 + ] + ], + [ + 0.145, + [ + 0, + 0.08, + 1 + ] + ], + [ + 0.147, + [ + 0, + 0.08, + 1 + ] + ], + [ + 0.149, + [ + 0, + 0.096, + 1 + ] + ], + [ + 0.151, + [ + 0, + 0.096, + 1 + ] + ], + [ + 0.153, + [ + 0, + 0.112, + 1 + ] + ], + [ + 0.155, + [ + 0, + 0.112, + 1 + ] + ], + [ + 0.157, + [ + 0, + 0.127, + 1 + ] + ], + [ + 0.159, + [ + 0, + 0.127, + 1 + ] + ], + [ + 0.16, + [ + 0, + 0.143, + 1 + ] + ], + [ + 0.162, + [ + 0, + 0.143, + 1 + ] + ], + [ + 0.164, + [ + 0, + 0.159, + 1 + ] + ], + [ + 0.166, + [ + 0, + 0.159, + 1 + ] + ], + [ + 0.168, + [ + 0, + 0.175, + 1 + ] + ], + [ + 0.17, + [ + 0, + 0.175, + 1 + ] + ], + [ + 0.172, + [ + 0, + 0.19, + 1 + ] + ], + [ + 0.174, + [ + 0, + 0.19, + 1 + ] + ], + [ + 0.176, + [ + 0, + 0.206, + 1 + ] + ], + [ + 0.178, + [ + 0, + 0.206, + 1 + ] + ], + [ + 0.18, + [ + 0, + 0.222, + 1 + ] + ], + [ + 0.182, + [ + 0, + 0.222, + 1 + ] + ], + [ + 0.184, + [ + 0, + 0.237, + 1 + ] + ], + [ + 0.186, + [ + 0, + 0.237, + 1 + ] + ], + [ + 0.188, + [ + 0, + 0.253, + 1 + ] + ], + [ + 0.19, + [ + 0, + 0.253, + 1 + ] + ], + [ + 0.192, + [ + 0, + 0.269, + 1 + ] + ], + [ + 0.194, + [ + 0, + 0.269, + 1 + ] + ], + [ + 0.196, + [ + 0, + 0.284, + 1 + ] + ], + [ + 0.198, + [ + 0, + 0.284, + 1 + ] + ], + [ + 0.2, + [ + 0, + 0.3, + 1 + ] + ], + [ + 0.202, + [ + 0, + 0.3, + 1 + ] + ], + [ + 0.204, + [ + 0, + 0.316, + 1 + ] + ], + [ + 0.205, + [ + 0, + 0.316, + 1 + ] + ], + [ + 0.207, + [ + 0, + 0.331, + 1 + ] + ], + [ + 0.209, + [ + 0, + 0.331, + 1 + ] + ], + [ + 0.211, + [ + 0, + 0.347, + 1 + ] + ], + [ + 0.213, + [ + 0, + 0.347, + 1 + ] + ], + [ + 0.215, + [ + 0, + 0.363, + 1 + ] + ], + [ + 0.217, + [ + 0, + 0.363, + 1 + ] + ], + [ + 0.219, + [ + 0, + 0.378, + 1 + ] + ], + [ + 0.221, + [ + 0, + 0.378, + 1 + ] + ], + [ + 0.223, + [ + 0, + 0.394, + 1 + ] + ], + [ + 0.225, + [ + 0, + 0.394, + 1 + ] + ], + [ + 0.227, + [ + 0, + 0.41, + 1 + ] + ], + [ + 0.229, + [ + 0, + 0.41, + 1 + ] + ], + [ + 0.231, + [ + 0, + 0.425, + 1 + ] + ], + [ + 0.233, + [ + 0, + 0.425, + 1 + ] + ], + [ + 0.235, + [ + 0, + 0.441, + 1 + ] + ], + [ + 0.237, + [ + 0, + 0.441, + 1 + ] + ], + [ + 0.239, + [ + 0, + 0.457, + 1 + ] + ], + [ + 0.241, + [ + 0, + 0.457, + 1 + ] + ], + [ + 0.243, + [ + 0, + 0.473, + 1 + ] + ], + [ + 0.245, + [ + 0, + 0.473, + 1 + ] + ], + [ + 0.247, + [ + 0, + 0.488, + 1 + ] + ], + [ + 0.249, + [ + 0, + 0.488, + 1 + ] + ], + [ + 0.25, + [ + 0, + 0.504, + 1 + ] + ], + [ + 0.252, + [ + 0, + 0.504, + 1 + ] + ], + [ + 0.254, + [ + 0, + 0.52, + 1 + ] + ], + [ + 0.256, + [ + 0, + 0.52, + 1 + ] + ], + [ + 0.258, + [ + 0, + 0.535, + 1 + ] + ], + [ + 0.26, + [ + 0, + 0.535, + 1 + ] + ], + [ + 0.262, + [ + 0, + 0.551, + 1 + ] + ], + [ + 0.264, + [ + 0, + 0.551, + 1 + ] + ], + [ + 0.266, + [ + 0, + 0.567, + 1 + ] + ], + [ + 0.268, + [ + 0, + 0.567, + 1 + ] + ], + [ + 0.27, + [ + 0, + 0.582, + 1 + ] + ], + [ + 0.272, + [ + 0, + 0.582, + 1 + ] + ], + [ + 0.274, + [ + 0, + 0.598, + 1 + ] + ], + [ + 0.276, + [ + 0, + 0.598, + 1 + ] + ], + [ + 0.278, + [ + 0, + 0.614, + 1 + ] + ], + [ + 0.28, + [ + 0, + 0.614, + 1 + ] + ], + [ + 0.282, + [ + 0, + 0.629, + 1 + ] + ], + [ + 0.284, + [ + 0, + 0.629, + 1 + ] + ], + [ + 0.286, + [ + 0, + 0.645, + 1 + ] + ], + [ + 0.288, + [ + 0, + 0.645, + 1 + ] + ], + [ + 0.29, + [ + 0, + 0.661, + 1 + ] + ], + [ + 0.292, + [ + 0, + 0.661, + 1 + ] + ], + [ + 0.294, + [ + 0, + 0.676, + 1 + ] + ], + [ + 0.295, + [ + 0, + 0.676, + 1 + ] + ], + [ + 0.297, + [ + 0, + 0.692, + 1 + ] + ], + [ + 0.299, + [ + 0, + 0.692, + 1 + ] + ], + [ + 0.301, + [ + 0, + 0.708, + 1 + ] + ], + [ + 0.303, + [ + 0, + 0.708, + 1 + ] + ], + [ + 0.305, + [ + 0, + 0.724, + 1 + ] + ], + [ + 0.307, + [ + 0, + 0.724, + 1 + ] + ], + [ + 0.309, + [ + 0, + 0.739, + 1 + ] + ], + [ + 0.311, + [ + 0, + 0.739, + 1 + ] + ], + [ + 0.313, + [ + 0, + 0.755, + 1 + ] + ], + [ + 0.315, + [ + 0, + 0.755, + 1 + ] + ], + [ + 0.317, + [ + 0, + 0.771, + 1 + ] + ], + [ + 0.319, + [ + 0, + 0.771, + 1 + ] + ], + [ + 0.321, + [ + 0, + 0.786, + 1 + ] + ], + [ + 0.323, + [ + 0, + 0.786, + 1 + ] + ], + [ + 0.325, + [ + 0, + 0.802, + 1 + ] + ], + [ + 0.327, + [ + 0, + 0.802, + 1 + ] + ], + [ + 0.329, + [ + 0, + 0.818, + 1 + ] + ], + [ + 0.331, + [ + 0, + 0.818, + 1 + ] + ], + [ + 0.333, + [ + 0, + 0.833, + 1 + ] + ], + [ + 0.335, + [ + 0, + 0.833, + 1 + ] + ], + [ + 0.337, + [ + 0, + 0.849, + 1 + ] + ], + [ + 0.339, + [ + 0, + 0.849, + 1 + ] + ], + [ + 0.341, + [ + 0, + 0.865, + 0.996 + ] + ], + [ + 0.342, + [ + 0, + 0.865, + 0.996 + ] + ], + [ + 0.344, + [ + 0, + 0.88, + 0.984 + ] + ], + [ + 0.346, + [ + 0, + 0.88, + 0.984 + ] + ], + [ + 0.348, + [ + 0, + 0.896, + 0.971 + ] + ], + [ + 0.35, + [ + 0, + 0.896, + 0.971 + ] + ], + [ + 0.352, + [ + 0.009, + 0.912, + 0.958 + ] + ], + [ + 0.354, + [ + 0.009, + 0.912, + 0.958 + ] + ], + [ + 0.356, + [ + 0.022, + 0.927, + 0.946 + ] + ], + [ + 0.358, + [ + 0.022, + 0.927, + 0.946 + ] + ], + [ + 0.36, + [ + 0.035, + 0.943, + 0.933 + ] + ], + [ + 0.362, + [ + 0.035, + 0.943, + 0.933 + ] + ], + [ + 0.364, + [ + 0.047, + 0.959, + 0.92 + ] + ], + [ + 0.366, + [ + 0.047, + 0.959, + 0.92 + ] + ], + [ + 0.368, + [ + 0.06, + 0.975, + 0.908 + ] + ], + [ + 0.37, + [ + 0.06, + 0.975, + 0.908 + ] + ], + [ + 0.372, + [ + 0.073, + 0.99, + 0.895 + ] + ], + [ + 0.374, + [ + 0.073, + 0.99, + 0.895 + ] + ], + [ + 0.376, + [ + 0.085, + 1, + 0.882 + ] + ], + [ + 0.378, + [ + 0.085, + 1, + 0.882 + ] + ], + [ + 0.38, + [ + 0.098, + 1, + 0.87 + ] + ], + [ + 0.382, + [ + 0.098, + 1, + 0.87 + ] + ], + [ + 0.384, + [ + 0.111, + 1, + 0.857 + ] + ], + [ + 0.386, + [ + 0.111, + 1, + 0.857 + ] + ], + [ + 0.387, + [ + 0.123, + 1, + 0.844 + ] + ], + [ + 0.389, + [ + 0.123, + 1, + 0.844 + ] + ], + [ + 0.391, + [ + 0.136, + 1, + 0.832 + ] + ], + [ + 0.393, + [ + 0.136, + 1, + 0.832 + ] + ], + [ + 0.395, + [ + 0.149, + 1, + 0.819 + ] + ], + [ + 0.397, + [ + 0.149, + 1, + 0.819 + ] + ], + [ + 0.399, + [ + 0.161, + 1, + 0.806 + ] + ], + [ + 0.401, + [ + 0.161, + 1, + 0.806 + ] + ], + [ + 0.403, + [ + 0.174, + 1, + 0.794 + ] + ], + [ + 0.405, + [ + 0.174, + 1, + 0.794 + ] + ], + [ + 0.407, + [ + 0.187, + 1, + 0.781 + ] + ], + [ + 0.409, + [ + 0.187, + 1, + 0.781 + ] + ], + [ + 0.411, + [ + 0.199, + 1, + 0.769 + ] + ], + [ + 0.413, + [ + 0.199, + 1, + 0.769 + ] + ], + [ + 0.415, + [ + 0.212, + 1, + 0.756 + ] + ], + [ + 0.417, + [ + 0.212, + 1, + 0.756 + ] + ], + [ + 0.419, + [ + 0.225, + 1, + 0.743 + ] + ], + [ + 0.421, + [ + 0.225, + 1, + 0.743 + ] + ], + [ + 0.423, + [ + 0.237, + 1, + 0.731 + ] + ], + [ + 0.425, + [ + 0.237, + 1, + 0.731 + ] + ], + [ + 0.427, + [ + 0.25, + 1, + 0.718 + ] + ], + [ + 0.429, + [ + 0.25, + 1, + 0.718 + ] + ], + [ + 0.431, + [ + 0.262, + 1, + 0.705 + ] + ], + [ + 0.432, + [ + 0.262, + 1, + 0.705 + ] + ], + [ + 0.434, + [ + 0.275, + 1, + 0.693 + ] + ], + [ + 0.436, + [ + 0.275, + 1, + 0.693 + ] + ], + [ + 0.438, + [ + 0.288, + 1, + 0.68 + ] + ], + [ + 0.44, + [ + 0.288, + 1, + 0.68 + ] + ], + [ + 0.442, + [ + 0.3, + 1, + 0.667 + ] + ], + [ + 0.444, + [ + 0.3, + 1, + 0.667 + ] + ], + [ + 0.446, + [ + 0.313, + 1, + 0.655 + ] + ], + [ + 0.448, + [ + 0.313, + 1, + 0.655 + ] + ], + [ + 0.45, + [ + 0.326, + 1, + 0.642 + ] + ], + [ + 0.452, + [ + 0.326, + 1, + 0.642 + ] + ], + [ + 0.454, + [ + 0.338, + 1, + 0.629 + ] + ], + [ + 0.456, + [ + 0.338, + 1, + 0.629 + ] + ], + [ + 0.458, + [ + 0.351, + 1, + 0.617 + ] + ], + [ + 0.46, + [ + 0.351, + 1, + 0.617 + ] + ], + [ + 0.462, + [ + 0.364, + 1, + 0.604 + ] + ], + [ + 0.464, + [ + 0.364, + 1, + 0.604 + ] + ], + [ + 0.466, + [ + 0.376, + 1, + 0.591 + ] + ], + [ + 0.468, + [ + 0.376, + 1, + 0.591 + ] + ], + [ + 0.47, + [ + 0.389, + 1, + 0.579 + ] + ], + [ + 0.472, + [ + 0.389, + 1, + 0.579 + ] + ], + [ + 0.474, + [ + 0.402, + 1, + 0.566 + ] + ], + [ + 0.476, + [ + 0.402, + 1, + 0.566 + ] + ], + [ + 0.477, + [ + 0.414, + 1, + 0.553 + ] + ], + [ + 0.479, + [ + 0.414, + 1, + 0.553 + ] + ], + [ + 0.481, + [ + 0.427, + 1, + 0.541 + ] + ], + [ + 0.483, + [ + 0.427, + 1, + 0.541 + ] + ], + [ + 0.485, + [ + 0.44, + 1, + 0.528 + ] + ], + [ + 0.487, + [ + 0.44, + 1, + 0.528 + ] + ], + [ + 0.489, + [ + 0.452, + 1, + 0.515 + ] + ], + [ + 0.491, + [ + 0.452, + 1, + 0.515 + ] + ], + [ + 0.493, + [ + 0.465, + 1, + 0.503 + ] + ], + [ + 0.495, + [ + 0.465, + 1, + 0.503 + ] + ], + [ + 0.497, + [ + 0.478, + 1, + 0.49 + ] + ], + [ + 0.499, + [ + 0.478, + 1, + 0.49 + ] + ], + [ + 0.501, + [ + 0.49, + 1, + 0.478 + ] + ], + [ + 0.503, + [ + 0.49, + 1, + 0.478 + ] + ], + [ + 0.505, + [ + 0.503, + 1, + 0.465 + ] + ], + [ + 0.507, + [ + 0.503, + 1, + 0.465 + ] + ], + [ + 0.509, + [ + 0.515, + 1, + 0.452 + ] + ], + [ + 0.511, + [ + 0.515, + 1, + 0.452 + ] + ], + [ + 0.513, + [ + 0.528, + 1, + 0.44 + ] + ], + [ + 0.515, + [ + 0.528, + 1, + 0.44 + ] + ], + [ + 0.517, + [ + 0.541, + 1, + 0.427 + ] + ], + [ + 0.519, + [ + 0.541, + 1, + 0.427 + ] + ], + [ + 0.521, + [ + 0.553, + 1, + 0.414 + ] + ], + [ + 0.523, + [ + 0.553, + 1, + 0.414 + ] + ], + [ + 0.524, + [ + 0.566, + 1, + 0.402 + ] + ], + [ + 0.526, + [ + 0.566, + 1, + 0.402 + ] + ], + [ + 0.528, + [ + 0.579, + 1, + 0.389 + ] + ], + [ + 0.53, + [ + 0.579, + 1, + 0.389 + ] + ], + [ + 0.532, + [ + 0.591, + 1, + 0.376 + ] + ], + [ + 0.534, + [ + 0.591, + 1, + 0.376 + ] + ], + [ + 0.536, + [ + 0.604, + 1, + 0.364 + ] + ], + [ + 0.538, + [ + 0.604, + 1, + 0.364 + ] + ], + [ + 0.54, + [ + 0.617, + 1, + 0.351 + ] + ], + [ + 0.542, + [ + 0.617, + 1, + 0.351 + ] + ], + [ + 0.544, + [ + 0.629, + 1, + 0.338 + ] + ], + [ + 0.546, + [ + 0.629, + 1, + 0.338 + ] + ], + [ + 0.548, + [ + 0.642, + 1, + 0.326 + ] + ], + [ + 0.55, + [ + 0.642, + 1, + 0.326 + ] + ], + [ + 0.552, + [ + 0.655, + 1, + 0.313 + ] + ], + [ + 0.554, + [ + 0.655, + 1, + 0.313 + ] + ], + [ + 0.556, + [ + 0.667, + 1, + 0.3 + ] + ], + [ + 0.558, + [ + 0.667, + 1, + 0.3 + ] + ], + [ + 0.56, + [ + 0.68, + 1, + 0.288 + ] + ], + [ + 0.562, + [ + 0.68, + 1, + 0.288 + ] + ], + [ + 0.564, + [ + 0.693, + 1, + 0.275 + ] + ], + [ + 0.566, + [ + 0.693, + 1, + 0.275 + ] + ], + [ + 0.568, + [ + 0.705, + 1, + 0.262 + ] + ], + [ + 0.569, + [ + 0.705, + 1, + 0.262 + ] + ], + [ + 0.571, + [ + 0.718, + 1, + 0.25 + ] + ], + [ + 0.573, + [ + 0.718, + 1, + 0.25 + ] + ], + [ + 0.575, + [ + 0.731, + 1, + 0.237 + ] + ], + [ + 0.577, + [ + 0.731, + 1, + 0.237 + ] + ], + [ + 0.579, + [ + 0.743, + 1, + 0.225 + ] + ], + [ + 0.581, + [ + 0.743, + 1, + 0.225 + ] + ], + [ + 0.583, + [ + 0.756, + 1, + 0.212 + ] + ], + [ + 0.585, + [ + 0.756, + 1, + 0.212 + ] + ], + [ + 0.587, + [ + 0.769, + 1, + 0.199 + ] + ], + [ + 0.589, + [ + 0.769, + 1, + 0.199 + ] + ], + [ + 0.591, + [ + 0.781, + 1, + 0.187 + ] + ], + [ + 0.593, + [ + 0.781, + 1, + 0.187 + ] + ], + [ + 0.595, + [ + 0.794, + 1, + 0.174 + ] + ], + [ + 0.597, + [ + 0.794, + 1, + 0.174 + ] + ], + [ + 0.599, + [ + 0.806, + 1, + 0.161 + ] + ], + [ + 0.601, + [ + 0.806, + 1, + 0.161 + ] + ], + [ + 0.603, + [ + 0.819, + 1, + 0.149 + ] + ], + [ + 0.605, + [ + 0.819, + 1, + 0.149 + ] + ], + [ + 0.607, + [ + 0.832, + 1, + 0.136 + ] + ], + [ + 0.609, + [ + 0.832, + 1, + 0.136 + ] + ], + [ + 0.611, + [ + 0.844, + 1, + 0.123 + ] + ], + [ + 0.613, + [ + 0.844, + 1, + 0.123 + ] + ], + [ + 0.614, + [ + 0.857, + 1, + 0.111 + ] + ], + [ + 0.616, + [ + 0.857, + 1, + 0.111 + ] + ], + [ + 0.618, + [ + 0.87, + 1, + 0.098 + ] + ], + [ + 0.62, + [ + 0.87, + 1, + 0.098 + ] + ], + [ + 0.622, + [ + 0.882, + 1, + 0.085 + ] + ], + [ + 0.624, + [ + 0.882, + 1, + 0.085 + ] + ], + [ + 0.626, + [ + 0.895, + 1, + 0.073 + ] + ], + [ + 0.628, + [ + 0.895, + 1, + 0.073 + ] + ], + [ + 0.63, + [ + 0.908, + 1, + 0.06 + ] + ], + [ + 0.632, + [ + 0.908, + 1, + 0.06 + ] + ], + [ + 0.634, + [ + 0.92, + 1, + 0.047 + ] + ], + [ + 0.636, + [ + 0.92, + 1, + 0.047 + ] + ], + [ + 0.638, + [ + 0.933, + 1, + 0.035 + ] + ], + [ + 0.64, + [ + 0.933, + 1, + 0.035 + ] + ], + [ + 0.642, + [ + 0.946, + 0.988, + 0.022 + ] + ], + [ + 0.644, + [ + 0.946, + 0.988, + 0.022 + ] + ], + [ + 0.646, + [ + 0.958, + 0.974, + 0.009 + ] + ], + [ + 0.648, + [ + 0.958, + 0.974, + 0.009 + ] + ], + [ + 0.65, + [ + 0.971, + 0.959, + 0 + ] + ], + [ + 0.652, + [ + 0.971, + 0.959, + 0 + ] + ], + [ + 0.654, + [ + 0.984, + 0.945, + 0 + ] + ], + [ + 0.656, + [ + 0.984, + 0.945, + 0 + ] + ], + [ + 0.658, + [ + 0.996, + 0.93, + 0 + ] + ], + [ + 0.659, + [ + 0.996, + 0.93, + 0 + ] + ], + [ + 0.661, + [ + 1, + 0.916, + 0 + ] + ], + [ + 0.663, + [ + 1, + 0.916, + 0 + ] + ], + [ + 0.665, + [ + 1, + 0.901, + 0 + ] + ], + [ + 0.667, + [ + 1, + 0.901, + 0 + ] + ], + [ + 0.669, + [ + 1, + 0.887, + 0 + ] + ], + [ + 0.671, + [ + 1, + 0.887, + 0 + ] + ], + [ + 0.673, + [ + 1, + 0.872, + 0 + ] + ], + [ + 0.675, + [ + 1, + 0.872, + 0 + ] + ], + [ + 0.677, + [ + 1, + 0.858, + 0 + ] + ], + [ + 0.679, + [ + 1, + 0.858, + 0 + ] + ], + [ + 0.681, + [ + 1, + 0.843, + 0 + ] + ], + [ + 0.683, + [ + 1, + 0.843, + 0 + ] + ], + [ + 0.685, + [ + 1, + 0.829, + 0 + ] + ], + [ + 0.687, + [ + 1, + 0.829, + 0 + ] + ], + [ + 0.689, + [ + 1, + 0.814, + 0 + ] + ], + [ + 0.691, + [ + 1, + 0.814, + 0 + ] + ], + [ + 0.693, + [ + 1, + 0.8, + 0 + ] + ], + [ + 0.695, + [ + 1, + 0.8, + 0 + ] + ], + [ + 0.697, + [ + 1, + 0.785, + 0 + ] + ], + [ + 0.699, + [ + 1, + 0.785, + 0 + ] + ], + [ + 0.701, + [ + 1, + 0.771, + 0 + ] + ], + [ + 0.703, + [ + 1, + 0.771, + 0 + ] + ], + [ + 0.705, + [ + 1, + 0.756, + 0 + ] + ], + [ + 0.706, + [ + 1, + 0.756, + 0 + ] + ], + [ + 0.708, + [ + 1, + 0.741, + 0 + ] + ], + [ + 0.71, + [ + 1, + 0.741, + 0 + ] + ], + [ + 0.712, + [ + 1, + 0.727, + 0 + ] + ], + [ + 0.714, + [ + 1, + 0.727, + 0 + ] + ], + [ + 0.716, + [ + 1, + 0.712, + 0 + ] + ], + [ + 0.718, + [ + 1, + 0.712, + 0 + ] + ], + [ + 0.72, + [ + 1, + 0.698, + 0 + ] + ], + [ + 0.722, + [ + 1, + 0.698, + 0 + ] + ], + [ + 0.724, + [ + 1, + 0.683, + 0 + ] + ], + [ + 0.726, + [ + 1, + 0.683, + 0 + ] + ], + [ + 0.728, + [ + 1, + 0.669, + 0 + ] + ], + [ + 0.73, + [ + 1, + 0.669, + 0 + ] + ], + [ + 0.732, + [ + 1, + 0.654, + 0 + ] + ], + [ + 0.734, + [ + 1, + 0.654, + 0 + ] + ], + [ + 0.736, + [ + 1, + 0.64, + 0 + ] + ], + [ + 0.738, + [ + 1, + 0.64, + 0 + ] + ], + [ + 0.74, + [ + 1, + 0.625, + 0 + ] + ], + [ + 0.742, + [ + 1, + 0.625, + 0 + ] + ], + [ + 0.744, + [ + 1, + 0.611, + 0 + ] + ], + [ + 0.746, + [ + 1, + 0.611, + 0 + ] + ], + [ + 0.748, + [ + 1, + 0.596, + 0 + ] + ], + [ + 0.75, + [ + 1, + 0.596, + 0 + ] + ], + [ + 0.751, + [ + 1, + 0.582, + 0 + ] + ], + [ + 0.753, + [ + 1, + 0.582, + 0 + ] + ], + [ + 0.755, + [ + 1, + 0.567, + 0 + ] + ], + [ + 0.757, + [ + 1, + 0.567, + 0 + ] + ], + [ + 0.759, + [ + 1, + 0.553, + 0 + ] + ], + [ + 0.761, + [ + 1, + 0.553, + 0 + ] + ], + [ + 0.763, + [ + 1, + 0.538, + 0 + ] + ], + [ + 0.765, + [ + 1, + 0.538, + 0 + ] + ], + [ + 0.767, + [ + 1, + 0.524, + 0 + ] + ], + [ + 0.769, + [ + 1, + 0.524, + 0 + ] + ], + [ + 0.771, + [ + 1, + 0.509, + 0 + ] + ], + [ + 0.773, + [ + 1, + 0.509, + 0 + ] + ], + [ + 0.775, + [ + 1, + 0.495, + 0 + ] + ], + [ + 0.777, + [ + 1, + 0.495, + 0 + ] + ], + [ + 0.779, + [ + 1, + 0.48, + 0 + ] + ], + [ + 0.781, + [ + 1, + 0.48, + 0 + ] + ], + [ + 0.783, + [ + 1, + 0.466, + 0 + ] + ], + [ + 0.785, + [ + 1, + 0.466, + 0 + ] + ], + [ + 0.787, + [ + 1, + 0.451, + 0 + ] + ], + [ + 0.789, + [ + 1, + 0.451, + 0 + ] + ], + [ + 0.791, + [ + 1, + 0.436, + 0 + ] + ], + [ + 0.793, + [ + 1, + 0.436, + 0 + ] + ], + [ + 0.795, + [ + 1, + 0.422, + 0 + ] + ], + [ + 0.796, + [ + 1, + 0.422, + 0 + ] + ], + [ + 0.798, + [ + 1, + 0.407, + 0 + ] + ], + [ + 0.8, + [ + 1, + 0.407, + 0 + ] + ], + [ + 0.802, + [ + 1, + 0.393, + 0 + ] + ], + [ + 0.804, + [ + 1, + 0.393, + 0 + ] + ], + [ + 0.806, + [ + 1, + 0.378, + 0 + ] + ], + [ + 0.808, + [ + 1, + 0.378, + 0 + ] + ], + [ + 0.81, + [ + 1, + 0.364, + 0 + ] + ], + [ + 0.812, + [ + 1, + 0.364, + 0 + ] + ], + [ + 0.814, + [ + 1, + 0.349, + 0 + ] + ], + [ + 0.816, + [ + 1, + 0.349, + 0 + ] + ], + [ + 0.818, + [ + 1, + 0.335, + 0 + ] + ], + [ + 0.82, + [ + 1, + 0.335, + 0 + ] + ], + [ + 0.822, + [ + 1, + 0.32, + 0 + ] + ], + [ + 0.824, + [ + 1, + 0.32, + 0 + ] + ], + [ + 0.826, + [ + 1, + 0.306, + 0 + ] + ], + [ + 0.828, + [ + 1, + 0.306, + 0 + ] + ], + [ + 0.83, + [ + 1, + 0.291, + 0 + ] + ], + [ + 0.832, + [ + 1, + 0.291, + 0 + ] + ], + [ + 0.834, + [ + 1, + 0.277, + 0 + ] + ], + [ + 0.836, + [ + 1, + 0.277, + 0 + ] + ], + [ + 0.838, + [ + 1, + 0.262, + 0 + ] + ], + [ + 0.84, + [ + 1, + 0.262, + 0 + ] + ], + [ + 0.841, + [ + 1, + 0.248, + 0 + ] + ], + [ + 0.843, + [ + 1, + 0.248, + 0 + ] + ], + [ + 0.845, + [ + 1, + 0.233, + 0 + ] + ], + [ + 0.847, + [ + 1, + 0.233, + 0 + ] + ], + [ + 0.849, + [ + 1, + 0.219, + 0 + ] + ], + [ + 0.851, + [ + 1, + 0.219, + 0 + ] + ], + [ + 0.853, + [ + 1, + 0.204, + 0 + ] + ], + [ + 0.855, + [ + 1, + 0.204, + 0 + ] + ], + [ + 0.857, + [ + 1, + 0.19, + 0 + ] + ], + [ + 0.859, + [ + 1, + 0.19, + 0 + ] + ], + [ + 0.861, + [ + 1, + 0.175, + 0 + ] + ], + [ + 0.863, + [ + 1, + 0.175, + 0 + ] + ], + [ + 0.865, + [ + 1, + 0.16, + 0 + ] + ], + [ + 0.867, + [ + 1, + 0.16, + 0 + ] + ], + [ + 0.869, + [ + 1, + 0.146, + 0 + ] + ], + [ + 0.871, + [ + 1, + 0.146, + 0 + ] + ], + [ + 0.873, + [ + 1, + 0.131, + 0 + ] + ], + [ + 0.875, + [ + 1, + 0.131, + 0 + ] + ], + [ + 0.877, + [ + 1, + 0.117, + 0 + ] + ], + [ + 0.879, + [ + 1, + 0.117, + 0 + ] + ], + [ + 0.881, + [ + 1, + 0.102, + 0 + ] + ], + [ + 0.883, + [ + 1, + 0.102, + 0 + ] + ], + [ + 0.885, + [ + 1, + 0.088, + 0 + ] + ], + [ + 0.886, + [ + 1, + 0.088, + 0 + ] + ], + [ + 0.888, + [ + 0.999, + 0.073, + 0 + ] + ], + [ + 0.89, + [ + 0.999, + 0.073, + 0 + ] + ], + [ + 0.892, + [ + 0.981, + 0.059, + 0 + ] + ], + [ + 0.894, + [ + 0.981, + 0.059, + 0 + ] + ], + [ + 0.896, + [ + 0.963, + 0.044, + 0 + ] + ], + [ + 0.898, + [ + 0.963, + 0.044, + 0 + ] + ], + [ + 0.9, + [ + 0.946, + 0.03, + 0 + ] + ], + [ + 0.902, + [ + 0.946, + 0.03, + 0 + ] + ], + [ + 0.904, + [ + 0.928, + 0.015, + 0 + ] + ], + [ + 0.906, + [ + 0.928, + 0.015, + 0 + ] + ], + [ + 0.908, + [ + 0.91, + 0.001, + 0 + ] + ], + [ + 0.91, + [ + 0.91, + 0.001, + 0 + ] + ], + [ + 0.912, + [ + 0.892, + 0, + 0 + ] + ], + [ + 0.914, + [ + 0.892, + 0, + 0 + ] + ], + [ + 0.916, + [ + 0.874, + 0, + 0 + ] + ], + [ + 0.918, + [ + 0.874, + 0, + 0 + ] + ], + [ + 0.92, + [ + 0.857, + 0, + 0 + ] + ], + [ + 0.922, + [ + 0.857, + 0, + 0 + ] + ], + [ + 0.924, + [ + 0.839, + 0, + 0 + ] + ], + [ + 0.926, + [ + 0.839, + 0, + 0 + ] + ], + [ + 0.928, + [ + 0.821, + 0, + 0 + ] + ], + [ + 0.93, + [ + 0.821, + 0, + 0 + ] + ], + [ + 0.932, + [ + 0.803, + 0, + 0 + ] + ], + [ + 0.933, + [ + 0.803, + 0, + 0 + ] + ], + [ + 0.935, + [ + 0.785, + 0, + 0 + ] + ], + [ + 0.937, + [ + 0.785, + 0, + 0 + ] + ], + [ + 0.939, + [ + 0.767, + 0, + 0 + ] + ], + [ + 0.941, + [ + 0.767, + 0, + 0 + ] + ], + [ + 0.943, + [ + 0.75, + 0, + 0 + ] + ], + [ + 0.945, + [ + 0.75, + 0, + 0 + ] + ], + [ + 0.947, + [ + 0.732, + 0, + 0 + ] + ], + [ + 0.949, + [ + 0.732, + 0, + 0 + ] + ], + [ + 0.951, + [ + 0.714, + 0, + 0 + ] + ], + [ + 0.953, + [ + 0.714, + 0, + 0 + ] + ], + [ + 0.955, + [ + 0.696, + 0, + 0 + ] + ], + [ + 0.957, + [ + 0.696, + 0, + 0 + ] + ], + [ + 0.959, + [ + 0.678, + 0, + 0 + ] + ], + [ + 0.961, + [ + 0.678, + 0, + 0 + ] + ], + [ + 0.963, + [ + 0.66, + 0, + 0 + ] + ], + [ + 0.965, + [ + 0.66, + 0, + 0 + ] + ], + [ + 0.967, + [ + 0.643, + 0, + 0 + ] + ], + [ + 0.969, + [ + 0.643, + 0, + 0 + ] + ], + [ + 0.971, + [ + 0.625, + 0, + 0 + ] + ], + [ + 0.973, + [ + 0.625, + 0, + 0 + ] + ], + [ + 0.975, + [ + 0.607, + 0, + 0 + ] + ], + [ + 0.977, + [ + 0.607, + 0, + 0 + ] + ], + [ + 0.978, + [ + 0.589, + 0, + 0 + ] + ], + [ + 0.98, + [ + 0.589, + 0, + 0 + ] + ], + [ + 0.982, + [ + 0.571, + 0, + 0 + ] + ], + [ + 0.984, + [ + 0.571, + 0, + 0 + ] + ], + [ + 0.986, + [ + 0.553, + 0, + 0 + ] + ], + [ + 0.988, + [ + 0.553, + 0, + 0 + ] + ], + [ + 0.99, + [ + 0.536, + 0, + 0 + ] + ], + [ + 0.992, + [ + 0.536, + 0, + 0 + ] + ], + [ + 0.994, + [ + 0.518, + 0, + 0 + ] + ], + [ + 0.996, + [ + 0.518, + 0, + 0 + ] + ], + [ + 0.998, + [ + 0.5, + 0, + 0 + ] + ], + [ + 1, + [ + 0.5, + 0, + 0 + ] + ] + ] + ], + "colorMap": 0 + }, + "bar": false + } +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/setupChiral.json b/01_Code/physical_computing_interface/simulation/json/setupChiral.json new file mode 100644 index 0000000000000000000000000000000000000000..13fe60a57cd1bdb9e0d2829f6ba1ebb7f64f6781 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/setupChiral.json @@ -0,0 +1,35604 @@ +{ + "setup": { + "nodes": [ + { + "id": "n0", + "parent": "11", + "degrees_of_freedom": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n1", + "parent": "11", + "degrees_of_freedom": [ + 6, + 7, + 8, + 9, + 10, + 11 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n2", + "parent": "11", + "degrees_of_freedom": [ + 12, + 13, + 14, + 15, + 16, + 17 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n3", + "parent": "11", + "degrees_of_freedom": [ + 18, + 19, + 20, + 21, + 22, + 23 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n4", + "parent": "11", + "degrees_of_freedom": [ + 24, + 25, + 26, + 27, + 28, + 29 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.857142857142857, + "y": -5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n5", + "parent": "11", + "degrees_of_freedom": [ + 30, + 31, + 32, + 33, + 34, + 35 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.0203050891044216, + "y": -5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n6", + "parent": "11", + "degrees_of_freedom": [ + 36, + 37, + 38, + 39, + 40, + 41 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 3.140184917367551e-16, + "y": -5, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n7", + "parent": "11", + "degrees_of_freedom": [ + 42, + 43, + 44, + 45, + 46, + 47 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.020305089104421, + "y": -5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n8", + "parent": "11", + "degrees_of_freedom": [ + 48, + 49, + 50, + 51, + 52, + 53 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.857142857142857, + "y": -5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n9", + "parent": "11", + "degrees_of_freedom": [ + 54, + 55, + 56, + 57, + 58, + 59 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.0203050891044216, + "y": -5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n10", + "parent": "11", + "degrees_of_freedom": [ + 60, + 61, + 62, + 63, + 64, + 65 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -3.140184917367551e-16, + "y": -5, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n11", + "parent": "11", + "degrees_of_freedom": [ + 66, + 67, + 68, + 69, + 70, + 71 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.020305089104421, + "y": -5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n12", + "parent": "11", + "degrees_of_freedom": [ + 72, + 73, + 74, + 75, + 76, + 77 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.000059898406557911856, + "y": -0.000391027123848145, + "z": -0.000015153075420643555 + }, + "angle": { + "x": 0.000007220262473546354, + "y": -0.000015347824712467674, + "z": 0.000001053611385798665 + } + }, + { + "id": "n13", + "parent": "11", + "degrees_of_freedom": [ + 78, + 79, + 80, + 81, + 82, + 83 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000015396955015777776, + "y": -0.00019271802955209868, + "z": -0.0000573954781031277 + }, + "angle": { + "x": -0.000002200688256579541, + "y": 0.00000789743575166897, + "z": -0.000006255700604060678 + } + }, + { + "id": "n14", + "parent": "11", + "degrees_of_freedom": [ + 84, + 85, + 86, + 87, + 88, + 89 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000029419066470174546, + "y": -0.00019744177392180598, + "z": -0.000003543559251103906 + }, + "angle": { + "x": -6.255852039696685e-7, + "y": -0.000009464502667566315, + "z": 2.695816446157062e-7 + } + }, + { + "id": "n15", + "parent": "11", + "degrees_of_freedom": [ + 90, + 91, + 92, + 93, + 94, + 95 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -3.140184917367551e-16, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002066008655864299, + "y": -0.00019468629377461527, + "z": 0.000004342775121329138 + }, + "angle": { + "x": -0.0000027943164602629907, + "y": 2.1094049106207774e-7, + "z": -0.000007066217036168508 + } + }, + { + "id": "n16", + "parent": "11", + "degrees_of_freedom": [ + 96, + 97, + 98, + 99, + 100, + 101 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.020305089104421, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000038782468173129444, + "y": -0.00025672024965814355, + "z": -0.000015154359170859503 + }, + "angle": { + "x": -0.00003063592121654611, + "y": 0.000033399851080233323, + "z": -0.00002079478535675733 + } + }, + { + "id": "n17", + "parent": "11", + "degrees_of_freedom": [ + 102, + 103, + 104, + 105, + 106, + 107 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.857142857142857, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009773013341870516, + "y": -0.0002655635251850443, + "z": -0.000027149814079438376 + }, + "angle": { + "x": 0.0000019461671508245545, + "y": -0.000007532438681341809, + "z": -0.000008317564800932979 + } + }, + { + "id": "n18", + "parent": "11", + "degrees_of_freedom": [ + 108, + 109, + 110, + 111, + 112, + 113 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.0203050891044216, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006161991889285458, + "y": -0.00025224913685244194, + "z": -0.000040448297100047516 + }, + "angle": { + "x": 0.00003318947560927817, + "y": -0.000026835776265232503, + "z": -0.000017136850229851875 + } + }, + { + "id": "n19", + "parent": "11", + "degrees_of_freedom": [ + 114, + 115, + 116, + 117, + 118, + 119 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 3.140184917367551e-16, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004036803567253569, + "y": -0.00019544010021945552, + "z": -0.00005767815320552281 + }, + "angle": { + "x": -0.0000029829193920314574, + "y": -0.000007108661065568246, + "z": -0.000012156784137876784 + } + }, + { + "id": "n20", + "parent": "11", + "degrees_of_freedom": [ + 120, + 121, + 122, + 123, + 124, + 125 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.020305089104421, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000007218548800021375, + "y": -0.00013483517813219436, + "z": -0.000030423505635386452 + }, + "angle": { + "x": -0.000038136691836768594, + "y": 0.00010025089707628082, + "z": -0.00004811960901166816 + } + }, + { + "id": "n21", + "parent": "11", + "degrees_of_freedom": [ + 126, + 127, + 128, + 129, + 130, + 131 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.857142857142857, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005761522176510542, + "y": -0.00012457526056228012, + "z": -0.000015746307306792235 + }, + "angle": { + "x": -1.7911777549132247e-7, + "y": 6.345964620722047e-7, + "z": -0.00001090544509178891 + } + }, + { + "id": "n22", + "parent": "11", + "degrees_of_freedom": [ + 132, + 133, + 134, + 135, + 136, + 137 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.0203050891044216, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000021846549428979018, + "y": -0.00013656763090566805, + "z": -0.000005449289226997296 + }, + "angle": { + "x": 0.00002534636647984731, + "y": -0.0000676389125689819, + "z": -0.000033049282830918565 + } + }, + { + "id": "n23", + "parent": "11", + "degrees_of_freedom": [ + 138, + 139, + 140, + 141, + 142, + 143 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00005470877225765479, + "y": -0.0005110618285616917, + "z": -0.00015184955465188525 + }, + "angle": { + "x": -0.00009560115671417047, + "y": -0.000020316930282421632, + "z": 0.000008153713054069554 + } + }, + { + "id": "n24", + "parent": "11", + "degrees_of_freedom": [ + 144, + 145, + 146, + 147, + 148, + 149 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00011392005601886269, + "y": -0.0004235478418375806, + "z": -0.00007612744087966275 + }, + "angle": { + "x": 0.000015353784040501597, + "y": -0.000024830092502073588, + "z": -0.00005665060997915037 + } + }, + { + "id": "n25", + "parent": "11", + "degrees_of_freedom": [ + 150, + 151, + 152, + 153, + 154, + 155 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.000003900826604686323, + "y": -0.00041275385930274286, + "z": -0.00006938732556360601 + }, + "angle": { + "x": 0.000003644908498134315, + "y": -0.000020088325337294473, + "z": -5.767853951370377e-7 + } + }, + { + "id": "n26", + "parent": "11", + "degrees_of_freedom": [ + 156, + 157, + 158, + 159, + 160, + 161 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000056506065504250235, + "y": -0.00022705731753515466, + "z": -0.00003976611083651209 + }, + "angle": { + "x": -0.00008930895103031532, + "y": -0.000018454490857495034, + "z": 0.00006680874670843668 + } + }, + { + "id": "n27", + "parent": "11", + "degrees_of_freedom": [ + 162, + 163, + 164, + 165, + 166, + 167 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003675510875837203, + "y": -0.0004316904276353659, + "z": -0.00004646108966973091 + }, + "angle": { + "x": -0.00022667089215278106, + "y": -0.000013762553415408675, + "z": 0.0001171061136052286 + } + }, + { + "id": "n28", + "parent": "11", + "degrees_of_freedom": [ + 168, + 169, + 170, + 171, + 172, + 173 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 5, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000024832842503977714, + "y": -0.0005219200367787076, + "z": -0.00007060500515092472 + }, + "angle": { + "x": 0.00015577197928221798, + "y": -0.000014852472227954033, + "z": -0.000016375337928296384 + } + }, + { + "id": "n29", + "parent": "11", + "degrees_of_freedom": [ + 174, + 175, + 176, + 177, + 178, + 179 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000036916124683959965, + "y": -0.0003514377398984208, + "z": -0.00010083812874062985 + }, + "angle": { + "x": -0.0005406612081528178, + "y": -0.000020176243463088768, + "z": -0.0002643343367233036 + } + }, + { + "id": "n30", + "parent": "11", + "degrees_of_freedom": [ + 180, + 181, + 182, + 183, + 184, + 185 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005748428006353427, + "y": 0.00007334409105939427, + "z": -0.00011156063937336897 + }, + "angle": { + "x": -0.00008221435201761137, + "y": -0.00001986167990637684, + "z": -0.00010398152067063441 + } + }, + { + "id": "n31", + "parent": "11", + "degrees_of_freedom": [ + 186, + 187, + 188, + 189, + 190, + 191 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008062355591680169, + "y": -0.0006902342265197174, + "z": -0.00010516450603185159 + }, + "angle": { + "x": 0.0008213392088441927, + "y": -0.000017143590577379628, + "z": -0.00042516848786995425 + } + }, + { + "id": "n32", + "parent": "11", + "degrees_of_freedom": [ + 192, + 193, + 194, + 195, + 196, + 197 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 5, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009172451909361478, + "y": -0.0010119862901659662, + "z": -0.00007666365511925548 + }, + "angle": { + "x": -0.000327294815928635, + "y": -0.00001574072954790928, + "z": -0.000020797447675717193 + } + }, + { + "id": "n33", + "parent": "11", + "degrees_of_freedom": [ + 198, + 199, + 200, + 201, + 202, + 203 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007787533711060164, + "y": -0.0007859526368523306, + "z": -0.00004796461291129536 + }, + "angle": { + "x": 0.0013476204257438116, + "y": -0.00001792981417342392, + "z": 0.000573107327590638 + } + }, + { + "id": "n34", + "parent": "11", + "degrees_of_freedom": [ + 204, + 205, + 206, + 207, + 208, + 209 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001408161514605684, + "y": -0.0001981329814576853, + "z": -0.00001607765758388789 + }, + "angle": { + "x": -0.000025292587256381955, + "y": 0.00004930576586404225, + "z": -0.000001822159725193936 + } + }, + { + "id": "n35", + "parent": "11", + "degrees_of_freedom": [ + 210, + 211, + 212, + 213, + 214, + 215 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006721476300157365, + "y": -0.00021013504870673097, + "z": -0.000014103438701465248 + }, + "angle": { + "x": -0.000024009641315338528, + "y": 0.000011709144686858947, + "z": 0.0000010436061973047546 + } + }, + { + "id": "n36", + "parent": "11", + "degrees_of_freedom": [ + 216, + 217, + 218, + 219, + 220, + 221 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 3.140184917367551e-16, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000999087059271086, + "y": -0.0001301661165439214, + "z": -0.000028190719145555967 + }, + "angle": { + "x": -0.0000022325349296467353, + "y": -0.00003303647596460616, + "z": -0.000030530590883450236 + } + }, + { + "id": "n37", + "parent": "11", + "degrees_of_freedom": [ + 222, + 223, + 224, + 225, + 226, + 227 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.0203050891044216, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001445265422855739, + "y": -0.00016079322554297398, + "z": -0.000023810863406322967 + }, + "angle": { + "x": 0.00001334680312079104, + "y": 0.00005295211630295085, + "z": -1.291551438004117e-7 + } + }, + { + "id": "n38", + "parent": "11", + "degrees_of_freedom": [ + 228, + 229, + 230, + 231, + 232, + 233 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.857142857142857, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000252244560307871, + "y": -0.00025509420303219786, + "z": -0.000015017240786339073 + }, + "angle": { + "x": 0.00006293430769428995, + "y": -0.000023610593624418064, + "z": -0.00002719830723702538 + } + }, + { + "id": "n39", + "parent": "11", + "degrees_of_freedom": [ + 234, + 235, + 236, + 237, + 238, + 239 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.020305089104421, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000049124797378054046, + "y": -0.00032310586817261124, + "z": -0.000013133602120594366 + }, + "angle": { + "x": -0.000034587147967512415, + "y": 0.00030884206048571375, + "z": -0.0001447381999096257 + } + }, + { + "id": "n40", + "parent": "11", + "degrees_of_freedom": [ + 240, + 241, + 242, + 243, + 244, + 245 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -3.140184917367551e-16, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003501057347625736, + "y": -0.0002827681939355698, + "z": 0.00000839287189093833 + }, + "angle": { + "x": 1.248969098201708e-7, + "y": -0.000014185145302106509, + "z": -0.0000305309658058059 + } + }, + { + "id": "n41", + "parent": "11", + "degrees_of_freedom": [ + 246, + 247, + 248, + 249, + 250, + 251 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.0203050891044216, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009540459390414842, + "y": -0.0002520570295193406, + "z": -0.000005000979746826374 + }, + "angle": { + "x": 0.000016957316449520875, + "y": -0.00019039327583076938, + "z": -0.00009282979816938135 + } + }, + { + "id": "n42", + "parent": "11", + "degrees_of_freedom": [ + 252, + 253, + 254, + 255, + 256, + 257 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.857142857142857, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00024120755293769147, + "y": -0.00016687556945023098, + "z": -0.000017408820198277897 + }, + "angle": { + "x": 0.00006166215362726874, + "y": -0.000023611197460926477, + "z": -0.00003386328863139856 + } + }, + { + "id": "n43", + "parent": "11", + "degrees_of_freedom": [ + 258, + 259, + 260, + 261, + 262, + 263 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.020305089104421, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -1.536351563128545e-9, + "y": -0.0000965024752908813, + "z": -0.000016137011829249523 + }, + "angle": { + "x": -0.000017405929584404447, + "y": 0.0003804999601150983, + "z": -0.0001767379856233747 + } + }, + { + "id": "n44", + "parent": "11", + "degrees_of_freedom": [ + 264, + 265, + 266, + 267, + 268, + 269 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": -2.857142857142857, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00001787452169186021, + "y": -0.000133419364252071, + "z": -0.00021833379937208377 + }, + "angle": { + "x": 0.0001940480454260564, + "y": -0.000027692202283683732, + "z": 0.000025235049141897557 + } + }, + { + "id": "n45", + "parent": "11", + "degrees_of_freedom": [ + 270, + 271, + 272, + 273, + 274, + 275 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": -2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000017413157147243105, + "y": -0.000107694676265953, + "z": -4.0699365814137244e-10 + }, + "angle": { + "x": -0.00010188898632450533, + "y": -0.0001502732454033263, + "z": -0.00001009229907381433 + } + }, + { + "id": "n46", + "parent": "11", + "degrees_of_freedom": [ + 276, + 277, + 278, + 279, + 280, + 281 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000018135741584689454, + "y": -0.0001446683428401156, + "z": -0.00008009287012551882 + }, + "angle": { + "x": -0.000009481157515447215, + "y": 0.00007281888487786603, + "z": 0.0000020270776459753887 + } + }, + { + "id": "n47", + "parent": "11", + "degrees_of_freedom": [ + 282, + 283, + 284, + 285, + 286, + 287 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000008218319402389096, + "y": -0.00018622983309136195, + "z": -0.00003831009490833876 + }, + "angle": { + "x": 0.000025068887360418612, + "y": -0.000010592277250440848, + "z": 0.000016046703873450826 + } + }, + { + "id": "n48", + "parent": "11", + "degrees_of_freedom": [ + 288, + 289, + 290, + 291, + 292, + 293 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 2.857142857142857, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000012697743305902074, + "y": -0.00023919581414626366, + "z": -0.00003873117065182704 + }, + "angle": { + "x": 0.00007939862684980492, + "y": -0.00003309641613360707, + "z": 0.000023915798446621405 + } + }, + { + "id": "n49", + "parent": "11", + "degrees_of_freedom": [ + 294, + 295, + 296, + 297, + 298, + 299 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000002457263550464255, + "y": -0.00025620649870725435, + "z": -0.00017203981262401154 + }, + "angle": { + "x": -0.00001745213003729577, + "y": -0.00007321331669760623, + "z": -0.000018659311329044456 + } + }, + { + "id": "n50", + "parent": "11", + "degrees_of_freedom": [ + 300, + 301, + 302, + 303, + 304, + 305 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000012683883927477785, + "y": -0.0002222156769741176, + "z": -0.00019804867166821634 + }, + "angle": { + "x": -0.000014885460631594014, + "y": -0.00006701650082862809, + "z": 0.0000016368797885048612 + } + }, + { + "id": "n51", + "parent": "11", + "degrees_of_freedom": [ + 306, + 307, + 308, + 309, + 310, + 311 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": -2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000002439784640330593, + "y": -0.00018752866894344993, + "z": -0.00011189362710745992 + }, + "angle": { + "x": -0.00007781911812507893, + "y": 0.00008491905313657556, + "z": 0.000018684112781511854 + } + }, + { + "id": "n52", + "parent": "11", + "degrees_of_freedom": [ + 312, + 313, + 314, + 315, + 316, + 317 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 2.857142857142857, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000019051817479384825, + "y": -0.0002935725984942396, + "z": -0.00009827173719010323 + }, + "angle": { + "x": -0.00004387388968889892, + "y": -0.000007153114264216093, + "z": 0.0000015846427797250713 + } + }, + { + "id": "n53", + "parent": "11", + "degrees_of_freedom": [ + 318, + 319, + 320, + 321, + 322, + 323 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003829461665566739, + "y": -0.000269209682827896, + "z": -0.00007488535700590194 + }, + "angle": { + "x": -0.0000017885328241156926, + "y": 0.000011946074717149477, + "z": -0.000028806383556629496 + } + }, + { + "id": "n54", + "parent": "11", + "degrees_of_freedom": [ + 324, + 325, + 326, + 327, + 328, + 329 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005497356168028573, + "y": -0.00020772367506002675, + "z": -0.000058129045795470726 + }, + "angle": { + "x": -0.00001490353272005128, + "y": -0.000014077248030807277, + "z": 7.956227820859201e-7 + } + }, + { + "id": "n55", + "parent": "11", + "degrees_of_freedom": [ + 330, + 331, + 332, + 333, + 334, + 335 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": -2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003510534821601749, + "y": -0.00014493644162043355, + "z": -0.000017811978027582925 + }, + "angle": { + "x": -0.00002842533906819928, + "y": 0.00002420634132698327, + "z": 0.0000303493126450167 + } + }, + { + "id": "n56", + "parent": "11", + "degrees_of_freedom": [ + 336, + 337, + 338, + 339, + 340, + 341 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": -2.857142857142857, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000014163367814402758, + "y": -0.00011674027292886814, + "z": -0.00004254566784488322 + }, + "angle": { + "x": 0.00002821237761369414, + "y": 4.6178587392371364e-7, + "z": 6.273135992809647e-7 + } + }, + { + "id": "n57", + "parent": "11", + "degrees_of_freedom": [ + 342, + 343, + 344, + 345, + 346, + 347 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": -2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000021411635923864274, + "y": -0.00013938735503503846, + "z": -0.000020060972670720664 + }, + "angle": { + "x": -0.00002508329047495292, + "y": -0.000021329576695636322, + "z": -0.00002339064966122834 + } + }, + { + "id": "n58", + "parent": "11", + "degrees_of_freedom": [ + 348, + 349, + 350, + 351, + 352, + 353 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000131605384001976, + "y": -0.0002017647146246494, + "z": -0.00005326245982448126 + }, + "angle": { + "x": -0.0000070636504817230824, + "y": 0.00002284581799130111, + "z": 5.825720770370801e-7 + } + }, + { + "id": "n59", + "parent": "11", + "degrees_of_freedom": [ + 354, + 355, + 356, + 357, + 358, + 359 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -9.482394412418301e-7, + "y": -0.0002659924121577039, + "z": -0.000048227443814287795 + }, + "angle": { + "x": 0.00001506213110933848, + "y": -0.000029898368087242636, + "z": 0.00002594748988870567 + } + }, + { + "id": "n60", + "parent": "11", + "degrees_of_freedom": [ + 360, + 361, + 362, + 363, + 364, + 365 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n61", + "parent": "11", + "degrees_of_freedom": [ + 366, + 367, + 368, + 369, + 370, + 371 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n62", + "parent": "11", + "degrees_of_freedom": [ + 372, + 373, + 374, + 375, + 376, + 377 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n63", + "parent": "11", + "degrees_of_freedom": [ + 378, + 379, + 380, + 381, + 382, + 383 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.857142857142857, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n64", + "parent": "11", + "degrees_of_freedom": [ + 384, + 385, + 386, + 387, + 388, + 389 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.0203050891044216, + "y": -5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n65", + "parent": "11", + "degrees_of_freedom": [ + 390, + 391, + 392, + 393, + 394, + 395 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 3.140184917367551e-16, + "y": -5, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n66", + "parent": "11", + "degrees_of_freedom": [ + 396, + 397, + 398, + 399, + 400, + 401 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.020305089104421, + "y": -5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n67", + "parent": "11", + "degrees_of_freedom": [ + 402, + 403, + 404, + 405, + 406, + 407 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.857142857142857, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n68", + "parent": "11", + "degrees_of_freedom": [ + 408, + 409, + 410, + 411, + 412, + 413 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.0203050891044216, + "y": -5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n69", + "parent": "11", + "degrees_of_freedom": [ + 414, + 415, + 416, + 417, + 418, + 419 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -3.140184917367551e-16, + "y": -5, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n70", + "parent": "11", + "degrees_of_freedom": [ + 420, + 421, + 422, + 423, + 424, + 425 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.020305089104421, + "y": -5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n71", + "parent": "11", + "degrees_of_freedom": [ + 426, + 427, + 428, + 429, + 430, + 431 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.000041888953150036196, + "y": -0.0003937858966274513, + "z": 0.000006454579138491498 + }, + "angle": { + "x": 7.023027096737599e-7, + "y": -0.000015665612784548036, + "z": -0.000007297412609954264 + } + }, + { + "id": "n72", + "parent": "11", + "degrees_of_freedom": [ + 432, + 433, + 434, + 435, + 436, + 437 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001790996827966095, + "y": -0.0001931321724776177, + "z": 0.000049406287605436944 + }, + "angle": { + "x": -5.859426631351882e-7, + "y": 0.000007541820025743457, + "z": 0.000006907660357131902 + } + }, + { + "id": "n73", + "parent": "11", + "degrees_of_freedom": [ + 438, + 439, + 440, + 441, + 442, + 443 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -3.140184917367551e-16, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000057096117425138945, + "y": -0.0001965353455966906, + "z": 0.00004951272287279319 + }, + "angle": { + "x": 5.563383751840487e-7, + "y": -0.0000274670367400324, + "z": 0.000011999931311861532 + } + }, + { + "id": "n74", + "parent": "11", + "degrees_of_freedom": [ + 444, + 445, + 446, + 447, + 448, + 449 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.020305089104421, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000060909843576299996, + "y": -0.00025602998815816815, + "z": 0.00002824926555104169 + }, + "angle": { + "x": -0.0000353788894895163, + "y": 0.00002282566042424205, + "z": -0.00000781406900680884 + } + }, + { + "id": "n75", + "parent": "11", + "degrees_of_freedom": [ + 450, + 451, + 452, + 453, + 454, + 455 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000546285162008985, + "y": -0.00026742298973015305, + "z": 0.000014572333405265307 + }, + "angle": { + "x": -4.875291770135684e-7, + "y": -0.000008407066783982774, + "z": 0.0000011954875637629108 + } + }, + { + "id": "n76", + "parent": "11", + "degrees_of_freedom": [ + 456, + 457, + 458, + 459, + 460, + 461 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.0203050891044216, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003468447536299736, + "y": -0.00025610966222664854, + "z": 0.0000032891167840880252 + }, + "angle": { + "x": 0.000028646715106452884, + "y": -0.000021139709529022154, + "z": -0.000005339063774203893 + } + }, + { + "id": "n77", + "parent": "11", + "degrees_of_freedom": [ + 462, + 463, + 464, + 465, + 466, + 467 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 3.140184917367551e-16, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000328389669060694, + "y": -0.00019592855156026052, + "z": -0.00001235229187185714 + }, + "angle": { + "x": 4.931218113989894e-7, + "y": 0.000018976951589199937, + "z": 0.000006811446413483327 + } + }, + { + "id": "n78", + "parent": "11", + "degrees_of_freedom": [ + 468, + 469, + 470, + 471, + 472, + 473 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.020305089104421, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 7.678272678400584e-7, + "y": -0.00013670349698358336, + "z": 0.0000013447277212385385 + }, + "angle": { + "x": -0.000027230002835699274, + "y": -0.00013438837715393646, + "z": 0.00006306717604239232 + } + }, + { + "id": "n79", + "parent": "11", + "degrees_of_freedom": [ + 474, + 475, + 476, + 477, + 478, + 479 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009739068843526636, + "y": -0.00012532174631141115, + "z": 0.000012235405036668456 + }, + "angle": { + "x": 4.5386870864929316e-7, + "y": -8.285720077952963e-8, + "z": 0.000017615938337693438 + } + }, + { + "id": "n80", + "parent": "11", + "degrees_of_freedom": [ + 480, + 481, + 482, + 483, + 484, + 485 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.0203050891044216, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000007311450680444691, + "y": -0.00013628348795323883, + "z": 0.000026336515893739983 + }, + "angle": { + "x": 0.00003639136187104933, + "y": 0.00016252060395285944, + "z": 0.00007713789295627373 + } + }, + { + "id": "n81", + "parent": "11", + "degrees_of_freedom": [ + 486, + 487, + 488, + 489, + 490, + 491 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00004530823103614727, + "y": -0.0004717723927088308, + "z": -0.0001263455875567803 + }, + "angle": { + "x": -0.0000659799051349329, + "y": -0.000013729984026676014, + "z": -0.000004166285226303705 + } + }, + { + "id": "n82", + "parent": "11", + "degrees_of_freedom": [ + 492, + 493, + 494, + 495, + 496, + 497 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00009135856470380739, + "y": -0.00041497451652339803, + "z": -0.00006481257007712635 + }, + "angle": { + "x": 0.000018438051530534558, + "y": -0.00002135522947703138, + "z": 0.00003707130463703248 + } + }, + { + "id": "n83", + "parent": "11", + "degrees_of_freedom": [ + 498, + 499, + 500, + 501, + 502, + 503 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000044516647418271695, + "y": 0.000006565004153140144, + "z": -0.00002917932055932137 + }, + "angle": { + "x": -0.00002769445168102423, + "y": -0.00001645504360926007, + "z": 0.00005894255654908446 + } + }, + { + "id": "n84", + "parent": "11", + "degrees_of_freedom": [ + 504, + 505, + 506, + 507, + 508, + 509 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006442023045505616, + "y": -0.00032199266140273754, + "z": -0.00003483674893958115 + }, + "angle": { + "x": -0.0007489438726248109, + "y": -0.000016388985599486373, + "z": 0.000326603723182326 + } + }, + { + "id": "n85", + "parent": "11", + "degrees_of_freedom": [ + 510, + 511, + 512, + 513, + 514, + 515 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 5, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007515782870350236, + "y": -0.00046874351899643506, + "z": -0.00006291720594814734 + }, + "angle": { + "x": 0.00007355623632447931, + "y": -0.00001570485360710262, + "z": 0.00003608846897520695 + } + }, + { + "id": "n86", + "parent": "11", + "degrees_of_freedom": [ + 516, + 517, + 518, + 519, + 520, + 521 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006178299600918738, + "y": -0.0004923849914644925, + "z": -0.00009122382077326824 + }, + "angle": { + "x": 0.00005365665688455305, + "y": -0.000017181145100192715, + "z": 0.00002877034543356817 + } + }, + { + "id": "n87", + "parent": "11", + "degrees_of_freedom": [ + 522, + 523, + 524, + 525, + 526, + 527 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004521286427527726, + "y": -0.0005708871149070318, + "z": -0.00009967250986214979 + }, + "angle": { + "x": -0.00002653863920069687, + "y": -0.000016123238259553534, + "z": 0.000012513457487634415 + } + }, + { + "id": "n88", + "parent": "11", + "degrees_of_freedom": [ + 528, + 529, + 530, + 531, + 532, + 533 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000027062661558422043, + "y": -0.0005817255808264213, + "z": -0.0000937825323281175 + }, + "angle": { + "x": -0.0001496033093135349, + "y": -0.000013813362457929857, + "z": 0.000048976815607311574 + } + }, + { + "id": "n89", + "parent": "11", + "degrees_of_freedom": [ + 534, + 535, + 536, + 537, + 538, + 539 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 5, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000017482228652634546, + "y": -0.0005894337191284379, + "z": -0.00006840758750698651 + }, + "angle": { + "x": -0.00011209970428994417, + "y": -0.000015127253516743791, + "z": 0.000036706316043690395 + } + }, + { + "id": "n90", + "parent": "11", + "degrees_of_freedom": [ + 540, + 541, + 542, + 543, + 544, + 545 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000030955701198272736, + "y": -0.00040952321774517087, + "z": -0.000039619359925467083 + }, + "angle": { + "x": 0.0006621816237562079, + "y": -0.00001820912098314979, + "z": 0.0003094671898452765 + } + }, + { + "id": "n91", + "parent": "11", + "degrees_of_freedom": [ + 546, + 547, + 548, + 549, + 550, + 551 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002874998852930185, + "y": -0.000192363379805602, + "z": -0.000015753090634445966 + }, + "angle": { + "x": -0.00003528569827241072, + "y": 0.000026481090407162513, + "z": 0.00000865487558450753 + } + }, + { + "id": "n92", + "parent": "11", + "degrees_of_freedom": [ + 552, + 553, + 554, + 555, + 556, + 557 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 3.140184917367551e-16, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000008012605345959598, + "y": -0.0001331670105434639, + "z": -0.000025811531107808395 + }, + "angle": { + "x": -0.0000036467147715484895, + "y": -0.000032889719726019386, + "z": 0.000008243658285244537 + } + }, + { + "id": "n93", + "parent": "11", + "degrees_of_freedom": [ + 558, + 559, + 560, + 561, + 562, + 563 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.0203050891044216, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003902308537525189, + "y": -0.00016261264953066777, + "z": -0.00002643788249161135 + }, + "angle": { + "x": 0.000008976792788852573, + "y": 0.00021874151050290316, + "z": 0.00009720889102730384 + } + }, + { + "id": "n94", + "parent": "11", + "degrees_of_freedom": [ + 564, + 565, + 566, + 567, + 568, + 569 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015257848766762425, + "y": -0.0002494681809966249, + "z": -0.000019960519746562478 + }, + "angle": { + "x": 0.000057815573916579714, + "y": -0.000012904686546246439, + "z": 0.00001530975058066492 + } + }, + { + "id": "n95", + "parent": "11", + "degrees_of_freedom": [ + 570, + 571, + 572, + 573, + 574, + 575 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.020305089104421, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009116532492434176, + "y": -0.0003123186477165418, + "z": -0.000018648816339925235 + }, + "angle": { + "x": -0.000031973897473022474, + "y": -0.00019191185906996633, + "z": 0.00007859851044486922 + } + }, + { + "id": "n96", + "parent": "11", + "degrees_of_freedom": [ + 576, + 577, + 578, + 579, + 580, + 581 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -3.140184917367551e-16, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006572654443139482, + "y": -0.00027315804843721487, + "z": 0.000004583014690458466 + }, + "angle": { + "x": -0.0000030701763472911563, + "y": 0.000007081112776494885, + "z": 0.00000824408050149028 + } + }, + { + "id": "n97", + "parent": "11", + "degrees_of_freedom": [ + 582, + 583, + 584, + 585, + 586, + 587 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.0203050891044216, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005213926461266223, + "y": -0.0002455403752685917, + "z": -0.0000016569992145463673 + }, + "angle": { + "x": 0.000012963009019191304, + "y": 0.00008461233308408151, + "z": 0.0000356552813253426 + } + }, + { + "id": "n98", + "parent": "11", + "degrees_of_freedom": [ + 588, + 589, + 590, + 591, + 592, + 593 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000019338021853538913, + "y": -0.00016602928704297152, + "z": -0.000013142836390787687 + }, + "angle": { + "x": 0.000058299356283232116, + "y": -0.000012904078876858462, + "z": 0.0000011778973373638982 + } + }, + { + "id": "n99", + "parent": "11", + "degrees_of_freedom": [ + 594, + 595, + 596, + 597, + 598, + 599 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.020305089104421, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 1.5339067468418874e-9, + "y": -0.00009778666397320476, + "z": -0.00001305121069910418 + }, + "angle": { + "x": -0.00001738384602205905, + "y": 0.00003050354862634348, + "z": -0.000014169131961952571 + } + }, + { + "id": "n100", + "parent": "11", + "degrees_of_freedom": [ + 600, + 601, + 602, + 603, + 604, + 605 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 2.857142857142857, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000009658596774520654, + "y": -0.0002426197289989606, + "z": -0.00022050713013779466 + }, + "angle": { + "x": -0.00011857880151920195, + "y": -0.000022109977089262535, + "z": -0.000026244696710547867 + } + }, + { + "id": "n101", + "parent": "11", + "degrees_of_freedom": [ + 606, + 607, + 608, + 609, + 610, + 611 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000021010238286793817, + "y": -0.00018659068683235142, + "z": -0.0001659447067583715 + }, + "angle": { + "x": -0.00008869037436530858, + "y": -0.000009729633612483503, + "z": -0.000016948812561945227 + } + }, + { + "id": "n102", + "parent": "11", + "degrees_of_freedom": [ + 612, + 613, + 614, + 615, + 616, + 617 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003114000206425767, + "y": -0.0001465132532957579, + "z": 0.0000050947839853823775 + }, + "angle": { + "x": -0.00004106912495179357, + "y": 0.0001052382056267413, + "z": -0.0000012609859078346342 + } + }, + { + "id": "n103", + "parent": "11", + "degrees_of_freedom": [ + 618, + 619, + 620, + 621, + 622, + 623 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": -2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002780449729119764, + "y": -0.00011056848787642374, + "z": -3.759241901224261e-10 + }, + "angle": { + "x": 0.000006482198687836239, + "y": -0.000009560772053973282, + "z": 0.000011211639958249183 + } + }, + { + "id": "n104", + "parent": "11", + "degrees_of_freedom": [ + 624, + 625, + 626, + 627, + 628, + 629 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": -2.857142857142857, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003181120778132086, + "y": -0.00013706140666194263, + "z": 0.000013890783940009217 + }, + "angle": { + "x": 0.000027054082712926378, + "y": -0.000018081949821733064, + "z": -0.00002673179860151956 + } + }, + { + "id": "n105", + "parent": "11", + "degrees_of_freedom": [ + 630, + 631, + 632, + 633, + 634, + 635 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": -2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000020839092180685057, + "y": -0.0001935746965245061, + "z": 0.00007306173184643325 + }, + "angle": { + "x": -0.0001411124640568823, + "y": -0.00008773882196498659, + "z": -0.00001735554960897756 + } + }, + { + "id": "n106", + "parent": "11", + "degrees_of_freedom": [ + 636, + 637, + 638, + 639, + 640, + 641 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000006597544297628024, + "y": -0.00023136441553681377, + "z": -0.00013860545996639674 + }, + "angle": { + "x": -0.00003704117536100855, + "y": 0.00016351167357323736, + "z": -0.000002883082102033126 + } + }, + { + "id": "n107", + "parent": "11", + "degrees_of_freedom": [ + 642, + 643, + 644, + 645, + 646, + 647 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010742166952731331, + "y": -0.00026617647999856273, + "z": -0.00007660707494852111 + }, + "angle": { + "x": 0.00007265678839394203, + "y": -0.0001013222407179977, + "z": 0.000014527139731393673 + } + }, + { + "id": "n108", + "parent": "11", + "degrees_of_freedom": [ + 648, + 649, + 650, + 651, + 652, + 653 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000056214939641000026, + "y": -0.0004117891997981377, + "z": -0.00003868507687754483 + }, + "angle": { + "x": 0.000021341364853021186, + "y": -0.00002116465688855438, + "z": -0.0000010236469487945943 + } + }, + { + "id": "n109", + "parent": "11", + "degrees_of_freedom": [ + 654, + 655, + 656, + 657, + 658, + 659 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007861072475727725, + "y": -0.00035952280832847667, + "z": -0.00004653104565066121 + }, + "angle": { + "x": -0.000005293053907991158, + "y": -0.000014341074745261052, + "z": -0.000012173313400915857 + } + }, + { + "id": "n110", + "parent": "11", + "degrees_of_freedom": [ + 660, + 661, + 662, + 663, + 664, + 665 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 5, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008921049867844033, + "y": -0.0003324041628204604, + "z": -0.00007371045411449488 + }, + "angle": { + "x": -0.00009119680988762994, + "y": -0.000016588202524996276, + "z": -0.00004427790125557612 + } + }, + { + "id": "n111", + "parent": "11", + "degrees_of_freedom": [ + 666, + 667, + 668, + 669, + 670, + 671 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007495807947047893, + "y": -0.0001526515717069853, + "z": -0.00010555091173638306 + }, + "angle": { + "x": 0.00032635056849652003, + "y": -0.00001999353494423616, + "z": -0.00019017025000857483 + } + }, + { + "id": "n112", + "parent": "11", + "degrees_of_freedom": [ + 672, + 673, + 674, + 675, + 676, + 677 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005193284266353594, + "y": 0.0002681060879414745, + "z": -0.00011525574200260177 + }, + "angle": { + "x": 0.00002843755511068993, + "y": -0.000020934228418179007, + "z": -0.00008310912534995385 + } + }, + { + "id": "n113", + "parent": "11", + "degrees_of_freedom": [ + 678, + 679, + 680, + 681, + 682, + 683 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000028585778779611557, + "y": -0.0002609547163399867, + "z": -0.00010752283417090122 + }, + "angle": { + "x": -0.001364777024439512, + "y": -0.000017557654262703366, + "z": -0.0005739518012887983 + } + }, + { + "id": "n114", + "parent": "11", + "degrees_of_freedom": [ + 684, + 685, + 686, + 687, + 688, + 689 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 5, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00001678932444877807, + "y": -0.0004746293900721016, + "z": -0.00007717782533394113 + }, + "angle": { + "x": 0.00014097539432206764, + "y": -0.00001704362958271156, + "z": -0.000039854798158955597 + } + }, + { + "id": "n115", + "parent": "11", + "degrees_of_freedom": [ + 690, + 691, + 692, + 693, + 694, + 695 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003080682958827115, + "y": -0.00045235675810681176, + "z": -0.000046638346713187806 + }, + "angle": { + "x": -0.00016291282826449128, + "y": -0.00001822899563006287, + "z": 0.0000658530179735649 + } + }, + { + "id": "n116", + "parent": "11", + "degrees_of_freedom": [ + 696, + 697, + 698, + 699, + 700, + 701 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.0001501800739084125, + "y": -0.0005940684990207142, + "z": 0.0000012315366084320446 + }, + "angle": { + "x": 0.000008145611011996684, + "y": -0.000052718668374195635, + "z": -0.000008923948170751492 + } + }, + { + "id": "n117", + "parent": "11", + "degrees_of_freedom": [ + 702, + 703, + 704, + 705, + 706, + 707 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019315372792571913, + "y": -0.0005190079454861018, + "z": -0.00003274350642684139 + }, + "angle": { + "x": -0.000008813527272909291, + "y": -0.000015210482775090255, + "z": -1.016127940682241e-7 + } + }, + { + "id": "n118", + "parent": "11", + "degrees_of_freedom": [ + 708, + 709, + 710, + 711, + 712, + 713 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000006944841511497601, + "y": -0.0004990383998465804, + "z": -0.000007621660378023334 + }, + "angle": { + "x": -0.0000015996041909523037, + "y": -0.000004745526955376863, + "z": 9.792077277939147e-7 + } + }, + { + "id": "n119", + "parent": "11", + "degrees_of_freedom": [ + 714, + 715, + 716, + 717, + 718, + 719 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002408236887991194, + "y": -0.0004989668662587463, + "z": -0.0000020360550275280525 + }, + "angle": { + "x": -9.876436634011027e-7, + "y": -0.0000201420884610524, + "z": -0.000005534213323582003 + } + }, + { + "id": "n120", + "parent": "11", + "degrees_of_freedom": [ + 720, + 721, + 722, + 723, + 724, + 725 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.020305089104422, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005633250462086478, + "y": -0.0005297444032158876, + "z": -0.000009926713644158998 + }, + "angle": { + "x": -0.000013193622046068052, + "y": 0.00002043815321328807, + "z": -0.000022790771549918275 + } + }, + { + "id": "n121", + "parent": "11", + "degrees_of_freedom": [ + 726, + 727, + 728, + 729, + 730, + 731 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.857142857142858, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015635700971520236, + "y": -0.0005331446363527707, + "z": -0.000015633948897033838 + }, + "angle": { + "x": 0.0000014024546677884883, + "y": -0.0000318713100189248, + "z": -0.000007205825185327798 + } + }, + { + "id": "n122", + "parent": "11", + "degrees_of_freedom": [ + 732, + 733, + 734, + 735, + 736, + 737 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.020305089104422, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017402922770288842, + "y": -0.0005269833758833, + "z": -0.000023196157832207745 + }, + "angle": { + "x": 0.000017733241001284255, + "y": 0.00000393520499991147, + "z": 0.000002544449940640701 + } + }, + { + "id": "n123", + "parent": "11", + "degrees_of_freedom": [ + 738, + 739, + 740, + 741, + 742, + 743 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017216797315938918, + "y": -0.0004970421832924103, + "z": -0.00003292539527508134 + }, + "angle": { + "x": -0.0000011746991450867912, + "y": -0.00003168783453024286, + "z": -0.000012959449992674395 + } + }, + { + "id": "n124", + "parent": "11", + "degrees_of_freedom": [ + 744, + 745, + 746, + 747, + 748, + 749 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.979694910895579, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011727154063882242, + "y": -0.000465562827514394, + "z": -0.000019210499228907306 + }, + "angle": { + "x": -0.000019760368861079255, + "y": 0.00005227618114917884, + "z": -0.00003973598321583623 + } + }, + { + "id": "n125", + "parent": "11", + "degrees_of_freedom": [ + 750, + 751, + 752, + 753, + 754, + 755 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.142857142857142, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000006905413580499389, + "y": -0.00045967422251748266, + "z": -0.000012656787907149904 + }, + "angle": { + "x": 5.91522620945251e-7, + "y": -0.000019958659255493936, + "z": -0.000011287874257199784 + } + }, + { + "id": "n126", + "parent": "11", + "degrees_of_freedom": [ + 756, + 757, + 758, + 759, + 760, + 761 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.979694910895578, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002554355671959581, + "y": -0.0004680076309887446, + "z": -0.000007864708537544311 + }, + "angle": { + "x": 0.000014177656830615593, + "y": -0.00005930452638762467, + "z": -0.000022289495547208685 + } + }, + { + "id": "n127", + "parent": "11", + "degrees_of_freedom": [ + 762, + 763, + 764, + 765, + 766, + 767 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000057474701419829315, + "y": -0.0008741874287342915, + "z": -0.0005408953239472611 + }, + "angle": { + "x": -0.00008254450802423232, + "y": -0.00009172576082646064, + "z": 0.000011793630563570384 + } + }, + { + "id": "n128", + "parent": "11", + "degrees_of_freedom": [ + 768, + 769, + 770, + 771, + 772, + 773 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000273846020178435, + "y": -0.000767466154058, + "z": -0.00018425518677303037 + }, + "angle": { + "x": -0.00013458678619627094, + "y": -0.00004868356063491588, + "z": -0.00006248632709777432 + } + }, + { + "id": "n129", + "parent": "11", + "degrees_of_freedom": [ + 774, + 775, + 776, + 777, + 778, + 779 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.000054501024822612775, + "y": -0.0006220098444949298, + "z": -0.00026153833895462664 + }, + "angle": { + "x": -0.00004610521603577622, + "y": -0.000050164493862147604, + "z": 0.0000054172564030467445 + } + }, + { + "id": "n130", + "parent": "11", + "degrees_of_freedom": [ + 780, + 781, + 782, + 783, + 784, + 785 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 15, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012149652906835369, + "y": 0.0002505239677844254, + "z": -0.00009516664907734353 + }, + "angle": { + "x": -0.00004839670611932884, + "y": -0.00005885670670952699, + "z": 0.00016100306666022972 + } + }, + { + "id": "n131", + "parent": "11", + "degrees_of_freedom": [ + 786, + 787, + 788, + 789, + 790, + 791 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 15, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000057648348079803446, + "y": -0.0005717186669284131, + "z": -0.0001225877935825202 + }, + "angle": { + "x": -0.0013433806871616391, + "y": -0.000059467307262014055, + "z": 0.0006188496574082006 + } + }, + { + "id": "n132", + "parent": "11", + "degrees_of_freedom": [ + 792, + 793, + 794, + 795, + 796, + 797 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 15, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000009971044428782195, + "y": -0.0009123044925300506, + "z": -0.0002283995565689899 + }, + "angle": { + "x": 0.0002741095714775509, + "y": -0.00006165264908732082, + "z": 0.00004698099047847881 + } + }, + { + "id": "n133", + "parent": "11", + "degrees_of_freedom": [ + 798, + 799, + 800, + 801, + 802, + 803 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 15, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000529349147717582, + "y": -0.000794119481753928, + "z": -0.0003404359497924062 + }, + "angle": { + "x": -0.0006919247696398562, + "y": -0.00006499667852237411, + "z": -0.0002945645817345987 + } + }, + { + "id": "n134", + "parent": "11", + "degrees_of_freedom": [ + 804, + 805, + 806, + 807, + 808, + 809 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 15, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011267030072726068, + "y": -0.0005087896443108074, + "z": -0.0003730983987145531 + }, + "angle": { + "x": -0.00004839386682189777, + "y": -0.00006143338398416602, + "z": -0.00006704277500057915 + } + }, + { + "id": "n135", + "parent": "11", + "degrees_of_freedom": [ + 810, + 811, + 812, + 813, + 814, + 815 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 15, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001842905678728062, + "y": -0.000989662870303704, + "z": -0.00034519312413165573 + }, + "angle": { + "x": 0.0005192455383093491, + "y": -0.00007288879623718042, + "z": -0.0002677342686988322 + } + }, + { + "id": "n136", + "parent": "11", + "degrees_of_freedom": [ + 816, + 817, + 818, + 819, + 820, + 821 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 15, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002324172149547602, + "y": -0.0011888489296486605, + "z": -0.0002258149317405284 + }, + "angle": { + "x": -0.0003709000461965998, + "y": -0.000063127478012151, + "z": 0.000046979218255578756 + } + }, + { + "id": "n137", + "parent": "11", + "degrees_of_freedom": [ + 822, + 823, + 824, + 825, + 826, + 827 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 15, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018606170354071682, + "y": -0.0007672682515538087, + "z": -0.00012067177108948286 + }, + "angle": { + "x": 0.001605245156552814, + "y": -0.00005760158110690321, + "z": 0.000745652974107926 + } + }, + { + "id": "n138", + "parent": "11", + "degrees_of_freedom": [ + 828, + 829, + 830, + 831, + 832, + 833 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00013898712086872156, + "y": -0.0006950386212604025, + "z": -0.0004031068505837151 + }, + "angle": { + "x": -0.0000036552079831094714, + "y": -0.00007212013324861519, + "z": 0.000029665633494915235 + } + }, + { + "id": "n139", + "parent": "11", + "degrees_of_freedom": [ + 834, + 835, + 836, + 837, + 838, + 839 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005175552538395764, + "y": -0.0006069894677519231, + "z": -0.0003297489936058381 + }, + "angle": { + "x": -0.000023272644388055282, + "y": -0.00005756634157654571, + "z": 0.000020298501572275905 + } + }, + { + "id": "n140", + "parent": "11", + "degrees_of_freedom": [ + 840, + 841, + 842, + 843, + 844, + 845 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00031465436481389447, + "y": -0.000693009572292238, + "z": -0.00037706485120959384 + }, + "angle": { + "x": -0.00002774752098227457, + "y": 0.0002529689669871717, + "z": 0.00006897249311933558 + } + }, + { + "id": "n141", + "parent": "11", + "degrees_of_freedom": [ + 846, + 847, + 848, + 849, + 850, + 851 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.020305089104422, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00026621382569451586, + "y": -0.0006874496227031768, + "z": -0.00041093319446704565 + }, + "angle": { + "x": -0.00000954515069406293, + "y": -0.0007538539250138679, + "z": -0.00028699306600324815 + } + }, + { + "id": "n142", + "parent": "11", + "degrees_of_freedom": [ + 852, + 853, + 854, + 855, + 856, + 857 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.857142857142858, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00014926830388528093, + "y": -0.0007135454040469405, + "z": -0.0004147144716246484 + }, + "angle": { + "x": 0.000009158573996927139, + "y": 0.00004694318522219209, + "z": -0.000003868543271054331 + } + }, + { + "id": "n143", + "parent": "11", + "degrees_of_freedom": [ + 858, + 859, + 860, + 861, + 862, + 863 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.020305089104422, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007653468055881991, + "y": -0.0007202928881249462, + "z": -0.0004011751786515585 + }, + "angle": { + "x": -0.00004755448520535732, + "y": -0.00039245141669823965, + "z": 0.0001514809148451689 + } + }, + { + "id": "n144", + "parent": "11", + "degrees_of_freedom": [ + 864, + 865, + 866, + 867, + 868, + 869 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000046406700562640264, + "y": -0.0006742928736373465, + "z": -0.0003416839659276979 + }, + "angle": { + "x": -0.000026552281417101982, + "y": -0.00015908315347590247, + "z": 0.0000689732510659799 + } + }, + { + "id": "n145", + "parent": "11", + "degrees_of_freedom": [ + 870, + 871, + 872, + 873, + 874, + 875 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.979694910895578, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002499750039362527, + "y": -0.0006730633845124706, + "z": -0.0003023421830080178 + }, + "angle": { + "x": -0.000016500435783582385, + "y": 0.0007047526382305044, + "z": 0.0003743849654513464 + } + }, + { + "id": "n146", + "parent": "11", + "degrees_of_freedom": [ + 876, + 877, + 878, + 879, + 880, + 881 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.142857142857142, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0009655011021525593, + "y": -0.0006567539206474044, + "z": -0.0002960277591756655 + }, + "angle": { + "x": 0.000002220439017396339, + "y": 0.00004694415253492102, + "z": 0.00014181421544501896 + } + }, + { + "id": "n147", + "parent": "11", + "degrees_of_freedom": [ + 882, + 883, + 884, + 885, + 886, + 887 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.979694910895579, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006029344887806816, + "y": -0.0006562307705340196, + "z": -0.00031153810677066407 + }, + "angle": { + "x": -0.00004928677416114804, + "y": -0.0014395156909937717, + "z": 0.0006673566781257859 + } + }, + { + "id": "n148", + "parent": "11", + "degrees_of_freedom": [ + 888, + 889, + 890, + 891, + 892, + 893 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 7.142857142857142, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00021358329951350375, + "y": -0.0005524691095283882, + "z": 0.0001658478981630887 + }, + "angle": { + "x": -0.00029440553807675397, + "y": -0.00004964883927050499, + "z": 0.00002313925981485208 + } + }, + { + "id": "n149", + "parent": "11", + "degrees_of_freedom": [ + 894, + 895, + 896, + 897, + 898, + 899 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 7.979694910895579, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020925355134795865, + "y": -0.0005295866246247112, + "z": 0.000019784132771530795 + }, + "angle": { + "x": 0.00011292057726654711, + "y": 0.00011907098017161242, + "z": -0.000006741381011123485 + } + }, + { + "id": "n150", + "parent": "11", + "degrees_of_freedom": [ + 900, + 901, + 902, + 903, + 904, + 905 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002039211905564636, + "y": -0.0005394380800107949, + "z": 0.0001482746651795321 + }, + "angle": { + "x": -0.00002862396594691142, + "y": -0.00022264704433022978, + "z": 0.000009226226323880494 + } + }, + { + "id": "n151", + "parent": "11", + "degrees_of_freedom": [ + 906, + 907, + 908, + 909, + 910, + 911 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 12.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017266386055647838, + "y": -0.0005639101101091905, + "z": -0.00009587387424912432 + }, + "angle": { + "x": -0.00015583768251433146, + "y": 0.0000844742255176464, + "z": 0.000023888332428131462 + } + }, + { + "id": "n152", + "parent": "11", + "degrees_of_freedom": [ + 912, + 913, + 914, + 915, + 916, + 917 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 12.857142857142858, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015747790228643084, + "y": -0.0006218808559412921, + "z": -0.000055621348950491585 + }, + "angle": { + "x": -0.0000799307004394253, + "y": 0.00005303227333485021, + "z": 0.000024807800597827458 + } + }, + { + "id": "n153", + "parent": "11", + "degrees_of_freedom": [ + 918, + 919, + 920, + 921, + 922, + 923 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 12.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00016180024717577386, + "y": -0.0006456536735134016, + "z": 0.00011840922717330896 + }, + "angle": { + "x": -0.000060026104156407055, + "y": 0.00006127727091602898, + "z": -0.000009270810332472636 + } + }, + { + "id": "n154", + "parent": "11", + "degrees_of_freedom": [ + 924, + 925, + 926, + 927, + 928, + 929 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00016325013567309438, + "y": -0.0006345378051295066, + "z": 0.0002909584728704487 + }, + "angle": { + "x": 0.00007405756828319562, + "y": 0.0003849821767620438, + "z": 0.000008350317937010384 + } + }, + { + "id": "n155", + "parent": "11", + "degrees_of_freedom": [ + 930, + 931, + 932, + 933, + 934, + 935 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 7.979694910895579, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001958405216477569, + "y": -0.0006090892336749634, + "z": -0.000180827866276111 + }, + "angle": { + "x": 0.0003676840584269005, + "y": -0.0003238956978271224, + "z": 0.00002653895856636163 + } + }, + { + "id": "n156", + "parent": "11", + "degrees_of_freedom": [ + 936, + 937, + 938, + 939, + 940, + 941 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 12.857142857142858, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004609436537053018, + "y": -0.0005707327390277302, + "z": -0.00005060997524877679 + }, + "angle": { + "x": 0.000090386570730049, + "y": -0.00003782342681069777, + "z": 0.000009252137360997263 + } + }, + { + "id": "n157", + "parent": "11", + "degrees_of_freedom": [ + 942, + 943, + 944, + 945, + 946, + 947 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 12.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005403977446411281, + "y": -0.0005781003877288532, + "z": -0.00020144881076530067 + }, + "angle": { + "x": -0.00010383007872207613, + "y": -0.00011646650164140542, + "z": -0.0000045297378794004135 + } + }, + { + "id": "n158", + "parent": "11", + "degrees_of_freedom": [ + 948, + 949, + 950, + 951, + 952, + 953 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004513924581460886, + "y": -0.0005533380050714216, + "z": -0.0000893844537785762 + }, + "angle": { + "x": -0.00002181061171837766, + "y": 0.00008111490998032961, + "z": 0.000008172325075081934 + } + }, + { + "id": "n159", + "parent": "11", + "degrees_of_freedom": [ + 954, + 955, + 956, + 957, + 958, + 959 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 7.979694910895579, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000018797121525591134, + "y": -0.000512253861431046, + "z": -0.00011308018268412973 + }, + "angle": { + "x": 0.000057027714455221, + "y": -0.00010964858572272311, + "z": 0.00002507808036968373 + } + }, + { + "id": "n160", + "parent": "11", + "degrees_of_freedom": [ + 960, + 961, + 962, + 963, + 964, + 965 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 7.142857142857142, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000014195447929341359, + "y": -0.0004788856673520243, + "z": 0.00005923398053004064 + }, + "angle": { + "x": -0.00013660892136525043, + "y": -0.00002833799149086485, + "z": 0.000008535062382216912 + } + }, + { + "id": "n161", + "parent": "11", + "degrees_of_freedom": [ + 966, + 967, + 968, + 969, + 970, + 971 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 7.979694910895579, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000022152835961748335, + "y": -0.0004782225503742722, + "z": 0.0000029090652366710728 + }, + "angle": { + "x": 0.00006755501300479947, + "y": 0.00005512587570087559, + "z": -0.00000886999147735601 + } + }, + { + "id": "n162", + "parent": "11", + "degrees_of_freedom": [ + 972, + 973, + 974, + 975, + 976, + 977 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000010599504891009097, + "y": -0.0005044561662947805, + "z": 0.00009509831515479807 + }, + "angle": { + "x": -0.000012898811071179393, + "y": -0.00014240302659543862, + "z": 0.000006338265199138912 + } + }, + { + "id": "n163", + "parent": "11", + "degrees_of_freedom": [ + 978, + 979, + 980, + 981, + 982, + 983 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 12.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002348844392947234, + "y": -0.0005414089261816221, + "z": -0.00005104899560152187 + }, + "angle": { + "x": -0.00008913005224448768, + "y": 0.00003833895325059533, + "z": 0.000021722992776148683 + } + }, + { + "id": "n164", + "parent": "11", + "degrees_of_freedom": [ + 984, + 985, + 986, + 987, + 988, + 989 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002313133162690608, + "y": -0.0003618034131898863, + "z": -0.00003482985672927119 + }, + "angle": { + "x": 0.0006199101341509263, + "y": -0.00001633735100567442, + "z": 0.0002807242994493012 + } + }, + { + "id": "n165", + "parent": "11", + "degrees_of_freedom": [ + 990, + 991, + 992, + 993, + 994, + 995 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 5, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000013646327767009366, + "y": -0.0005050439097538377, + "z": -0.00006393880390678391 + }, + "angle": { + "x": -0.0000734544990679467, + "y": -0.00001620003330377384, + "z": 0.0000340293679559725 + } + }, + { + "id": "n166", + "parent": "11", + "degrees_of_freedom": [ + 996, + 997, + 998, + 999, + 1000, + 1001 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002793340948513399, + "y": -0.0005253452882415659, + "z": -0.00009203290492175452 + }, + "angle": { + "x": 0.0001456345791332606, + "y": -0.000016285042541310353, + "z": -0.000041876923070655784 + } + }, + { + "id": "n167", + "parent": "11", + "degrees_of_freedom": [ + 1002, + 1003, + 1004, + 1005, + 1006, + 1007 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000639885992893577, + "y": -0.0003980707087004396, + "z": -0.0000934886316599601 + }, + "angle": { + "x": 0.0002017394610983141, + "y": -0.000014399025280555734, + "z": 0.00010588295908139998 + } + }, + { + "id": "n168", + "parent": "11", + "degrees_of_freedom": [ + 1008, + 1009, + 1010, + 1011, + 1012, + 1013 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 5, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007408686639361296, + "y": -0.00031583038301075285, + "z": -0.00006704909708198534 + }, + "angle": { + "x": 0.000003531754080499532, + "y": -0.000015596801771311782, + "z": 0.000036088264287531825 + } + }, + { + "id": "n169", + "parent": "11", + "degrees_of_freedom": [ + 1014, + 1015, + 1016, + 1017, + 1018, + 1019 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006093154352319387, + "y": -0.00022767905201073746, + "z": -0.00003809513646529587 + }, + "angle": { + "x": -0.00014492399673593447, + "y": -0.000017677035431926504, + "z": 0.00008829298206743982 + } + }, + { + "id": "n170", + "parent": "11", + "degrees_of_freedom": [ + 1020, + 1021, + 1022, + 1023, + 1024, + 1025 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.00014406260301245491, + "y": -0.0005894077790433615, + "z": -0.00003324732149571271 + }, + "angle": { + "x": -0.000012058151535177453, + "y": -0.000054324476178803, + "z": 0.000010022983631774493 + } + }, + { + "id": "n171", + "parent": "11", + "degrees_of_freedom": [ + 1026, + 1027, + 1028, + 1029, + 1030, + 1031 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016058849765971276, + "y": -0.0004992361323435081, + "z": 0.000017780414192059247 + }, + "angle": { + "x": 4.278971746847758e-7, + "y": -0.000012319952251136706, + "z": 0.0000017136905945268106 + } + }, + { + "id": "n172", + "parent": "11", + "degrees_of_freedom": [ + 1032, + 1033, + 1034, + 1035, + 1036, + 1037 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000177927855008192, + "y": -0.0004883434472446592, + "z": 0.000018250242357346458 + }, + "angle": { + "x": -0.0000031291861190460182, + "y": -0.00006588497083019989, + "z": 0.000016982864019793044 + } + }, + { + "id": "n173", + "parent": "11", + "degrees_of_freedom": [ + 1038, + 1039, + 1040, + 1041, + 1042, + 1043 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.020305089104422, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016065549326465243, + "y": -0.0005192250016744581, + "z": 9.818970756290286e-7 + }, + "angle": { + "x": -0.000021562702631291343, + "y": 0.00010115250099772885, + "z": -0.000045032889410118984 + } + }, + { + "id": "n174", + "parent": "11", + "degrees_of_freedom": [ + 1044, + 1045, + 1046, + 1047, + 1048, + 1049 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.857142857142858, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009641136312355367, + "y": -0.000528949059548999, + "z": -0.000007861317578232297 + }, + "angle": { + "x": -0.00000446137458314846, + "y": -0.000030908550211718745, + "z": -0.0000013012275760145952 + } + }, + { + "id": "n175", + "parent": "11", + "degrees_of_freedom": [ + 1050, + 1051, + 1052, + 1053, + 1054, + 1055 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.020305089104422, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004703840685856861, + "y": -0.0005283565859964297, + "z": -0.000011496019028606427 + }, + "angle": { + "x": 0.000009162127948460029, + "y": -0.00006097182350626764, + "z": -0.00001488918306309228 + } + }, + { + "id": "n176", + "parent": "11", + "degrees_of_freedom": [ + 1056, + 1057, + 1058, + 1059, + 1060, + 1061 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003592591933182801, + "y": -0.0005002879664382493, + "z": -0.000012065048964160706 + }, + "angle": { + "x": -0.000003075095206129396, + "y": 0.000016184017183835466, + "z": 0.000009430437882783653 + } + }, + { + "id": "n177", + "parent": "11", + "degrees_of_freedom": [ + 1062, + 1063, + 1064, + 1065, + 1066, + 1067 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.979694910895579, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000022734023035521644, + "y": -0.00046652885946384977, + "z": 3.918474117219476e-7 + }, + "angle": { + "x": -0.000017501823977041417, + "y": -0.00020122186696506982, + "z": 0.00008925415436064477 + } + }, + { + "id": "n178", + "parent": "11", + "degrees_of_freedom": [ + 1068, + 1069, + 1070, + 1071, + 1072, + 1073 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.142857142857142, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011704067812958533, + "y": -0.00045827391776387486, + "z": 0.000006992359063773273 + }, + "angle": { + "x": -0.0000018561065711018529, + "y": -0.000018791825566552014, + "z": 0.000027714579394954712 + } + }, + { + "id": "n179", + "parent": "11", + "degrees_of_freedom": [ + 1074, + 1075, + 1076, + 1077, + 1078, + 1079 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.979694910895578, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008493008318924743, + "y": -0.00046231166747596027, + "z": 0.00001225670374185366 + }, + "angle": { + "x": 0.000014791070022854505, + "y": 0.0002064630801160132, + "z": 0.00011031342601586272 + } + }, + { + "id": "n180", + "parent": "11", + "degrees_of_freedom": [ + 1080, + 1081, + 1082, + 1083, + 1084, + 1085 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00022846077948014462, + "y": -0.0008560686578404649, + "z": -0.0005394178044763817 + }, + "angle": { + "x": -0.00011162755093522614, + "y": -0.000060442510310620226, + "z": 0.00003153424511641901 + } + }, + { + "id": "n181", + "parent": "11", + "degrees_of_freedom": [ + 1086, + 1087, + 1088, + 1089, + 1090, + 1091 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.0003695964554954213, + "y": -0.000702104288909879, + "z": -0.0003271123671034225 + }, + "angle": { + "x": 0.000026749493874188105, + "y": -0.00006572795424142905, + "z": 0.00007495108315398037 + } + }, + { + "id": "n182", + "parent": "11", + "degrees_of_freedom": [ + 1092, + 1093, + 1094, + 1095, + 1096, + 1097 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001876346353053188, + "y": 0.0002536721864781669, + "z": -0.00015672261338763418 + }, + "angle": { + "x": 0.00003929370528666095, + "y": -0.00005186857138488655, + "z": 0.0001370139828126031 + } + }, + { + "id": "n183", + "parent": "11", + "degrees_of_freedom": [ + 1098, + 1099, + 1100, + 1101, + 1102, + 1103 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00024761405531048043, + "y": -0.0006086500334808617, + "z": -0.00018134284630080396 + }, + "angle": { + "x": -0.0013204037722565343, + "y": -0.00006628714821720378, + "z": 0.0006177397847103713 + } + }, + { + "id": "n184", + "parent": "11", + "degrees_of_freedom": [ + 1104, + 1105, + 1106, + 1107, + 1108, + 1109 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 15, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00029719006294607405, + "y": -0.0009658364580690238, + "z": -0.0002941323621917054 + }, + "angle": { + "x": 0.0001313396946615233, + "y": -0.00006266168369468373, + "z": 0.00010447123523989447 + } + }, + { + "id": "n185", + "parent": "11", + "degrees_of_freedom": [ + 1110, + 1111, + 1112, + 1113, + 1114, + 1115 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002543118574810671, + "y": -0.0011032026351948053, + "z": -0.00040304443848634 + }, + "angle": { + "x": -0.0000404722841381672, + "y": -0.00006081460440285822, + "z": 0.00004372603997013425 + } + }, + { + "id": "n186", + "parent": "11", + "degrees_of_freedom": [ + 1116, + 1117, + 1118, + 1119, + 1120, + 1121 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00019449972725193006, + "y": -0.001434831314178679, + "z": -0.00042953582238117145 + }, + "angle": { + "x": 0.0000392942342914522, + "y": -0.00005525324976935001, + "z": 0.00007192758930606963 + } + }, + { + "id": "n187", + "parent": "11", + "degrees_of_freedom": [ + 1122, + 1123, + 1124, + 1125, + 1126, + 1127 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 15, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00013568016683849143, + "y": -0.0009444304610701804, + "z": -0.0004025268031444926 + }, + "angle": { + "x": -0.000956716694803772, + "y": -0.00006032848220661586, + "z": 0.00042407045118708067 + } + }, + { + "id": "n188", + "parent": "11", + "degrees_of_freedom": [ + 1128, + 1129, + 1130, + 1131, + 1132, + 1133 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 15, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009275264308372238, + "y": -0.0007413001891993887, + "z": -0.00029457836038497494 + }, + "angle": { + "x": -0.000052752315420287666, + "y": -0.00006145285526051225, + "z": 0.00010447070029086732 + } + }, + { + "id": "n189", + "parent": "11", + "degrees_of_freedom": [ + 1134, + 1135, + 1136, + 1137, + 1138, + 1139 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 15, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00013851708110000985, + "y": -0.00044987964546097073, + "z": -0.00018683148158401349 + }, + "angle": { + "x": 0.0008679633547645555, + "y": -0.00006071454657921606, + "z": 0.00042999294460379983 + } + }, + { + "id": "n190", + "parent": "11", + "degrees_of_freedom": [ + 1140, + 1141, + 1142, + 1143, + 1144, + 1145 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00021623248236895886, + "y": -0.0005829845422342895, + "z": -0.00026045454631423243 + }, + "angle": { + "x": -0.000027080102391908156, + "y": -0.00010149165308451562, + "z": 0.000008483502531133825 + } + }, + { + "id": "n191", + "parent": "11", + "degrees_of_freedom": [ + 1146, + 1147, + 1148, + 1149, + 1150, + 1151 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00021522347322900073, + "y": -0.0006169235350393868, + "z": -0.00031294969846271613 + }, + "angle": { + "x": -0.000030540883096443244, + "y": 0.000046310397181911115, + "z": 0.0000747865736838545 + } + }, + { + "id": "n192", + "parent": "11", + "degrees_of_freedom": [ + 1152, + 1153, + 1154, + 1155, + 1156, + 1157 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.020305089104422, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0003534837048280602, + "y": -0.000607003323691443, + "z": -0.0003524411701971136 + }, + "angle": { + "x": -0.000011749373705006946, + "y": 0.00010257416028316902, + "z": 0.00009467832379625386 + } + }, + { + "id": "n193", + "parent": "11", + "degrees_of_freedom": [ + 1158, + 1159, + 1160, + 1161, + 1162, + 1163 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.857142857142858, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0006872696007955377, + "y": -0.0006540749403646116, + "z": -0.0003586351273948894 + }, + "angle": { + "x": 0.000020869000814439515, + "y": 0.00003466574364683422, + "z": 0.00007066854175260921 + } + }, + { + "id": "n194", + "parent": "11", + "degrees_of_freedom": [ + 1164, + 1165, + 1166, + 1167, + 1168, + 1169 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.020305089104422, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00021341501441152002, + "y": -0.0006715193805583688, + "z": -0.0003458719483290805 + }, + "angle": { + "x": -0.00005791487003918323, + "y": -0.0007163081454248811, + "z": 0.0003361774724471557 + } + }, + { + "id": "n195", + "parent": "11", + "degrees_of_freedom": [ + 1170, + 1171, + 1172, + 1173, + 1174, + 1175 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001713900314215745, + "y": -0.000625240040474363, + "z": -0.00027379544536376753 + }, + "angle": { + "x": -0.000029445568411580936, + "y": 0.00002301883408544953, + "z": 0.0000747856863461084 + } + }, + { + "id": "n196", + "parent": "11", + "degrees_of_freedom": [ + 1176, + 1177, + 1178, + 1179, + 1180, + 1181 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.979694910895578, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014061089987848227, + "y": -0.0006279808833980834, + "z": -0.0002368191209084685 + }, + "angle": { + "x": -0.000011973651846411658, + "y": 0.00009933633938102147, + "z": 0.00010176812949478324 + } + }, + { + "id": "n197", + "parent": "11", + "degrees_of_freedom": [ + 1182, + 1183, + 1184, + 1185, + 1186, + 1187 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.142857142857142, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0005214547657333219, + "y": -0.0006005511424108386, + "z": -0.0002343897158584953 + }, + "angle": { + "x": 0.000013060949324627337, + "y": 0.00003466398986008876, + "z": 0.00007890340604725969 + } + }, + { + "id": "n198", + "parent": "11", + "degrees_of_freedom": [ + 1188, + 1189, + 1190, + 1191, + 1192, + 1193 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.979694910895579, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 5.454752634061106e-7, + "y": -0.0005856291118864654, + "z": -0.0002477475380810177 + }, + "angle": { + "x": -0.00004318688039230886, + "y": -0.0009167462273407556, + "z": 0.0004152781301116318 + } + }, + { + "id": "n199", + "parent": "11", + "degrees_of_freedom": [ + 1194, + 1195, + 1196, + 1197, + 1198, + 1199 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 12.857142857142858, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00022939765323360116, + "y": -0.0005705152170609589, + "z": 0.00016733011543305896 + }, + "angle": { + "x": 0.00037130172993944747, + "y": 0.000064661569995786, + "z": 1.6369361494535477e-7 + } + }, + { + "id": "n200", + "parent": "11", + "degrees_of_freedom": [ + 1200, + 1201, + 1202, + 1203, + 1204, + 1205 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 12.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002254721101298662, + "y": -0.0005639780795212624, + "z": -0.000012753310173652101 + }, + "angle": { + "x": -0.000022774136741097573, + "y": -0.0000985702980806834, + "z": 4.649448847037824e-7 + } + }, + { + "id": "n201", + "parent": "11", + "degrees_of_freedom": [ + 1206, + 1207, + 1208, + 1209, + 1210, + 1211 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00020866808687962593, + "y": -0.0005529457771169259, + "z": -0.000049229792214764776 + }, + "angle": { + "x": 0.000009965001075671045, + "y": -0.00001953073565913481, + "z": 0.000012128070023058127 + } + }, + { + "id": "n202", + "parent": "11", + "degrees_of_freedom": [ + 1212, + 1213, + 1214, + 1215, + 1216, + 1217 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 7.979694910895579, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00017715515947692369, + "y": -0.000522433611890115, + "z": -0.00005301816102350937 + }, + "angle": { + "x": -0.0000013948408243664921, + "y": 0.000007894634434644911, + "z": 0.000022489601664097648 + } + }, + { + "id": "n203", + "parent": "11", + "degrees_of_freedom": [ + 1218, + 1219, + 1220, + 1221, + 1222, + 1223 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 7.142857142857142, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000162237982564417, + "y": -0.0005048477946481325, + "z": -0.0000678004188425038 + }, + "angle": { + "x": 0.00003751524766439473, + "y": -0.000008222495067493141, + "z": 6.2614656123007e-7 + } + }, + { + "id": "n204", + "parent": "11", + "degrees_of_freedom": [ + 1224, + 1225, + 1226, + 1227, + 1228, + 1229 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 7.979694910895579, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016157419071126104, + "y": -0.0005088079842614062, + "z": -0.000019794303969849492 + }, + "angle": { + "x": -0.000042270605951328895, + "y": -0.00004127085541145347, + "z": -2.4119487955647187e-7 + } + }, + { + "id": "n205", + "parent": "11", + "degrees_of_freedom": [ + 1230, + 1231, + 1232, + 1233, + 1234, + 1235 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00017644622890275919, + "y": -0.0005166391412158227, + "z": -0.00007065683568200918 + }, + "angle": { + "x": -0.00006291894383714976, + "y": -0.00009112031541994715, + "z": 0.00001269149415226684 + } + }, + { + "id": "n206", + "parent": "11", + "degrees_of_freedom": [ + 1236, + 1237, + 1238, + 1239, + 1240, + 1241 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 12.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00021467779001709737, + "y": -0.0005478803920476165, + "z": -0.00027402525393188686 + }, + "angle": { + "x": -0.00023073997816036403, + "y": 0.0003140352876054743, + "z": 0.000029072326843108197 + } + }, + { + "id": "n207", + "parent": "11", + "degrees_of_freedom": [ + 1242, + 1243, + 1244, + 1245, + 1246, + 1247 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n208", + "parent": "11", + "degrees_of_freedom": [ + 1248, + 1249, + 1250, + 1251, + 1252, + 1253 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n209", + "parent": "11", + "degrees_of_freedom": [ + 1254, + 1255, + 1256, + 1257, + 1258, + 1259 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n210", + "parent": "11", + "degrees_of_freedom": [ + 1260, + 1261, + 1262, + 1263, + 1264, + 1265 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.857142857142858, + "y": -5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n211", + "parent": "11", + "degrees_of_freedom": [ + 1266, + 1267, + 1268, + 1269, + 1270, + 1271 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.020305089104422, + "y": -5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n212", + "parent": "11", + "degrees_of_freedom": [ + 1272, + 1273, + 1274, + 1275, + 1276, + 1277 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n213", + "parent": "11", + "degrees_of_freedom": [ + 1278, + 1279, + 1280, + 1281, + 1282, + 1283 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.979694910895579, + "y": -5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n214", + "parent": "11", + "degrees_of_freedom": [ + 1284, + 1285, + 1286, + 1287, + 1288, + 1289 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.142857142857142, + "y": -5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n215", + "parent": "11", + "degrees_of_freedom": [ + 1290, + 1291, + 1292, + 1293, + 1294, + 1295 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.979694910895578, + "y": -5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n216", + "parent": "11", + "degrees_of_freedom": [ + 1296, + 1297, + 1298, + 1299, + 1300, + 1301 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n217", + "parent": "11", + "degrees_of_freedom": [ + 1302, + 1303, + 1304, + 1305, + 1306, + 1307 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.020305089104422, + "y": -5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n218", + "parent": "11", + "degrees_of_freedom": [ + 1308, + 1309, + 1310, + 1311, + 1312, + 1313 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00006150981339508513, + "y": -0.000468379514065843, + "z": 0.00011216279916560017 + }, + "angle": { + "x": 0.0000538384912214758, + "y": -0.00001375781219519014, + "z": 0.000015917008059786142 + } + }, + { + "id": "n219", + "parent": "11", + "degrees_of_freedom": [ + 1314, + 1315, + 1316, + 1317, + 1318, + 1319 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000039342498640624346, + "y": -0.00020115030898852637, + "z": 0.00001896136951449289 + }, + "angle": { + "x": 0.000034359473385045404, + "y": 0.00004220908710856114, + "z": -0.000009335222253102213 + } + }, + { + "id": "n220", + "parent": "11", + "degrees_of_freedom": [ + 1320, + 1321, + 1322, + 1323, + 1324, + 1325 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000723537730838893, + "y": -0.00021220442196024698, + "z": 0.000020417376600552197 + }, + "angle": { + "x": 0.000022598644244961486, + "y": 0.000010869562010054074, + "z": -0.000002073918826174322 + } + }, + { + "id": "n221", + "parent": "11", + "degrees_of_freedom": [ + 1326, + 1327, + 1328, + 1329, + 1330, + 1331 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -3.140184917367551e-16, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003749191549455773, + "y": -0.00013624371548498612, + "z": 0.00002990681753327814 + }, + "angle": { + "x": 0.000003761733442092129, + "y": 0.000012970114552885472, + "z": -0.00001125633991658759 + } + }, + { + "id": "n222", + "parent": "11", + "degrees_of_freedom": [ + 1332, + 1333, + 1334, + 1335, + 1336, + 1337 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.020305089104421, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000532814025475527, + "y": -0.00016625647099425994, + "z": 0.0000297421410563684 + }, + "angle": { + "x": -0.000010090168525342486, + "y": 0.0000869265344659224, + "z": -0.000037404322450868865 + } + }, + { + "id": "n223", + "parent": "11", + "degrees_of_freedom": [ + 1338, + 1339, + 1340, + 1341, + 1342, + 1343 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.857142857142857, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009140396495050808, + "y": -0.0002539215622337028, + "z": 0.000022128212020722677 + }, + "angle": { + "x": -0.000059467431883167, + "y": -0.00002604815984283074, + "z": 0.0000025378192043718715 + } + }, + { + "id": "n224", + "parent": "11", + "degrees_of_freedom": [ + 1344, + 1345, + 1346, + 1347, + 1348, + 1349 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.0203050891044216, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015853018806067423, + "y": -0.00031950305650379037, + "z": 0.000021291417315065147 + }, + "angle": { + "x": 0.000029430149415110836, + "y": -0.00009517637808585, + "z": -0.000021903133258871606 + } + }, + { + "id": "n225", + "parent": "11", + "degrees_of_freedom": [ + 1350, + 1351, + 1352, + 1353, + 1354, + 1355 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 3.140184917367551e-16, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018633336179632102, + "y": -0.0002810775861093365, + "z": -1.4793430320884343e-7 + }, + "angle": { + "x": 0.000003109610630561321, + "y": -0.00006506454817204964, + "z": -0.000011257457250543133 + } + }, + { + "id": "n226", + "parent": "11", + "degrees_of_freedom": [ + 1356, + 1357, + 1358, + 1359, + 1360, + 1361 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.020305089104421, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010523952986258381, + "y": -0.0002528987723265506, + "z": 0.0000053438550186534705 + }, + "angle": { + "x": -0.000012808178645940082, + "y": 0.0004014371425171813, + "z": -0.00017619031417895591 + } + }, + { + "id": "n227", + "parent": "11", + "degrees_of_freedom": [ + 1362, + 1363, + 1364, + 1365, + 1366, + 1367 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.857142857142857, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009053517983794917, + "y": -0.00017019391003411132, + "z": 0.00001649640152914566 + }, + "angle": { + "x": -0.000060148140304532526, + "y": -0.000026046365184636946, + "z": -0.00002505165062282256 + } + }, + { + "id": "n228", + "parent": "11", + "degrees_of_freedom": [ + 1368, + 1369, + 1370, + 1371, + 1372, + 1373 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.0203050891044216, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -5.3469717258772245e-9, + "y": -0.0001002724338509158, + "z": 0.000016076027369005906 + }, + "angle": { + "x": 0.000018464601804784518, + "y": -0.00014282238359305716, + "z": -0.0000663377579969443 + } + }, + { + "id": "n229", + "parent": "11", + "degrees_of_freedom": [ + 1374, + 1375, + 1376, + 1377, + 1378, + 1379 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00011068958899794381, + "y": -0.0004197336424423341, + "z": 0.00005267386217682346 + }, + "angle": { + "x": -0.0000054681088386215675, + "y": -0.00002247357743643804, + "z": -0.000035598757309733736 + } + }, + { + "id": "n230", + "parent": "11", + "degrees_of_freedom": [ + 1380, + 1381, + 1382, + 1383, + 1384, + 1385 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.000018867954631575057, + "y": -0.0004060570311930977, + "z": 0.00005732963875425533 + }, + "angle": { + "x": -0.000010375962914680198, + "y": -0.000019170707697452033, + "z": -0.0000010153744867633866 + } + }, + { + "id": "n231", + "parent": "11", + "degrees_of_freedom": [ + 1386, + 1387, + 1388, + 1389, + 1390, + 1391 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006009083094767311, + "y": -0.0005872219994459419, + "z": 0.00008638159504173341 + }, + "angle": { + "x": 0.000022515806594023625, + "y": -0.00001660360778932623, + "z": -0.0000069112206609268565 + } + }, + { + "id": "n232", + "parent": "11", + "degrees_of_freedom": [ + 1392, + 1393, + 1394, + 1395, + 1396, + 1397 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000041997680492359224, + "y": -0.0005937709907205874, + "z": 0.0000797936234754834 + }, + "angle": { + "x": 0.00019327460554400899, + "y": -0.000014267274742563624, + "z": -0.000066993307915504 + } + }, + { + "id": "n233", + "parent": "11", + "degrees_of_freedom": [ + 1398, + 1399, + 1400, + 1401, + 1402, + 1403 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000032063853443643624, + "y": -0.0006024543594659169, + "z": 0.000054128371290527004 + }, + "angle": { + "x": 0.00012808243803180607, + "y": -0.00001475224027473823, + "z": -0.00003724728927705257 + } + }, + { + "id": "n234", + "parent": "11", + "degrees_of_freedom": [ + 1404, + 1405, + 1406, + 1407, + 1408, + 1409 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004579998239813304, + "y": -0.00041094206966706224, + "z": 0.00002824250492866615 + }, + "angle": { + "x": -0.0007118864329948793, + "y": -0.000016714298733211877, + "z": -0.0003314240919068607 + } + }, + { + "id": "n235", + "parent": "11", + "degrees_of_freedom": [ + 1410, + 1411, + 1412, + 1413, + 1414, + 1415 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006220009507183962, + "y": 0.00004188254065974436, + "z": 0.000019366978815615512 + }, + "angle": { + "x": 0.00002200526508925789, + "y": -0.000016402336989071586, + "z": -0.00007121930130618272 + } + }, + { + "id": "n236", + "parent": "11", + "degrees_of_freedom": [ + 1416, + 1417, + 1418, + 1419, + 1420, + 1421 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008154166460456006, + "y": -0.00031922762338924815, + "z": 0.00002533025829045585 + }, + "angle": { + "x": 0.0007685623012641652, + "y": -0.000016173574263304596, + "z": -0.00033443209845248874 + } + }, + { + "id": "n237", + "parent": "11", + "degrees_of_freedom": [ + 1422, + 1423, + 1424, + 1425, + 1426, + 1427 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009149770850680782, + "y": -0.0004703982541255533, + "z": 0.000052893282167178034 + }, + "angle": { + "x": -0.00008186259904764006, + "y": -0.000014871777111261087, + "z": -0.000037986678026276846 + } + }, + { + "id": "n238", + "parent": "11", + "degrees_of_freedom": [ + 1428, + 1429, + 1430, + 1431, + 1432, + 1433 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007867620430357874, + "y": -0.000501687649839, + "z": 0.00007893876879610826 + }, + "angle": { + "x": -0.00011293225922019789, + "y": -0.000016106279531499887, + "z": -0.000055089593133199945 + } + }, + { + "id": "n239", + "parent": "11", + "degrees_of_freedom": [ + 1434, + 1435, + 1436, + 1437, + 1438, + 1439 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": -2.857142857142857, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003277940443621723, + "y": -0.00013839717450141894, + "z": -0.000027946173836987028 + }, + "angle": { + "x": -0.000012301614468551492, + "y": -0.000018927959924628887, + "z": 0.000025610405918471484 + } + }, + { + "id": "n240", + "parent": "11", + "degrees_of_freedom": [ + 1440, + 1441, + 1442, + 1443, + 1444, + 1445 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": -2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003103230000617632, + "y": -0.00011491567850727628, + "z": -3.8190384215037893e-10 + }, + "angle": { + "x": -0.000013041682401050414, + "y": -0.00001923450793307047, + "z": -0.000013439959090187687 + } + }, + { + "id": "n241", + "parent": "11", + "degrees_of_freedom": [ + 1446, + 1447, + 1448, + 1449, + 1450, + 1451 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000039330800672093, + "y": -0.00015345616044975166, + "z": -0.000010252442958642682 + }, + "angle": { + "x": 0.000052997924112766576, + "y": 0.00014019929590944485, + "z": -0.0000012407893424986349 + } + }, + { + "id": "n242", + "parent": "11", + "degrees_of_freedom": [ + 1452, + 1453, + 1454, + 1455, + 1456, + 1457 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000033543746398862456, + "y": -0.0001928978328002454, + "z": 0.00021414368276915957 + }, + "angle": { + "x": 0.0001167181566586548, + "y": -0.000013634727849057689, + "z": 0.00001569307837661985 + } + }, + { + "id": "n243", + "parent": "11", + "degrees_of_freedom": [ + 1458, + 1459, + 1460, + 1461, + 1462, + 1463 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 2.857142857142857, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000024087462981341363, + "y": -0.0002472507691377603, + "z": 0.00028427109285190645 + }, + "angle": { + "x": 0.0001976699461151977, + "y": -0.00004716639625712576, + "z": 0.000025160449423308965 + } + }, + { + "id": "n244", + "parent": "11", + "degrees_of_freedom": [ + 1464, + 1465, + 1466, + 1467, + 1468, + 1469 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000023873514483750263, + "y": -0.0002669445954429115, + "z": 0.000023562967343571394 + }, + "angle": { + "x": -0.00010807809710249479, + "y": -0.00017381124774883914, + "z": -0.00001763117928482565 + } + }, + { + "id": "n245", + "parent": "11", + "degrees_of_freedom": [ + 1470, + 1471, + 1472, + 1473, + 1474, + 1475 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000012596132453469819, + "y": -0.0002295199728316252, + "z": 0.00009646167765803602 + }, + "angle": { + "x": 0.000024759628485099922, + "y": 0.000146887012127811, + "z": -4.6057173680534823e-7 + } + }, + { + "id": "n246", + "parent": "11", + "degrees_of_freedom": [ + 1476, + 1477, + 1478, + 1479, + 1480, + 1481 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": -2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000021925270630993016, + "y": -0.0001929700414964894, + "z": -0.00007648090308488506 + }, + "angle": { + "x": 0.00011534268135010457, + "y": -0.00007179997467249318, + "z": 0.00001654492815100576 + } + }, + { + "id": "n247", + "parent": "11", + "degrees_of_freedom": [ + 1482, + 1483, + 1484, + 1485, + 1486, + 1487 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 2.857142857142857, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002829293419539778, + "y": -0.000289974281706574, + "z": 0.00010308525901317547 + }, + "angle": { + "x": 0.00004946661358206251, + "y": -0.000008412684907357613, + "z": -0.000002037983957022297 + } + }, + { + "id": "n248", + "parent": "11", + "degrees_of_freedom": [ + 1488, + 1489, + 1490, + 1491, + 1492, + 1493 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000009470826753194789, + "y": -0.0002619390847126756, + "z": 0.00004573262116152665 + }, + "angle": { + "x": -0.000019701714204341663, + "y": -0.00003552017455185159, + "z": -0.00002628181145726717 + } + }, + { + "id": "n249", + "parent": "11", + "degrees_of_freedom": [ + 1494, + 1495, + 1496, + 1497, + 1498, + 1499 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000006929936890827996, + "y": -0.00019819391830811826, + "z": 0.00005519227635853767 + }, + "angle": { + "x": 0.000006694258870935158, + "y": 0.000027095455806083433, + "z": -0.0000019461186217323697 + } + }, + { + "id": "n250", + "parent": "11", + "degrees_of_freedom": [ + 1500, + 1501, + 1502, + 1503, + 1504, + 1505 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": -2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000016015874967003906, + "y": -0.00013771274417151617, + "z": 0.000019302910280805142 + }, + "angle": { + "x": 0.000028405450862484757, + "y": -0.000026429835687435394, + "z": 0.000022378727823922975 + } + }, + { + "id": "n251", + "parent": "11", + "degrees_of_freedom": [ + 1506, + 1507, + 1508, + 1509, + 1510, + 1511 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": -2.857142857142857, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000016837353151226688, + "y": -0.00011597366139864182, + "z": 0.00004930667599086522 + }, + "angle": { + "x": -0.00003362884774663982, + "y": -0.0000010151746831024029, + "z": -8.959953063181969e-7 + } + }, + { + "id": "n252", + "parent": "11", + "degrees_of_freedom": [ + 1512, + 1513, + 1514, + 1515, + 1516, + 1517 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": -2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003792009873173635, + "y": -0.00014498590723890445, + "z": 0.000023026623221940166 + }, + "angle": { + "x": 0.00003320799828689634, + "y": 0.000026950390879249704, + "z": -0.00003108288075076128 + } + }, + { + "id": "n253", + "parent": "11", + "degrees_of_freedom": [ + 1518, + 1519, + 1520, + 1521, + 1522, + 1523 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006026090576554482, + "y": -0.00020802070277197468, + "z": 0.00007100108745162715 + }, + "angle": { + "x": 0.000014368482588104652, + "y": -0.000024693409718927926, + "z": -0.000002256439105900255 + } + }, + { + "id": "n254", + "parent": "11", + "degrees_of_freedom": [ + 1524, + 1525, + 1526, + 1527, + 1528, + 1529 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004676876215831201, + "y": -0.000267598778338154, + "z": 0.00007764678020281488 + }, + "angle": { + "x": -0.000004893072872457945, + "y": 0.000015646873768866914, + "z": 0.000027078514034404994 + } + }, + { + "id": "n255", + "parent": "11", + "degrees_of_freedom": [ + 1530, + 1531, + 1532, + 1533, + 1534, + 1535 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n256", + "parent": "11", + "degrees_of_freedom": [ + 1536, + 1537, + 1538, + 1539, + 1540, + 1541 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n257", + "parent": "11", + "degrees_of_freedom": [ + 1542, + 1543, + 1544, + 1545, + 1546, + 1547 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.857142857142858, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n258", + "parent": "11", + "degrees_of_freedom": [ + 1548, + 1549, + 1550, + 1551, + 1552, + 1553 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.020305089104422, + "y": -5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n259", + "parent": "11", + "degrees_of_freedom": [ + 1554, + 1555, + 1556, + 1557, + 1558, + 1559 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n260", + "parent": "11", + "degrees_of_freedom": [ + 1560, + 1561, + 1562, + 1563, + 1564, + 1565 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.979694910895579, + "y": -5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n261", + "parent": "11", + "degrees_of_freedom": [ + 1566, + 1567, + 1568, + 1569, + 1570, + 1571 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.142857142857142, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n262", + "parent": "11", + "degrees_of_freedom": [ + 1572, + 1573, + 1574, + 1575, + 1576, + 1577 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.979694910895578, + "y": -5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n263", + "parent": "11", + "degrees_of_freedom": [ + 1578, + 1579, + 1580, + 1581, + 1582, + 1583 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n264", + "parent": "11", + "degrees_of_freedom": [ + 1584, + 1585, + 1586, + 1587, + 1588, + 1589 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.020305089104422, + "y": -5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n265", + "parent": "11", + "degrees_of_freedom": [ + 1590, + 1591, + 1592, + 1593, + 1594, + 1595 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00003584681668760264, + "y": -0.0004843719773756862, + "z": 0.00013117496716117145 + }, + "angle": { + "x": 0.00006207631281397587, + "y": -0.000018429731307443082, + "z": -0.000029579574730330763 + } + }, + { + "id": "n266", + "parent": "11", + "degrees_of_freedom": [ + 1596, + 1597, + 1598, + 1599, + 1600, + 1601 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000004711751724932254, + "y": -0.00020449691334718933, + "z": 0.000028173170502484357 + }, + "angle": { + "x": 0.00002746394394935401, + "y": 0.00007114189138702623, + "z": 0.000001776418565726779 + } + }, + { + "id": "n267", + "parent": "11", + "degrees_of_freedom": [ + 1602, + 1603, + 1604, + 1605, + 1606, + 1607 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -3.140184917367551e-16, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012968813112580147, + "y": -0.00013482050017865808, + "z": 0.00003844406315208876 + }, + "angle": { + "x": 0.000004985950689141922, + "y": -0.00002431945783306384, + "z": 0.00004619467477349907 + } + }, + { + "id": "n268", + "parent": "11", + "degrees_of_freedom": [ + 1608, + 1609, + 1610, + 1611, + 1612, + 1613 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.020305089104421, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002186767314161242, + "y": -0.00016324059305489498, + "z": 0.000038754974934882915 + }, + "angle": { + "x": -0.000010756275918588536, + "y": -0.000024994667939184754, + "z": 0.000046433734684177286 + } + }, + { + "id": "n269", + "parent": "11", + "degrees_of_freedom": [ + 1614, + 1615, + 1616, + 1617, + 1618, + 1619 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0004335172850991608, + "y": -0.00025531045151794426, + "z": 0.000030631266331340884 + }, + "angle": { + "x": -0.00006233072974409338, + "y": -0.00002262336138990217, + "z": 0.00004559583824626344 + } + }, + { + "id": "n270", + "parent": "11", + "degrees_of_freedom": [ + 1620, + 1621, + 1622, + 1623, + 1624, + 1625 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.0203050891044216, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012726258676559139, + "y": -0.00032398536756697165, + "z": 0.000029373452669775123 + }, + "angle": { + "x": 0.000031727538335933614, + "y": 0.0006725585978967069, + "z": 0.00029138026112696 + } + }, + { + "id": "n271", + "parent": "11", + "degrees_of_freedom": [ + 1626, + 1627, + 1628, + 1629, + 1630, + 1631 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 3.140184917367551e-16, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -4.0620357691023794e-7, + "y": -0.00028367836697786963, + "z": 0.000005946031384634442 + }, + "angle": { + "x": 0.000003477002774285837, + "y": -0.000020929068497656324, + "z": 0.00004619583348750132 + } + }, + { + "id": "n272", + "parent": "11", + "degrees_of_freedom": [ + 1632, + 1633, + 1634, + 1635, + 1636, + 1637 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.020305089104421, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009142166023425876, + "y": -0.00025468761916738346, + "z": 0.000011664977521954543 + }, + "angle": { + "x": -0.000013398776332537023, + "y": -0.0003229278258382475, + "z": 0.0001529679820633718 + } + }, + { + "id": "n273", + "parent": "11", + "degrees_of_freedom": [ + 1638, + 1639, + 1640, + 1641, + 1642, + 1643 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00031310967883308556, + "y": -0.00016922149614591225, + "z": 0.000022276170134976123 + }, + "angle": { + "x": -0.00006111222602144152, + "y": -0.000022625377540467274, + "z": 0.000046794500894386935 + } + }, + { + "id": "n274", + "parent": "11", + "degrees_of_freedom": [ + 1644, + 1645, + 1646, + 1647, + 1648, + 1649 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.0203050891044216, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 3.415509227903148e-9, + "y": -0.00009944559402160996, + "z": 0.000021465409029849625 + }, + "angle": { + "x": 0.000020137442323624184, + "y": 0.0004939242529760643, + "z": 0.00022942189526765048 + } + }, + { + "id": "n275", + "parent": "11", + "degrees_of_freedom": [ + 1650, + 1651, + 1652, + 1653, + 1654, + 1655 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.0000879370545149805, + "y": -0.0004049519485009814, + "z": 0.00006334689477196979 + }, + "angle": { + "x": -0.000020854137622168372, + "y": -0.000021151722795393922, + "z": 0.000029059409555214633 + } + }, + { + "id": "n276", + "parent": "11", + "degrees_of_freedom": [ + 1656, + 1657, + 1658, + 1659, + 1660, + 1661 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003538736371829912, + "y": -0.00023425085437174, + "z": 0.00009575623127148759 + }, + "angle": { + "x": 0.000034151956604264835, + "y": -0.00001913026451194762, + "z": 0.000022193435210730087 + } + }, + { + "id": "n277", + "parent": "11", + "degrees_of_freedom": [ + 1662, + 1663, + 1664, + 1665, + 1666, + 1667 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005810772869957552, + "y": -0.00042671159577183554, + "z": 0.00008871934881499668 + }, + "angle": { + "x": -0.00044754719517782124, + "y": -0.000016344962597576543, + "z": 0.00019073781782228378 + } + }, + { + "id": "n278", + "parent": "11", + "degrees_of_freedom": [ + 1668, + 1669, + 1670, + 1671, + 1672, + 1673 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006917912395372984, + "y": -0.0005008701808308405, + "z": 0.0000629199516471909 + }, + "angle": { + "x": 0.000035781432303650866, + "y": -0.000013791382888448881, + "z": 0.000018092955264108334 + } + }, + { + "id": "n279", + "parent": "11", + "degrees_of_freedom": [ + 1674, + 1675, + 1676, + 1677, + 1678, + 1679 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005720964640511519, + "y": -0.0005176122560881496, + "z": 0.00003858988730646177 + }, + "angle": { + "x": -5.341664649755933e-7, + "y": -0.000015252191263700166, + "z": 0.000006722106070164758 + } + }, + { + "id": "n280", + "parent": "11", + "degrees_of_freedom": [ + 1680, + 1681, + 1682, + 1683, + 1684, + 1685 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003768883436354751, + "y": -0.0005539380431962466, + "z": 0.00003097375688782827 + }, + "angle": { + "x": 0.000029641875638192603, + "y": -0.000018792386860789323, + "z": 0.000017684689801302475 + } + }, + { + "id": "n281", + "parent": "11", + "degrees_of_freedom": [ + 1686, + 1687, + 1688, + 1689, + 1690, + 1691 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000016968707502432353, + "y": -0.0003922218329860934, + "z": 0.00003799125384968147 + }, + "angle": { + "x": -0.00022705358980573722, + "y": -0.000014099463886187384, + "z": 0.00010948920648706981 + } + }, + { + "id": "n282", + "parent": "11", + "degrees_of_freedom": [ + 1692, + 1693, + 1694, + 1695, + 1696, + 1697 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000004432052956150433, + "y": -0.00032117783779158054, + "z": 0.00006141444853393557 + }, + "angle": { + "x": 0.000025521089478793012, + "y": -0.000013700472893365745, + "z": 0.000020904211873060642 + } + }, + { + "id": "n283", + "parent": "11", + "degrees_of_freedom": [ + 1698, + 1699, + 1700, + 1701, + 1702, + 1703 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000016056013218014973, + "y": -0.00029592202674564254, + "z": 0.00008665742286099934 + }, + "angle": { + "x": -0.00011946878789930754, + "y": -0.000016933005574339735, + "z": -0.0000316415613415898 + } + }, + { + "id": "n284", + "parent": "11", + "degrees_of_freedom": [ + 1704, + 1705, + 1706, + 1707, + 1708, + 1709 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 2.857142857142857, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000006309596828643215, + "y": -0.00024300314173019474, + "z": 0.000040034699221945064 + }, + "angle": { + "x": -0.00006805229259113782, + "y": -0.00003525862130238873, + "z": -0.00002574489474586592 + } + }, + { + "id": "n285", + "parent": "11", + "degrees_of_freedom": [ + 1710, + 1711, + 1712, + 1713, + 1714, + 1715 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001455015798775472, + "y": -0.0001875165525972773, + "z": 0.00002575022830156431 + }, + "angle": { + "x": -0.00005689538597881, + "y": -0.00003063731246669033, + "z": -0.000016039599603709928 + } + }, + { + "id": "n286", + "parent": "11", + "degrees_of_freedom": [ + 1716, + 1717, + 1718, + 1719, + 1720, + 1721 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000024135154937984177, + "y": -0.00014666886113608334, + "z": 0.00011505785308699584 + }, + "angle": { + "x": 0.000006372803157911041, + "y": 0.00012210567136339365, + "z": -0.0000016555621888119539 + } + }, + { + "id": "n287", + "parent": "11", + "degrees_of_freedom": [ + 1722, + 1723, + 1724, + 1725, + 1726, + 1727 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": -2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002243803121390215, + "y": -0.00011001830568038454, + "z": 1.192322947261108e-10 + }, + "angle": { + "x": 0.00014637032283776346, + "y": -0.00021587797031547866, + "z": 0.000010460771943821983 + } + }, + { + "id": "n288", + "parent": "11", + "degrees_of_freedom": [ + 1728, + 1729, + 1730, + 1731, + 1732, + 1733 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": -2.857142857142857, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000025142254210945176, + "y": -0.0001371802773928798, + "z": 0.0003136514870890483 + }, + "angle": { + "x": -0.00026447078451436444, + "y": -0.000045702144945318386, + "z": -0.000026696435428618095 + } + }, + { + "id": "n289", + "parent": "11", + "degrees_of_freedom": [ + 1734, + 1735, + 1736, + 1737, + 1738, + 1739 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": -2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000011684400038958445, + "y": -0.00019392555343054923, + "z": 0.00018466431694267758 + }, + "angle": { + "x": 0.00004293888831047127, + "y": 0.00008163154800894918, + "z": -0.000018509383088119185 + } + }, + { + "id": "n290", + "parent": "11", + "degrees_of_freedom": [ + 1740, + 1741, + 1742, + 1743, + 1744, + 1745 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 6.336011827276576e-7, + "y": -0.00023005099809944403, + "z": 0.00020310183405763821 + }, + "angle": { + "x": -0.000004070538064140373, + "y": -0.00003185964789718911, + "z": -5.117559040890173e-7 + } + }, + { + "id": "n291", + "parent": "11", + "degrees_of_freedom": [ + 1746, + 1747, + 1748, + 1749, + 1750, + 1751 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000008816241575525404, + "y": -0.0002643673922658053, + "z": 0.00016821662437267894 + }, + "angle": { + "x": 0.000010879812179231977, + "y": -0.00006795342073647346, + "z": 0.000015971373174414587 + } + }, + { + "id": "n292", + "parent": "11", + "degrees_of_freedom": [ + 1752, + 1753, + 1754, + 1755, + 1756, + 1757 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006323839916615727, + "y": -0.0004937684431737894, + "z": 0.00008623044530021373 + }, + "angle": { + "x": 0.000022517455097408802, + "y": -0.000016491359994011616, + "z": 0.000005904256161775516 + } + }, + { + "id": "n293", + "parent": "11", + "degrees_of_freedom": [ + 1758, + 1759, + 1760, + 1761, + 1762, + 1763 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008140015576935698, + "y": -0.00048146402358873955, + "z": 0.00007933533185844625 + }, + "angle": { + "x": -0.000102793444344181, + "y": -0.000014765792367354315, + "z": -0.000038689055473417264 + } + }, + { + "id": "n294", + "parent": "11", + "degrees_of_freedom": [ + 1764, + 1765, + 1766, + 1767, + 1768, + 1769 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007865886903553092, + "y": -0.00030519036920227145, + "z": 0.00002611066514947959 + }, + "angle": { + "x": 0.0005666420705545394, + "y": -0.000016619129401030115, + "z": -0.00027091376382573954 + } + }, + { + "id": "n295", + "parent": "11", + "degrees_of_freedom": [ + 1770, + 1771, + 1772, + 1773, + 1774, + 1775 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006015531138062273, + "y": 0.0000930918979792301, + "z": 0.000018063808374805208 + }, + "angle": { + "x": 0.00002540047352249191, + "y": -0.00001734843941716958, + "z": -0.00007824174302496337 + } + }, + { + "id": "n296", + "parent": "11", + "degrees_of_freedom": [ + 1776, + 1777, + 1778, + 1779, + 1780, + 1781 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004058820875684951, + "y": -0.000402817097785739, + "z": 0.000025180395335908916 + }, + "angle": { + "x": -0.0007481013848553858, + "y": -0.000016600028415922932, + "z": -0.0003504016532796473 + } + }, + { + "id": "n297", + "parent": "11", + "degrees_of_freedom": [ + 1782, + 1783, + 1784, + 1785, + 1786, + 1787 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000044900128002908796, + "y": -0.0005735500522148406, + "z": 0.00007932765346117992 + }, + "angle": { + "x": -0.0004543264722131744, + "y": -0.000014995614028790763, + "z": 0.00017478324423513998 + } + }, + { + "id": "n298", + "parent": "11", + "degrees_of_freedom": [ + 1788, + 1789, + 1790, + 1791, + 1792, + 1793 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00021982768237303313, + "y": -0.0008425590830284763, + "z": 0.0004636514589937094 + }, + "angle": { + "x": 0.00010772451029709513, + "y": -0.00005242864125813524, + "z": -0.00003777942899818154 + } + }, + { + "id": "n299", + "parent": "11", + "degrees_of_freedom": [ + 1794, + 1795, + 1796, + 1797, + 1798, + 1799 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00023390960089840287, + "y": -0.0005864973226976212, + "z": 0.0002132593982088309 + }, + "angle": { + "x": 0.00002197492223300402, + "y": -0.0001254310237509191, + "z": -0.000008270260114853348 + } + }, + { + "id": "n300", + "parent": "11", + "degrees_of_freedom": [ + 1800, + 1801, + 1802, + 1803, + 1804, + 1805 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006310932705165364, + "y": -0.0005835689423512979, + "z": 0.00026573616533361933 + }, + "angle": { + "x": 0.000020588807362944058, + "y": -0.000049701092140507115, + "z": -0.0000167815917797065 + } + }, + { + "id": "n301", + "parent": "11", + "degrees_of_freedom": [ + 1806, + 1807, + 1808, + 1809, + 1810, + 1811 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00029381756628914246, + "y": -0.000592405330245218, + "z": 0.00025773580396867623 + }, + "angle": { + "x": 0.000022815625176954087, + "y": 0.00018182059055480465, + "z": -0.00007485252457663576 + } + }, + { + "id": "n302", + "parent": "11", + "degrees_of_freedom": [ + 1812, + 1813, + 1814, + 1815, + 1816, + 1817 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.020305089104422, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00031883361904270986, + "y": -0.0005880085608938011, + "z": 0.0002856829482679299 + }, + "angle": { + "x": 0.000006367103893204723, + "y": -0.0002640536387277058, + "z": 0.00008278861133544996 + } + }, + { + "id": "n303", + "parent": "11", + "degrees_of_freedom": [ + 1818, + 1819, + 1820, + 1821, + 1822, + 1823 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.857142857142858, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000379221549052502, + "y": -0.0006421476780053697, + "z": 0.00028990550040291726 + }, + "angle": { + "x": -0.000026923481397934122, + "y": 0.000038955663766405686, + "z": -0.00002434051618267696 + } + }, + { + "id": "n304", + "parent": "11", + "degrees_of_freedom": [ + 1824, + 1825, + 1826, + 1827, + 1828, + 1829 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.020305089104422, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00016143214702775223, + "y": -0.0006657971048075828, + "z": 0.00028049045798826335 + }, + "angle": { + "x": 0.00005162253764374955, + "y": -0.0002225330763838026, + "z": -0.00011678990569871546 + } + }, + { + "id": "n305", + "parent": "11", + "degrees_of_freedom": [ + 1830, + 1831, + 1832, + 1833, + 1834, + 1835 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007122301330940893, + "y": -0.0006244409767941992, + "z": 0.0002207908869975163 + }, + "angle": { + "x": 0.000022021320989507423, + "y": -0.00010391311628899123, + "z": -0.00007485088634251261 + } + }, + { + "id": "n306", + "parent": "11", + "degrees_of_freedom": [ + 1836, + 1837, + 1838, + 1839, + 1840, + 1841 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.979694910895579, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00019290305791068362, + "y": -0.0006220918605138521, + "z": 0.0001968827859885533 + }, + "angle": { + "x": 0.000004921931284680269, + "y": 0.00040613679076157534, + "z": -0.0002551813689521424 + } + }, + { + "id": "n307", + "parent": "11", + "degrees_of_freedom": [ + 1842, + 1843, + 1844, + 1845, + 1846, + 1847 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.142857142857142, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0008305645169097449, + "y": -0.0005889238043815715, + "z": 0.00019795412409186362 + }, + "angle": { + "x": -0.000019444489616720023, + "y": 0.00003895286872323883, + "z": -0.00012536288036261092 + } + }, + { + "id": "n308", + "parent": "11", + "degrees_of_freedom": [ + 1848, + 1849, + 1850, + 1851, + 1852, + 1853 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.979694910895578, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000035507463995657865, + "y": -0.0005664331988753517, + "z": 0.00020783895564607035 + }, + "angle": { + "x": 0.00003390649205731893, + "y": -0.0014552389953954566, + "z": -0.0006536400028329153 + } + }, + { + "id": "n309", + "parent": "11", + "degrees_of_freedom": [ + 1854, + 1855, + 1856, + 1857, + 1858, + 1859 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0003696984417771028, + "y": -0.0007057898553687936, + "z": 0.00026930538565038165 + }, + "angle": { + "x": -0.000032692278818780616, + "y": -0.00006672719240073753, + "z": -0.00006887601662928116 + } + }, + { + "id": "n310", + "parent": "11", + "degrees_of_freedom": [ + 1860, + 1861, + 1862, + 1863, + 1864, + 1865 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00005739193902993269, + "y": -0.0006118358199061613, + "z": 0.00021379166584202495 + }, + "angle": { + "x": 0.00004229847309850256, + "y": -0.00004613093875139562, + "z": -0.0000036978512227522026 + } + }, + { + "id": "n311", + "parent": "11", + "degrees_of_freedom": [ + 1866, + 1867, + 1868, + 1869, + 1870, + 1871 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 15, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019410110287317454, + "y": -0.0009527221489779404, + "z": 0.0003686807938145633 + }, + "angle": { + "x": -0.00003819749268361681, + "y": -0.00005356539137780728, + "z": 0.000003555227235018894 + } + }, + { + "id": "n312", + "parent": "11", + "degrees_of_freedom": [ + 1872, + 1873, + 1874, + 1875, + 1876, + 1877 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001375691342109606, + "y": -0.0008958673718657578, + "z": 0.00034338002619690473 + }, + "angle": { + "x": 0.0002001563661372329, + "y": -0.000054703617086452684, + "z": -0.00008071546297106829 + } + }, + { + "id": "n313", + "parent": "11", + "degrees_of_freedom": [ + 1878, + 1879, + 1880, + 1881, + 1882, + 1883 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009770208221706908, + "y": -0.0008723172023193636, + "z": 0.00024481737511903884 + }, + "angle": { + "x": 0.00023103846505445058, + "y": -0.00005666511035597421, + "z": -0.0000916341785317433 + } + }, + { + "id": "n314", + "parent": "11", + "degrees_of_freedom": [ + 1884, + 1885, + 1886, + 1887, + 1888, + 1889 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 15, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001397251658303673, + "y": -0.00046208332886393377, + "z": 0.00014439489885166264 + }, + "angle": { + "x": -0.0013518944240934316, + "y": -0.00005710610003933197, + "z": -0.0006512854803953567 + } + }, + { + "id": "n315", + "parent": "11", + "degrees_of_freedom": [ + 1890, + 1891, + 1892, + 1893, + 1894, + 1895 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 15, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018886450906078215, + "y": 0.0005283085417848397, + "z": 0.00011610649510709923 + }, + "angle": { + "x": -0.00003819771023250261, + "y": -0.000050595624380421354, + "z": -0.00018682346886082703 + } + }, + { + "id": "n316", + "parent": "11", + "degrees_of_freedom": [ + 1896, + 1897, + 1898, + 1899, + 1900, + 1901 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 15, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00024712830641943073, + "y": -0.0006164247427628716, + "z": 0.0001392495714456796 + }, + "angle": { + "x": 0.001759455724348646, + "y": -0.000061018771191792816, + "z": -0.0008223896729819549 + } + }, + { + "id": "n317", + "parent": "11", + "degrees_of_freedom": [ + 1902, + 1903, + 1904, + 1905, + 1906, + 1907 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00029325501053859514, + "y": -0.0010905877584625827, + "z": 0.00024262706421171906 + }, + "angle": { + "x": -0.00030743250872196685, + "y": -0.00005762378938212148, + "z": -0.00009163391751762409 + } + }, + { + "id": "n318", + "parent": "11", + "degrees_of_freedom": [ + 1908, + 1909, + 1910, + 1911, + 1912, + 1913 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00025347524327740074, + "y": -0.0010502080646226785, + "z": 0.00034390052685919555 + }, + "angle": { + "x": 0.0006377404902532854, + "y": -0.00005747813117675887, + "z": 0.00024253524712246932 + } + }, + { + "id": "n319", + "parent": "11", + "degrees_of_freedom": [ + 1914, + 1915, + 1916, + 1917, + 1918, + 1919 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 7.142857142857142, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018872052970337038, + "y": -0.0005129683640301875, + "z": 0.00007217466073161401 + }, + "angle": { + "x": -0.00001922670388416572, + "y": -0.00001272080220569545, + "z": 0.000001934906146705298 + } + }, + { + "id": "n320", + "parent": "11", + "degrees_of_freedom": [ + 1920, + 1921, + 1922, + 1923, + 1924, + 1925 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 7.979694910895579, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019900426145708715, + "y": -0.0005273005232182142, + "z": 0.00008178490665998356 + }, + "angle": { + "x": 0.00000910073338430604, + "y": -9.87161977589465e-7, + "z": -0.000021674385459252715 + } + }, + { + "id": "n321", + "parent": "11", + "degrees_of_freedom": [ + 1926, + 1927, + 1928, + 1929, + 1930, + 1931 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002279352161008015, + "y": -0.0005568944520036451, + "z": 0.00010099737552772076 + }, + "angle": { + "x": -0.000048970400103746196, + "y": -0.00014118349456647322, + "z": -0.000010609369311616007 + } + }, + { + "id": "n322", + "parent": "11", + "degrees_of_freedom": [ + 1932, + 1933, + 1934, + 1935, + 1936, + 1937 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 12.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00024169966297741478, + "y": -0.0005689374881300679, + "z": -0.00011608557154739894 + }, + "angle": { + "x": -0.00008575136639582953, + "y": -0.0000523868460096817, + "z": 7.828461038244516e-7 + } + }, + { + "id": "n323", + "parent": "11", + "degrees_of_freedom": [ + 1938, + 1939, + 1940, + 1941, + 1942, + 1943 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 12.857142857142858, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00024371134531625963, + "y": -0.0005784623235768173, + "z": -0.0002936822942970435 + }, + "angle": { + "x": -0.00042014493789460514, + "y": 0.00008612402354866064, + "z": 0.0000018736417924340922 + } + }, + { + "id": "n324", + "parent": "11", + "degrees_of_freedom": [ + 1944, + 1945, + 1946, + 1947, + 1948, + 1949 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 12.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00023108351478985222, + "y": -0.0005615727257279353, + "z": 0.00023190763036569874 + }, + "angle": { + "x": 0.0002627274895716885, + "y": 0.00036897890372930976, + "z": -0.000025297711909087906 + } + }, + { + "id": "n325", + "parent": "11", + "degrees_of_freedom": [ + 1950, + 1951, + 1952, + 1953, + 1954, + 1955 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002001463689799443, + "y": -0.0005326947098686783, + "z": 0.000009893676152043306 + }, + "angle": { + "x": 0.00004987425985293081, + "y": -0.00014489384910220188, + "z": -0.000009563542583414106 + } + }, + { + "id": "n326", + "parent": "11", + "degrees_of_freedom": [ + 1956, + 1957, + 1958, + 1959, + 1960, + 1961 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 7.979694910895579, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019013168378805289, + "y": -0.0005225712899394678, + "z": 0.000030385116697416807 + }, + "angle": { + "x": -0.0000019009937804021469, + "y": -0.000019897354037491113, + "z": 0.0000018008165871455892 + } + }, + { + "id": "n327", + "parent": "11", + "degrees_of_freedom": [ + 1962, + 1963, + 1964, + 1965, + 1966, + 1967 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 12.857142857142858, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005258677961774908, + "y": -0.0005607095424342407, + "z": 0.000017440773593062116 + }, + "angle": { + "x": -0.00008581213303580684, + "y": -0.00003271772045154993, + "z": -0.000007352557291733711 + } + }, + { + "id": "n328", + "parent": "11", + "degrees_of_freedom": [ + 1968, + 1969, + 1970, + 1971, + 1972, + 1973 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 12.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000032291040036215675, + "y": -0.0005353017584730209, + "z": 0.000024282851407918288 + }, + "angle": { + "x": 0.00008214737287328302, + "y": 0.00003853286016266602, + "z": -0.000019554421001687426 + } + }, + { + "id": "n329", + "parent": "11", + "degrees_of_freedom": [ + 1974, + 1975, + 1976, + 1977, + 1978, + 1979 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000014009338621416412, + "y": -0.0005000057563145988, + "z": -0.00010770782241373904 + }, + "angle": { + "x": 0.000010214051912592224, + "y": -0.0001320351650228213, + "z": -0.0000044774164331866635 + } + }, + { + "id": "n330", + "parent": "11", + "degrees_of_freedom": [ + 1980, + 1981, + 1982, + 1983, + 1984, + 1985 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 7.979694910895579, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000013936114523755166, + "y": -0.00047251696068645457, + "z": -0.00001871437239750452 + }, + "angle": { + "x": -0.00006592131430764266, + "y": 0.00005486591900509714, + "z": 0.000010101120253176527 + } + }, + { + "id": "n331", + "parent": "11", + "degrees_of_freedom": [ + 1986, + 1987, + 1988, + 1989, + 1990, + 1991 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 7.142857142857142, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000018741482707667443, + "y": -0.0004705368625686663, + "z": -0.00007540980025659504 + }, + "angle": { + "x": 0.00012585890577569044, + "y": -0.000023818472081412303, + "z": -0.000007033763133059795 + } + }, + { + "id": "n332", + "parent": "11", + "degrees_of_freedom": [ + 1992, + 1993, + 1994, + 1995, + 1996, + 1997 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 7.979694910895579, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003445526011673753, + "y": -0.0005002118392073703, + "z": 0.0000785418295830239 + }, + "angle": { + "x": -0.00005843680506987578, + "y": -0.0001009099578598612, + "z": -0.000022795198762793104 + } + }, + { + "id": "n333", + "parent": "11", + "degrees_of_freedom": [ + 1998, + 1999, + 2000, + 2001, + 2002, + 2003 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000567128322569365, + "y": -0.0005386420762971572, + "z": 0.000045161534940223164 + }, + "angle": { + "x": 0.000018787550888435006, + "y": 0.00008510557473888156, + "z": -0.0000061774407889593 + } + }, + { + "id": "n334", + "parent": "11", + "degrees_of_freedom": [ + 2004, + 2005, + 2006, + 2007, + 2008, + 2009 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 12.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006155148132966197, + "y": -0.000564191554589841, + "z": 0.0001542204150273641 + }, + "angle": { + "x": 0.00009831262532620251, + "y": -0.00010730530101929897, + "z": 0.000006399138825168652 + } + }, + { + "id": "n335", + "parent": "11", + "degrees_of_freedom": [ + 2010, + 2011, + 2012, + 2013, + 2014, + 2015 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000013563272616266169, + "y": -0.0002915804414212042, + "z": 0.0000886080726013408 + }, + "angle": { + "x": 0.000438835430669625, + "y": -0.000016371433619360954, + "z": 0.00016655453226170256 + } + }, + { + "id": "n336", + "parent": "11", + "degrees_of_freedom": [ + 2016, + 2017, + 2018, + 2019, + 2020, + 2021 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000015153131920358276, + "y": -0.0003904149842352231, + "z": 0.000037195188522696964 + }, + "angle": { + "x": -0.00026698364097351145, + "y": -0.000014708905740864355, + "z": 0.00012327123296233927 + } + }, + { + "id": "n337", + "parent": "11", + "degrees_of_freedom": [ + 2022, + 2023, + 2024, + 2025, + 2026, + 2027 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005979433136347713, + "y": -0.0005112816467795748, + "z": 0.00003819391052839749 + }, + "angle": { + "x": 0.0003825991323923151, + "y": -0.000013832763630020512, + "z": 0.00014100512729710096 + } + }, + { + "id": "n338", + "parent": "11", + "degrees_of_freedom": [ + 2028, + 2029, + 2030, + 2031, + 2032, + 2033 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00005553915727910518, + "y": -0.0008343481775937883, + "z": 0.00046060635564809833 + }, + "angle": { + "x": 0.00008295628966175865, + "y": -0.00007976081206447368, + "z": -0.000025830872453518052 + } + }, + { + "id": "n339", + "parent": "11", + "degrees_of_freedom": [ + 2034, + 2035, + 2036, + 2037, + 2038, + 2039 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000926703763026376, + "y": -0.0006300580215530268, + "z": 0.00032854634779007287 + }, + "angle": { + "x": -0.0000014257384461370828, + "y": -0.000056660621434342376, + "z": -0.00002576436357753169 + } + }, + { + "id": "n340", + "parent": "11", + "degrees_of_freedom": [ + 2040, + 2041, + 2042, + 2043, + 2044, + 2045 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00026154923892616745, + "y": -0.0006326612352275339, + "z": 0.0003031882369770373 + }, + "angle": { + "x": 0.00002360315237775791, + "y": 0.0001350817079176443, + "z": -0.000039262708003580186 + } + }, + { + "id": "n341", + "parent": "11", + "degrees_of_freedom": [ + 2046, + 2047, + 2048, + 2049, + 2050, + 2051 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.020305089104422, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002414400661003201, + "y": -0.000631223514089413, + "z": 0.00033098469045702694 + }, + "angle": { + "x": 0.000005667920458077522, + "y": -0.0005460645875085242, + "z": 0.000201558829282708 + } + }, + { + "id": "n342", + "parent": "11", + "degrees_of_freedom": [ + 2052, + 2053, + 2054, + 2055, + 2056, + 2057 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.857142857142858, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019289237245293986, + "y": -0.0006676445418333994, + "z": 0.00033328656583108036 + }, + "angle": { + "x": -0.00001718004950122717, + "y": 0.00006142584585258233, + "z": -0.000013221453902701847 + } + }, + { + "id": "n343", + "parent": "11", + "degrees_of_freedom": [ + 2058, + 2059, + 2060, + 2061, + 2062, + 2063 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.020305089104422, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000006757619227097944, + "y": -0.0006829806027256602, + "z": 0.0003226741021068476 + }, + "angle": { + "x": 0.00004374904165549116, + "y": -0.0004160276162515276, + "z": -0.0001820266671900749 + } + }, + { + "id": "n344", + "parent": "11", + "degrees_of_freedom": [ + 2064, + 2065, + 2066, + 2067, + 2068, + 2069 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000089455887642427, + "y": -0.0006411638171703244, + "z": 0.0002709114987600755 + }, + "angle": { + "x": 0.000021560779245926327, + "y": -0.000012230771771295687, + "z": -0.00003926335615478441 + } + }, + { + "id": "n345", + "parent": "11", + "degrees_of_freedom": [ + 2070, + 2071, + 2072, + 2073, + 2074, + 2075 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.979694910895579, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00019262448040632997, + "y": -0.0006373507030173685, + "z": 0.0002409788825350511 + }, + "angle": { + "x": 0.000011270990865487376, + "y": 0.000033560215371160194, + "z": -0.000055452439048437306 + } + }, + { + "id": "n346", + "parent": "11", + "degrees_of_freedom": [ + 2076, + 2077, + 2078, + 2079, + 2080, + 2081 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.142857142857142, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000441691993903247, + "y": -0.0006110124386712345, + "z": 0.00023702169097428367 + }, + "angle": { + "x": -0.00001125790612162448, + "y": 0.00006142673483862634, + "z": -0.00006530429167548948 + } + }, + { + "id": "n347", + "parent": "11", + "degrees_of_freedom": [ + 2082, + 2083, + 2084, + 2085, + 2086, + 2087 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.979694910895578, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000055575264462026675, + "y": -0.0006000847788014754, + "z": 0.000248183980743071 + }, + "angle": { + "x": 0.00004072968431446498, + "y": -0.000594956744057204, + "z": -0.00029737054195432547 + } + }, + { + "id": "n348", + "parent": "11", + "degrees_of_freedom": [ + 2088, + 2089, + 2090, + 2091, + 2092, + 2093 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00025128978879236993, + "y": -0.0007225181740969465, + "z": 0.00014469033345444407 + }, + "angle": { + "x": 0.00015054747698363893, + "y": -0.00004580943826988264, + "z": 0.0000661438161349453 + } + }, + { + "id": "n349", + "parent": "11", + "degrees_of_freedom": [ + 2094, + 2095, + 2096, + 2097, + 2098, + 2099 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010150467367387864, + "y": -0.0010906206965717246, + "z": 0.0003148820706398045 + }, + "angle": { + "x": 0.00003168577962652624, + "y": -0.000056802896443766646, + "z": -0.000046381574465745754 + } + }, + { + "id": "n350", + "parent": "11", + "degrees_of_freedom": [ + 2100, + 2101, + 2102, + 2103, + 2104, + 2105 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016713146513738767, + "y": -0.0008895997132790697, + "z": 0.00028929629928547566 + }, + "angle": { + "x": 0.0004316114644457834, + "y": -0.00006514098007095861, + "z": -0.0001877758512313394 + } + }, + { + "id": "n351", + "parent": "11", + "degrees_of_freedom": [ + 2106, + 2107, + 2108, + 2109, + 2110, + 2111 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002107932557133049, + "y": -0.0008063362328364339, + "z": 0.00018178473343684128 + }, + "angle": { + "x": 0.000014846404062505722, + "y": -0.00005732517763137583, + "z": -0.00004042658640811855 + } + }, + { + "id": "n352", + "parent": "11", + "degrees_of_freedom": [ + 2112, + 2113, + 2114, + 2115, + 2116, + 2117 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016895245192304517, + "y": -0.0006982246681992411, + "z": 0.00008566976479460176 + }, + "angle": { + "x": -0.0003775785718708231, + "y": -0.000052817150243088755, + "z": -0.0001791703243958961 + } + }, + { + "id": "n353", + "parent": "11", + "degrees_of_freedom": [ + 2118, + 2119, + 2120, + 2121, + 2122, + 2123 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011043337490300333, + "y": -0.00043721472540235164, + "z": 0.00006214260414898995 + }, + "angle": { + "x": 0.00003168925933665736, + "y": -0.000053805281770766994, + "z": -0.00003447322341230205 + } + }, + { + "id": "n354", + "parent": "11", + "degrees_of_freedom": [ + 2124, + 2125, + 2126, + 2127, + 2128, + 2129 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 15, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005178746352205838, + "y": -0.000570184468290334, + "z": 0.00008745067542340644 + }, + "angle": { + "x": 0.0002495909989107689, + "y": -0.0000555345319963373, + "z": -0.00011151409394866142 + } + }, + { + "id": "n355", + "parent": "11", + "degrees_of_freedom": [ + 2130, + 2131, + 2132, + 2133, + 2134, + 2135 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000006901918802754171, + "y": -0.0006252652505843585, + "z": 0.00018418825757339136 + }, + "angle": { + "x": 0.00004852822988311827, + "y": -0.00005582444238576844, + "z": -0.000040428545661617324 + } + }, + { + "id": "n356", + "parent": "11", + "degrees_of_freedom": [ + 2136, + 2137, + 2138, + 2139, + 2140, + 2141 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004510790314190789, + "y": -0.0007615665586761458, + "z": 0.00028559551606105975 + }, + "angle": { + "x": -0.00030870161221614446, + "y": -0.00005902082750788869, + "z": -0.00016672753302264488 + } + }, + { + "id": "n357", + "parent": "11", + "degrees_of_freedom": [ + 2142, + 2143, + 2144, + 2145, + 2146, + 2147 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 12.857142857142858, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012815404193969112, + "y": -0.0005775572710433536, + "z": 8.041043826487867e-7 + }, + "angle": { + "x": 0.00009415862641537765, + "y": 0.00006600360896159022, + "z": -0.00002019100443188693 + } + }, + { + "id": "n358", + "parent": "11", + "degrees_of_freedom": [ + 2148, + 2149, + 2150, + 2151, + 2152, + 2153 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 12.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000140162967181159, + "y": -0.000529541806396662, + "z": 0.00005535621521919992 + }, + "angle": { + "x": 0.00015015802440689855, + "y": 0.00008919955990626286, + "z": -0.000018733613425134122 + } + }, + { + "id": "n359", + "parent": "11", + "degrees_of_freedom": [ + 2154, + 2155, + 2156, + 2157, + 2158, + 2159 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015716905613392382, + "y": -0.0005066743360777502, + "z": -0.00017336333257565793 + }, + "angle": { + "x": 0.000023976394283489608, + "y": -0.00021543001142659902, + "z": -0.0000023785057370105207 + } + }, + { + "id": "n360", + "parent": "11", + "degrees_of_freedom": [ + 2160, + 2161, + 2162, + 2163, + 2164, + 2165 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 7.979694910895579, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001523330663820781, + "y": -0.0004908338240579463, + "z": -0.000041522775047176964 + }, + "angle": { + "x": -0.00011246185747767855, + "y": 0.0001139603441321396, + "z": 0.000009133335706607062 + } + }, + { + "id": "n361", + "parent": "11", + "degrees_of_freedom": [ + 2166, + 2167, + 2168, + 2169, + 2170, + 2171 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 7.142857142857142, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015480171266638588, + "y": -0.0005076103329206046, + "z": -0.000177645350252328 + }, + "angle": { + "x": 0.00028462197053148985, + "y": -0.00005051700297110626, + "z": -0.000019640170657686697 + } + }, + { + "id": "n362", + "parent": "11", + "degrees_of_freedom": [ + 2172, + 2173, + 2174, + 2175, + 2176, + 2177 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 7.979694910895579, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00014101260738733496, + "y": -0.0005562328792963974, + "z": 0.00016259715030019306 + }, + "angle": { + "x": -0.0004272739414570871, + "y": -0.0003453944662649244, + "z": -0.000021998802982897868 + } + }, + { + "id": "n363", + "parent": "11", + "degrees_of_freedom": [ + 2178, + 2179, + 2180, + 2181, + 2182, + 2183 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011858483213511409, + "y": -0.0005774502325725295, + "z": -0.0004115878776665822 + }, + "angle": { + "x": -0.00009254462564956888, + "y": 0.0004627142540293243, + "z": -0.000003083641335070576 + } + }, + { + "id": "n364", + "parent": "11", + "degrees_of_freedom": [ + 2184, + 2185, + 2186, + 2187, + 2188, + 2189 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 12.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012755409133607663, + "y": -0.0005923178849666901, + "z": -0.00021133896886671994 + }, + "angle": { + "x": 0.000067143949418082, + "y": 0.0000771937043773644, + "z": 0.000013941623935023956 + } + } + ], + "edges": [ + { + "id": "e0", + "source": 4, + "target": 5, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1", + "source": 5, + "target": 6, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e2", + "source": 6, + "target": 7, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e3", + "source": 7, + "target": 8, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e4", + "source": 8, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e5", + "source": 9, + "target": 10, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e6", + "source": 10, + "target": 11, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e7", + "source": 11, + "target": 4, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e8", + "source": 0, + "target": 5, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e9", + "source": 1, + "target": 7, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e10", + "source": 2, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e11", + "source": 3, + "target": 11, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e12", + "source": 15, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -683.8970947265625 + }, + { + "id": "e13", + "source": 16, + "target": 17, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 105.6108627319336 + }, + { + "id": "e14", + "source": 17, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 98.6527328491211 + }, + { + "id": "e15", + "source": 18, + "target": 19, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -629.5760498046875 + }, + { + "id": "e16", + "source": 19, + "target": 20, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -625.0575561523438 + }, + { + "id": "e17", + "source": 20, + "target": 21, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 132.16334533691406 + }, + { + "id": "e18", + "source": 21, + "target": 22, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 67.55087280273438 + }, + { + "id": "e19", + "source": 22, + "target": 15, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -685.223876953125 + }, + { + "id": "e20", + "source": 14, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -197.13565063476562 + }, + { + "id": "e21", + "source": 12, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -838.9027099609375 + }, + { + "id": "e22", + "source": 13, + "target": 20, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -84.65782928466797 + }, + { + "id": "e23", + "source": 0, + "target": 22, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -967.435546875 + }, + { + "id": "e24", + "source": 26, + "target": 27, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 18.836244583129883 + }, + { + "id": "e25", + "source": 27, + "target": 28, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 24.354644775390625 + }, + { + "id": "e26", + "source": 28, + "target": 29, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 5.572900772094727 + }, + { + "id": "e27", + "source": 29, + "target": 30, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.920949935913086 + }, + { + "id": "e28", + "source": 30, + "target": 31, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 40.412601470947266 + }, + { + "id": "e29", + "source": 31, + "target": 32, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -8.929038047790527 + }, + { + "id": "e30", + "source": 32, + "target": 33, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -24.86311912536621 + }, + { + "id": "e31", + "source": 33, + "target": 26, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -8.275777816772461 + }, + { + "id": "e32", + "source": 23, + "target": 31, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -39.58258056640625 + }, + { + "id": "e33", + "source": 24, + "target": 33, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 25.683189392089844 + }, + { + "id": "e34", + "source": 12, + "target": 27, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 13.213241577148438 + }, + { + "id": "e35", + "source": 25, + "target": 29, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 26.04380226135254 + }, + { + "id": "e36", + "source": 36, + "target": 37, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -365.19268798828125 + }, + { + "id": "e37", + "source": 37, + "target": 38, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.6243591308594 + }, + { + "id": "e38", + "source": 38, + "target": 39, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 380.9356384277344 + }, + { + "id": "e39", + "source": 39, + "target": 40, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -398.2510986328125 + }, + { + "id": "e40", + "source": 40, + "target": 41, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -318.9341735839844 + }, + { + "id": "e41", + "source": 41, + "target": 42, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -289.93817138671875 + }, + { + "id": "e42", + "source": 42, + "target": 43, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 353.33905029296875 + }, + { + "id": "e43", + "source": 43, + "target": 36, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -363.39178466796875 + }, + { + "id": "e44", + "source": 35, + "target": 41, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.26788330078125 + }, + { + "id": "e45", + "source": 2, + "target": 43, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -590.1436157226562 + }, + { + "id": "e46", + "source": 34, + "target": 37, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 121.2830810546875 + }, + { + "id": "e47", + "source": 23, + "target": 39, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -647.6807250976562 + }, + { + "id": "e48", + "source": 44, + "target": 45, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 129.20693969726562 + }, + { + "id": "e49", + "source": 45, + "target": 46, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -464.8337097167969 + }, + { + "id": "e50", + "source": 46, + "target": 47, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -474.7096862792969 + }, + { + "id": "e51", + "source": 47, + "target": 48, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -157.81338500976562 + }, + { + "id": "e52", + "source": 48, + "target": 49, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 104.35704803466797 + }, + { + "id": "e53", + "source": 49, + "target": 50, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.1309509277344 + }, + { + "id": "e54", + "source": 50, + "target": 51, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -360.2455139160156 + }, + { + "id": "e55", + "source": 51, + "target": 44, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -88.44442749023438 + }, + { + "id": "e56", + "source": 24, + "target": 49, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -609.9631958007812 + }, + { + "id": "e57", + "source": 34, + "target": 51, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 64.36186218261719 + }, + { + "id": "e58", + "source": 1, + "target": 45, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -661.3719482421875 + }, + { + "id": "e59", + "source": 13, + "target": 47, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 79.85576629638672 + }, + { + "id": "e60", + "source": 52, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 115.98975372314453 + }, + { + "id": "e61", + "source": 53, + "target": 54, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -691.7470092773438 + }, + { + "id": "e62", + "source": 54, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -691.4963989257812 + }, + { + "id": "e63", + "source": 55, + "target": 56, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 117.40184020996094 + }, + { + "id": "e64", + "source": 56, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 87.75657653808594 + }, + { + "id": "e65", + "source": 57, + "target": 58, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -732.7579345703125 + }, + { + "id": "e66", + "source": 58, + "target": 59, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -739.9907836914062 + }, + { + "id": "e67", + "source": 59, + "target": 52, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 84.66001892089844 + }, + { + "id": "e68", + "source": 14, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -265.9717712402344 + }, + { + "id": "e69", + "source": 3, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -835.5020141601562 + }, + { + "id": "e70", + "source": 35, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -76.7939453125 + }, + { + "id": "e71", + "source": 25, + "target": 59, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -998.4540405273438 + }, + { + "id": "e72", + "source": 63, + "target": 64, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e73", + "source": 64, + "target": 65, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e74", + "source": 65, + "target": 66, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e75", + "source": 66, + "target": 67, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e76", + "source": 67, + "target": 68, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e77", + "source": 68, + "target": 69, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e78", + "source": 69, + "target": 70, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e79", + "source": 70, + "target": 63, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e80", + "source": 60, + "target": 64, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e81", + "source": 3, + "target": 66, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e82", + "source": 61, + "target": 68, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e83", + "source": 62, + "target": 70, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e84", + "source": 73, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -642.4385986328125 + }, + { + "id": "e85", + "source": 74, + "target": 75, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 113.53675079345703 + }, + { + "id": "e86", + "source": 75, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 83.61561584472656 + }, + { + "id": "e87", + "source": 76, + "target": 77, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -680.6551513671875 + }, + { + "id": "e88", + "source": 77, + "target": 78, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -678.7459106445312 + }, + { + "id": "e89", + "source": 78, + "target": 79, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 78.28103637695312 + }, + { + "id": "e90", + "source": 79, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 121.17710876464844 + }, + { + "id": "e91", + "source": 80, + "target": 73, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -641.9943237304688 + }, + { + "id": "e92", + "source": 72, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -148.218017578125 + }, + { + "id": "e93", + "source": 71, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -934.7946166992188 + }, + { + "id": "e94", + "source": 14, + "target": 78, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -250.3297882080078 + }, + { + "id": "e95", + "source": 60, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -816.8279418945312 + }, + { + "id": "e96", + "source": 83, + "target": 84, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.78806686401367 + }, + { + "id": "e97", + "source": 84, + "target": 85, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -11.327420234680176 + }, + { + "id": "e98", + "source": 85, + "target": 86, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -20.911216735839844 + }, + { + "id": "e99", + "source": 86, + "target": 87, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 20.090715408325195 + }, + { + "id": "e100", + "source": 87, + "target": 88, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 20.635419845581055 + }, + { + "id": "e101", + "source": 88, + "target": 89, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -11.7901029586792 + }, + { + "id": "e102", + "source": 89, + "target": 90, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -19.63299560546875 + }, + { + "id": "e103", + "source": 90, + "target": 83, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 61.12857437133789 + }, + { + "id": "e104", + "source": 81, + "target": 88, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -26.437246322631836 + }, + { + "id": "e105", + "source": 25, + "target": 90, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 78.7957534790039 + }, + { + "id": "e106", + "source": 71, + "target": 84, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -37.69554901123047 + }, + { + "id": "e107", + "source": 82, + "target": 86, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.855224609375 + }, + { + "id": "e108", + "source": 92, + "target": 93, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.5005187988281 + }, + { + "id": "e109", + "source": 93, + "target": 94, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.89337158203125 + }, + { + "id": "e110", + "source": 94, + "target": 95, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 346.590576171875 + }, + { + "id": "e111", + "source": 95, + "target": 96, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -374.3785705566406 + }, + { + "id": "e112", + "source": 96, + "target": 97, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.2835693359375 + }, + { + "id": "e113", + "source": 97, + "target": 98, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -271.854736328125 + }, + { + "id": "e114", + "source": 98, + "target": 99, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 357.11248779296875 + }, + { + "id": "e115", + "source": 99, + "target": 92, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -381.4407043457031 + }, + { + "id": "e116", + "source": 91, + "target": 97, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 151.4596710205078 + }, + { + "id": "e117", + "source": 61, + "target": 99, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -613.4320678710938 + }, + { + "id": "e118", + "source": 35, + "target": 93, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.1664276123047 + }, + { + "id": "e119", + "source": 81, + "target": 95, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -596.155029296875 + }, + { + "id": "e120", + "source": 25, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -829.22705078125 + }, + { + "id": "e121", + "source": 35, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -83.43578338623047 + }, + { + "id": "e122", + "source": 3, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -951.3870239257812 + }, + { + "id": "e123", + "source": 14, + "target": 59, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -293.749267578125 + }, + { + "id": "e124", + "source": 100, + "target": 101, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -150.27471923828125 + }, + { + "id": "e125", + "source": 101, + "target": 102, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -454.78472900390625 + }, + { + "id": "e126", + "source": 102, + "target": 103, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -438.07476806640625 + }, + { + "id": "e127", + "source": 103, + "target": 104, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 88.30426025390625 + }, + { + "id": "e128", + "source": 104, + "target": 105, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -157.6273193359375 + }, + { + "id": "e129", + "source": 105, + "target": 106, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -404.20245361328125 + }, + { + "id": "e130", + "source": 106, + "target": 107, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -419.470458984375 + }, + { + "id": "e131", + "source": 107, + "target": 100, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 109.93907928466797 + }, + { + "id": "e132", + "source": 72, + "target": 105, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 22.272613525390625 + }, + { + "id": "e133", + "source": 62, + "target": 103, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -632.5978393554688 + }, + { + "id": "e134", + "source": 91, + "target": 101, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 80.37999725341797 + }, + { + "id": "e135", + "source": 82, + "target": 107, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -649.3018188476562 + }, + { + "id": "e136", + "source": 108, + "target": 109, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -18.13322639465332 + }, + { + "id": "e137", + "source": 109, + "target": 110, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 8.343754768371582 + }, + { + "id": "e138", + "source": 110, + "target": 111, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 13.481846809387207 + }, + { + "id": "e139", + "source": 111, + "target": 112, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -2.1225345134735107 + }, + { + "id": "e140", + "source": 112, + "target": 113, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -24.560470581054688 + }, + { + "id": "e141", + "source": 113, + "target": 114, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 9.795709609985352 + }, + { + "id": "e142", + "source": 114, + "target": 115, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 17.334232330322266 + }, + { + "id": "e143", + "source": 115, + "target": 108, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.5879020690918 + }, + { + "id": "e144", + "source": 12, + "target": 109, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 17.675823211669922 + }, + { + "id": "e145", + "source": 24, + "target": 111, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -20.73546028137207 + }, + { + "id": "e146", + "source": 23, + "target": 113, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.11745262145996 + }, + { + "id": "e147", + "source": 25, + "target": 115, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 5.405173301696777 + }, + { + "id": "e148", + "source": 119, + "target": 120, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.6686706542969 + }, + { + "id": "e149", + "source": 120, + "target": 121, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 54.48617172241211 + }, + { + "id": "e150", + "source": 121, + "target": 122, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 63.50155258178711 + }, + { + "id": "e151", + "source": 122, + "target": 123, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.41436767578125 + }, + { + "id": "e152", + "source": 123, + "target": 124, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.9856872558594 + }, + { + "id": "e153", + "source": 124, + "target": 125, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 52.1506233215332 + }, + { + "id": "e154", + "source": 125, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 16.987262725830078 + }, + { + "id": "e155", + "source": 126, + "target": 119, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.7958984375 + }, + { + "id": "e156", + "source": 118, + "target": 120, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -127.69976806640625 + }, + { + "id": "e157", + "source": 116, + "target": 122, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.4710693359375 + }, + { + "id": "e158", + "source": 117, + "target": 124, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -156.59744262695312 + }, + { + "id": "e159", + "source": 12, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -496.8753967285156 + }, + { + "id": "e160", + "source": 130, + "target": 131, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.349508285522461 + }, + { + "id": "e161", + "source": 131, + "target": 132, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 48.77996063232422 + }, + { + "id": "e162", + "source": 132, + "target": 133, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.640323638916016 + }, + { + "id": "e163", + "source": 133, + "target": 134, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 100.37359619140625 + }, + { + "id": "e164", + "source": 134, + "target": 135, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 22.31735610961914 + }, + { + "id": "e165", + "source": 135, + "target": 136, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -16.74869728088379 + }, + { + "id": "e166", + "source": 136, + "target": 137, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -35.53688049316406 + }, + { + "id": "e167", + "source": 137, + "target": 130, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -15.699508666992188 + }, + { + "id": "e168", + "source": 127, + "target": 135, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -40.52189636230469 + }, + { + "id": "e169", + "source": 128, + "target": 137, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 28.027423858642578 + }, + { + "id": "e170", + "source": 116, + "target": 131, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 59.17366409301758 + }, + { + "id": "e171", + "source": 129, + "target": 133, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 41.75249481201172 + }, + { + "id": "e172", + "source": 140, + "target": 141, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -107.33814239501953 + }, + { + "id": "e173", + "source": 141, + "target": 142, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -184.9296112060547 + }, + { + "id": "e174", + "source": 142, + "target": 143, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 207.02975463867188 + }, + { + "id": "e175", + "source": 143, + "target": 144, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -270.70465087890625 + }, + { + "id": "e176", + "source": 144, + "target": 145, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -222.12745666503906 + }, + { + "id": "e177", + "source": 145, + "target": 146, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -165.6575164794922 + }, + { + "id": "e178", + "source": 146, + "target": 147, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.33416748046875 + }, + { + "id": "e179", + "source": 147, + "target": 140, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -122.14234924316406 + }, + { + "id": "e180", + "source": 139, + "target": 145, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 119.96402740478516 + }, + { + "id": "e181", + "source": 23, + "target": 147, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -254.48568725585938 + }, + { + "id": "e182", + "source": 138, + "target": 141, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -18.490482330322266 + }, + { + "id": "e183", + "source": 127, + "target": 143, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -408.0523986816406 + }, + { + "id": "e184", + "source": 148, + "target": 149, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 65.25515747070312 + }, + { + "id": "e185", + "source": 149, + "target": 150, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -152.85841369628906 + }, + { + "id": "e186", + "source": 150, + "target": 151, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -146.07241821289062 + }, + { + "id": "e187", + "source": 151, + "target": 152, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -111.8702621459961 + }, + { + "id": "e188", + "source": 152, + "target": 153, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 70.0230712890625 + }, + { + "id": "e189", + "source": 153, + "target": 154, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -148.50238037109375 + }, + { + "id": "e190", + "source": 154, + "target": 155, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -151.45057678222656 + }, + { + "id": "e191", + "source": 155, + "target": 148, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -72.3721923828125 + }, + { + "id": "e192", + "source": 128, + "target": 153, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -316.1920471191406 + }, + { + "id": "e193", + "source": 138, + "target": 155, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -9.810335159301758 + }, + { + "id": "e194", + "source": 24, + "target": 149, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -285.55181884765625 + }, + { + "id": "e195", + "source": 117, + "target": 151, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -68.66216278076172 + }, + { + "id": "e196", + "source": 156, + "target": 157, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 139.38534545898438 + }, + { + "id": "e197", + "source": 157, + "target": 158, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -360.58099365234375 + }, + { + "id": "e198", + "source": 158, + "target": 159, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -382.43072509765625 + }, + { + "id": "e199", + "source": 159, + "target": 160, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 45.07111740112305 + }, + { + "id": "e200", + "source": 160, + "target": 161, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 49.55135726928711 + }, + { + "id": "e201", + "source": 161, + "target": 162, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -349.6963195800781 + }, + { + "id": "e202", + "source": 162, + "target": 163, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.61273193359375 + }, + { + "id": "e203", + "source": 163, + "target": 156, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 132.57156372070312 + }, + { + "id": "e204", + "source": 118, + "target": 161, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -64.72517395019531 + }, + { + "id": "e205", + "source": 25, + "target": 159, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -616.6204223632812 + }, + { + "id": "e206", + "source": 139, + "target": 157, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 119.34607696533203 + }, + { + "id": "e207", + "source": 129, + "target": 163, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -410.89849853515625 + }, + { + "id": "e208", + "source": 83, + "target": 164, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -40.654510498046875 + }, + { + "id": "e209", + "source": 164, + "target": 165, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.603172302246094 + }, + { + "id": "e210", + "source": 165, + "target": 166, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 33.58930206298828 + }, + { + "id": "e211", + "source": 166, + "target": 87, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -6.111968994140625 + }, + { + "id": "e212", + "source": 87, + "target": 167, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -20.194326400756836 + }, + { + "id": "e213", + "source": 167, + "target": 168, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 10.815901756286621 + }, + { + "id": "e214", + "source": 168, + "target": 169, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 14.730422019958496 + }, + { + "id": "e215", + "source": 169, + "target": 83, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -26.826324462890625 + }, + { + "id": "e216", + "source": 71, + "target": 164, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 63.69144821166992 + }, + { + "id": "e217", + "source": 25, + "target": 166, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -43.80432891845703 + }, + { + "id": "e218", + "source": 81, + "target": 167, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 24.81275177001953 + }, + { + "id": "e219", + "source": 82, + "target": 169, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -41.98529052734375 + }, + { + "id": "e220", + "source": 172, + "target": 173, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -300.7531433105469 + }, + { + "id": "e221", + "source": 173, + "target": 174, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 61.032859802246094 + }, + { + "id": "e222", + "source": 174, + "target": 175, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 42.957763671875 + }, + { + "id": "e223", + "source": 175, + "target": 176, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -352.7716064453125 + }, + { + "id": "e224", + "source": 176, + "target": 177, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.4854431152344 + }, + { + "id": "e225", + "source": 177, + "target": 178, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 40.320369720458984 + }, + { + "id": "e226", + "source": 178, + "target": 179, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 45.52549743652344 + }, + { + "id": "e227", + "source": 179, + "target": 172, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -298.476806640625 + }, + { + "id": "e228", + "source": 171, + "target": 173, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 22.385753631591797 + }, + { + "id": "e229", + "source": 170, + "target": 175, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -522.8112182617188 + }, + { + "id": "e230", + "source": 118, + "target": 177, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -96.76071166992188 + }, + { + "id": "e231", + "source": 71, + "target": 179, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -445.5112609863281 + }, + { + "id": "e232", + "source": 182, + "target": 183, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 2.8396291732788086 + }, + { + "id": "e233", + "source": 183, + "target": 184, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 36.21205139160156 + }, + { + "id": "e234", + "source": 184, + "target": 185, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 28.323617935180664 + }, + { + "id": "e235", + "source": 185, + "target": 186, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 21.754785537719727 + }, + { + "id": "e236", + "source": 186, + "target": 187, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -33.52614212036133 + }, + { + "id": "e237", + "source": 187, + "target": 188, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -22.639469146728516 + }, + { + "id": "e238", + "source": 188, + "target": 189, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -14.375818252563477 + }, + { + "id": "e239", + "source": 189, + "target": 182, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 123.75141906738281 + }, + { + "id": "e240", + "source": 180, + "target": 187, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -0.23980145156383514 + }, + { + "id": "e241", + "source": 129, + "target": 189, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 122.37199401855469 + }, + { + "id": "e242", + "source": 170, + "target": 183, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 21.65149688720703 + }, + { + "id": "e243", + "source": 181, + "target": 185, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -15.406469345092773 + }, + { + "id": "e244", + "source": 191, + "target": 192, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -81.59461212158203 + }, + { + "id": "e245", + "source": 192, + "target": 193, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -325.6325378417969 + }, + { + "id": "e246", + "source": 193, + "target": 194, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 253.35145568847656 + }, + { + "id": "e247", + "source": 194, + "target": 195, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -208.17132568359375 + }, + { + "id": "e248", + "source": 195, + "target": 196, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -159.3865203857422 + }, + { + "id": "e249", + "source": 196, + "target": 197, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -174.79769897460938 + }, + { + "id": "e250", + "source": 197, + "target": 198, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 247.64578247070312 + }, + { + "id": "e251", + "source": 198, + "target": 191, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -54.33344650268555 + }, + { + "id": "e252", + "source": 190, + "target": 196, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 47.40586471557617 + }, + { + "id": "e253", + "source": 81, + "target": 198, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -217.5641326904297 + }, + { + "id": "e254", + "source": 139, + "target": 192, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -156.5802459716797 + }, + { + "id": "e255", + "source": 180, + "target": 194, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -367.76995849609375 + }, + { + "id": "e256", + "source": 129, + "target": 157, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -305.0148010253906 + }, + { + "id": "e257", + "source": 139, + "target": 159, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -215.71168518066406 + }, + { + "id": "e258", + "source": 25, + "target": 161, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -422.9566345214844 + }, + { + "id": "e259", + "source": 118, + "target": 163, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 11.760034561157227 + }, + { + "id": "e260", + "source": 199, + "target": 200, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -84.07488250732422 + }, + { + "id": "e261", + "source": 200, + "target": 201, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -228.0519256591797 + }, + { + "id": "e262", + "source": 201, + "target": 202, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -221.2877960205078 + }, + { + "id": "e263", + "source": 202, + "target": 203, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 96.74401092529297 + }, + { + "id": "e264", + "source": 203, + "target": 204, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.377857208251953 + }, + { + "id": "e265", + "source": 204, + "target": 205, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -177.33462524414062 + }, + { + "id": "e266", + "source": 205, + "target": 206, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -195.2552490234375 + }, + { + "id": "e267", + "source": 206, + "target": 199, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 67.73583984375 + }, + { + "id": "e268", + "source": 171, + "target": 204, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 51.562347412109375 + }, + { + "id": "e269", + "source": 82, + "target": 202, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -339.9481506347656 + }, + { + "id": "e270", + "source": 190, + "target": 200, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 25.15617561340332 + }, + { + "id": "e271", + "source": 181, + "target": 206, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -339.2471618652344 + }, + { + "id": "e272", + "source": 210, + "target": 211, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e273", + "source": 211, + "target": 212, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e274", + "source": 212, + "target": 213, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e275", + "source": 213, + "target": 214, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e276", + "source": 214, + "target": 215, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e277", + "source": 215, + "target": 216, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e278", + "source": 216, + "target": 217, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e279", + "source": 217, + "target": 210, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e280", + "source": 207, + "target": 211, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e281", + "source": 208, + "target": 213, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e282", + "source": 0, + "target": 215, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e283", + "source": 209, + "target": 217, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e284", + "source": 221, + "target": 222, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -379.5357971191406 + }, + { + "id": "e285", + "source": 222, + "target": 223, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -363.7379455566406 + }, + { + "id": "e286", + "source": 223, + "target": 224, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 354.908935546875 + }, + { + "id": "e287", + "source": 224, + "target": 225, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -374.47161865234375 + }, + { + "id": "e288", + "source": 225, + "target": 226, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.3236389160156 + }, + { + "id": "e289", + "source": 226, + "target": 227, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.84637451171875 + }, + { + "id": "e290", + "source": 227, + "target": 228, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 361.7596740722656 + }, + { + "id": "e291", + "source": 228, + "target": 221, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.3106384277344 + }, + { + "id": "e292", + "source": 220, + "target": 222, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 150.5622100830078 + }, + { + "id": "e293", + "source": 218, + "target": 224, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -601.8848266601562 + }, + { + "id": "e294", + "source": 219, + "target": 226, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 148.0801544189453 + }, + { + "id": "e295", + "source": 207, + "target": 228, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -616.431396484375 + }, + { + "id": "e296", + "source": 231, + "target": 232, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 11.488876342773438 + }, + { + "id": "e297", + "source": 232, + "target": 233, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -8.835111618041992 + }, + { + "id": "e298", + "source": 233, + "target": 234, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -38.19938278198242 + }, + { + "id": "e299", + "source": 234, + "target": 235, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 26.393333435058594 + }, + { + "id": "e300", + "source": 235, + "target": 236, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 25.960920333862305 + }, + { + "id": "e301", + "source": 236, + "target": 237, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -18.516977310180664 + }, + { + "id": "e302", + "source": 237, + "target": 238, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -25.768875122070312 + }, + { + "id": "e303", + "source": 238, + "target": 231, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -3.2382025718688965 + }, + { + "id": "e304", + "source": 12, + "target": 236, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -40.0418701171875 + }, + { + "id": "e305", + "source": 229, + "target": 238, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 31.44540023803711 + }, + { + "id": "e306", + "source": 218, + "target": 232, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -16.794679641723633 + }, + { + "id": "e307", + "source": 230, + "target": 234, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 74.6744155883789 + }, + { + "id": "e308", + "source": 14, + "target": 22, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -271.536865234375 + }, + { + "id": "e309", + "source": 0, + "target": 20, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -787.7252807617188 + }, + { + "id": "e310", + "source": 13, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -161.51025390625 + }, + { + "id": "e311", + "source": 12, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -926.3644409179688 + }, + { + "id": "e312", + "source": 239, + "target": 240, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 101.1339340209961 + }, + { + "id": "e313", + "source": 240, + "target": 241, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -444.9188232421875 + }, + { + "id": "e314", + "source": 241, + "target": 242, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -469.526123046875 + }, + { + "id": "e315", + "source": 242, + "target": 243, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -165.49822998046875 + }, + { + "id": "e316", + "source": 243, + "target": 244, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 106.10426330566406 + }, + { + "id": "e317", + "source": 244, + "target": 245, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -415.1367492675781 + }, + { + "id": "e318", + "source": 245, + "target": 246, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -414.27850341796875 + }, + { + "id": "e319", + "source": 246, + "target": 239, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -148.93556213378906 + }, + { + "id": "e320", + "source": 229, + "target": 244, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -647.836181640625 + }, + { + "id": "e321", + "source": 13, + "target": 246, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 46.20643615722656 + }, + { + "id": "e322", + "source": 208, + "target": 240, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -647.4869995117188 + }, + { + "id": "e323", + "source": 219, + "target": 242, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 78.58914184570312 + }, + { + "id": "e324", + "source": 247, + "target": 248, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 91.37837982177734 + }, + { + "id": "e325", + "source": 248, + "target": 249, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -721.841796875 + }, + { + "id": "e326", + "source": 249, + "target": 250, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -721.7852783203125 + }, + { + "id": "e327", + "source": 250, + "target": 251, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 78.97736358642578 + }, + { + "id": "e328", + "source": 251, + "target": 252, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 114.9014892578125 + }, + { + "id": "e329", + "source": 252, + "target": 253, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -681.6528930664062 + }, + { + "id": "e330", + "source": 253, + "target": 254, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -684.2957153320312 + }, + { + "id": "e331", + "source": 254, + "target": 247, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 116.70288848876953 + }, + { + "id": "e332", + "source": 220, + "target": 252, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -76.85071563720703 + }, + { + "id": "e333", + "source": 209, + "target": 250, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -957.3399658203125 + }, + { + "id": "e334", + "source": 14, + "target": 248, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -256.59307861328125 + }, + { + "id": "e335", + "source": 230, + "target": 254, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -824.5122680664062 + }, + { + "id": "e336", + "source": 257, + "target": 258, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e337", + "source": 258, + "target": 259, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e338", + "source": 259, + "target": 260, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e339", + "source": 260, + "target": 261, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e340", + "source": 261, + "target": 262, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e341", + "source": 262, + "target": 263, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e342", + "source": 263, + "target": 264, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e343", + "source": 264, + "target": 257, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e344", + "source": 255, + "target": 258, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e345", + "source": 209, + "target": 260, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e346", + "source": 60, + "target": 262, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e347", + "source": 256, + "target": 264, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e348", + "source": 267, + "target": 268, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.8462219238281 + }, + { + "id": "e349", + "source": 268, + "target": 269, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -380.4017028808594 + }, + { + "id": "e350", + "source": 269, + "target": 270, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 376.48565673828125 + }, + { + "id": "e351", + "source": 270, + "target": 271, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -387.8819885253906 + }, + { + "id": "e352", + "source": 271, + "target": 272, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -337.42230224609375 + }, + { + "id": "e353", + "source": 272, + "target": 273, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -314.2042541503906 + }, + { + "id": "e354", + "source": 273, + "target": 274, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 356.0474853515625 + }, + { + "id": "e355", + "source": 274, + "target": 267, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -359.2254638671875 + }, + { + "id": "e356", + "source": 266, + "target": 268, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 119.95128631591797 + }, + { + "id": "e357", + "source": 265, + "target": 270, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -630.15869140625 + }, + { + "id": "e358", + "source": 220, + "target": 272, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 138.3066864013672 + }, + { + "id": "e359", + "source": 255, + "target": 274, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -585.5248413085938 + }, + { + "id": "e360", + "source": 276, + "target": 277, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 30.092103958129883 + }, + { + "id": "e361", + "source": 277, + "target": 278, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 4.878715991973877 + }, + { + "id": "e362", + "source": 278, + "target": 279, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -23.97568702697754 + }, + { + "id": "e363", + "source": 279, + "target": 280, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -5.95273494720459 + }, + { + "id": "e364", + "source": 280, + "target": 281, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 19.83657455444336 + }, + { + "id": "e365", + "source": 281, + "target": 282, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.92557144165039 + }, + { + "id": "e366", + "source": 282, + "target": 283, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -14.803643226623535 + }, + { + "id": "e367", + "source": 283, + "target": 276, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 13.834304809570312 + }, + { + "id": "e368", + "source": 71, + "target": 281, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 24.400117874145508 + }, + { + "id": "e369", + "source": 230, + "target": 283, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 38.95952224731445 + }, + { + "id": "e370", + "source": 265, + "target": 277, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -45.005184173583984 + }, + { + "id": "e371", + "source": 275, + "target": 279, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.05881690979004 + }, + { + "id": "e372", + "source": 72, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -106.73612976074219 + }, + { + "id": "e373", + "source": 60, + "target": 78, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -949.1776123046875 + }, + { + "id": "e374", + "source": 14, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -227.2364044189453 + }, + { + "id": "e375", + "source": 71, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -848.2238159179688 + }, + { + "id": "e376", + "source": 230, + "target": 248, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -950.08251953125 + }, + { + "id": "e377", + "source": 14, + "target": 250, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -288.5706481933594 + }, + { + "id": "e378", + "source": 209, + "target": 252, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -822.6801147460938 + }, + { + "id": "e379", + "source": 220, + "target": 254, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -82.58639526367188 + }, + { + "id": "e380", + "source": 284, + "target": 285, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -186.8586883544922 + }, + { + "id": "e381", + "source": 285, + "target": 286, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -467.4075622558594 + }, + { + "id": "e382", + "source": 286, + "target": 287, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -455.621826171875 + }, + { + "id": "e383", + "source": 287, + "target": 288, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 108.3253402709961 + }, + { + "id": "e384", + "source": 288, + "target": 289, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -127.33971405029297 + }, + { + "id": "e385", + "source": 289, + "target": 290, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.2066955566406 + }, + { + "id": "e386", + "source": 290, + "target": 291, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.3354187011719 + }, + { + "id": "e387", + "source": 291, + "target": 284, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 80.39151000976562 + }, + { + "id": "e388", + "source": 266, + "target": 289, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 63.65214920043945 + }, + { + "id": "e389", + "source": 256, + "target": 287, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -653.899658203125 + }, + { + "id": "e390", + "source": 72, + "target": 285, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 49.43547821044922 + }, + { + "id": "e391", + "source": 275, + "target": 291, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -599.6450805664062 + }, + { + "id": "e392", + "source": 292, + "target": 293, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -7.956309795379639 + }, + { + "id": "e393", + "source": 293, + "target": 237, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 10.838164329528809 + }, + { + "id": "e394", + "source": 237, + "target": 294, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 22.11851692199707 + }, + { + "id": "e395", + "source": 294, + "target": 295, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -4.847172260284424 + }, + { + "id": "e396", + "source": 295, + "target": 296, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.52723503112793 + }, + { + "id": "e397", + "source": 296, + "target": 233, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.933837890625 + }, + { + "id": "e398", + "source": 233, + "target": 297, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 30.398645401000977 + }, + { + "id": "e399", + "source": 297, + "target": 292, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 8.785649299621582 + }, + { + "id": "e400", + "source": 218, + "target": 293, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 16.329233169555664 + }, + { + "id": "e401", + "source": 229, + "target": 294, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -33.421669006347656 + }, + { + "id": "e402", + "source": 12, + "target": 296, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 55.43294143676758 + }, + { + "id": "e403", + "source": 230, + "target": 297, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -29.986675262451172 + }, + { + "id": "e404", + "source": 301, + "target": 302, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -90.99510192871094 + }, + { + "id": "e405", + "source": 302, + "target": 303, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -337.74969482421875 + }, + { + "id": "e406", + "source": 303, + "target": 304, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 243.49136352539062 + }, + { + "id": "e407", + "source": 304, + "target": 305, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -210.75062561035156 + }, + { + "id": "e408", + "source": 305, + "target": 306, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -155.2915802001953 + }, + { + "id": "e409", + "source": 306, + "target": 307, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -160.5540008544922 + }, + { + "id": "e410", + "source": 307, + "target": 308, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 243.36219787597656 + }, + { + "id": "e411", + "source": 308, + "target": 301, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -67.22836303710938 + }, + { + "id": "e412", + "source": 300, + "target": 302, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -158.34149169921875 + }, + { + "id": "e413", + "source": 298, + "target": 304, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.6226806640625 + }, + { + "id": "e414", + "source": 299, + "target": 306, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 53.505008697509766 + }, + { + "id": "e415", + "source": 218, + "target": 308, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -228.873291015625 + }, + { + "id": "e416", + "source": 311, + "target": 312, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -23.88490104675293 + }, + { + "id": "e417", + "source": 312, + "target": 313, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.154267311096191 + }, + { + "id": "e418", + "source": 313, + "target": 314, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -5.408549785614014 + }, + { + "id": "e419", + "source": 314, + "target": 315, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 100.5632553100586 + }, + { + "id": "e420", + "source": 315, + "target": 316, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 12.555134773254395 + }, + { + "id": "e421", + "source": 316, + "target": 317, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 41.906280517578125 + }, + { + "id": "e422", + "source": 317, + "target": 318, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.49233627319336 + }, + { + "id": "e423", + "source": 318, + "target": 311, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 2.366889476776123 + }, + { + "id": "e424", + "source": 116, + "target": 316, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 23.234851837158203 + }, + { + "id": "e425", + "source": 309, + "target": 318, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -29.017009735107422 + }, + { + "id": "e426", + "source": 298, + "target": 312, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 4.908137798309326 + }, + { + "id": "e427", + "source": 310, + "target": 314, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 93.61642456054688 + }, + { + "id": "e428", + "source": 118, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -143.440673828125 + }, + { + "id": "e429", + "source": 12, + "target": 124, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -495.1224060058594 + }, + { + "id": "e430", + "source": 117, + "target": 122, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 28.55353546142578 + }, + { + "id": "e431", + "source": 116, + "target": 120, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -495.8460388183594 + }, + { + "id": "e432", + "source": 319, + "target": 320, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 55.09866714477539 + }, + { + "id": "e433", + "source": 320, + "target": 321, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -223.2047119140625 + }, + { + "id": "e434", + "source": 321, + "target": 322, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -224.90484619140625 + }, + { + "id": "e435", + "source": 322, + "target": 323, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -75.50251007080078 + }, + { + "id": "e436", + "source": 323, + "target": 324, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 71.38279724121094 + }, + { + "id": "e437", + "source": 324, + "target": 325, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.59844970703125 + }, + { + "id": "e438", + "source": 325, + "target": 326, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -180.88816833496094 + }, + { + "id": "e439", + "source": 326, + "target": 319, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -68.30120849609375 + }, + { + "id": "e440", + "source": 309, + "target": 324, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -346.4721374511719 + }, + { + "id": "e441", + "source": 117, + "target": 326, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -4.180245876312256 + }, + { + "id": "e442", + "source": 229, + "target": 320, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.91571044921875 + }, + { + "id": "e443", + "source": 299, + "target": 322, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 28.38861083984375 + }, + { + "id": "e444", + "source": 327, + "target": 328, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 123.849853515625 + }, + { + "id": "e445", + "source": 328, + "target": 329, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -351.3841552734375 + }, + { + "id": "e446", + "source": 329, + "target": 330, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.7939758300781 + }, + { + "id": "e447", + "source": 330, + "target": 331, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 50.51061248779297 + }, + { + "id": "e448", + "source": 331, + "target": 332, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.37242126464844 + }, + { + "id": "e449", + "source": 332, + "target": 333, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -370.2357177734375 + }, + { + "id": "e450", + "source": 333, + "target": 334, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -349.23284912109375 + }, + { + "id": "e451", + "source": 334, + "target": 327, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 131.90460205078125 + }, + { + "id": "e452", + "source": 300, + "target": 332, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -192.18772888183594 + }, + { + "id": "e453", + "source": 230, + "target": 330, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -435.3322448730469 + }, + { + "id": "e454", + "source": 118, + "target": 328, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 5.233553409576416 + }, + { + "id": "e455", + "source": 310, + "target": 334, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.1659851074219 + }, + { + "id": "e456", + "source": 276, + "target": 335, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -23.976234436035156 + }, + { + "id": "e457", + "source": 335, + "target": 282, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.03182601928711 + }, + { + "id": "e458", + "source": 282, + "target": 336, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 8.734492301940918 + }, + { + "id": "e459", + "source": 336, + "target": 280, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 39.4581413269043 + }, + { + "id": "e460", + "source": 280, + "target": 337, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -24.541135787963867 + }, + { + "id": "e461", + "source": 337, + "target": 278, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 10.863116264343262 + }, + { + "id": "e462", + "source": 265, + "target": 335, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 45.36952209472656 + }, + { + "id": "e463", + "source": 230, + "target": 336, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 20.227602005004883 + }, + { + "id": "e464", + "source": 71, + "target": 337, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 24.931440353393555 + }, + { + "id": "e465", + "source": 275, + "target": 277, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -35.50371551513672 + }, + { + "id": "e466", + "source": 340, + "target": 341, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -127.70823669433594 + }, + { + "id": "e467", + "source": 341, + "target": 342, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.38587951660156 + }, + { + "id": "e468", + "source": 342, + "target": 343, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 215.023193359375 + }, + { + "id": "e469", + "source": 343, + "target": 344, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -258.2576904296875 + }, + { + "id": "e470", + "source": 344, + "target": 345, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -205.4753875732422 + }, + { + "id": "e471", + "source": 345, + "target": 346, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -188.43162536621094 + }, + { + "id": "e472", + "source": 346, + "target": 347, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.8480987548828 + }, + { + "id": "e473", + "source": 347, + "target": 340, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -124.12234497070312 + }, + { + "id": "e474", + "source": 339, + "target": 341, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -22.26812744140625 + }, + { + "id": "e475", + "source": 338, + "target": 343, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -398.9844665527344 + }, + { + "id": "e476", + "source": 300, + "target": 345, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 80.75470733642578 + }, + { + "id": "e477", + "source": 265, + "target": 347, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -250.91006469726562 + }, + { + "id": "e478", + "source": 349, + "target": 350, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 20.250722885131836 + }, + { + "id": "e479", + "source": 350, + "target": 351, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -11.039097785949707 + }, + { + "id": "e480", + "source": 351, + "target": 352, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -25.712970733642578 + }, + { + "id": "e481", + "source": 352, + "target": 353, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -9.027311325073242 + }, + { + "id": "e482", + "source": 353, + "target": 354, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.879143714904785 + }, + { + "id": "e483", + "source": 354, + "target": 355, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 61.034942626953125 + }, + { + "id": "e484", + "source": 355, + "target": 356, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 48.1417350769043 + }, + { + "id": "e485", + "source": 356, + "target": 349, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 75.11280822753906 + }, + { + "id": "e486", + "source": 170, + "target": 354, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 72.00106811523438 + }, + { + "id": "e487", + "source": 310, + "target": 356, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 15.908750534057617 + }, + { + "id": "e488", + "source": 338, + "target": 350, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -31.451765060424805 + }, + { + "id": "e489", + "source": 348, + "target": 352, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 22.029170989990234 + }, + { + "id": "e490", + "source": 171, + "target": 179, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -134.580078125 + }, + { + "id": "e491", + "source": 71, + "target": 177, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -473.37933349609375 + }, + { + "id": "e492", + "source": 118, + "target": 175, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -163.83091735839844 + }, + { + "id": "e493", + "source": 170, + "target": 173, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -323.9991149902344 + }, + { + "id": "e494", + "source": 310, + "target": 328, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -410.49468994140625 + }, + { + "id": "e495", + "source": 118, + "target": 330, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -75.80782318115234 + }, + { + "id": "e496", + "source": 230, + "target": 332, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -576.5220336914062 + }, + { + "id": "e497", + "source": 300, + "target": 334, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 101.36441040039062 + }, + { + "id": "e498", + "source": 357, + "target": 358, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -99.87251281738281 + }, + { + "id": "e499", + "source": 358, + "target": 359, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -200.55479431152344 + }, + { + "id": "e500", + "source": 359, + "target": 360, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -175.38339233398438 + }, + { + "id": "e501", + "source": 360, + "target": 361, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 56.78757858276367 + }, + { + "id": "e502", + "source": 361, + "target": 362, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -80.49701690673828 + }, + { + "id": "e503", + "source": 362, + "target": 363, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -151.17507934570312 + }, + { + "id": "e504", + "source": 363, + "target": 364, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -141.35418701171875 + }, + { + "id": "e505", + "source": 364, + "target": 357, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 85.09773254394531 + }, + { + "id": "e506", + "source": 339, + "target": 362, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -11.815085411071777 + }, + { + "id": "e507", + "source": 275, + "target": 360, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -291.2039794921875 + }, + { + "id": "e508", + "source": 171, + "target": 358, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -0.8444892168045044 + }, + { + "id": "e509", + "source": 348, + "target": 364, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -319.3772277832031 + } + ], + "ndofs": 2190, + "animation": { + "showDisplacement": true, + "exageration": 2000, + "speed": 3 + }, + "viz": { + "minStress": -1098.2994445800782, + "maxStress": 419.0292022705078, + "colorMaps": [ + [ + [ + 0, + [ + 0.23, + 0.299, + 0.754 + ] + ], + [ + 0.002, + [ + 0.23, + 0.299, + 0.754 + ] + ], + [ + 0.004, + [ + 0.234, + 0.306, + 0.76 + ] + ], + [ + 0.006, + [ + 0.234, + 0.306, + 0.76 + ] + ], + [ + 0.008, + [ + 0.239, + 0.312, + 0.766 + ] + ], + [ + 0.01, + [ + 0.239, + 0.312, + 0.766 + ] + ], + [ + 0.012, + [ + 0.244, + 0.319, + 0.772 + ] + ], + [ + 0.014, + [ + 0.244, + 0.319, + 0.772 + ] + ], + [ + 0.016, + [ + 0.248, + 0.326, + 0.778 + ] + ], + [ + 0.018, + [ + 0.248, + 0.326, + 0.778 + ] + ], + [ + 0.02, + [ + 0.253, + 0.333, + 0.784 + ] + ], + [ + 0.022, + [ + 0.253, + 0.333, + 0.784 + ] + ], + [ + 0.023, + [ + 0.257, + 0.34, + 0.79 + ] + ], + [ + 0.025, + [ + 0.257, + 0.34, + 0.79 + ] + ], + [ + 0.027, + [ + 0.262, + 0.346, + 0.796 + ] + ], + [ + 0.029, + [ + 0.262, + 0.346, + 0.796 + ] + ], + [ + 0.031, + [ + 0.266, + 0.353, + 0.802 + ] + ], + [ + 0.033, + [ + 0.266, + 0.353, + 0.802 + ] + ], + [ + 0.035, + [ + 0.271, + 0.36, + 0.807 + ] + ], + [ + 0.037, + [ + 0.271, + 0.36, + 0.807 + ] + ], + [ + 0.039, + [ + 0.276, + 0.367, + 0.813 + ] + ], + [ + 0.041, + [ + 0.276, + 0.367, + 0.813 + ] + ], + [ + 0.043, + [ + 0.281, + 0.373, + 0.818 + ] + ], + [ + 0.045, + [ + 0.281, + 0.373, + 0.818 + ] + ], + [ + 0.047, + [ + 0.285, + 0.38, + 0.823 + ] + ], + [ + 0.049, + [ + 0.285, + 0.38, + 0.823 + ] + ], + [ + 0.051, + [ + 0.29, + 0.387, + 0.829 + ] + ], + [ + 0.053, + [ + 0.29, + 0.387, + 0.829 + ] + ], + [ + 0.055, + [ + 0.295, + 0.394, + 0.834 + ] + ], + [ + 0.057, + [ + 0.295, + 0.394, + 0.834 + ] + ], + [ + 0.059, + [ + 0.299, + 0.4, + 0.84 + ] + ], + [ + 0.061, + [ + 0.299, + 0.4, + 0.84 + ] + ], + [ + 0.063, + [ + 0.304, + 0.407, + 0.845 + ] + ], + [ + 0.065, + [ + 0.304, + 0.407, + 0.845 + ] + ], + [ + 0.067, + [ + 0.309, + 0.413, + 0.85 + ] + ], + [ + 0.068, + [ + 0.309, + 0.413, + 0.85 + ] + ], + [ + 0.07, + [ + 0.314, + 0.42, + 0.855 + ] + ], + [ + 0.072, + [ + 0.314, + 0.42, + 0.855 + ] + ], + [ + 0.074, + [ + 0.319, + 0.427, + 0.86 + ] + ], + [ + 0.076, + [ + 0.319, + 0.427, + 0.86 + ] + ], + [ + 0.078, + [ + 0.324, + 0.433, + 0.865 + ] + ], + [ + 0.08, + [ + 0.324, + 0.433, + 0.865 + ] + ], + [ + 0.082, + [ + 0.329, + 0.44, + 0.87 + ] + ], + [ + 0.084, + [ + 0.329, + 0.44, + 0.87 + ] + ], + [ + 0.086, + [ + 0.333, + 0.446, + 0.874 + ] + ], + [ + 0.088, + [ + 0.333, + 0.446, + 0.874 + ] + ], + [ + 0.09, + [ + 0.338, + 0.453, + 0.879 + ] + ], + [ + 0.092, + [ + 0.338, + 0.453, + 0.879 + ] + ], + [ + 0.094, + [ + 0.343, + 0.459, + 0.884 + ] + ], + [ + 0.096, + [ + 0.343, + 0.459, + 0.884 + ] + ], + [ + 0.098, + [ + 0.348, + 0.466, + 0.888 + ] + ], + [ + 0.1, + [ + 0.348, + 0.466, + 0.888 + ] + ], + [ + 0.102, + [ + 0.353, + 0.472, + 0.893 + ] + ], + [ + 0.104, + [ + 0.353, + 0.472, + 0.893 + ] + ], + [ + 0.106, + [ + 0.358, + 0.478, + 0.897 + ] + ], + [ + 0.108, + [ + 0.358, + 0.478, + 0.897 + ] + ], + [ + 0.11, + [ + 0.363, + 0.485, + 0.901 + ] + ], + [ + 0.112, + [ + 0.363, + 0.485, + 0.901 + ] + ], + [ + 0.114, + [ + 0.369, + 0.491, + 0.905 + ] + ], + [ + 0.115, + [ + 0.369, + 0.491, + 0.905 + ] + ], + [ + 0.117, + [ + 0.374, + 0.497, + 0.909 + ] + ], + [ + 0.119, + [ + 0.374, + 0.497, + 0.909 + ] + ], + [ + 0.121, + [ + 0.379, + 0.504, + 0.914 + ] + ], + [ + 0.123, + [ + 0.379, + 0.504, + 0.914 + ] + ], + [ + 0.125, + [ + 0.384, + 0.51, + 0.918 + ] + ], + [ + 0.127, + [ + 0.384, + 0.51, + 0.918 + ] + ], + [ + 0.129, + [ + 0.389, + 0.516, + 0.921 + ] + ], + [ + 0.131, + [ + 0.389, + 0.516, + 0.921 + ] + ], + [ + 0.133, + [ + 0.394, + 0.522, + 0.925 + ] + ], + [ + 0.135, + [ + 0.394, + 0.522, + 0.925 + ] + ], + [ + 0.137, + [ + 0.399, + 0.529, + 0.928 + ] + ], + [ + 0.139, + [ + 0.399, + 0.529, + 0.928 + ] + ], + [ + 0.141, + [ + 0.404, + 0.535, + 0.932 + ] + ], + [ + 0.143, + [ + 0.404, + 0.535, + 0.932 + ] + ], + [ + 0.145, + [ + 0.41, + 0.541, + 0.936 + ] + ], + [ + 0.147, + [ + 0.41, + 0.541, + 0.936 + ] + ], + [ + 0.149, + [ + 0.415, + 0.547, + 0.939 + ] + ], + [ + 0.151, + [ + 0.415, + 0.547, + 0.939 + ] + ], + [ + 0.153, + [ + 0.42, + 0.553, + 0.943 + ] + ], + [ + 0.155, + [ + 0.42, + 0.553, + 0.943 + ] + ], + [ + 0.157, + [ + 0.425, + 0.559, + 0.946 + ] + ], + [ + 0.159, + [ + 0.425, + 0.559, + 0.946 + ] + ], + [ + 0.16, + [ + 0.431, + 0.565, + 0.949 + ] + ], + [ + 0.162, + [ + 0.431, + 0.565, + 0.949 + ] + ], + [ + 0.164, + [ + 0.436, + 0.571, + 0.952 + ] + ], + [ + 0.166, + [ + 0.436, + 0.571, + 0.952 + ] + ], + [ + 0.168, + [ + 0.441, + 0.577, + 0.955 + ] + ], + [ + 0.17, + [ + 0.441, + 0.577, + 0.955 + ] + ], + [ + 0.172, + [ + 0.446, + 0.582, + 0.957 + ] + ], + [ + 0.174, + [ + 0.446, + 0.582, + 0.957 + ] + ], + [ + 0.176, + [ + 0.452, + 0.588, + 0.96 + ] + ], + [ + 0.178, + [ + 0.452, + 0.588, + 0.96 + ] + ], + [ + 0.18, + [ + 0.457, + 0.594, + 0.963 + ] + ], + [ + 0.182, + [ + 0.457, + 0.594, + 0.963 + ] + ], + [ + 0.184, + [ + 0.462, + 0.6, + 0.966 + ] + ], + [ + 0.186, + [ + 0.462, + 0.6, + 0.966 + ] + ], + [ + 0.188, + [ + 0.468, + 0.606, + 0.969 + ] + ], + [ + 0.19, + [ + 0.468, + 0.606, + 0.969 + ] + ], + [ + 0.192, + [ + 0.473, + 0.611, + 0.971 + ] + ], + [ + 0.194, + [ + 0.473, + 0.611, + 0.971 + ] + ], + [ + 0.196, + [ + 0.478, + 0.617, + 0.973 + ] + ], + [ + 0.198, + [ + 0.478, + 0.617, + 0.973 + ] + ], + [ + 0.2, + [ + 0.484, + 0.622, + 0.975 + ] + ], + [ + 0.202, + [ + 0.484, + 0.622, + 0.975 + ] + ], + [ + 0.204, + [ + 0.489, + 0.628, + 0.977 + ] + ], + [ + 0.205, + [ + 0.489, + 0.628, + 0.977 + ] + ], + [ + 0.207, + [ + 0.495, + 0.633, + 0.979 + ] + ], + [ + 0.209, + [ + 0.495, + 0.633, + 0.979 + ] + ], + [ + 0.211, + [ + 0.5, + 0.639, + 0.981 + ] + ], + [ + 0.213, + [ + 0.5, + 0.639, + 0.981 + ] + ], + [ + 0.215, + [ + 0.505, + 0.644, + 0.983 + ] + ], + [ + 0.217, + [ + 0.505, + 0.644, + 0.983 + ] + ], + [ + 0.219, + [ + 0.511, + 0.649, + 0.985 + ] + ], + [ + 0.221, + [ + 0.511, + 0.649, + 0.985 + ] + ], + [ + 0.223, + [ + 0.516, + 0.654, + 0.986 + ] + ], + [ + 0.225, + [ + 0.516, + 0.654, + 0.986 + ] + ], + [ + 0.227, + [ + 0.522, + 0.66, + 0.988 + ] + ], + [ + 0.229, + [ + 0.522, + 0.66, + 0.988 + ] + ], + [ + 0.231, + [ + 0.527, + 0.665, + 0.989 + ] + ], + [ + 0.233, + [ + 0.527, + 0.665, + 0.989 + ] + ], + [ + 0.235, + [ + 0.533, + 0.67, + 0.99 + ] + ], + [ + 0.237, + [ + 0.533, + 0.67, + 0.99 + ] + ], + [ + 0.239, + [ + 0.538, + 0.675, + 0.992 + ] + ], + [ + 0.241, + [ + 0.538, + 0.675, + 0.992 + ] + ], + [ + 0.243, + [ + 0.543, + 0.68, + 0.993 + ] + ], + [ + 0.245, + [ + 0.543, + 0.68, + 0.993 + ] + ], + [ + 0.247, + [ + 0.549, + 0.685, + 0.994 + ] + ], + [ + 0.249, + [ + 0.549, + 0.685, + 0.994 + ] + ], + [ + 0.25, + [ + 0.554, + 0.69, + 0.996 + ] + ], + [ + 0.252, + [ + 0.554, + 0.69, + 0.996 + ] + ], + [ + 0.254, + [ + 0.56, + 0.695, + 0.996 + ] + ], + [ + 0.256, + [ + 0.56, + 0.695, + 0.996 + ] + ], + [ + 0.258, + [ + 0.565, + 0.699, + 0.997 + ] + ], + [ + 0.26, + [ + 0.565, + 0.699, + 0.997 + ] + ], + [ + 0.262, + [ + 0.571, + 0.704, + 0.997 + ] + ], + [ + 0.264, + [ + 0.571, + 0.704, + 0.997 + ] + ], + [ + 0.266, + [ + 0.576, + 0.709, + 0.998 + ] + ], + [ + 0.268, + [ + 0.576, + 0.709, + 0.998 + ] + ], + [ + 0.27, + [ + 0.581, + 0.713, + 0.998 + ] + ], + [ + 0.272, + [ + 0.581, + 0.713, + 0.998 + ] + ], + [ + 0.274, + [ + 0.587, + 0.718, + 0.999 + ] + ], + [ + 0.276, + [ + 0.587, + 0.718, + 0.999 + ] + ], + [ + 0.278, + [ + 0.592, + 0.723, + 0.999 + ] + ], + [ + 0.28, + [ + 0.592, + 0.723, + 0.999 + ] + ], + [ + 0.282, + [ + 0.598, + 0.727, + 1 + ] + ], + [ + 0.284, + [ + 0.598, + 0.727, + 1 + ] + ], + [ + 0.286, + [ + 0.603, + 0.732, + 1 + ] + ], + [ + 0.288, + [ + 0.603, + 0.732, + 1 + ] + ], + [ + 0.29, + [ + 0.609, + 0.736, + 0.999 + ] + ], + [ + 0.292, + [ + 0.609, + 0.736, + 0.999 + ] + ], + [ + 0.294, + [ + 0.614, + 0.74, + 0.999 + ] + ], + [ + 0.295, + [ + 0.614, + 0.74, + 0.999 + ] + ], + [ + 0.297, + [ + 0.619, + 0.744, + 0.999 + ] + ], + [ + 0.299, + [ + 0.619, + 0.744, + 0.999 + ] + ], + [ + 0.301, + [ + 0.625, + 0.748, + 0.999 + ] + ], + [ + 0.303, + [ + 0.625, + 0.748, + 0.999 + ] + ], + [ + 0.305, + [ + 0.63, + 0.753, + 0.999 + ] + ], + [ + 0.307, + [ + 0.63, + 0.753, + 0.999 + ] + ], + [ + 0.309, + [ + 0.635, + 0.757, + 0.998 + ] + ], + [ + 0.311, + [ + 0.635, + 0.757, + 0.998 + ] + ], + [ + 0.313, + [ + 0.641, + 0.761, + 0.998 + ] + ], + [ + 0.315, + [ + 0.641, + 0.761, + 0.998 + ] + ], + [ + 0.317, + [ + 0.646, + 0.764, + 0.997 + ] + ], + [ + 0.319, + [ + 0.646, + 0.764, + 0.997 + ] + ], + [ + 0.321, + [ + 0.651, + 0.768, + 0.996 + ] + ], + [ + 0.323, + [ + 0.651, + 0.768, + 0.996 + ] + ], + [ + 0.325, + [ + 0.657, + 0.772, + 0.995 + ] + ], + [ + 0.327, + [ + 0.657, + 0.772, + 0.995 + ] + ], + [ + 0.329, + [ + 0.662, + 0.775, + 0.994 + ] + ], + [ + 0.331, + [ + 0.662, + 0.775, + 0.994 + ] + ], + [ + 0.333, + [ + 0.667, + 0.779, + 0.993 + ] + ], + [ + 0.335, + [ + 0.667, + 0.779, + 0.993 + ] + ], + [ + 0.337, + [ + 0.673, + 0.783, + 0.992 + ] + ], + [ + 0.339, + [ + 0.673, + 0.783, + 0.992 + ] + ], + [ + 0.341, + [ + 0.678, + 0.787, + 0.991 + ] + ], + [ + 0.342, + [ + 0.678, + 0.787, + 0.991 + ] + ], + [ + 0.344, + [ + 0.683, + 0.79, + 0.99 + ] + ], + [ + 0.346, + [ + 0.683, + 0.79, + 0.99 + ] + ], + [ + 0.348, + [ + 0.688, + 0.793, + 0.988 + ] + ], + [ + 0.35, + [ + 0.688, + 0.793, + 0.988 + ] + ], + [ + 0.352, + [ + 0.693, + 0.796, + 0.986 + ] + ], + [ + 0.354, + [ + 0.693, + 0.796, + 0.986 + ] + ], + [ + 0.356, + [ + 0.698, + 0.799, + 0.985 + ] + ], + [ + 0.358, + [ + 0.698, + 0.799, + 0.985 + ] + ], + [ + 0.36, + [ + 0.704, + 0.803, + 0.983 + ] + ], + [ + 0.362, + [ + 0.704, + 0.803, + 0.983 + ] + ], + [ + 0.364, + [ + 0.709, + 0.806, + 0.981 + ] + ], + [ + 0.366, + [ + 0.709, + 0.806, + 0.981 + ] + ], + [ + 0.368, + [ + 0.714, + 0.809, + 0.979 + ] + ], + [ + 0.37, + [ + 0.714, + 0.809, + 0.979 + ] + ], + [ + 0.372, + [ + 0.719, + 0.812, + 0.978 + ] + ], + [ + 0.374, + [ + 0.719, + 0.812, + 0.978 + ] + ], + [ + 0.376, + [ + 0.724, + 0.815, + 0.976 + ] + ], + [ + 0.378, + [ + 0.724, + 0.815, + 0.976 + ] + ], + [ + 0.38, + [ + 0.729, + 0.817, + 0.973 + ] + ], + [ + 0.382, + [ + 0.729, + 0.817, + 0.973 + ] + ], + [ + 0.384, + [ + 0.734, + 0.82, + 0.971 + ] + ], + [ + 0.386, + [ + 0.734, + 0.82, + 0.971 + ] + ], + [ + 0.387, + [ + 0.739, + 0.823, + 0.968 + ] + ], + [ + 0.389, + [ + 0.739, + 0.823, + 0.968 + ] + ], + [ + 0.391, + [ + 0.744, + 0.825, + 0.966 + ] + ], + [ + 0.393, + [ + 0.744, + 0.825, + 0.966 + ] + ], + [ + 0.395, + [ + 0.749, + 0.828, + 0.963 + ] + ], + [ + 0.397, + [ + 0.749, + 0.828, + 0.963 + ] + ], + [ + 0.399, + [ + 0.754, + 0.83, + 0.961 + ] + ], + [ + 0.401, + [ + 0.754, + 0.83, + 0.961 + ] + ], + [ + 0.403, + [ + 0.759, + 0.833, + 0.958 + ] + ], + [ + 0.405, + [ + 0.759, + 0.833, + 0.958 + ] + ], + [ + 0.407, + [ + 0.763, + 0.835, + 0.956 + ] + ], + [ + 0.409, + [ + 0.763, + 0.835, + 0.956 + ] + ], + [ + 0.411, + [ + 0.768, + 0.837, + 0.952 + ] + ], + [ + 0.413, + [ + 0.768, + 0.837, + 0.952 + ] + ], + [ + 0.415, + [ + 0.773, + 0.839, + 0.949 + ] + ], + [ + 0.417, + [ + 0.773, + 0.839, + 0.949 + ] + ], + [ + 0.419, + [ + 0.777, + 0.841, + 0.946 + ] + ], + [ + 0.421, + [ + 0.777, + 0.841, + 0.946 + ] + ], + [ + 0.423, + [ + 0.782, + 0.843, + 0.943 + ] + ], + [ + 0.425, + [ + 0.782, + 0.843, + 0.943 + ] + ], + [ + 0.427, + [ + 0.787, + 0.845, + 0.94 + ] + ], + [ + 0.429, + [ + 0.787, + 0.845, + 0.94 + ] + ], + [ + 0.431, + [ + 0.791, + 0.847, + 0.937 + ] + ], + [ + 0.432, + [ + 0.791, + 0.847, + 0.937 + ] + ], + [ + 0.434, + [ + 0.796, + 0.849, + 0.933 + ] + ], + [ + 0.436, + [ + 0.796, + 0.849, + 0.933 + ] + ], + [ + 0.438, + [ + 0.801, + 0.85, + 0.93 + ] + ], + [ + 0.44, + [ + 0.801, + 0.85, + 0.93 + ] + ], + [ + 0.442, + [ + 0.805, + 0.852, + 0.926 + ] + ], + [ + 0.444, + [ + 0.805, + 0.852, + 0.926 + ] + ], + [ + 0.446, + [ + 0.809, + 0.853, + 0.922 + ] + ], + [ + 0.448, + [ + 0.809, + 0.853, + 0.922 + ] + ], + [ + 0.45, + [ + 0.814, + 0.854, + 0.918 + ] + ], + [ + 0.452, + [ + 0.814, + 0.854, + 0.918 + ] + ], + [ + 0.454, + [ + 0.818, + 0.856, + 0.915 + ] + ], + [ + 0.456, + [ + 0.818, + 0.856, + 0.915 + ] + ], + [ + 0.458, + [ + 0.822, + 0.857, + 0.911 + ] + ], + [ + 0.46, + [ + 0.822, + 0.857, + 0.911 + ] + ], + [ + 0.462, + [ + 0.827, + 0.858, + 0.907 + ] + ], + [ + 0.464, + [ + 0.827, + 0.858, + 0.907 + ] + ], + [ + 0.466, + [ + 0.831, + 0.86, + 0.903 + ] + ], + [ + 0.468, + [ + 0.831, + 0.86, + 0.903 + ] + ], + [ + 0.47, + [ + 0.835, + 0.861, + 0.899 + ] + ], + [ + 0.472, + [ + 0.835, + 0.861, + 0.899 + ] + ], + [ + 0.474, + [ + 0.839, + 0.861, + 0.894 + ] + ], + [ + 0.476, + [ + 0.839, + 0.861, + 0.894 + ] + ], + [ + 0.477, + [ + 0.843, + 0.862, + 0.89 + ] + ], + [ + 0.479, + [ + 0.843, + 0.862, + 0.89 + ] + ], + [ + 0.481, + [ + 0.847, + 0.862, + 0.886 + ] + ], + [ + 0.483, + [ + 0.847, + 0.862, + 0.886 + ] + ], + [ + 0.485, + [ + 0.851, + 0.863, + 0.881 + ] + ], + [ + 0.487, + [ + 0.851, + 0.863, + 0.881 + ] + ], + [ + 0.489, + [ + 0.855, + 0.864, + 0.877 + ] + ], + [ + 0.491, + [ + 0.855, + 0.864, + 0.877 + ] + ], + [ + 0.493, + [ + 0.859, + 0.864, + 0.872 + ] + ], + [ + 0.495, + [ + 0.859, + 0.864, + 0.872 + ] + ], + [ + 0.497, + [ + 0.863, + 0.865, + 0.868 + ] + ], + [ + 0.499, + [ + 0.863, + 0.865, + 0.868 + ] + ], + [ + 0.501, + [ + 0.867, + 0.864, + 0.863 + ] + ], + [ + 0.503, + [ + 0.867, + 0.864, + 0.863 + ] + ], + [ + 0.505, + [ + 0.871, + 0.862, + 0.857 + ] + ], + [ + 0.507, + [ + 0.871, + 0.862, + 0.857 + ] + ], + [ + 0.509, + [ + 0.876, + 0.86, + 0.851 + ] + ], + [ + 0.511, + [ + 0.876, + 0.86, + 0.851 + ] + ], + [ + 0.513, + [ + 0.88, + 0.858, + 0.846 + ] + ], + [ + 0.515, + [ + 0.88, + 0.858, + 0.846 + ] + ], + [ + 0.517, + [ + 0.884, + 0.856, + 0.84 + ] + ], + [ + 0.519, + [ + 0.884, + 0.856, + 0.84 + ] + ], + [ + 0.521, + [ + 0.888, + 0.854, + 0.835 + ] + ], + [ + 0.523, + [ + 0.888, + 0.854, + 0.835 + ] + ], + [ + 0.524, + [ + 0.892, + 0.852, + 0.829 + ] + ], + [ + 0.526, + [ + 0.892, + 0.852, + 0.829 + ] + ], + [ + 0.528, + [ + 0.896, + 0.85, + 0.823 + ] + ], + [ + 0.53, + [ + 0.896, + 0.85, + 0.823 + ] + ], + [ + 0.532, + [ + 0.9, + 0.848, + 0.818 + ] + ], + [ + 0.534, + [ + 0.9, + 0.848, + 0.818 + ] + ], + [ + 0.536, + [ + 0.903, + 0.845, + 0.812 + ] + ], + [ + 0.538, + [ + 0.903, + 0.845, + 0.812 + ] + ], + [ + 0.54, + [ + 0.906, + 0.842, + 0.806 + ] + ], + [ + 0.542, + [ + 0.906, + 0.842, + 0.806 + ] + ], + [ + 0.544, + [ + 0.909, + 0.839, + 0.8 + ] + ], + [ + 0.546, + [ + 0.909, + 0.839, + 0.8 + ] + ], + [ + 0.548, + [ + 0.913, + 0.837, + 0.795 + ] + ], + [ + 0.55, + [ + 0.913, + 0.837, + 0.795 + ] + ], + [ + 0.552, + [ + 0.916, + 0.834, + 0.789 + ] + ], + [ + 0.554, + [ + 0.916, + 0.834, + 0.789 + ] + ], + [ + 0.556, + [ + 0.919, + 0.831, + 0.783 + ] + ], + [ + 0.558, + [ + 0.919, + 0.831, + 0.783 + ] + ], + [ + 0.56, + [ + 0.923, + 0.829, + 0.777 + ] + ], + [ + 0.562, + [ + 0.923, + 0.829, + 0.777 + ] + ], + [ + 0.564, + [ + 0.926, + 0.826, + 0.771 + ] + ], + [ + 0.566, + [ + 0.926, + 0.826, + 0.771 + ] + ], + [ + 0.568, + [ + 0.928, + 0.822, + 0.765 + ] + ], + [ + 0.569, + [ + 0.928, + 0.822, + 0.765 + ] + ], + [ + 0.571, + [ + 0.931, + 0.819, + 0.759 + ] + ], + [ + 0.573, + [ + 0.931, + 0.819, + 0.759 + ] + ], + [ + 0.575, + [ + 0.933, + 0.816, + 0.753 + ] + ], + [ + 0.577, + [ + 0.933, + 0.816, + 0.753 + ] + ], + [ + 0.579, + [ + 0.936, + 0.812, + 0.747 + ] + ], + [ + 0.581, + [ + 0.936, + 0.812, + 0.747 + ] + ], + [ + 0.583, + [ + 0.938, + 0.809, + 0.741 + ] + ], + [ + 0.585, + [ + 0.938, + 0.809, + 0.741 + ] + ], + [ + 0.587, + [ + 0.941, + 0.806, + 0.735 + ] + ], + [ + 0.589, + [ + 0.941, + 0.806, + 0.735 + ] + ], + [ + 0.591, + [ + 0.943, + 0.802, + 0.729 + ] + ], + [ + 0.593, + [ + 0.943, + 0.802, + 0.729 + ] + ], + [ + 0.595, + [ + 0.946, + 0.799, + 0.723 + ] + ], + [ + 0.597, + [ + 0.946, + 0.799, + 0.723 + ] + ], + [ + 0.599, + [ + 0.947, + 0.795, + 0.717 + ] + ], + [ + 0.601, + [ + 0.947, + 0.795, + 0.717 + ] + ], + [ + 0.603, + [ + 0.949, + 0.791, + 0.711 + ] + ], + [ + 0.605, + [ + 0.949, + 0.791, + 0.711 + ] + ], + [ + 0.607, + [ + 0.951, + 0.787, + 0.705 + ] + ], + [ + 0.609, + [ + 0.951, + 0.787, + 0.705 + ] + ], + [ + 0.611, + [ + 0.953, + 0.783, + 0.699 + ] + ], + [ + 0.613, + [ + 0.953, + 0.783, + 0.699 + ] + ], + [ + 0.614, + [ + 0.955, + 0.779, + 0.693 + ] + ], + [ + 0.616, + [ + 0.955, + 0.779, + 0.693 + ] + ], + [ + 0.618, + [ + 0.956, + 0.775, + 0.686 + ] + ], + [ + 0.62, + [ + 0.956, + 0.775, + 0.686 + ] + ], + [ + 0.622, + [ + 0.958, + 0.771, + 0.68 + ] + ], + [ + 0.624, + [ + 0.958, + 0.771, + 0.68 + ] + ], + [ + 0.626, + [ + 0.96, + 0.767, + 0.674 + ] + ], + [ + 0.628, + [ + 0.96, + 0.767, + 0.674 + ] + ], + [ + 0.63, + [ + 0.961, + 0.763, + 0.668 + ] + ], + [ + 0.632, + [ + 0.961, + 0.763, + 0.668 + ] + ], + [ + 0.634, + [ + 0.962, + 0.758, + 0.662 + ] + ], + [ + 0.636, + [ + 0.962, + 0.758, + 0.662 + ] + ], + [ + 0.638, + [ + 0.963, + 0.754, + 0.656 + ] + ], + [ + 0.64, + [ + 0.963, + 0.754, + 0.656 + ] + ], + [ + 0.642, + [ + 0.964, + 0.749, + 0.649 + ] + ], + [ + 0.644, + [ + 0.964, + 0.749, + 0.649 + ] + ], + [ + 0.646, + [ + 0.965, + 0.745, + 0.643 + ] + ], + [ + 0.648, + [ + 0.965, + 0.745, + 0.643 + ] + ], + [ + 0.65, + [ + 0.966, + 0.74, + 0.637 + ] + ], + [ + 0.652, + [ + 0.966, + 0.74, + 0.637 + ] + ], + [ + 0.654, + [ + 0.967, + 0.736, + 0.631 + ] + ], + [ + 0.656, + [ + 0.967, + 0.736, + 0.631 + ] + ], + [ + 0.658, + [ + 0.968, + 0.731, + 0.625 + ] + ], + [ + 0.659, + [ + 0.968, + 0.731, + 0.625 + ] + ], + [ + 0.661, + [ + 0.968, + 0.726, + 0.618 + ] + ], + [ + 0.663, + [ + 0.968, + 0.726, + 0.618 + ] + ], + [ + 0.665, + [ + 0.968, + 0.721, + 0.612 + ] + ], + [ + 0.667, + [ + 0.968, + 0.721, + 0.612 + ] + ], + [ + 0.669, + [ + 0.969, + 0.716, + 0.606 + ] + ], + [ + 0.671, + [ + 0.969, + 0.716, + 0.606 + ] + ], + [ + 0.673, + [ + 0.969, + 0.711, + 0.6 + ] + ], + [ + 0.675, + [ + 0.969, + 0.711, + 0.6 + ] + ], + [ + 0.677, + [ + 0.969, + 0.706, + 0.594 + ] + ], + [ + 0.679, + [ + 0.969, + 0.706, + 0.594 + ] + ], + [ + 0.681, + [ + 0.97, + 0.701, + 0.588 + ] + ], + [ + 0.683, + [ + 0.97, + 0.701, + 0.588 + ] + ], + [ + 0.685, + [ + 0.97, + 0.696, + 0.581 + ] + ], + [ + 0.687, + [ + 0.97, + 0.696, + 0.581 + ] + ], + [ + 0.689, + [ + 0.97, + 0.69, + 0.575 + ] + ], + [ + 0.691, + [ + 0.97, + 0.69, + 0.575 + ] + ], + [ + 0.693, + [ + 0.969, + 0.685, + 0.569 + ] + ], + [ + 0.695, + [ + 0.969, + 0.685, + 0.569 + ] + ], + [ + 0.697, + [ + 0.969, + 0.679, + 0.563 + ] + ], + [ + 0.699, + [ + 0.969, + 0.679, + 0.563 + ] + ], + [ + 0.701, + [ + 0.968, + 0.674, + 0.557 + ] + ], + [ + 0.703, + [ + 0.968, + 0.674, + 0.557 + ] + ], + [ + 0.705, + [ + 0.968, + 0.668, + 0.55 + ] + ], + [ + 0.706, + [ + 0.968, + 0.668, + 0.55 + ] + ], + [ + 0.708, + [ + 0.968, + 0.663, + 0.544 + ] + ], + [ + 0.71, + [ + 0.968, + 0.663, + 0.544 + ] + ], + [ + 0.712, + [ + 0.967, + 0.657, + 0.538 + ] + ], + [ + 0.714, + [ + 0.967, + 0.657, + 0.538 + ] + ], + [ + 0.716, + [ + 0.967, + 0.652, + 0.532 + ] + ], + [ + 0.718, + [ + 0.967, + 0.652, + 0.532 + ] + ], + [ + 0.72, + [ + 0.966, + 0.646, + 0.526 + ] + ], + [ + 0.722, + [ + 0.966, + 0.646, + 0.526 + ] + ], + [ + 0.724, + [ + 0.965, + 0.64, + 0.52 + ] + ], + [ + 0.726, + [ + 0.965, + 0.64, + 0.52 + ] + ], + [ + 0.728, + [ + 0.964, + 0.634, + 0.514 + ] + ], + [ + 0.73, + [ + 0.964, + 0.634, + 0.514 + ] + ], + [ + 0.732, + [ + 0.963, + 0.628, + 0.508 + ] + ], + [ + 0.734, + [ + 0.963, + 0.628, + 0.508 + ] + ], + [ + 0.736, + [ + 0.962, + 0.622, + 0.502 + ] + ], + [ + 0.738, + [ + 0.962, + 0.622, + 0.502 + ] + ], + [ + 0.74, + [ + 0.96, + 0.616, + 0.495 + ] + ], + [ + 0.742, + [ + 0.96, + 0.616, + 0.495 + ] + ], + [ + 0.744, + [ + 0.959, + 0.61, + 0.489 + ] + ], + [ + 0.746, + [ + 0.959, + 0.61, + 0.489 + ] + ], + [ + 0.748, + [ + 0.958, + 0.604, + 0.483 + ] + ], + [ + 0.75, + [ + 0.958, + 0.604, + 0.483 + ] + ], + [ + 0.751, + [ + 0.957, + 0.598, + 0.477 + ] + ], + [ + 0.753, + [ + 0.957, + 0.598, + 0.477 + ] + ], + [ + 0.755, + [ + 0.955, + 0.592, + 0.471 + ] + ], + [ + 0.757, + [ + 0.955, + 0.592, + 0.471 + ] + ], + [ + 0.759, + [ + 0.953, + 0.585, + 0.465 + ] + ], + [ + 0.761, + [ + 0.953, + 0.585, + 0.465 + ] + ], + [ + 0.763, + [ + 0.951, + 0.579, + 0.459 + ] + ], + [ + 0.765, + [ + 0.951, + 0.579, + 0.459 + ] + ], + [ + 0.767, + [ + 0.949, + 0.572, + 0.453 + ] + ], + [ + 0.769, + [ + 0.949, + 0.572, + 0.453 + ] + ], + [ + 0.771, + [ + 0.948, + 0.566, + 0.447 + ] + ], + [ + 0.773, + [ + 0.948, + 0.566, + 0.447 + ] + ], + [ + 0.775, + [ + 0.946, + 0.56, + 0.442 + ] + ], + [ + 0.777, + [ + 0.946, + 0.56, + 0.442 + ] + ], + [ + 0.779, + [ + 0.944, + 0.553, + 0.436 + ] + ], + [ + 0.781, + [ + 0.944, + 0.553, + 0.436 + ] + ], + [ + 0.783, + [ + 0.942, + 0.546, + 0.43 + ] + ], + [ + 0.785, + [ + 0.942, + 0.546, + 0.43 + ] + ], + [ + 0.787, + [ + 0.939, + 0.54, + 0.424 + ] + ], + [ + 0.789, + [ + 0.939, + 0.54, + 0.424 + ] + ], + [ + 0.791, + [ + 0.937, + 0.533, + 0.418 + ] + ], + [ + 0.793, + [ + 0.937, + 0.533, + 0.418 + ] + ], + [ + 0.795, + [ + 0.934, + 0.526, + 0.412 + ] + ], + [ + 0.796, + [ + 0.934, + 0.526, + 0.412 + ] + ], + [ + 0.798, + [ + 0.932, + 0.519, + 0.406 + ] + ], + [ + 0.8, + [ + 0.932, + 0.519, + 0.406 + ] + ], + [ + 0.802, + [ + 0.929, + 0.512, + 0.401 + ] + ], + [ + 0.804, + [ + 0.929, + 0.512, + 0.401 + ] + ], + [ + 0.806, + [ + 0.927, + 0.505, + 0.395 + ] + ], + [ + 0.808, + [ + 0.927, + 0.505, + 0.395 + ] + ], + [ + 0.81, + [ + 0.924, + 0.499, + 0.389 + ] + ], + [ + 0.812, + [ + 0.924, + 0.499, + 0.389 + ] + ], + [ + 0.814, + [ + 0.921, + 0.491, + 0.383 + ] + ], + [ + 0.816, + [ + 0.921, + 0.491, + 0.383 + ] + ], + [ + 0.818, + [ + 0.918, + 0.484, + 0.378 + ] + ], + [ + 0.82, + [ + 0.918, + 0.484, + 0.378 + ] + ], + [ + 0.822, + [ + 0.915, + 0.477, + 0.372 + ] + ], + [ + 0.824, + [ + 0.915, + 0.477, + 0.372 + ] + ], + [ + 0.826, + [ + 0.912, + 0.47, + 0.367 + ] + ], + [ + 0.828, + [ + 0.912, + 0.47, + 0.367 + ] + ], + [ + 0.83, + [ + 0.909, + 0.462, + 0.361 + ] + ], + [ + 0.832, + [ + 0.909, + 0.462, + 0.361 + ] + ], + [ + 0.834, + [ + 0.906, + 0.455, + 0.355 + ] + ], + [ + 0.836, + [ + 0.906, + 0.455, + 0.355 + ] + ], + [ + 0.838, + [ + 0.903, + 0.448, + 0.35 + ] + ], + [ + 0.84, + [ + 0.903, + 0.448, + 0.35 + ] + ], + [ + 0.841, + [ + 0.9, + 0.441, + 0.344 + ] + ], + [ + 0.843, + [ + 0.9, + 0.441, + 0.344 + ] + ], + [ + 0.845, + [ + 0.896, + 0.433, + 0.339 + ] + ], + [ + 0.847, + [ + 0.896, + 0.433, + 0.339 + ] + ], + [ + 0.849, + [ + 0.892, + 0.425, + 0.333 + ] + ], + [ + 0.851, + [ + 0.892, + 0.425, + 0.333 + ] + ], + [ + 0.853, + [ + 0.888, + 0.418, + 0.328 + ] + ], + [ + 0.855, + [ + 0.888, + 0.418, + 0.328 + ] + ], + [ + 0.857, + [ + 0.885, + 0.41, + 0.323 + ] + ], + [ + 0.859, + [ + 0.885, + 0.41, + 0.323 + ] + ], + [ + 0.861, + [ + 0.881, + 0.402, + 0.317 + ] + ], + [ + 0.863, + [ + 0.881, + 0.402, + 0.317 + ] + ], + [ + 0.865, + [ + 0.877, + 0.395, + 0.312 + ] + ], + [ + 0.867, + [ + 0.877, + 0.395, + 0.312 + ] + ], + [ + 0.869, + [ + 0.873, + 0.387, + 0.306 + ] + ], + [ + 0.871, + [ + 0.873, + 0.387, + 0.306 + ] + ], + [ + 0.873, + [ + 0.87, + 0.379, + 0.301 + ] + ], + [ + 0.875, + [ + 0.87, + 0.379, + 0.301 + ] + ], + [ + 0.877, + [ + 0.865, + 0.371, + 0.296 + ] + ], + [ + 0.879, + [ + 0.865, + 0.371, + 0.296 + ] + ], + [ + 0.881, + [ + 0.861, + 0.363, + 0.291 + ] + ], + [ + 0.883, + [ + 0.861, + 0.363, + 0.291 + ] + ], + [ + 0.885, + [ + 0.857, + 0.355, + 0.285 + ] + ], + [ + 0.886, + [ + 0.857, + 0.355, + 0.285 + ] + ], + [ + 0.888, + [ + 0.852, + 0.346, + 0.28 + ] + ], + [ + 0.89, + [ + 0.852, + 0.346, + 0.28 + ] + ], + [ + 0.892, + [ + 0.848, + 0.338, + 0.275 + ] + ], + [ + 0.894, + [ + 0.848, + 0.338, + 0.275 + ] + ], + [ + 0.896, + [ + 0.844, + 0.33, + 0.27 + ] + ], + [ + 0.898, + [ + 0.844, + 0.33, + 0.27 + ] + ], + [ + 0.9, + [ + 0.839, + 0.322, + 0.265 + ] + ], + [ + 0.902, + [ + 0.839, + 0.322, + 0.265 + ] + ], + [ + 0.904, + [ + 0.835, + 0.314, + 0.26 + ] + ], + [ + 0.906, + [ + 0.835, + 0.314, + 0.26 + ] + ], + [ + 0.908, + [ + 0.83, + 0.305, + 0.255 + ] + ], + [ + 0.91, + [ + 0.83, + 0.305, + 0.255 + ] + ], + [ + 0.912, + [ + 0.825, + 0.296, + 0.25 + ] + ], + [ + 0.914, + [ + 0.825, + 0.296, + 0.25 + ] + ], + [ + 0.916, + [ + 0.82, + 0.287, + 0.245 + ] + ], + [ + 0.918, + [ + 0.82, + 0.287, + 0.245 + ] + ], + [ + 0.92, + [ + 0.816, + 0.278, + 0.24 + ] + ], + [ + 0.922, + [ + 0.816, + 0.278, + 0.24 + ] + ], + [ + 0.924, + [ + 0.811, + 0.269, + 0.235 + ] + ], + [ + 0.926, + [ + 0.811, + 0.269, + 0.235 + ] + ], + [ + 0.928, + [ + 0.806, + 0.26, + 0.231 + ] + ], + [ + 0.93, + [ + 0.806, + 0.26, + 0.231 + ] + ], + [ + 0.932, + [ + 0.801, + 0.251, + 0.226 + ] + ], + [ + 0.933, + [ + 0.801, + 0.251, + 0.226 + ] + ], + [ + 0.935, + [ + 0.796, + 0.242, + 0.221 + ] + ], + [ + 0.937, + [ + 0.796, + 0.242, + 0.221 + ] + ], + [ + 0.939, + [ + 0.791, + 0.231, + 0.216 + ] + ], + [ + 0.941, + [ + 0.791, + 0.231, + 0.216 + ] + ], + [ + 0.943, + [ + 0.785, + 0.221, + 0.212 + ] + ], + [ + 0.945, + [ + 0.785, + 0.221, + 0.212 + ] + ], + [ + 0.947, + [ + 0.78, + 0.21, + 0.207 + ] + ], + [ + 0.949, + [ + 0.78, + 0.21, + 0.207 + ] + ], + [ + 0.951, + [ + 0.774, + 0.2, + 0.203 + ] + ], + [ + 0.953, + [ + 0.774, + 0.2, + 0.203 + ] + ], + [ + 0.955, + [ + 0.769, + 0.189, + 0.198 + ] + ], + [ + 0.957, + [ + 0.769, + 0.189, + 0.198 + ] + ], + [ + 0.959, + [ + 0.764, + 0.179, + 0.193 + ] + ], + [ + 0.961, + [ + 0.764, + 0.179, + 0.193 + ] + ], + [ + 0.963, + [ + 0.758, + 0.168, + 0.189 + ] + ], + [ + 0.965, + [ + 0.758, + 0.168, + 0.189 + ] + ], + [ + 0.967, + [ + 0.753, + 0.158, + 0.184 + ] + ], + [ + 0.969, + [ + 0.753, + 0.158, + 0.184 + ] + ], + [ + 0.971, + [ + 0.747, + 0.14, + 0.18 + ] + ], + [ + 0.973, + [ + 0.747, + 0.14, + 0.18 + ] + ], + [ + 0.975, + [ + 0.741, + 0.122, + 0.176 + ] + ], + [ + 0.977, + [ + 0.741, + 0.122, + 0.176 + ] + ], + [ + 0.978, + [ + 0.735, + 0.104, + 0.171 + ] + ], + [ + 0.98, + [ + 0.735, + 0.104, + 0.171 + ] + ], + [ + 0.982, + [ + 0.729, + 0.087, + 0.167 + ] + ], + [ + 0.984, + [ + 0.729, + 0.087, + 0.167 + ] + ], + [ + 0.986, + [ + 0.723, + 0.069, + 0.163 + ] + ], + [ + 0.988, + [ + 0.723, + 0.069, + 0.163 + ] + ], + [ + 0.99, + [ + 0.717, + 0.051, + 0.159 + ] + ], + [ + 0.992, + [ + 0.717, + 0.051, + 0.159 + ] + ], + [ + 0.994, + [ + 0.712, + 0.033, + 0.154 + ] + ], + [ + 0.996, + [ + 0.712, + 0.033, + 0.154 + ] + ], + [ + 0.998, + [ + 0.706, + 0.016, + 0.15 + ] + ], + [ + 1, + [ + 0.706, + 0.016, + 0.15 + ] + ] + ], + [ + [ + 0, + [ + 1, + 1, + 0.851 + ] + ], + [ + 0.002, + [ + 1, + 1, + 0.851 + ] + ], + [ + 0.004, + [ + 0.998, + 0.999, + 0.846 + ] + ], + [ + 0.006, + [ + 0.998, + 0.999, + 0.846 + ] + ], + [ + 0.008, + [ + 0.996, + 0.998, + 0.841 + ] + ], + [ + 0.01, + [ + 0.996, + 0.998, + 0.841 + ] + ], + [ + 0.012, + [ + 0.993, + 0.997, + 0.836 + ] + ], + [ + 0.014, + [ + 0.993, + 0.997, + 0.836 + ] + ], + [ + 0.016, + [ + 0.991, + 0.997, + 0.831 + ] + ], + [ + 0.018, + [ + 0.991, + 0.997, + 0.831 + ] + ], + [ + 0.02, + [ + 0.989, + 0.996, + 0.826 + ] + ], + [ + 0.022, + [ + 0.989, + 0.996, + 0.826 + ] + ], + [ + 0.023, + [ + 0.987, + 0.995, + 0.821 + ] + ], + [ + 0.025, + [ + 0.987, + 0.995, + 0.821 + ] + ], + [ + 0.027, + [ + 0.984, + 0.994, + 0.817 + ] + ], + [ + 0.029, + [ + 0.984, + 0.994, + 0.817 + ] + ], + [ + 0.031, + [ + 0.982, + 0.993, + 0.812 + ] + ], + [ + 0.033, + [ + 0.982, + 0.993, + 0.812 + ] + ], + [ + 0.035, + [ + 0.98, + 0.992, + 0.807 + ] + ], + [ + 0.037, + [ + 0.98, + 0.992, + 0.807 + ] + ], + [ + 0.039, + [ + 0.978, + 0.991, + 0.802 + ] + ], + [ + 0.041, + [ + 0.978, + 0.991, + 0.802 + ] + ], + [ + 0.043, + [ + 0.976, + 0.991, + 0.797 + ] + ], + [ + 0.045, + [ + 0.976, + 0.991, + 0.797 + ] + ], + [ + 0.047, + [ + 0.973, + 0.99, + 0.792 + ] + ], + [ + 0.049, + [ + 0.973, + 0.99, + 0.792 + ] + ], + [ + 0.051, + [ + 0.971, + 0.989, + 0.787 + ] + ], + [ + 0.053, + [ + 0.971, + 0.989, + 0.787 + ] + ], + [ + 0.055, + [ + 0.969, + 0.988, + 0.782 + ] + ], + [ + 0.057, + [ + 0.969, + 0.988, + 0.782 + ] + ], + [ + 0.059, + [ + 0.967, + 0.987, + 0.777 + ] + ], + [ + 0.061, + [ + 0.967, + 0.987, + 0.777 + ] + ], + [ + 0.063, + [ + 0.965, + 0.986, + 0.772 + ] + ], + [ + 0.065, + [ + 0.965, + 0.986, + 0.772 + ] + ], + [ + 0.067, + [ + 0.962, + 0.985, + 0.767 + ] + ], + [ + 0.068, + [ + 0.962, + 0.985, + 0.767 + ] + ], + [ + 0.07, + [ + 0.96, + 0.984, + 0.762 + ] + ], + [ + 0.072, + [ + 0.96, + 0.984, + 0.762 + ] + ], + [ + 0.074, + [ + 0.958, + 0.984, + 0.757 + ] + ], + [ + 0.076, + [ + 0.958, + 0.984, + 0.757 + ] + ], + [ + 0.078, + [ + 0.956, + 0.983, + 0.753 + ] + ], + [ + 0.08, + [ + 0.956, + 0.983, + 0.753 + ] + ], + [ + 0.082, + [ + 0.953, + 0.982, + 0.748 + ] + ], + [ + 0.084, + [ + 0.953, + 0.982, + 0.748 + ] + ], + [ + 0.086, + [ + 0.951, + 0.981, + 0.743 + ] + ], + [ + 0.088, + [ + 0.951, + 0.981, + 0.743 + ] + ], + [ + 0.09, + [ + 0.949, + 0.98, + 0.738 + ] + ], + [ + 0.092, + [ + 0.949, + 0.98, + 0.738 + ] + ], + [ + 0.094, + [ + 0.947, + 0.979, + 0.733 + ] + ], + [ + 0.096, + [ + 0.947, + 0.979, + 0.733 + ] + ], + [ + 0.098, + [ + 0.945, + 0.978, + 0.728 + ] + ], + [ + 0.1, + [ + 0.945, + 0.978, + 0.728 + ] + ], + [ + 0.102, + [ + 0.942, + 0.978, + 0.723 + ] + ], + [ + 0.104, + [ + 0.942, + 0.978, + 0.723 + ] + ], + [ + 0.106, + [ + 0.94, + 0.977, + 0.718 + ] + ], + [ + 0.108, + [ + 0.94, + 0.977, + 0.718 + ] + ], + [ + 0.11, + [ + 0.938, + 0.976, + 0.713 + ] + ], + [ + 0.112, + [ + 0.938, + 0.976, + 0.713 + ] + ], + [ + 0.114, + [ + 0.936, + 0.975, + 0.708 + ] + ], + [ + 0.115, + [ + 0.936, + 0.975, + 0.708 + ] + ], + [ + 0.117, + [ + 0.934, + 0.974, + 0.703 + ] + ], + [ + 0.119, + [ + 0.934, + 0.974, + 0.703 + ] + ], + [ + 0.121, + [ + 0.931, + 0.973, + 0.698 + ] + ], + [ + 0.123, + [ + 0.931, + 0.973, + 0.698 + ] + ], + [ + 0.125, + [ + 0.929, + 0.972, + 0.694 + ] + ], + [ + 0.127, + [ + 0.929, + 0.972, + 0.694 + ] + ], + [ + 0.129, + [ + 0.924, + 0.97, + 0.695 + ] + ], + [ + 0.131, + [ + 0.924, + 0.97, + 0.695 + ] + ], + [ + 0.133, + [ + 0.919, + 0.969, + 0.695 + ] + ], + [ + 0.135, + [ + 0.919, + 0.969, + 0.695 + ] + ], + [ + 0.137, + [ + 0.915, + 0.967, + 0.695 + ] + ], + [ + 0.139, + [ + 0.915, + 0.967, + 0.695 + ] + ], + [ + 0.141, + [ + 0.91, + 0.965, + 0.696 + ] + ], + [ + 0.143, + [ + 0.91, + 0.965, + 0.696 + ] + ], + [ + 0.145, + [ + 0.905, + 0.963, + 0.696 + ] + ], + [ + 0.147, + [ + 0.905, + 0.963, + 0.696 + ] + ], + [ + 0.149, + [ + 0.901, + 0.961, + 0.696 + ] + ], + [ + 0.151, + [ + 0.901, + 0.961, + 0.696 + ] + ], + [ + 0.153, + [ + 0.896, + 0.959, + 0.697 + ] + ], + [ + 0.155, + [ + 0.896, + 0.959, + 0.697 + ] + ], + [ + 0.157, + [ + 0.891, + 0.958, + 0.697 + ] + ], + [ + 0.159, + [ + 0.891, + 0.958, + 0.697 + ] + ], + [ + 0.16, + [ + 0.887, + 0.956, + 0.697 + ] + ], + [ + 0.162, + [ + 0.887, + 0.956, + 0.697 + ] + ], + [ + 0.164, + [ + 0.882, + 0.954, + 0.698 + ] + ], + [ + 0.166, + [ + 0.882, + 0.954, + 0.698 + ] + ], + [ + 0.168, + [ + 0.877, + 0.952, + 0.698 + ] + ], + [ + 0.17, + [ + 0.877, + 0.952, + 0.698 + ] + ], + [ + 0.172, + [ + 0.873, + 0.95, + 0.699 + ] + ], + [ + 0.174, + [ + 0.873, + 0.95, + 0.699 + ] + ], + [ + 0.176, + [ + 0.868, + 0.948, + 0.699 + ] + ], + [ + 0.178, + [ + 0.868, + 0.948, + 0.699 + ] + ], + [ + 0.18, + [ + 0.863, + 0.946, + 0.699 + ] + ], + [ + 0.182, + [ + 0.863, + 0.946, + 0.699 + ] + ], + [ + 0.184, + [ + 0.859, + 0.945, + 0.7 + ] + ], + [ + 0.186, + [ + 0.859, + 0.945, + 0.7 + ] + ], + [ + 0.188, + [ + 0.854, + 0.943, + 0.7 + ] + ], + [ + 0.19, + [ + 0.854, + 0.943, + 0.7 + ] + ], + [ + 0.192, + [ + 0.849, + 0.941, + 0.7 + ] + ], + [ + 0.194, + [ + 0.849, + 0.941, + 0.7 + ] + ], + [ + 0.196, + [ + 0.845, + 0.939, + 0.701 + ] + ], + [ + 0.198, + [ + 0.845, + 0.939, + 0.701 + ] + ], + [ + 0.2, + [ + 0.84, + 0.937, + 0.701 + ] + ], + [ + 0.202, + [ + 0.84, + 0.937, + 0.701 + ] + ], + [ + 0.204, + [ + 0.835, + 0.935, + 0.702 + ] + ], + [ + 0.205, + [ + 0.835, + 0.935, + 0.702 + ] + ], + [ + 0.207, + [ + 0.831, + 0.934, + 0.702 + ] + ], + [ + 0.209, + [ + 0.831, + 0.934, + 0.702 + ] + ], + [ + 0.211, + [ + 0.826, + 0.932, + 0.702 + ] + ], + [ + 0.213, + [ + 0.826, + 0.932, + 0.702 + ] + ], + [ + 0.215, + [ + 0.821, + 0.93, + 0.703 + ] + ], + [ + 0.217, + [ + 0.821, + 0.93, + 0.703 + ] + ], + [ + 0.219, + [ + 0.817, + 0.928, + 0.703 + ] + ], + [ + 0.221, + [ + 0.817, + 0.928, + 0.703 + ] + ], + [ + 0.223, + [ + 0.812, + 0.926, + 0.703 + ] + ], + [ + 0.225, + [ + 0.812, + 0.926, + 0.703 + ] + ], + [ + 0.227, + [ + 0.807, + 0.924, + 0.704 + ] + ], + [ + 0.229, + [ + 0.807, + 0.924, + 0.704 + ] + ], + [ + 0.231, + [ + 0.803, + 0.922, + 0.704 + ] + ], + [ + 0.233, + [ + 0.803, + 0.922, + 0.704 + ] + ], + [ + 0.235, + [ + 0.798, + 0.921, + 0.704 + ] + ], + [ + 0.237, + [ + 0.798, + 0.921, + 0.704 + ] + ], + [ + 0.239, + [ + 0.793, + 0.919, + 0.705 + ] + ], + [ + 0.241, + [ + 0.793, + 0.919, + 0.705 + ] + ], + [ + 0.243, + [ + 0.789, + 0.917, + 0.705 + ] + ], + [ + 0.245, + [ + 0.789, + 0.917, + 0.705 + ] + ], + [ + 0.247, + [ + 0.784, + 0.915, + 0.706 + ] + ], + [ + 0.249, + [ + 0.784, + 0.915, + 0.706 + ] + ], + [ + 0.25, + [ + 0.778, + 0.913, + 0.706 + ] + ], + [ + 0.252, + [ + 0.778, + 0.913, + 0.706 + ] + ], + [ + 0.254, + [ + 0.769, + 0.909, + 0.707 + ] + ], + [ + 0.256, + [ + 0.769, + 0.909, + 0.707 + ] + ], + [ + 0.258, + [ + 0.76, + 0.906, + 0.708 + ] + ], + [ + 0.26, + [ + 0.76, + 0.906, + 0.708 + ] + ], + [ + 0.262, + [ + 0.752, + 0.903, + 0.709 + ] + ], + [ + 0.264, + [ + 0.752, + 0.903, + 0.709 + ] + ], + [ + 0.266, + [ + 0.743, + 0.899, + 0.71 + ] + ], + [ + 0.268, + [ + 0.743, + 0.899, + 0.71 + ] + ], + [ + 0.27, + [ + 0.734, + 0.896, + 0.71 + ] + ], + [ + 0.272, + [ + 0.734, + 0.896, + 0.71 + ] + ], + [ + 0.274, + [ + 0.725, + 0.892, + 0.711 + ] + ], + [ + 0.276, + [ + 0.725, + 0.892, + 0.711 + ] + ], + [ + 0.278, + [ + 0.716, + 0.889, + 0.712 + ] + ], + [ + 0.28, + [ + 0.716, + 0.889, + 0.712 + ] + ], + [ + 0.282, + [ + 0.707, + 0.885, + 0.713 + ] + ], + [ + 0.284, + [ + 0.707, + 0.885, + 0.713 + ] + ], + [ + 0.286, + [ + 0.698, + 0.882, + 0.714 + ] + ], + [ + 0.288, + [ + 0.698, + 0.882, + 0.714 + ] + ], + [ + 0.29, + [ + 0.69, + 0.878, + 0.715 + ] + ], + [ + 0.292, + [ + 0.69, + 0.878, + 0.715 + ] + ], + [ + 0.294, + [ + 0.681, + 0.875, + 0.716 + ] + ], + [ + 0.295, + [ + 0.681, + 0.875, + 0.716 + ] + ], + [ + 0.297, + [ + 0.672, + 0.872, + 0.716 + ] + ], + [ + 0.299, + [ + 0.672, + 0.872, + 0.716 + ] + ], + [ + 0.301, + [ + 0.663, + 0.868, + 0.717 + ] + ], + [ + 0.303, + [ + 0.663, + 0.868, + 0.717 + ] + ], + [ + 0.305, + [ + 0.654, + 0.865, + 0.718 + ] + ], + [ + 0.307, + [ + 0.654, + 0.865, + 0.718 + ] + ], + [ + 0.309, + [ + 0.645, + 0.861, + 0.719 + ] + ], + [ + 0.311, + [ + 0.645, + 0.861, + 0.719 + ] + ], + [ + 0.313, + [ + 0.636, + 0.858, + 0.72 + ] + ], + [ + 0.315, + [ + 0.636, + 0.858, + 0.72 + ] + ], + [ + 0.317, + [ + 0.628, + 0.854, + 0.721 + ] + ], + [ + 0.319, + [ + 0.628, + 0.854, + 0.721 + ] + ], + [ + 0.321, + [ + 0.619, + 0.851, + 0.722 + ] + ], + [ + 0.323, + [ + 0.619, + 0.851, + 0.722 + ] + ], + [ + 0.325, + [ + 0.61, + 0.847, + 0.722 + ] + ], + [ + 0.327, + [ + 0.61, + 0.847, + 0.722 + ] + ], + [ + 0.329, + [ + 0.601, + 0.844, + 0.723 + ] + ], + [ + 0.331, + [ + 0.601, + 0.844, + 0.723 + ] + ], + [ + 0.333, + [ + 0.592, + 0.841, + 0.724 + ] + ], + [ + 0.335, + [ + 0.592, + 0.841, + 0.724 + ] + ], + [ + 0.337, + [ + 0.583, + 0.837, + 0.725 + ] + ], + [ + 0.339, + [ + 0.583, + 0.837, + 0.725 + ] + ], + [ + 0.341, + [ + 0.574, + 0.834, + 0.726 + ] + ], + [ + 0.342, + [ + 0.574, + 0.834, + 0.726 + ] + ], + [ + 0.344, + [ + 0.566, + 0.83, + 0.727 + ] + ], + [ + 0.346, + [ + 0.566, + 0.83, + 0.727 + ] + ], + [ + 0.348, + [ + 0.557, + 0.827, + 0.728 + ] + ], + [ + 0.35, + [ + 0.557, + 0.827, + 0.728 + ] + ], + [ + 0.352, + [ + 0.548, + 0.823, + 0.728 + ] + ], + [ + 0.354, + [ + 0.548, + 0.823, + 0.728 + ] + ], + [ + 0.356, + [ + 0.539, + 0.82, + 0.729 + ] + ], + [ + 0.358, + [ + 0.539, + 0.82, + 0.729 + ] + ], + [ + 0.36, + [ + 0.53, + 0.816, + 0.73 + ] + ], + [ + 0.362, + [ + 0.53, + 0.816, + 0.73 + ] + ], + [ + 0.364, + [ + 0.521, + 0.813, + 0.731 + ] + ], + [ + 0.366, + [ + 0.521, + 0.813, + 0.731 + ] + ], + [ + 0.368, + [ + 0.512, + 0.81, + 0.732 + ] + ], + [ + 0.37, + [ + 0.512, + 0.81, + 0.732 + ] + ], + [ + 0.372, + [ + 0.504, + 0.806, + 0.733 + ] + ], + [ + 0.374, + [ + 0.504, + 0.806, + 0.733 + ] + ], + [ + 0.376, + [ + 0.495, + 0.803, + 0.734 + ] + ], + [ + 0.378, + [ + 0.495, + 0.803, + 0.734 + ] + ], + [ + 0.38, + [ + 0.488, + 0.8, + 0.735 + ] + ], + [ + 0.382, + [ + 0.488, + 0.8, + 0.735 + ] + ], + [ + 0.384, + [ + 0.48, + 0.797, + 0.736 + ] + ], + [ + 0.386, + [ + 0.48, + 0.797, + 0.736 + ] + ], + [ + 0.387, + [ + 0.472, + 0.794, + 0.737 + ] + ], + [ + 0.389, + [ + 0.472, + 0.794, + 0.737 + ] + ], + [ + 0.391, + [ + 0.465, + 0.792, + 0.738 + ] + ], + [ + 0.393, + [ + 0.465, + 0.792, + 0.738 + ] + ], + [ + 0.395, + [ + 0.457, + 0.789, + 0.739 + ] + ], + [ + 0.397, + [ + 0.457, + 0.789, + 0.739 + ] + ], + [ + 0.399, + [ + 0.449, + 0.786, + 0.74 + ] + ], + [ + 0.401, + [ + 0.449, + 0.786, + 0.74 + ] + ], + [ + 0.403, + [ + 0.442, + 0.783, + 0.741 + ] + ], + [ + 0.405, + [ + 0.442, + 0.783, + 0.741 + ] + ], + [ + 0.407, + [ + 0.434, + 0.78, + 0.743 + ] + ], + [ + 0.409, + [ + 0.434, + 0.78, + 0.743 + ] + ], + [ + 0.411, + [ + 0.427, + 0.777, + 0.744 + ] + ], + [ + 0.413, + [ + 0.427, + 0.777, + 0.744 + ] + ], + [ + 0.415, + [ + 0.419, + 0.775, + 0.745 + ] + ], + [ + 0.417, + [ + 0.419, + 0.775, + 0.745 + ] + ], + [ + 0.419, + [ + 0.411, + 0.772, + 0.746 + ] + ], + [ + 0.421, + [ + 0.411, + 0.772, + 0.746 + ] + ], + [ + 0.423, + [ + 0.404, + 0.769, + 0.747 + ] + ], + [ + 0.425, + [ + 0.404, + 0.769, + 0.747 + ] + ], + [ + 0.427, + [ + 0.396, + 0.766, + 0.748 + ] + ], + [ + 0.429, + [ + 0.396, + 0.766, + 0.748 + ] + ], + [ + 0.431, + [ + 0.388, + 0.763, + 0.749 + ] + ], + [ + 0.432, + [ + 0.388, + 0.763, + 0.749 + ] + ], + [ + 0.434, + [ + 0.381, + 0.76, + 0.75 + ] + ], + [ + 0.436, + [ + 0.381, + 0.76, + 0.75 + ] + ], + [ + 0.438, + [ + 0.373, + 0.758, + 0.751 + ] + ], + [ + 0.44, + [ + 0.373, + 0.758, + 0.751 + ] + ], + [ + 0.442, + [ + 0.366, + 0.755, + 0.753 + ] + ], + [ + 0.444, + [ + 0.366, + 0.755, + 0.753 + ] + ], + [ + 0.446, + [ + 0.358, + 0.752, + 0.754 + ] + ], + [ + 0.448, + [ + 0.358, + 0.752, + 0.754 + ] + ], + [ + 0.45, + [ + 0.35, + 0.749, + 0.755 + ] + ], + [ + 0.452, + [ + 0.35, + 0.749, + 0.755 + ] + ], + [ + 0.454, + [ + 0.343, + 0.746, + 0.756 + ] + ], + [ + 0.456, + [ + 0.343, + 0.746, + 0.756 + ] + ], + [ + 0.458, + [ + 0.335, + 0.743, + 0.757 + ] + ], + [ + 0.46, + [ + 0.335, + 0.743, + 0.757 + ] + ], + [ + 0.462, + [ + 0.327, + 0.741, + 0.758 + ] + ], + [ + 0.464, + [ + 0.327, + 0.741, + 0.758 + ] + ], + [ + 0.466, + [ + 0.32, + 0.738, + 0.759 + ] + ], + [ + 0.468, + [ + 0.32, + 0.738, + 0.759 + ] + ], + [ + 0.47, + [ + 0.312, + 0.735, + 0.76 + ] + ], + [ + 0.472, + [ + 0.312, + 0.735, + 0.76 + ] + ], + [ + 0.474, + [ + 0.304, + 0.732, + 0.761 + ] + ], + [ + 0.476, + [ + 0.304, + 0.732, + 0.761 + ] + ], + [ + 0.477, + [ + 0.297, + 0.729, + 0.763 + ] + ], + [ + 0.479, + [ + 0.297, + 0.729, + 0.763 + ] + ], + [ + 0.481, + [ + 0.289, + 0.726, + 0.764 + ] + ], + [ + 0.483, + [ + 0.289, + 0.726, + 0.764 + ] + ], + [ + 0.485, + [ + 0.282, + 0.724, + 0.765 + ] + ], + [ + 0.487, + [ + 0.282, + 0.724, + 0.765 + ] + ], + [ + 0.489, + [ + 0.274, + 0.721, + 0.766 + ] + ], + [ + 0.491, + [ + 0.274, + 0.721, + 0.766 + ] + ], + [ + 0.493, + [ + 0.266, + 0.718, + 0.767 + ] + ], + [ + 0.495, + [ + 0.266, + 0.718, + 0.767 + ] + ], + [ + 0.497, + [ + 0.259, + 0.715, + 0.768 + ] + ], + [ + 0.499, + [ + 0.259, + 0.715, + 0.768 + ] + ], + [ + 0.501, + [ + 0.253, + 0.711, + 0.768 + ] + ], + [ + 0.503, + [ + 0.253, + 0.711, + 0.768 + ] + ], + [ + 0.505, + [ + 0.248, + 0.707, + 0.768 + ] + ], + [ + 0.507, + [ + 0.248, + 0.707, + 0.768 + ] + ], + [ + 0.509, + [ + 0.244, + 0.702, + 0.767 + ] + ], + [ + 0.511, + [ + 0.244, + 0.702, + 0.767 + ] + ], + [ + 0.513, + [ + 0.239, + 0.698, + 0.767 + ] + ], + [ + 0.515, + [ + 0.239, + 0.698, + 0.767 + ] + ], + [ + 0.517, + [ + 0.235, + 0.693, + 0.766 + ] + ], + [ + 0.519, + [ + 0.235, + 0.693, + 0.766 + ] + ], + [ + 0.521, + [ + 0.231, + 0.689, + 0.766 + ] + ], + [ + 0.523, + [ + 0.231, + 0.689, + 0.766 + ] + ], + [ + 0.524, + [ + 0.226, + 0.684, + 0.765 + ] + ], + [ + 0.526, + [ + 0.226, + 0.684, + 0.765 + ] + ], + [ + 0.528, + [ + 0.222, + 0.68, + 0.765 + ] + ], + [ + 0.53, + [ + 0.222, + 0.68, + 0.765 + ] + ], + [ + 0.532, + [ + 0.217, + 0.675, + 0.764 + ] + ], + [ + 0.534, + [ + 0.217, + 0.675, + 0.764 + ] + ], + [ + 0.536, + [ + 0.213, + 0.67, + 0.764 + ] + ], + [ + 0.538, + [ + 0.213, + 0.67, + 0.764 + ] + ], + [ + 0.54, + [ + 0.208, + 0.666, + 0.763 + ] + ], + [ + 0.542, + [ + 0.208, + 0.666, + 0.763 + ] + ], + [ + 0.544, + [ + 0.204, + 0.661, + 0.763 + ] + ], + [ + 0.546, + [ + 0.204, + 0.661, + 0.763 + ] + ], + [ + 0.548, + [ + 0.2, + 0.657, + 0.762 + ] + ], + [ + 0.55, + [ + 0.2, + 0.657, + 0.762 + ] + ], + [ + 0.552, + [ + 0.195, + 0.652, + 0.762 + ] + ], + [ + 0.554, + [ + 0.195, + 0.652, + 0.762 + ] + ], + [ + 0.556, + [ + 0.191, + 0.648, + 0.761 + ] + ], + [ + 0.558, + [ + 0.191, + 0.648, + 0.761 + ] + ], + [ + 0.56, + [ + 0.186, + 0.643, + 0.761 + ] + ], + [ + 0.562, + [ + 0.186, + 0.643, + 0.761 + ] + ], + [ + 0.564, + [ + 0.182, + 0.639, + 0.761 + ] + ], + [ + 0.566, + [ + 0.182, + 0.639, + 0.761 + ] + ], + [ + 0.568, + [ + 0.177, + 0.634, + 0.76 + ] + ], + [ + 0.569, + [ + 0.177, + 0.634, + 0.76 + ] + ], + [ + 0.571, + [ + 0.173, + 0.63, + 0.76 + ] + ], + [ + 0.573, + [ + 0.173, + 0.63, + 0.76 + ] + ], + [ + 0.575, + [ + 0.169, + 0.625, + 0.759 + ] + ], + [ + 0.577, + [ + 0.169, + 0.625, + 0.759 + ] + ], + [ + 0.579, + [ + 0.164, + 0.62, + 0.759 + ] + ], + [ + 0.581, + [ + 0.164, + 0.62, + 0.759 + ] + ], + [ + 0.583, + [ + 0.16, + 0.616, + 0.758 + ] + ], + [ + 0.585, + [ + 0.16, + 0.616, + 0.758 + ] + ], + [ + 0.587, + [ + 0.155, + 0.611, + 0.758 + ] + ], + [ + 0.589, + [ + 0.155, + 0.611, + 0.758 + ] + ], + [ + 0.591, + [ + 0.151, + 0.607, + 0.757 + ] + ], + [ + 0.593, + [ + 0.151, + 0.607, + 0.757 + ] + ], + [ + 0.595, + [ + 0.146, + 0.602, + 0.757 + ] + ], + [ + 0.597, + [ + 0.146, + 0.602, + 0.757 + ] + ], + [ + 0.599, + [ + 0.142, + 0.598, + 0.756 + ] + ], + [ + 0.601, + [ + 0.142, + 0.598, + 0.756 + ] + ], + [ + 0.603, + [ + 0.138, + 0.593, + 0.756 + ] + ], + [ + 0.605, + [ + 0.138, + 0.593, + 0.756 + ] + ], + [ + 0.607, + [ + 0.133, + 0.589, + 0.755 + ] + ], + [ + 0.609, + [ + 0.133, + 0.589, + 0.755 + ] + ], + [ + 0.611, + [ + 0.129, + 0.584, + 0.755 + ] + ], + [ + 0.613, + [ + 0.129, + 0.584, + 0.755 + ] + ], + [ + 0.614, + [ + 0.124, + 0.579, + 0.754 + ] + ], + [ + 0.616, + [ + 0.124, + 0.579, + 0.754 + ] + ], + [ + 0.618, + [ + 0.12, + 0.575, + 0.754 + ] + ], + [ + 0.62, + [ + 0.12, + 0.575, + 0.754 + ] + ], + [ + 0.622, + [ + 0.115, + 0.57, + 0.753 + ] + ], + [ + 0.624, + [ + 0.115, + 0.57, + 0.753 + ] + ], + [ + 0.626, + [ + 0.114, + 0.565, + 0.751 + ] + ], + [ + 0.628, + [ + 0.114, + 0.565, + 0.751 + ] + ], + [ + 0.63, + [ + 0.115, + 0.558, + 0.748 + ] + ], + [ + 0.632, + [ + 0.115, + 0.558, + 0.748 + ] + ], + [ + 0.634, + [ + 0.115, + 0.552, + 0.745 + ] + ], + [ + 0.636, + [ + 0.115, + 0.552, + 0.745 + ] + ], + [ + 0.638, + [ + 0.116, + 0.546, + 0.742 + ] + ], + [ + 0.64, + [ + 0.116, + 0.546, + 0.742 + ] + ], + [ + 0.642, + [ + 0.117, + 0.54, + 0.739 + ] + ], + [ + 0.644, + [ + 0.117, + 0.54, + 0.739 + ] + ], + [ + 0.646, + [ + 0.117, + 0.533, + 0.736 + ] + ], + [ + 0.648, + [ + 0.117, + 0.533, + 0.736 + ] + ], + [ + 0.65, + [ + 0.118, + 0.527, + 0.733 + ] + ], + [ + 0.652, + [ + 0.118, + 0.527, + 0.733 + ] + ], + [ + 0.654, + [ + 0.118, + 0.521, + 0.73 + ] + ], + [ + 0.656, + [ + 0.118, + 0.521, + 0.73 + ] + ], + [ + 0.658, + [ + 0.119, + 0.515, + 0.727 + ] + ], + [ + 0.659, + [ + 0.119, + 0.515, + 0.727 + ] + ], + [ + 0.661, + [ + 0.12, + 0.508, + 0.725 + ] + ], + [ + 0.663, + [ + 0.12, + 0.508, + 0.725 + ] + ], + [ + 0.665, + [ + 0.12, + 0.502, + 0.722 + ] + ], + [ + 0.667, + [ + 0.12, + 0.502, + 0.722 + ] + ], + [ + 0.669, + [ + 0.121, + 0.496, + 0.719 + ] + ], + [ + 0.671, + [ + 0.121, + 0.496, + 0.719 + ] + ], + [ + 0.673, + [ + 0.121, + 0.489, + 0.716 + ] + ], + [ + 0.675, + [ + 0.121, + 0.489, + 0.716 + ] + ], + [ + 0.677, + [ + 0.122, + 0.483, + 0.713 + ] + ], + [ + 0.679, + [ + 0.122, + 0.483, + 0.713 + ] + ], + [ + 0.681, + [ + 0.123, + 0.477, + 0.71 + ] + ], + [ + 0.683, + [ + 0.123, + 0.477, + 0.71 + ] + ], + [ + 0.685, + [ + 0.123, + 0.471, + 0.707 + ] + ], + [ + 0.687, + [ + 0.123, + 0.471, + 0.707 + ] + ], + [ + 0.689, + [ + 0.124, + 0.464, + 0.704 + ] + ], + [ + 0.691, + [ + 0.124, + 0.464, + 0.704 + ] + ], + [ + 0.693, + [ + 0.125, + 0.458, + 0.701 + ] + ], + [ + 0.695, + [ + 0.125, + 0.458, + 0.701 + ] + ], + [ + 0.697, + [ + 0.125, + 0.452, + 0.698 + ] + ], + [ + 0.699, + [ + 0.125, + 0.452, + 0.698 + ] + ], + [ + 0.701, + [ + 0.126, + 0.445, + 0.695 + ] + ], + [ + 0.703, + [ + 0.126, + 0.445, + 0.695 + ] + ], + [ + 0.705, + [ + 0.126, + 0.439, + 0.692 + ] + ], + [ + 0.706, + [ + 0.126, + 0.439, + 0.692 + ] + ], + [ + 0.708, + [ + 0.127, + 0.433, + 0.689 + ] + ], + [ + 0.71, + [ + 0.127, + 0.433, + 0.689 + ] + ], + [ + 0.712, + [ + 0.128, + 0.427, + 0.686 + ] + ], + [ + 0.714, + [ + 0.128, + 0.427, + 0.686 + ] + ], + [ + 0.716, + [ + 0.128, + 0.42, + 0.683 + ] + ], + [ + 0.718, + [ + 0.128, + 0.42, + 0.683 + ] + ], + [ + 0.72, + [ + 0.129, + 0.414, + 0.68 + ] + ], + [ + 0.722, + [ + 0.129, + 0.414, + 0.68 + ] + ], + [ + 0.724, + [ + 0.129, + 0.408, + 0.677 + ] + ], + [ + 0.726, + [ + 0.129, + 0.408, + 0.677 + ] + ], + [ + 0.728, + [ + 0.13, + 0.402, + 0.674 + ] + ], + [ + 0.73, + [ + 0.13, + 0.402, + 0.674 + ] + ], + [ + 0.732, + [ + 0.131, + 0.395, + 0.671 + ] + ], + [ + 0.734, + [ + 0.131, + 0.395, + 0.671 + ] + ], + [ + 0.736, + [ + 0.131, + 0.389, + 0.668 + ] + ], + [ + 0.738, + [ + 0.131, + 0.389, + 0.668 + ] + ], + [ + 0.74, + [ + 0.132, + 0.383, + 0.665 + ] + ], + [ + 0.742, + [ + 0.132, + 0.383, + 0.665 + ] + ], + [ + 0.744, + [ + 0.133, + 0.376, + 0.663 + ] + ], + [ + 0.746, + [ + 0.133, + 0.376, + 0.663 + ] + ], + [ + 0.748, + [ + 0.133, + 0.37, + 0.66 + ] + ], + [ + 0.75, + [ + 0.133, + 0.37, + 0.66 + ] + ], + [ + 0.751, + [ + 0.134, + 0.365, + 0.657 + ] + ], + [ + 0.753, + [ + 0.134, + 0.365, + 0.657 + ] + ], + [ + 0.755, + [ + 0.134, + 0.36, + 0.655 + ] + ], + [ + 0.757, + [ + 0.134, + 0.36, + 0.655 + ] + ], + [ + 0.759, + [ + 0.134, + 0.354, + 0.652 + ] + ], + [ + 0.761, + [ + 0.134, + 0.354, + 0.652 + ] + ], + [ + 0.763, + [ + 0.135, + 0.349, + 0.65 + ] + ], + [ + 0.765, + [ + 0.135, + 0.349, + 0.65 + ] + ], + [ + 0.767, + [ + 0.135, + 0.344, + 0.647 + ] + ], + [ + 0.769, + [ + 0.135, + 0.344, + 0.647 + ] + ], + [ + 0.771, + [ + 0.135, + 0.339, + 0.645 + ] + ], + [ + 0.773, + [ + 0.135, + 0.339, + 0.645 + ] + ], + [ + 0.775, + [ + 0.136, + 0.334, + 0.642 + ] + ], + [ + 0.777, + [ + 0.136, + 0.334, + 0.642 + ] + ], + [ + 0.779, + [ + 0.136, + 0.329, + 0.64 + ] + ], + [ + 0.781, + [ + 0.136, + 0.329, + 0.64 + ] + ], + [ + 0.783, + [ + 0.137, + 0.323, + 0.637 + ] + ], + [ + 0.785, + [ + 0.137, + 0.323, + 0.637 + ] + ], + [ + 0.787, + [ + 0.137, + 0.318, + 0.635 + ] + ], + [ + 0.789, + [ + 0.137, + 0.318, + 0.635 + ] + ], + [ + 0.791, + [ + 0.137, + 0.313, + 0.632 + ] + ], + [ + 0.793, + [ + 0.137, + 0.313, + 0.632 + ] + ], + [ + 0.795, + [ + 0.138, + 0.308, + 0.63 + ] + ], + [ + 0.796, + [ + 0.138, + 0.308, + 0.63 + ] + ], + [ + 0.798, + [ + 0.138, + 0.303, + 0.627 + ] + ], + [ + 0.8, + [ + 0.138, + 0.303, + 0.627 + ] + ], + [ + 0.802, + [ + 0.138, + 0.298, + 0.625 + ] + ], + [ + 0.804, + [ + 0.138, + 0.298, + 0.625 + ] + ], + [ + 0.806, + [ + 0.139, + 0.292, + 0.623 + ] + ], + [ + 0.808, + [ + 0.139, + 0.292, + 0.623 + ] + ], + [ + 0.81, + [ + 0.139, + 0.287, + 0.62 + ] + ], + [ + 0.812, + [ + 0.139, + 0.287, + 0.62 + ] + ], + [ + 0.814, + [ + 0.14, + 0.282, + 0.618 + ] + ], + [ + 0.816, + [ + 0.14, + 0.282, + 0.618 + ] + ], + [ + 0.818, + [ + 0.14, + 0.277, + 0.615 + ] + ], + [ + 0.82, + [ + 0.14, + 0.277, + 0.615 + ] + ], + [ + 0.822, + [ + 0.14, + 0.272, + 0.613 + ] + ], + [ + 0.824, + [ + 0.14, + 0.272, + 0.613 + ] + ], + [ + 0.826, + [ + 0.141, + 0.267, + 0.61 + ] + ], + [ + 0.828, + [ + 0.141, + 0.267, + 0.61 + ] + ], + [ + 0.83, + [ + 0.141, + 0.261, + 0.608 + ] + ], + [ + 0.832, + [ + 0.141, + 0.261, + 0.608 + ] + ], + [ + 0.834, + [ + 0.141, + 0.256, + 0.605 + ] + ], + [ + 0.836, + [ + 0.141, + 0.256, + 0.605 + ] + ], + [ + 0.838, + [ + 0.142, + 0.251, + 0.603 + ] + ], + [ + 0.84, + [ + 0.142, + 0.251, + 0.603 + ] + ], + [ + 0.841, + [ + 0.142, + 0.246, + 0.6 + ] + ], + [ + 0.843, + [ + 0.142, + 0.246, + 0.6 + ] + ], + [ + 0.845, + [ + 0.142, + 0.241, + 0.598 + ] + ], + [ + 0.847, + [ + 0.142, + 0.241, + 0.598 + ] + ], + [ + 0.849, + [ + 0.143, + 0.236, + 0.595 + ] + ], + [ + 0.851, + [ + 0.143, + 0.236, + 0.595 + ] + ], + [ + 0.853, + [ + 0.143, + 0.23, + 0.593 + ] + ], + [ + 0.855, + [ + 0.143, + 0.23, + 0.593 + ] + ], + [ + 0.857, + [ + 0.144, + 0.225, + 0.591 + ] + ], + [ + 0.859, + [ + 0.144, + 0.225, + 0.591 + ] + ], + [ + 0.861, + [ + 0.144, + 0.22, + 0.588 + ] + ], + [ + 0.863, + [ + 0.144, + 0.22, + 0.588 + ] + ], + [ + 0.865, + [ + 0.144, + 0.215, + 0.586 + ] + ], + [ + 0.867, + [ + 0.144, + 0.215, + 0.586 + ] + ], + [ + 0.869, + [ + 0.145, + 0.21, + 0.583 + ] + ], + [ + 0.871, + [ + 0.145, + 0.21, + 0.583 + ] + ], + [ + 0.873, + [ + 0.145, + 0.205, + 0.581 + ] + ], + [ + 0.875, + [ + 0.145, + 0.205, + 0.581 + ] + ], + [ + 0.877, + [ + 0.142, + 0.201, + 0.574 + ] + ], + [ + 0.879, + [ + 0.142, + 0.201, + 0.574 + ] + ], + [ + 0.881, + [ + 0.138, + 0.199, + 0.567 + ] + ], + [ + 0.883, + [ + 0.138, + 0.199, + 0.567 + ] + ], + [ + 0.885, + [ + 0.135, + 0.196, + 0.559 + ] + ], + [ + 0.886, + [ + 0.135, + 0.196, + 0.559 + ] + ], + [ + 0.888, + [ + 0.131, + 0.193, + 0.552 + ] + ], + [ + 0.89, + [ + 0.131, + 0.193, + 0.552 + ] + ], + [ + 0.892, + [ + 0.128, + 0.19, + 0.544 + ] + ], + [ + 0.894, + [ + 0.128, + 0.19, + 0.544 + ] + ], + [ + 0.896, + [ + 0.124, + 0.187, + 0.537 + ] + ], + [ + 0.898, + [ + 0.124, + 0.187, + 0.537 + ] + ], + [ + 0.9, + [ + 0.121, + 0.184, + 0.53 + ] + ], + [ + 0.902, + [ + 0.121, + 0.184, + 0.53 + ] + ], + [ + 0.904, + [ + 0.117, + 0.182, + 0.522 + ] + ], + [ + 0.906, + [ + 0.117, + 0.182, + 0.522 + ] + ], + [ + 0.908, + [ + 0.113, + 0.179, + 0.515 + ] + ], + [ + 0.91, + [ + 0.113, + 0.179, + 0.515 + ] + ], + [ + 0.912, + [ + 0.11, + 0.176, + 0.507 + ] + ], + [ + 0.914, + [ + 0.11, + 0.176, + 0.507 + ] + ], + [ + 0.916, + [ + 0.106, + 0.173, + 0.5 + ] + ], + [ + 0.918, + [ + 0.106, + 0.173, + 0.5 + ] + ], + [ + 0.92, + [ + 0.103, + 0.17, + 0.493 + ] + ], + [ + 0.922, + [ + 0.103, + 0.17, + 0.493 + ] + ], + [ + 0.924, + [ + 0.099, + 0.167, + 0.485 + ] + ], + [ + 0.926, + [ + 0.099, + 0.167, + 0.485 + ] + ], + [ + 0.928, + [ + 0.096, + 0.165, + 0.478 + ] + ], + [ + 0.93, + [ + 0.096, + 0.165, + 0.478 + ] + ], + [ + 0.932, + [ + 0.092, + 0.162, + 0.471 + ] + ], + [ + 0.933, + [ + 0.092, + 0.162, + 0.471 + ] + ], + [ + 0.935, + [ + 0.088, + 0.159, + 0.463 + ] + ], + [ + 0.937, + [ + 0.088, + 0.159, + 0.463 + ] + ], + [ + 0.939, + [ + 0.085, + 0.156, + 0.456 + ] + ], + [ + 0.941, + [ + 0.085, + 0.156, + 0.456 + ] + ], + [ + 0.943, + [ + 0.081, + 0.153, + 0.448 + ] + ], + [ + 0.945, + [ + 0.081, + 0.153, + 0.448 + ] + ], + [ + 0.947, + [ + 0.078, + 0.151, + 0.441 + ] + ], + [ + 0.949, + [ + 0.078, + 0.151, + 0.441 + ] + ], + [ + 0.951, + [ + 0.074, + 0.148, + 0.434 + ] + ], + [ + 0.953, + [ + 0.074, + 0.148, + 0.434 + ] + ], + [ + 0.955, + [ + 0.071, + 0.145, + 0.426 + ] + ], + [ + 0.957, + [ + 0.071, + 0.145, + 0.426 + ] + ], + [ + 0.959, + [ + 0.067, + 0.142, + 0.419 + ] + ], + [ + 0.961, + [ + 0.067, + 0.142, + 0.419 + ] + ], + [ + 0.963, + [ + 0.063, + 0.139, + 0.412 + ] + ], + [ + 0.965, + [ + 0.063, + 0.139, + 0.412 + ] + ], + [ + 0.967, + [ + 0.06, + 0.136, + 0.404 + ] + ], + [ + 0.969, + [ + 0.06, + 0.136, + 0.404 + ] + ], + [ + 0.971, + [ + 0.056, + 0.134, + 0.397 + ] + ], + [ + 0.973, + [ + 0.056, + 0.134, + 0.397 + ] + ], + [ + 0.975, + [ + 0.053, + 0.131, + 0.389 + ] + ], + [ + 0.977, + [ + 0.053, + 0.131, + 0.389 + ] + ], + [ + 0.978, + [ + 0.049, + 0.128, + 0.382 + ] + ], + [ + 0.98, + [ + 0.049, + 0.128, + 0.382 + ] + ], + [ + 0.982, + [ + 0.046, + 0.125, + 0.375 + ] + ], + [ + 0.984, + [ + 0.046, + 0.125, + 0.375 + ] + ], + [ + 0.986, + [ + 0.042, + 0.122, + 0.367 + ] + ], + [ + 0.988, + [ + 0.042, + 0.122, + 0.367 + ] + ], + [ + 0.99, + [ + 0.039, + 0.119, + 0.36 + ] + ], + [ + 0.992, + [ + 0.039, + 0.119, + 0.36 + ] + ], + [ + 0.994, + [ + 0.035, + 0.117, + 0.352 + ] + ], + [ + 0.996, + [ + 0.035, + 0.117, + 0.352 + ] + ], + [ + 0.998, + [ + 0.031, + 0.114, + 0.345 + ] + ], + [ + 1, + [ + 0.031, + 0.114, + 0.345 + ] + ] + ], + [ + [ + 0, + [ + 0, + 0, + 1 + ] + ], + [ + 0.002, + [ + 0, + 0, + 1 + ] + ], + [ + 0.004, + [ + 0, + 0.004, + 0.998 + ] + ], + [ + 0.006, + [ + 0, + 0.004, + 0.998 + ] + ], + [ + 0.008, + [ + 0, + 0.008, + 0.996 + ] + ], + [ + 0.01, + [ + 0, + 0.008, + 0.996 + ] + ], + [ + 0.012, + [ + 0, + 0.012, + 0.994 + ] + ], + [ + 0.014, + [ + 0, + 0.012, + 0.994 + ] + ], + [ + 0.016, + [ + 0, + 0.016, + 0.992 + ] + ], + [ + 0.018, + [ + 0, + 0.016, + 0.992 + ] + ], + [ + 0.02, + [ + 0, + 0.02, + 0.99 + ] + ], + [ + 0.022, + [ + 0, + 0.02, + 0.99 + ] + ], + [ + 0.023, + [ + 0, + 0.024, + 0.988 + ] + ], + [ + 0.025, + [ + 0, + 0.024, + 0.988 + ] + ], + [ + 0.027, + [ + 0, + 0.027, + 0.986 + ] + ], + [ + 0.029, + [ + 0, + 0.027, + 0.986 + ] + ], + [ + 0.031, + [ + 0, + 0.031, + 0.984 + ] + ], + [ + 0.033, + [ + 0, + 0.031, + 0.984 + ] + ], + [ + 0.035, + [ + 0, + 0.035, + 0.982 + ] + ], + [ + 0.037, + [ + 0, + 0.035, + 0.982 + ] + ], + [ + 0.039, + [ + 0, + 0.039, + 0.98 + ] + ], + [ + 0.041, + [ + 0, + 0.039, + 0.98 + ] + ], + [ + 0.043, + [ + 0, + 0.043, + 0.978 + ] + ], + [ + 0.045, + [ + 0, + 0.043, + 0.978 + ] + ], + [ + 0.047, + [ + 0, + 0.047, + 0.976 + ] + ], + [ + 0.049, + [ + 0, + 0.047, + 0.976 + ] + ], + [ + 0.051, + [ + 0, + 0.051, + 0.975 + ] + ], + [ + 0.053, + [ + 0, + 0.051, + 0.975 + ] + ], + [ + 0.055, + [ + 0, + 0.055, + 0.973 + ] + ], + [ + 0.057, + [ + 0, + 0.055, + 0.973 + ] + ], + [ + 0.059, + [ + 0, + 0.059, + 0.971 + ] + ], + [ + 0.061, + [ + 0, + 0.059, + 0.971 + ] + ], + [ + 0.063, + [ + 0, + 0.063, + 0.969 + ] + ], + [ + 0.065, + [ + 0, + 0.063, + 0.969 + ] + ], + [ + 0.067, + [ + 0, + 0.067, + 0.967 + ] + ], + [ + 0.068, + [ + 0, + 0.067, + 0.967 + ] + ], + [ + 0.07, + [ + 0, + 0.071, + 0.965 + ] + ], + [ + 0.072, + [ + 0, + 0.071, + 0.965 + ] + ], + [ + 0.074, + [ + 0, + 0.075, + 0.963 + ] + ], + [ + 0.076, + [ + 0, + 0.075, + 0.963 + ] + ], + [ + 0.078, + [ + 0, + 0.078, + 0.961 + ] + ], + [ + 0.08, + [ + 0, + 0.078, + 0.961 + ] + ], + [ + 0.082, + [ + 0, + 0.082, + 0.959 + ] + ], + [ + 0.084, + [ + 0, + 0.082, + 0.959 + ] + ], + [ + 0.086, + [ + 0, + 0.086, + 0.957 + ] + ], + [ + 0.088, + [ + 0, + 0.086, + 0.957 + ] + ], + [ + 0.09, + [ + 0, + 0.09, + 0.955 + ] + ], + [ + 0.092, + [ + 0, + 0.09, + 0.955 + ] + ], + [ + 0.094, + [ + 0, + 0.094, + 0.953 + ] + ], + [ + 0.096, + [ + 0, + 0.094, + 0.953 + ] + ], + [ + 0.098, + [ + 0, + 0.098, + 0.951 + ] + ], + [ + 0.1, + [ + 0, + 0.098, + 0.951 + ] + ], + [ + 0.102, + [ + 0, + 0.102, + 0.949 + ] + ], + [ + 0.104, + [ + 0, + 0.102, + 0.949 + ] + ], + [ + 0.106, + [ + 0, + 0.106, + 0.947 + ] + ], + [ + 0.108, + [ + 0, + 0.106, + 0.947 + ] + ], + [ + 0.11, + [ + 0, + 0.11, + 0.945 + ] + ], + [ + 0.112, + [ + 0, + 0.11, + 0.945 + ] + ], + [ + 0.114, + [ + 0, + 0.114, + 0.943 + ] + ], + [ + 0.115, + [ + 0, + 0.114, + 0.943 + ] + ], + [ + 0.117, + [ + 0, + 0.118, + 0.941 + ] + ], + [ + 0.119, + [ + 0, + 0.118, + 0.941 + ] + ], + [ + 0.121, + [ + 0, + 0.122, + 0.939 + ] + ], + [ + 0.123, + [ + 0, + 0.122, + 0.939 + ] + ], + [ + 0.125, + [ + 0, + 0.125, + 0.937 + ] + ], + [ + 0.127, + [ + 0, + 0.125, + 0.937 + ] + ], + [ + 0.129, + [ + 0, + 0.129, + 0.935 + ] + ], + [ + 0.131, + [ + 0, + 0.129, + 0.935 + ] + ], + [ + 0.133, + [ + 0, + 0.133, + 0.933 + ] + ], + [ + 0.135, + [ + 0, + 0.133, + 0.933 + ] + ], + [ + 0.137, + [ + 0, + 0.137, + 0.931 + ] + ], + [ + 0.139, + [ + 0, + 0.137, + 0.931 + ] + ], + [ + 0.141, + [ + 0, + 0.141, + 0.929 + ] + ], + [ + 0.143, + [ + 0, + 0.141, + 0.929 + ] + ], + [ + 0.145, + [ + 0, + 0.145, + 0.927 + ] + ], + [ + 0.147, + [ + 0, + 0.145, + 0.927 + ] + ], + [ + 0.149, + [ + 0, + 0.149, + 0.925 + ] + ], + [ + 0.151, + [ + 0, + 0.149, + 0.925 + ] + ], + [ + 0.153, + [ + 0, + 0.153, + 0.924 + ] + ], + [ + 0.155, + [ + 0, + 0.153, + 0.924 + ] + ], + [ + 0.157, + [ + 0, + 0.157, + 0.922 + ] + ], + [ + 0.159, + [ + 0, + 0.157, + 0.922 + ] + ], + [ + 0.16, + [ + 0, + 0.161, + 0.92 + ] + ], + [ + 0.162, + [ + 0, + 0.161, + 0.92 + ] + ], + [ + 0.164, + [ + 0, + 0.165, + 0.918 + ] + ], + [ + 0.166, + [ + 0, + 0.165, + 0.918 + ] + ], + [ + 0.168, + [ + 0, + 0.169, + 0.916 + ] + ], + [ + 0.17, + [ + 0, + 0.169, + 0.916 + ] + ], + [ + 0.172, + [ + 0, + 0.173, + 0.914 + ] + ], + [ + 0.174, + [ + 0, + 0.173, + 0.914 + ] + ], + [ + 0.176, + [ + 0, + 0.176, + 0.912 + ] + ], + [ + 0.178, + [ + 0, + 0.176, + 0.912 + ] + ], + [ + 0.18, + [ + 0, + 0.18, + 0.91 + ] + ], + [ + 0.182, + [ + 0, + 0.18, + 0.91 + ] + ], + [ + 0.184, + [ + 0, + 0.184, + 0.908 + ] + ], + [ + 0.186, + [ + 0, + 0.184, + 0.908 + ] + ], + [ + 0.188, + [ + 0, + 0.188, + 0.906 + ] + ], + [ + 0.19, + [ + 0, + 0.188, + 0.906 + ] + ], + [ + 0.192, + [ + 0, + 0.192, + 0.904 + ] + ], + [ + 0.194, + [ + 0, + 0.192, + 0.904 + ] + ], + [ + 0.196, + [ + 0, + 0.196, + 0.902 + ] + ], + [ + 0.198, + [ + 0, + 0.196, + 0.902 + ] + ], + [ + 0.2, + [ + 0, + 0.2, + 0.9 + ] + ], + [ + 0.202, + [ + 0, + 0.2, + 0.9 + ] + ], + [ + 0.204, + [ + 0, + 0.204, + 0.898 + ] + ], + [ + 0.205, + [ + 0, + 0.204, + 0.898 + ] + ], + [ + 0.207, + [ + 0, + 0.208, + 0.896 + ] + ], + [ + 0.209, + [ + 0, + 0.208, + 0.896 + ] + ], + [ + 0.211, + [ + 0, + 0.212, + 0.894 + ] + ], + [ + 0.213, + [ + 0, + 0.212, + 0.894 + ] + ], + [ + 0.215, + [ + 0, + 0.216, + 0.892 + ] + ], + [ + 0.217, + [ + 0, + 0.216, + 0.892 + ] + ], + [ + 0.219, + [ + 0, + 0.22, + 0.89 + ] + ], + [ + 0.221, + [ + 0, + 0.22, + 0.89 + ] + ], + [ + 0.223, + [ + 0, + 0.224, + 0.888 + ] + ], + [ + 0.225, + [ + 0, + 0.224, + 0.888 + ] + ], + [ + 0.227, + [ + 0, + 0.227, + 0.886 + ] + ], + [ + 0.229, + [ + 0, + 0.227, + 0.886 + ] + ], + [ + 0.231, + [ + 0, + 0.231, + 0.884 + ] + ], + [ + 0.233, + [ + 0, + 0.231, + 0.884 + ] + ], + [ + 0.235, + [ + 0, + 0.235, + 0.882 + ] + ], + [ + 0.237, + [ + 0, + 0.235, + 0.882 + ] + ], + [ + 0.239, + [ + 0, + 0.239, + 0.88 + ] + ], + [ + 0.241, + [ + 0, + 0.239, + 0.88 + ] + ], + [ + 0.243, + [ + 0, + 0.243, + 0.878 + ] + ], + [ + 0.245, + [ + 0, + 0.243, + 0.878 + ] + ], + [ + 0.247, + [ + 0, + 0.247, + 0.876 + ] + ], + [ + 0.249, + [ + 0, + 0.247, + 0.876 + ] + ], + [ + 0.25, + [ + 0, + 0.251, + 0.875 + ] + ], + [ + 0.252, + [ + 0, + 0.251, + 0.875 + ] + ], + [ + 0.254, + [ + 0, + 0.255, + 0.873 + ] + ], + [ + 0.256, + [ + 0, + 0.255, + 0.873 + ] + ], + [ + 0.258, + [ + 0, + 0.259, + 0.871 + ] + ], + [ + 0.26, + [ + 0, + 0.259, + 0.871 + ] + ], + [ + 0.262, + [ + 0, + 0.263, + 0.869 + ] + ], + [ + 0.264, + [ + 0, + 0.263, + 0.869 + ] + ], + [ + 0.266, + [ + 0, + 0.267, + 0.867 + ] + ], + [ + 0.268, + [ + 0, + 0.267, + 0.867 + ] + ], + [ + 0.27, + [ + 0, + 0.271, + 0.865 + ] + ], + [ + 0.272, + [ + 0, + 0.271, + 0.865 + ] + ], + [ + 0.274, + [ + 0, + 0.275, + 0.863 + ] + ], + [ + 0.276, + [ + 0, + 0.275, + 0.863 + ] + ], + [ + 0.278, + [ + 0, + 0.278, + 0.861 + ] + ], + [ + 0.28, + [ + 0, + 0.278, + 0.861 + ] + ], + [ + 0.282, + [ + 0, + 0.282, + 0.859 + ] + ], + [ + 0.284, + [ + 0, + 0.282, + 0.859 + ] + ], + [ + 0.286, + [ + 0, + 0.286, + 0.857 + ] + ], + [ + 0.288, + [ + 0, + 0.286, + 0.857 + ] + ], + [ + 0.29, + [ + 0, + 0.29, + 0.855 + ] + ], + [ + 0.292, + [ + 0, + 0.29, + 0.855 + ] + ], + [ + 0.294, + [ + 0, + 0.294, + 0.853 + ] + ], + [ + 0.295, + [ + 0, + 0.294, + 0.853 + ] + ], + [ + 0.297, + [ + 0, + 0.298, + 0.851 + ] + ], + [ + 0.299, + [ + 0, + 0.298, + 0.851 + ] + ], + [ + 0.301, + [ + 0, + 0.302, + 0.849 + ] + ], + [ + 0.303, + [ + 0, + 0.302, + 0.849 + ] + ], + [ + 0.305, + [ + 0, + 0.306, + 0.847 + ] + ], + [ + 0.307, + [ + 0, + 0.306, + 0.847 + ] + ], + [ + 0.309, + [ + 0, + 0.31, + 0.845 + ] + ], + [ + 0.311, + [ + 0, + 0.31, + 0.845 + ] + ], + [ + 0.313, + [ + 0, + 0.314, + 0.843 + ] + ], + [ + 0.315, + [ + 0, + 0.314, + 0.843 + ] + ], + [ + 0.317, + [ + 0, + 0.318, + 0.841 + ] + ], + [ + 0.319, + [ + 0, + 0.318, + 0.841 + ] + ], + [ + 0.321, + [ + 0, + 0.322, + 0.839 + ] + ], + [ + 0.323, + [ + 0, + 0.322, + 0.839 + ] + ], + [ + 0.325, + [ + 0, + 0.325, + 0.837 + ] + ], + [ + 0.327, + [ + 0, + 0.325, + 0.837 + ] + ], + [ + 0.329, + [ + 0, + 0.329, + 0.835 + ] + ], + [ + 0.331, + [ + 0, + 0.329, + 0.835 + ] + ], + [ + 0.333, + [ + 0, + 0.333, + 0.833 + ] + ], + [ + 0.335, + [ + 0, + 0.333, + 0.833 + ] + ], + [ + 0.337, + [ + 0, + 0.337, + 0.831 + ] + ], + [ + 0.339, + [ + 0, + 0.337, + 0.831 + ] + ], + [ + 0.341, + [ + 0, + 0.341, + 0.829 + ] + ], + [ + 0.342, + [ + 0, + 0.341, + 0.829 + ] + ], + [ + 0.344, + [ + 0, + 0.345, + 0.827 + ] + ], + [ + 0.346, + [ + 0, + 0.345, + 0.827 + ] + ], + [ + 0.348, + [ + 0, + 0.349, + 0.825 + ] + ], + [ + 0.35, + [ + 0, + 0.349, + 0.825 + ] + ], + [ + 0.352, + [ + 0, + 0.353, + 0.824 + ] + ], + [ + 0.354, + [ + 0, + 0.353, + 0.824 + ] + ], + [ + 0.356, + [ + 0, + 0.357, + 0.822 + ] + ], + [ + 0.358, + [ + 0, + 0.357, + 0.822 + ] + ], + [ + 0.36, + [ + 0, + 0.361, + 0.82 + ] + ], + [ + 0.362, + [ + 0, + 0.361, + 0.82 + ] + ], + [ + 0.364, + [ + 0, + 0.365, + 0.818 + ] + ], + [ + 0.366, + [ + 0, + 0.365, + 0.818 + ] + ], + [ + 0.368, + [ + 0, + 0.369, + 0.816 + ] + ], + [ + 0.37, + [ + 0, + 0.369, + 0.816 + ] + ], + [ + 0.372, + [ + 0, + 0.373, + 0.814 + ] + ], + [ + 0.374, + [ + 0, + 0.373, + 0.814 + ] + ], + [ + 0.376, + [ + 0, + 0.376, + 0.812 + ] + ], + [ + 0.378, + [ + 0, + 0.376, + 0.812 + ] + ], + [ + 0.38, + [ + 0, + 0.38, + 0.81 + ] + ], + [ + 0.382, + [ + 0, + 0.38, + 0.81 + ] + ], + [ + 0.384, + [ + 0, + 0.384, + 0.808 + ] + ], + [ + 0.386, + [ + 0, + 0.384, + 0.808 + ] + ], + [ + 0.387, + [ + 0, + 0.388, + 0.806 + ] + ], + [ + 0.389, + [ + 0, + 0.388, + 0.806 + ] + ], + [ + 0.391, + [ + 0, + 0.392, + 0.804 + ] + ], + [ + 0.393, + [ + 0, + 0.392, + 0.804 + ] + ], + [ + 0.395, + [ + 0, + 0.396, + 0.802 + ] + ], + [ + 0.397, + [ + 0, + 0.396, + 0.802 + ] + ], + [ + 0.399, + [ + 0, + 0.4, + 0.8 + ] + ], + [ + 0.401, + [ + 0, + 0.4, + 0.8 + ] + ], + [ + 0.403, + [ + 0, + 0.404, + 0.798 + ] + ], + [ + 0.405, + [ + 0, + 0.404, + 0.798 + ] + ], + [ + 0.407, + [ + 0, + 0.408, + 0.796 + ] + ], + [ + 0.409, + [ + 0, + 0.408, + 0.796 + ] + ], + [ + 0.411, + [ + 0, + 0.412, + 0.794 + ] + ], + [ + 0.413, + [ + 0, + 0.412, + 0.794 + ] + ], + [ + 0.415, + [ + 0, + 0.416, + 0.792 + ] + ], + [ + 0.417, + [ + 0, + 0.416, + 0.792 + ] + ], + [ + 0.419, + [ + 0, + 0.42, + 0.79 + ] + ], + [ + 0.421, + [ + 0, + 0.42, + 0.79 + ] + ], + [ + 0.423, + [ + 0, + 0.424, + 0.788 + ] + ], + [ + 0.425, + [ + 0, + 0.424, + 0.788 + ] + ], + [ + 0.427, + [ + 0, + 0.427, + 0.786 + ] + ], + [ + 0.429, + [ + 0, + 0.427, + 0.786 + ] + ], + [ + 0.431, + [ + 0, + 0.431, + 0.784 + ] + ], + [ + 0.432, + [ + 0, + 0.431, + 0.784 + ] + ], + [ + 0.434, + [ + 0, + 0.435, + 0.782 + ] + ], + [ + 0.436, + [ + 0, + 0.435, + 0.782 + ] + ], + [ + 0.438, + [ + 0, + 0.439, + 0.78 + ] + ], + [ + 0.44, + [ + 0, + 0.439, + 0.78 + ] + ], + [ + 0.442, + [ + 0, + 0.443, + 0.778 + ] + ], + [ + 0.444, + [ + 0, + 0.443, + 0.778 + ] + ], + [ + 0.446, + [ + 0, + 0.447, + 0.776 + ] + ], + [ + 0.448, + [ + 0, + 0.447, + 0.776 + ] + ], + [ + 0.45, + [ + 0, + 0.451, + 0.775 + ] + ], + [ + 0.452, + [ + 0, + 0.451, + 0.775 + ] + ], + [ + 0.454, + [ + 0, + 0.455, + 0.773 + ] + ], + [ + 0.456, + [ + 0, + 0.455, + 0.773 + ] + ], + [ + 0.458, + [ + 0, + 0.459, + 0.771 + ] + ], + [ + 0.46, + [ + 0, + 0.459, + 0.771 + ] + ], + [ + 0.462, + [ + 0, + 0.463, + 0.769 + ] + ], + [ + 0.464, + [ + 0, + 0.463, + 0.769 + ] + ], + [ + 0.466, + [ + 0, + 0.467, + 0.767 + ] + ], + [ + 0.468, + [ + 0, + 0.467, + 0.767 + ] + ], + [ + 0.47, + [ + 0, + 0.471, + 0.765 + ] + ], + [ + 0.472, + [ + 0, + 0.471, + 0.765 + ] + ], + [ + 0.474, + [ + 0, + 0.475, + 0.763 + ] + ], + [ + 0.476, + [ + 0, + 0.475, + 0.763 + ] + ], + [ + 0.477, + [ + 0, + 0.478, + 0.761 + ] + ], + [ + 0.479, + [ + 0, + 0.478, + 0.761 + ] + ], + [ + 0.481, + [ + 0, + 0.482, + 0.759 + ] + ], + [ + 0.483, + [ + 0, + 0.482, + 0.759 + ] + ], + [ + 0.485, + [ + 0, + 0.486, + 0.757 + ] + ], + [ + 0.487, + [ + 0, + 0.486, + 0.757 + ] + ], + [ + 0.489, + [ + 0, + 0.49, + 0.755 + ] + ], + [ + 0.491, + [ + 0, + 0.49, + 0.755 + ] + ], + [ + 0.493, + [ + 0, + 0.494, + 0.753 + ] + ], + [ + 0.495, + [ + 0, + 0.494, + 0.753 + ] + ], + [ + 0.497, + [ + 0, + 0.498, + 0.751 + ] + ], + [ + 0.499, + [ + 0, + 0.498, + 0.751 + ] + ], + [ + 0.501, + [ + 0, + 0.502, + 0.749 + ] + ], + [ + 0.503, + [ + 0, + 0.502, + 0.749 + ] + ], + [ + 0.505, + [ + 0, + 0.506, + 0.747 + ] + ], + [ + 0.507, + [ + 0, + 0.506, + 0.747 + ] + ], + [ + 0.509, + [ + 0, + 0.51, + 0.745 + ] + ], + [ + 0.511, + [ + 0, + 0.51, + 0.745 + ] + ], + [ + 0.513, + [ + 0, + 0.514, + 0.743 + ] + ], + [ + 0.515, + [ + 0, + 0.514, + 0.743 + ] + ], + [ + 0.517, + [ + 0, + 0.518, + 0.741 + ] + ], + [ + 0.519, + [ + 0, + 0.518, + 0.741 + ] + ], + [ + 0.521, + [ + 0, + 0.522, + 0.739 + ] + ], + [ + 0.523, + [ + 0, + 0.522, + 0.739 + ] + ], + [ + 0.524, + [ + 0, + 0.525, + 0.737 + ] + ], + [ + 0.526, + [ + 0, + 0.525, + 0.737 + ] + ], + [ + 0.528, + [ + 0, + 0.529, + 0.735 + ] + ], + [ + 0.53, + [ + 0, + 0.529, + 0.735 + ] + ], + [ + 0.532, + [ + 0, + 0.533, + 0.733 + ] + ], + [ + 0.534, + [ + 0, + 0.533, + 0.733 + ] + ], + [ + 0.536, + [ + 0, + 0.537, + 0.731 + ] + ], + [ + 0.538, + [ + 0, + 0.537, + 0.731 + ] + ], + [ + 0.54, + [ + 0, + 0.541, + 0.729 + ] + ], + [ + 0.542, + [ + 0, + 0.541, + 0.729 + ] + ], + [ + 0.544, + [ + 0, + 0.545, + 0.727 + ] + ], + [ + 0.546, + [ + 0, + 0.545, + 0.727 + ] + ], + [ + 0.548, + [ + 0, + 0.549, + 0.725 + ] + ], + [ + 0.55, + [ + 0, + 0.549, + 0.725 + ] + ], + [ + 0.552, + [ + 0, + 0.553, + 0.724 + ] + ], + [ + 0.554, + [ + 0, + 0.553, + 0.724 + ] + ], + [ + 0.556, + [ + 0, + 0.557, + 0.722 + ] + ], + [ + 0.558, + [ + 0, + 0.557, + 0.722 + ] + ], + [ + 0.56, + [ + 0, + 0.561, + 0.72 + ] + ], + [ + 0.562, + [ + 0, + 0.561, + 0.72 + ] + ], + [ + 0.564, + [ + 0, + 0.565, + 0.718 + ] + ], + [ + 0.566, + [ + 0, + 0.565, + 0.718 + ] + ], + [ + 0.568, + [ + 0, + 0.569, + 0.716 + ] + ], + [ + 0.569, + [ + 0, + 0.569, + 0.716 + ] + ], + [ + 0.571, + [ + 0, + 0.573, + 0.714 + ] + ], + [ + 0.573, + [ + 0, + 0.573, + 0.714 + ] + ], + [ + 0.575, + [ + 0, + 0.576, + 0.712 + ] + ], + [ + 0.577, + [ + 0, + 0.576, + 0.712 + ] + ], + [ + 0.579, + [ + 0, + 0.58, + 0.71 + ] + ], + [ + 0.581, + [ + 0, + 0.58, + 0.71 + ] + ], + [ + 0.583, + [ + 0, + 0.584, + 0.708 + ] + ], + [ + 0.585, + [ + 0, + 0.584, + 0.708 + ] + ], + [ + 0.587, + [ + 0, + 0.588, + 0.706 + ] + ], + [ + 0.589, + [ + 0, + 0.588, + 0.706 + ] + ], + [ + 0.591, + [ + 0, + 0.592, + 0.704 + ] + ], + [ + 0.593, + [ + 0, + 0.592, + 0.704 + ] + ], + [ + 0.595, + [ + 0, + 0.596, + 0.702 + ] + ], + [ + 0.597, + [ + 0, + 0.596, + 0.702 + ] + ], + [ + 0.599, + [ + 0, + 0.6, + 0.7 + ] + ], + [ + 0.601, + [ + 0, + 0.6, + 0.7 + ] + ], + [ + 0.603, + [ + 0, + 0.604, + 0.698 + ] + ], + [ + 0.605, + [ + 0, + 0.604, + 0.698 + ] + ], + [ + 0.607, + [ + 0, + 0.608, + 0.696 + ] + ], + [ + 0.609, + [ + 0, + 0.608, + 0.696 + ] + ], + [ + 0.611, + [ + 0, + 0.612, + 0.694 + ] + ], + [ + 0.613, + [ + 0, + 0.612, + 0.694 + ] + ], + [ + 0.614, + [ + 0, + 0.616, + 0.692 + ] + ], + [ + 0.616, + [ + 0, + 0.616, + 0.692 + ] + ], + [ + 0.618, + [ + 0, + 0.62, + 0.69 + ] + ], + [ + 0.62, + [ + 0, + 0.62, + 0.69 + ] + ], + [ + 0.622, + [ + 0, + 0.624, + 0.688 + ] + ], + [ + 0.624, + [ + 0, + 0.624, + 0.688 + ] + ], + [ + 0.626, + [ + 0, + 0.627, + 0.686 + ] + ], + [ + 0.628, + [ + 0, + 0.627, + 0.686 + ] + ], + [ + 0.63, + [ + 0, + 0.631, + 0.684 + ] + ], + [ + 0.632, + [ + 0, + 0.631, + 0.684 + ] + ], + [ + 0.634, + [ + 0, + 0.635, + 0.682 + ] + ], + [ + 0.636, + [ + 0, + 0.635, + 0.682 + ] + ], + [ + 0.638, + [ + 0, + 0.639, + 0.68 + ] + ], + [ + 0.64, + [ + 0, + 0.639, + 0.68 + ] + ], + [ + 0.642, + [ + 0, + 0.643, + 0.678 + ] + ], + [ + 0.644, + [ + 0, + 0.643, + 0.678 + ] + ], + [ + 0.646, + [ + 0, + 0.647, + 0.676 + ] + ], + [ + 0.648, + [ + 0, + 0.647, + 0.676 + ] + ], + [ + 0.65, + [ + 0, + 0.651, + 0.675 + ] + ], + [ + 0.652, + [ + 0, + 0.651, + 0.675 + ] + ], + [ + 0.654, + [ + 0, + 0.655, + 0.673 + ] + ], + [ + 0.656, + [ + 0, + 0.655, + 0.673 + ] + ], + [ + 0.658, + [ + 0, + 0.659, + 0.671 + ] + ], + [ + 0.659, + [ + 0, + 0.659, + 0.671 + ] + ], + [ + 0.661, + [ + 0, + 0.663, + 0.669 + ] + ], + [ + 0.663, + [ + 0, + 0.663, + 0.669 + ] + ], + [ + 0.665, + [ + 0, + 0.667, + 0.667 + ] + ], + [ + 0.667, + [ + 0, + 0.667, + 0.667 + ] + ], + [ + 0.669, + [ + 0, + 0.671, + 0.665 + ] + ], + [ + 0.671, + [ + 0, + 0.671, + 0.665 + ] + ], + [ + 0.673, + [ + 0, + 0.675, + 0.663 + ] + ], + [ + 0.675, + [ + 0, + 0.675, + 0.663 + ] + ], + [ + 0.677, + [ + 0, + 0.678, + 0.661 + ] + ], + [ + 0.679, + [ + 0, + 0.678, + 0.661 + ] + ], + [ + 0.681, + [ + 0, + 0.682, + 0.659 + ] + ], + [ + 0.683, + [ + 0, + 0.682, + 0.659 + ] + ], + [ + 0.685, + [ + 0, + 0.686, + 0.657 + ] + ], + [ + 0.687, + [ + 0, + 0.686, + 0.657 + ] + ], + [ + 0.689, + [ + 0, + 0.69, + 0.655 + ] + ], + [ + 0.691, + [ + 0, + 0.69, + 0.655 + ] + ], + [ + 0.693, + [ + 0, + 0.694, + 0.653 + ] + ], + [ + 0.695, + [ + 0, + 0.694, + 0.653 + ] + ], + [ + 0.697, + [ + 0, + 0.698, + 0.651 + ] + ], + [ + 0.699, + [ + 0, + 0.698, + 0.651 + ] + ], + [ + 0.701, + [ + 0, + 0.702, + 0.649 + ] + ], + [ + 0.703, + [ + 0, + 0.702, + 0.649 + ] + ], + [ + 0.705, + [ + 0, + 0.706, + 0.647 + ] + ], + [ + 0.706, + [ + 0, + 0.706, + 0.647 + ] + ], + [ + 0.708, + [ + 0, + 0.71, + 0.645 + ] + ], + [ + 0.71, + [ + 0, + 0.71, + 0.645 + ] + ], + [ + 0.712, + [ + 0, + 0.714, + 0.643 + ] + ], + [ + 0.714, + [ + 0, + 0.714, + 0.643 + ] + ], + [ + 0.716, + [ + 0, + 0.718, + 0.641 + ] + ], + [ + 0.718, + [ + 0, + 0.718, + 0.641 + ] + ], + [ + 0.72, + [ + 0, + 0.722, + 0.639 + ] + ], + [ + 0.722, + [ + 0, + 0.722, + 0.639 + ] + ], + [ + 0.724, + [ + 0, + 0.725, + 0.637 + ] + ], + [ + 0.726, + [ + 0, + 0.725, + 0.637 + ] + ], + [ + 0.728, + [ + 0, + 0.729, + 0.635 + ] + ], + [ + 0.73, + [ + 0, + 0.729, + 0.635 + ] + ], + [ + 0.732, + [ + 0, + 0.733, + 0.633 + ] + ], + [ + 0.734, + [ + 0, + 0.733, + 0.633 + ] + ], + [ + 0.736, + [ + 0, + 0.737, + 0.631 + ] + ], + [ + 0.738, + [ + 0, + 0.737, + 0.631 + ] + ], + [ + 0.74, + [ + 0, + 0.741, + 0.629 + ] + ], + [ + 0.742, + [ + 0, + 0.741, + 0.629 + ] + ], + [ + 0.744, + [ + 0, + 0.745, + 0.627 + ] + ], + [ + 0.746, + [ + 0, + 0.745, + 0.627 + ] + ], + [ + 0.748, + [ + 0, + 0.749, + 0.625 + ] + ], + [ + 0.75, + [ + 0, + 0.749, + 0.625 + ] + ], + [ + 0.751, + [ + 0, + 0.753, + 0.624 + ] + ], + [ + 0.753, + [ + 0, + 0.753, + 0.624 + ] + ], + [ + 0.755, + [ + 0, + 0.757, + 0.622 + ] + ], + [ + 0.757, + [ + 0, + 0.757, + 0.622 + ] + ], + [ + 0.759, + [ + 0, + 0.761, + 0.62 + ] + ], + [ + 0.761, + [ + 0, + 0.761, + 0.62 + ] + ], + [ + 0.763, + [ + 0, + 0.765, + 0.618 + ] + ], + [ + 0.765, + [ + 0, + 0.765, + 0.618 + ] + ], + [ + 0.767, + [ + 0, + 0.769, + 0.616 + ] + ], + [ + 0.769, + [ + 0, + 0.769, + 0.616 + ] + ], + [ + 0.771, + [ + 0, + 0.773, + 0.614 + ] + ], + [ + 0.773, + [ + 0, + 0.773, + 0.614 + ] + ], + [ + 0.775, + [ + 0, + 0.776, + 0.612 + ] + ], + [ + 0.777, + [ + 0, + 0.776, + 0.612 + ] + ], + [ + 0.779, + [ + 0, + 0.78, + 0.61 + ] + ], + [ + 0.781, + [ + 0, + 0.78, + 0.61 + ] + ], + [ + 0.783, + [ + 0, + 0.784, + 0.608 + ] + ], + [ + 0.785, + [ + 0, + 0.784, + 0.608 + ] + ], + [ + 0.787, + [ + 0, + 0.788, + 0.606 + ] + ], + [ + 0.789, + [ + 0, + 0.788, + 0.606 + ] + ], + [ + 0.791, + [ + 0, + 0.792, + 0.604 + ] + ], + [ + 0.793, + [ + 0, + 0.792, + 0.604 + ] + ], + [ + 0.795, + [ + 0, + 0.796, + 0.602 + ] + ], + [ + 0.796, + [ + 0, + 0.796, + 0.602 + ] + ], + [ + 0.798, + [ + 0, + 0.8, + 0.6 + ] + ], + [ + 0.8, + [ + 0, + 0.8, + 0.6 + ] + ], + [ + 0.802, + [ + 0, + 0.804, + 0.598 + ] + ], + [ + 0.804, + [ + 0, + 0.804, + 0.598 + ] + ], + [ + 0.806, + [ + 0, + 0.808, + 0.596 + ] + ], + [ + 0.808, + [ + 0, + 0.808, + 0.596 + ] + ], + [ + 0.81, + [ + 0, + 0.812, + 0.594 + ] + ], + [ + 0.812, + [ + 0, + 0.812, + 0.594 + ] + ], + [ + 0.814, + [ + 0, + 0.816, + 0.592 + ] + ], + [ + 0.816, + [ + 0, + 0.816, + 0.592 + ] + ], + [ + 0.818, + [ + 0, + 0.82, + 0.59 + ] + ], + [ + 0.82, + [ + 0, + 0.82, + 0.59 + ] + ], + [ + 0.822, + [ + 0, + 0.824, + 0.588 + ] + ], + [ + 0.824, + [ + 0, + 0.824, + 0.588 + ] + ], + [ + 0.826, + [ + 0, + 0.827, + 0.586 + ] + ], + [ + 0.828, + [ + 0, + 0.827, + 0.586 + ] + ], + [ + 0.83, + [ + 0, + 0.831, + 0.584 + ] + ], + [ + 0.832, + [ + 0, + 0.831, + 0.584 + ] + ], + [ + 0.834, + [ + 0, + 0.835, + 0.582 + ] + ], + [ + 0.836, + [ + 0, + 0.835, + 0.582 + ] + ], + [ + 0.838, + [ + 0, + 0.839, + 0.58 + ] + ], + [ + 0.84, + [ + 0, + 0.839, + 0.58 + ] + ], + [ + 0.841, + [ + 0, + 0.843, + 0.578 + ] + ], + [ + 0.843, + [ + 0, + 0.843, + 0.578 + ] + ], + [ + 0.845, + [ + 0, + 0.847, + 0.576 + ] + ], + [ + 0.847, + [ + 0, + 0.847, + 0.576 + ] + ], + [ + 0.849, + [ + 0, + 0.851, + 0.575 + ] + ], + [ + 0.851, + [ + 0, + 0.851, + 0.575 + ] + ], + [ + 0.853, + [ + 0, + 0.855, + 0.573 + ] + ], + [ + 0.855, + [ + 0, + 0.855, + 0.573 + ] + ], + [ + 0.857, + [ + 0, + 0.859, + 0.571 + ] + ], + [ + 0.859, + [ + 0, + 0.859, + 0.571 + ] + ], + [ + 0.861, + [ + 0, + 0.863, + 0.569 + ] + ], + [ + 0.863, + [ + 0, + 0.863, + 0.569 + ] + ], + [ + 0.865, + [ + 0, + 0.867, + 0.567 + ] + ], + [ + 0.867, + [ + 0, + 0.867, + 0.567 + ] + ], + [ + 0.869, + [ + 0, + 0.871, + 0.565 + ] + ], + [ + 0.871, + [ + 0, + 0.871, + 0.565 + ] + ], + [ + 0.873, + [ + 0, + 0.875, + 0.563 + ] + ], + [ + 0.875, + [ + 0, + 0.875, + 0.563 + ] + ], + [ + 0.877, + [ + 0, + 0.878, + 0.561 + ] + ], + [ + 0.879, + [ + 0, + 0.878, + 0.561 + ] + ], + [ + 0.881, + [ + 0, + 0.882, + 0.559 + ] + ], + [ + 0.883, + [ + 0, + 0.882, + 0.559 + ] + ], + [ + 0.885, + [ + 0, + 0.886, + 0.557 + ] + ], + [ + 0.886, + [ + 0, + 0.886, + 0.557 + ] + ], + [ + 0.888, + [ + 0, + 0.89, + 0.555 + ] + ], + [ + 0.89, + [ + 0, + 0.89, + 0.555 + ] + ], + [ + 0.892, + [ + 0, + 0.894, + 0.553 + ] + ], + [ + 0.894, + [ + 0, + 0.894, + 0.553 + ] + ], + [ + 0.896, + [ + 0, + 0.898, + 0.551 + ] + ], + [ + 0.898, + [ + 0, + 0.898, + 0.551 + ] + ], + [ + 0.9, + [ + 0, + 0.902, + 0.549 + ] + ], + [ + 0.902, + [ + 0, + 0.902, + 0.549 + ] + ], + [ + 0.904, + [ + 0, + 0.906, + 0.547 + ] + ], + [ + 0.906, + [ + 0, + 0.906, + 0.547 + ] + ], + [ + 0.908, + [ + 0, + 0.91, + 0.545 + ] + ], + [ + 0.91, + [ + 0, + 0.91, + 0.545 + ] + ], + [ + 0.912, + [ + 0, + 0.914, + 0.543 + ] + ], + [ + 0.914, + [ + 0, + 0.914, + 0.543 + ] + ], + [ + 0.916, + [ + 0, + 0.918, + 0.541 + ] + ], + [ + 0.918, + [ + 0, + 0.918, + 0.541 + ] + ], + [ + 0.92, + [ + 0, + 0.922, + 0.539 + ] + ], + [ + 0.922, + [ + 0, + 0.922, + 0.539 + ] + ], + [ + 0.924, + [ + 0, + 0.925, + 0.537 + ] + ], + [ + 0.926, + [ + 0, + 0.925, + 0.537 + ] + ], + [ + 0.928, + [ + 0, + 0.929, + 0.535 + ] + ], + [ + 0.93, + [ + 0, + 0.929, + 0.535 + ] + ], + [ + 0.932, + [ + 0, + 0.933, + 0.533 + ] + ], + [ + 0.933, + [ + 0, + 0.933, + 0.533 + ] + ], + [ + 0.935, + [ + 0, + 0.937, + 0.531 + ] + ], + [ + 0.937, + [ + 0, + 0.937, + 0.531 + ] + ], + [ + 0.939, + [ + 0, + 0.941, + 0.529 + ] + ], + [ + 0.941, + [ + 0, + 0.941, + 0.529 + ] + ], + [ + 0.943, + [ + 0, + 0.945, + 0.527 + ] + ], + [ + 0.945, + [ + 0, + 0.945, + 0.527 + ] + ], + [ + 0.947, + [ + 0, + 0.949, + 0.525 + ] + ], + [ + 0.949, + [ + 0, + 0.949, + 0.525 + ] + ], + [ + 0.951, + [ + 0, + 0.953, + 0.524 + ] + ], + [ + 0.953, + [ + 0, + 0.953, + 0.524 + ] + ], + [ + 0.955, + [ + 0, + 0.957, + 0.522 + ] + ], + [ + 0.957, + [ + 0, + 0.957, + 0.522 + ] + ], + [ + 0.959, + [ + 0, + 0.961, + 0.52 + ] + ], + [ + 0.961, + [ + 0, + 0.961, + 0.52 + ] + ], + [ + 0.963, + [ + 0, + 0.965, + 0.518 + ] + ], + [ + 0.965, + [ + 0, + 0.965, + 0.518 + ] + ], + [ + 0.967, + [ + 0, + 0.969, + 0.516 + ] + ], + [ + 0.969, + [ + 0, + 0.969, + 0.516 + ] + ], + [ + 0.971, + [ + 0, + 0.973, + 0.514 + ] + ], + [ + 0.973, + [ + 0, + 0.973, + 0.514 + ] + ], + [ + 0.975, + [ + 0, + 0.976, + 0.512 + ] + ], + [ + 0.977, + [ + 0, + 0.976, + 0.512 + ] + ], + [ + 0.978, + [ + 0, + 0.98, + 0.51 + ] + ], + [ + 0.98, + [ + 0, + 0.98, + 0.51 + ] + ], + [ + 0.982, + [ + 0, + 0.984, + 0.508 + ] + ], + [ + 0.984, + [ + 0, + 0.984, + 0.508 + ] + ], + [ + 0.986, + [ + 0, + 0.988, + 0.506 + ] + ], + [ + 0.988, + [ + 0, + 0.988, + 0.506 + ] + ], + [ + 0.99, + [ + 0, + 0.992, + 0.504 + ] + ], + [ + 0.992, + [ + 0, + 0.992, + 0.504 + ] + ], + [ + 0.994, + [ + 0, + 0.996, + 0.502 + ] + ], + [ + 0.996, + [ + 0, + 0.996, + 0.502 + ] + ], + [ + 0.998, + [ + 0, + 1, + 0.5 + ] + ], + [ + 1, + [ + 0, + 1, + 0.5 + ] + ] + ], + [ + [ + 0, + [ + 0, + 0, + 0.5 + ] + ], + [ + 0.002, + [ + 0, + 0, + 0.5 + ] + ], + [ + 0.004, + [ + 0, + 0, + 0.518 + ] + ], + [ + 0.006, + [ + 0, + 0, + 0.518 + ] + ], + [ + 0.008, + [ + 0, + 0, + 0.536 + ] + ], + [ + 0.01, + [ + 0, + 0, + 0.536 + ] + ], + [ + 0.012, + [ + 0, + 0, + 0.553 + ] + ], + [ + 0.014, + [ + 0, + 0, + 0.553 + ] + ], + [ + 0.016, + [ + 0, + 0, + 0.571 + ] + ], + [ + 0.018, + [ + 0, + 0, + 0.571 + ] + ], + [ + 0.02, + [ + 0, + 0, + 0.589 + ] + ], + [ + 0.022, + [ + 0, + 0, + 0.589 + ] + ], + [ + 0.023, + [ + 0, + 0, + 0.607 + ] + ], + [ + 0.025, + [ + 0, + 0, + 0.607 + ] + ], + [ + 0.027, + [ + 0, + 0, + 0.625 + ] + ], + [ + 0.029, + [ + 0, + 0, + 0.625 + ] + ], + [ + 0.031, + [ + 0, + 0, + 0.643 + ] + ], + [ + 0.033, + [ + 0, + 0, + 0.643 + ] + ], + [ + 0.035, + [ + 0, + 0, + 0.66 + ] + ], + [ + 0.037, + [ + 0, + 0, + 0.66 + ] + ], + [ + 0.039, + [ + 0, + 0, + 0.678 + ] + ], + [ + 0.041, + [ + 0, + 0, + 0.678 + ] + ], + [ + 0.043, + [ + 0, + 0, + 0.696 + ] + ], + [ + 0.045, + [ + 0, + 0, + 0.696 + ] + ], + [ + 0.047, + [ + 0, + 0, + 0.714 + ] + ], + [ + 0.049, + [ + 0, + 0, + 0.714 + ] + ], + [ + 0.051, + [ + 0, + 0, + 0.732 + ] + ], + [ + 0.053, + [ + 0, + 0, + 0.732 + ] + ], + [ + 0.055, + [ + 0, + 0, + 0.75 + ] + ], + [ + 0.057, + [ + 0, + 0, + 0.75 + ] + ], + [ + 0.059, + [ + 0, + 0, + 0.767 + ] + ], + [ + 0.061, + [ + 0, + 0, + 0.767 + ] + ], + [ + 0.063, + [ + 0, + 0, + 0.785 + ] + ], + [ + 0.065, + [ + 0, + 0, + 0.785 + ] + ], + [ + 0.067, + [ + 0, + 0, + 0.803 + ] + ], + [ + 0.068, + [ + 0, + 0, + 0.803 + ] + ], + [ + 0.07, + [ + 0, + 0, + 0.821 + ] + ], + [ + 0.072, + [ + 0, + 0, + 0.821 + ] + ], + [ + 0.074, + [ + 0, + 0, + 0.839 + ] + ], + [ + 0.076, + [ + 0, + 0, + 0.839 + ] + ], + [ + 0.078, + [ + 0, + 0, + 0.857 + ] + ], + [ + 0.08, + [ + 0, + 0, + 0.857 + ] + ], + [ + 0.082, + [ + 0, + 0, + 0.874 + ] + ], + [ + 0.084, + [ + 0, + 0, + 0.874 + ] + ], + [ + 0.086, + [ + 0, + 0, + 0.892 + ] + ], + [ + 0.088, + [ + 0, + 0, + 0.892 + ] + ], + [ + 0.09, + [ + 0, + 0, + 0.91 + ] + ], + [ + 0.092, + [ + 0, + 0, + 0.91 + ] + ], + [ + 0.094, + [ + 0, + 0, + 0.928 + ] + ], + [ + 0.096, + [ + 0, + 0, + 0.928 + ] + ], + [ + 0.098, + [ + 0, + 0, + 0.946 + ] + ], + [ + 0.1, + [ + 0, + 0, + 0.946 + ] + ], + [ + 0.102, + [ + 0, + 0, + 0.963 + ] + ], + [ + 0.104, + [ + 0, + 0, + 0.963 + ] + ], + [ + 0.106, + [ + 0, + 0, + 0.981 + ] + ], + [ + 0.108, + [ + 0, + 0, + 0.981 + ] + ], + [ + 0.11, + [ + 0, + 0, + 0.999 + ] + ], + [ + 0.112, + [ + 0, + 0, + 0.999 + ] + ], + [ + 0.114, + [ + 0, + 0, + 1 + ] + ], + [ + 0.115, + [ + 0, + 0, + 1 + ] + ], + [ + 0.117, + [ + 0, + 0, + 1 + ] + ], + [ + 0.119, + [ + 0, + 0, + 1 + ] + ], + [ + 0.121, + [ + 0, + 0, + 1 + ] + ], + [ + 0.123, + [ + 0, + 0, + 1 + ] + ], + [ + 0.125, + [ + 0, + 0.002, + 1 + ] + ], + [ + 0.127, + [ + 0, + 0.002, + 1 + ] + ], + [ + 0.129, + [ + 0, + 0.018, + 1 + ] + ], + [ + 0.131, + [ + 0, + 0.018, + 1 + ] + ], + [ + 0.133, + [ + 0, + 0.033, + 1 + ] + ], + [ + 0.135, + [ + 0, + 0.033, + 1 + ] + ], + [ + 0.137, + [ + 0, + 0.049, + 1 + ] + ], + [ + 0.139, + [ + 0, + 0.049, + 1 + ] + ], + [ + 0.141, + [ + 0, + 0.065, + 1 + ] + ], + [ + 0.143, + [ + 0, + 0.065, + 1 + ] + ], + [ + 0.145, + [ + 0, + 0.08, + 1 + ] + ], + [ + 0.147, + [ + 0, + 0.08, + 1 + ] + ], + [ + 0.149, + [ + 0, + 0.096, + 1 + ] + ], + [ + 0.151, + [ + 0, + 0.096, + 1 + ] + ], + [ + 0.153, + [ + 0, + 0.112, + 1 + ] + ], + [ + 0.155, + [ + 0, + 0.112, + 1 + ] + ], + [ + 0.157, + [ + 0, + 0.127, + 1 + ] + ], + [ + 0.159, + [ + 0, + 0.127, + 1 + ] + ], + [ + 0.16, + [ + 0, + 0.143, + 1 + ] + ], + [ + 0.162, + [ + 0, + 0.143, + 1 + ] + ], + [ + 0.164, + [ + 0, + 0.159, + 1 + ] + ], + [ + 0.166, + [ + 0, + 0.159, + 1 + ] + ], + [ + 0.168, + [ + 0, + 0.175, + 1 + ] + ], + [ + 0.17, + [ + 0, + 0.175, + 1 + ] + ], + [ + 0.172, + [ + 0, + 0.19, + 1 + ] + ], + [ + 0.174, + [ + 0, + 0.19, + 1 + ] + ], + [ + 0.176, + [ + 0, + 0.206, + 1 + ] + ], + [ + 0.178, + [ + 0, + 0.206, + 1 + ] + ], + [ + 0.18, + [ + 0, + 0.222, + 1 + ] + ], + [ + 0.182, + [ + 0, + 0.222, + 1 + ] + ], + [ + 0.184, + [ + 0, + 0.237, + 1 + ] + ], + [ + 0.186, + [ + 0, + 0.237, + 1 + ] + ], + [ + 0.188, + [ + 0, + 0.253, + 1 + ] + ], + [ + 0.19, + [ + 0, + 0.253, + 1 + ] + ], + [ + 0.192, + [ + 0, + 0.269, + 1 + ] + ], + [ + 0.194, + [ + 0, + 0.269, + 1 + ] + ], + [ + 0.196, + [ + 0, + 0.284, + 1 + ] + ], + [ + 0.198, + [ + 0, + 0.284, + 1 + ] + ], + [ + 0.2, + [ + 0, + 0.3, + 1 + ] + ], + [ + 0.202, + [ + 0, + 0.3, + 1 + ] + ], + [ + 0.204, + [ + 0, + 0.316, + 1 + ] + ], + [ + 0.205, + [ + 0, + 0.316, + 1 + ] + ], + [ + 0.207, + [ + 0, + 0.331, + 1 + ] + ], + [ + 0.209, + [ + 0, + 0.331, + 1 + ] + ], + [ + 0.211, + [ + 0, + 0.347, + 1 + ] + ], + [ + 0.213, + [ + 0, + 0.347, + 1 + ] + ], + [ + 0.215, + [ + 0, + 0.363, + 1 + ] + ], + [ + 0.217, + [ + 0, + 0.363, + 1 + ] + ], + [ + 0.219, + [ + 0, + 0.378, + 1 + ] + ], + [ + 0.221, + [ + 0, + 0.378, + 1 + ] + ], + [ + 0.223, + [ + 0, + 0.394, + 1 + ] + ], + [ + 0.225, + [ + 0, + 0.394, + 1 + ] + ], + [ + 0.227, + [ + 0, + 0.41, + 1 + ] + ], + [ + 0.229, + [ + 0, + 0.41, + 1 + ] + ], + [ + 0.231, + [ + 0, + 0.425, + 1 + ] + ], + [ + 0.233, + [ + 0, + 0.425, + 1 + ] + ], + [ + 0.235, + [ + 0, + 0.441, + 1 + ] + ], + [ + 0.237, + [ + 0, + 0.441, + 1 + ] + ], + [ + 0.239, + [ + 0, + 0.457, + 1 + ] + ], + [ + 0.241, + [ + 0, + 0.457, + 1 + ] + ], + [ + 0.243, + [ + 0, + 0.473, + 1 + ] + ], + [ + 0.245, + [ + 0, + 0.473, + 1 + ] + ], + [ + 0.247, + [ + 0, + 0.488, + 1 + ] + ], + [ + 0.249, + [ + 0, + 0.488, + 1 + ] + ], + [ + 0.25, + [ + 0, + 0.504, + 1 + ] + ], + [ + 0.252, + [ + 0, + 0.504, + 1 + ] + ], + [ + 0.254, + [ + 0, + 0.52, + 1 + ] + ], + [ + 0.256, + [ + 0, + 0.52, + 1 + ] + ], + [ + 0.258, + [ + 0, + 0.535, + 1 + ] + ], + [ + 0.26, + [ + 0, + 0.535, + 1 + ] + ], + [ + 0.262, + [ + 0, + 0.551, + 1 + ] + ], + [ + 0.264, + [ + 0, + 0.551, + 1 + ] + ], + [ + 0.266, + [ + 0, + 0.567, + 1 + ] + ], + [ + 0.268, + [ + 0, + 0.567, + 1 + ] + ], + [ + 0.27, + [ + 0, + 0.582, + 1 + ] + ], + [ + 0.272, + [ + 0, + 0.582, + 1 + ] + ], + [ + 0.274, + [ + 0, + 0.598, + 1 + ] + ], + [ + 0.276, + [ + 0, + 0.598, + 1 + ] + ], + [ + 0.278, + [ + 0, + 0.614, + 1 + ] + ], + [ + 0.28, + [ + 0, + 0.614, + 1 + ] + ], + [ + 0.282, + [ + 0, + 0.629, + 1 + ] + ], + [ + 0.284, + [ + 0, + 0.629, + 1 + ] + ], + [ + 0.286, + [ + 0, + 0.645, + 1 + ] + ], + [ + 0.288, + [ + 0, + 0.645, + 1 + ] + ], + [ + 0.29, + [ + 0, + 0.661, + 1 + ] + ], + [ + 0.292, + [ + 0, + 0.661, + 1 + ] + ], + [ + 0.294, + [ + 0, + 0.676, + 1 + ] + ], + [ + 0.295, + [ + 0, + 0.676, + 1 + ] + ], + [ + 0.297, + [ + 0, + 0.692, + 1 + ] + ], + [ + 0.299, + [ + 0, + 0.692, + 1 + ] + ], + [ + 0.301, + [ + 0, + 0.708, + 1 + ] + ], + [ + 0.303, + [ + 0, + 0.708, + 1 + ] + ], + [ + 0.305, + [ + 0, + 0.724, + 1 + ] + ], + [ + 0.307, + [ + 0, + 0.724, + 1 + ] + ], + [ + 0.309, + [ + 0, + 0.739, + 1 + ] + ], + [ + 0.311, + [ + 0, + 0.739, + 1 + ] + ], + [ + 0.313, + [ + 0, + 0.755, + 1 + ] + ], + [ + 0.315, + [ + 0, + 0.755, + 1 + ] + ], + [ + 0.317, + [ + 0, + 0.771, + 1 + ] + ], + [ + 0.319, + [ + 0, + 0.771, + 1 + ] + ], + [ + 0.321, + [ + 0, + 0.786, + 1 + ] + ], + [ + 0.323, + [ + 0, + 0.786, + 1 + ] + ], + [ + 0.325, + [ + 0, + 0.802, + 1 + ] + ], + [ + 0.327, + [ + 0, + 0.802, + 1 + ] + ], + [ + 0.329, + [ + 0, + 0.818, + 1 + ] + ], + [ + 0.331, + [ + 0, + 0.818, + 1 + ] + ], + [ + 0.333, + [ + 0, + 0.833, + 1 + ] + ], + [ + 0.335, + [ + 0, + 0.833, + 1 + ] + ], + [ + 0.337, + [ + 0, + 0.849, + 1 + ] + ], + [ + 0.339, + [ + 0, + 0.849, + 1 + ] + ], + [ + 0.341, + [ + 0, + 0.865, + 0.996 + ] + ], + [ + 0.342, + [ + 0, + 0.865, + 0.996 + ] + ], + [ + 0.344, + [ + 0, + 0.88, + 0.984 + ] + ], + [ + 0.346, + [ + 0, + 0.88, + 0.984 + ] + ], + [ + 0.348, + [ + 0, + 0.896, + 0.971 + ] + ], + [ + 0.35, + [ + 0, + 0.896, + 0.971 + ] + ], + [ + 0.352, + [ + 0.009, + 0.912, + 0.958 + ] + ], + [ + 0.354, + [ + 0.009, + 0.912, + 0.958 + ] + ], + [ + 0.356, + [ + 0.022, + 0.927, + 0.946 + ] + ], + [ + 0.358, + [ + 0.022, + 0.927, + 0.946 + ] + ], + [ + 0.36, + [ + 0.035, + 0.943, + 0.933 + ] + ], + [ + 0.362, + [ + 0.035, + 0.943, + 0.933 + ] + ], + [ + 0.364, + [ + 0.047, + 0.959, + 0.92 + ] + ], + [ + 0.366, + [ + 0.047, + 0.959, + 0.92 + ] + ], + [ + 0.368, + [ + 0.06, + 0.975, + 0.908 + ] + ], + [ + 0.37, + [ + 0.06, + 0.975, + 0.908 + ] + ], + [ + 0.372, + [ + 0.073, + 0.99, + 0.895 + ] + ], + [ + 0.374, + [ + 0.073, + 0.99, + 0.895 + ] + ], + [ + 0.376, + [ + 0.085, + 1, + 0.882 + ] + ], + [ + 0.378, + [ + 0.085, + 1, + 0.882 + ] + ], + [ + 0.38, + [ + 0.098, + 1, + 0.87 + ] + ], + [ + 0.382, + [ + 0.098, + 1, + 0.87 + ] + ], + [ + 0.384, + [ + 0.111, + 1, + 0.857 + ] + ], + [ + 0.386, + [ + 0.111, + 1, + 0.857 + ] + ], + [ + 0.387, + [ + 0.123, + 1, + 0.844 + ] + ], + [ + 0.389, + [ + 0.123, + 1, + 0.844 + ] + ], + [ + 0.391, + [ + 0.136, + 1, + 0.832 + ] + ], + [ + 0.393, + [ + 0.136, + 1, + 0.832 + ] + ], + [ + 0.395, + [ + 0.149, + 1, + 0.819 + ] + ], + [ + 0.397, + [ + 0.149, + 1, + 0.819 + ] + ], + [ + 0.399, + [ + 0.161, + 1, + 0.806 + ] + ], + [ + 0.401, + [ + 0.161, + 1, + 0.806 + ] + ], + [ + 0.403, + [ + 0.174, + 1, + 0.794 + ] + ], + [ + 0.405, + [ + 0.174, + 1, + 0.794 + ] + ], + [ + 0.407, + [ + 0.187, + 1, + 0.781 + ] + ], + [ + 0.409, + [ + 0.187, + 1, + 0.781 + ] + ], + [ + 0.411, + [ + 0.199, + 1, + 0.769 + ] + ], + [ + 0.413, + [ + 0.199, + 1, + 0.769 + ] + ], + [ + 0.415, + [ + 0.212, + 1, + 0.756 + ] + ], + [ + 0.417, + [ + 0.212, + 1, + 0.756 + ] + ], + [ + 0.419, + [ + 0.225, + 1, + 0.743 + ] + ], + [ + 0.421, + [ + 0.225, + 1, + 0.743 + ] + ], + [ + 0.423, + [ + 0.237, + 1, + 0.731 + ] + ], + [ + 0.425, + [ + 0.237, + 1, + 0.731 + ] + ], + [ + 0.427, + [ + 0.25, + 1, + 0.718 + ] + ], + [ + 0.429, + [ + 0.25, + 1, + 0.718 + ] + ], + [ + 0.431, + [ + 0.262, + 1, + 0.705 + ] + ], + [ + 0.432, + [ + 0.262, + 1, + 0.705 + ] + ], + [ + 0.434, + [ + 0.275, + 1, + 0.693 + ] + ], + [ + 0.436, + [ + 0.275, + 1, + 0.693 + ] + ], + [ + 0.438, + [ + 0.288, + 1, + 0.68 + ] + ], + [ + 0.44, + [ + 0.288, + 1, + 0.68 + ] + ], + [ + 0.442, + [ + 0.3, + 1, + 0.667 + ] + ], + [ + 0.444, + [ + 0.3, + 1, + 0.667 + ] + ], + [ + 0.446, + [ + 0.313, + 1, + 0.655 + ] + ], + [ + 0.448, + [ + 0.313, + 1, + 0.655 + ] + ], + [ + 0.45, + [ + 0.326, + 1, + 0.642 + ] + ], + [ + 0.452, + [ + 0.326, + 1, + 0.642 + ] + ], + [ + 0.454, + [ + 0.338, + 1, + 0.629 + ] + ], + [ + 0.456, + [ + 0.338, + 1, + 0.629 + ] + ], + [ + 0.458, + [ + 0.351, + 1, + 0.617 + ] + ], + [ + 0.46, + [ + 0.351, + 1, + 0.617 + ] + ], + [ + 0.462, + [ + 0.364, + 1, + 0.604 + ] + ], + [ + 0.464, + [ + 0.364, + 1, + 0.604 + ] + ], + [ + 0.466, + [ + 0.376, + 1, + 0.591 + ] + ], + [ + 0.468, + [ + 0.376, + 1, + 0.591 + ] + ], + [ + 0.47, + [ + 0.389, + 1, + 0.579 + ] + ], + [ + 0.472, + [ + 0.389, + 1, + 0.579 + ] + ], + [ + 0.474, + [ + 0.402, + 1, + 0.566 + ] + ], + [ + 0.476, + [ + 0.402, + 1, + 0.566 + ] + ], + [ + 0.477, + [ + 0.414, + 1, + 0.553 + ] + ], + [ + 0.479, + [ + 0.414, + 1, + 0.553 + ] + ], + [ + 0.481, + [ + 0.427, + 1, + 0.541 + ] + ], + [ + 0.483, + [ + 0.427, + 1, + 0.541 + ] + ], + [ + 0.485, + [ + 0.44, + 1, + 0.528 + ] + ], + [ + 0.487, + [ + 0.44, + 1, + 0.528 + ] + ], + [ + 0.489, + [ + 0.452, + 1, + 0.515 + ] + ], + [ + 0.491, + [ + 0.452, + 1, + 0.515 + ] + ], + [ + 0.493, + [ + 0.465, + 1, + 0.503 + ] + ], + [ + 0.495, + [ + 0.465, + 1, + 0.503 + ] + ], + [ + 0.497, + [ + 0.478, + 1, + 0.49 + ] + ], + [ + 0.499, + [ + 0.478, + 1, + 0.49 + ] + ], + [ + 0.501, + [ + 0.49, + 1, + 0.478 + ] + ], + [ + 0.503, + [ + 0.49, + 1, + 0.478 + ] + ], + [ + 0.505, + [ + 0.503, + 1, + 0.465 + ] + ], + [ + 0.507, + [ + 0.503, + 1, + 0.465 + ] + ], + [ + 0.509, + [ + 0.515, + 1, + 0.452 + ] + ], + [ + 0.511, + [ + 0.515, + 1, + 0.452 + ] + ], + [ + 0.513, + [ + 0.528, + 1, + 0.44 + ] + ], + [ + 0.515, + [ + 0.528, + 1, + 0.44 + ] + ], + [ + 0.517, + [ + 0.541, + 1, + 0.427 + ] + ], + [ + 0.519, + [ + 0.541, + 1, + 0.427 + ] + ], + [ + 0.521, + [ + 0.553, + 1, + 0.414 + ] + ], + [ + 0.523, + [ + 0.553, + 1, + 0.414 + ] + ], + [ + 0.524, + [ + 0.566, + 1, + 0.402 + ] + ], + [ + 0.526, + [ + 0.566, + 1, + 0.402 + ] + ], + [ + 0.528, + [ + 0.579, + 1, + 0.389 + ] + ], + [ + 0.53, + [ + 0.579, + 1, + 0.389 + ] + ], + [ + 0.532, + [ + 0.591, + 1, + 0.376 + ] + ], + [ + 0.534, + [ + 0.591, + 1, + 0.376 + ] + ], + [ + 0.536, + [ + 0.604, + 1, + 0.364 + ] + ], + [ + 0.538, + [ + 0.604, + 1, + 0.364 + ] + ], + [ + 0.54, + [ + 0.617, + 1, + 0.351 + ] + ], + [ + 0.542, + [ + 0.617, + 1, + 0.351 + ] + ], + [ + 0.544, + [ + 0.629, + 1, + 0.338 + ] + ], + [ + 0.546, + [ + 0.629, + 1, + 0.338 + ] + ], + [ + 0.548, + [ + 0.642, + 1, + 0.326 + ] + ], + [ + 0.55, + [ + 0.642, + 1, + 0.326 + ] + ], + [ + 0.552, + [ + 0.655, + 1, + 0.313 + ] + ], + [ + 0.554, + [ + 0.655, + 1, + 0.313 + ] + ], + [ + 0.556, + [ + 0.667, + 1, + 0.3 + ] + ], + [ + 0.558, + [ + 0.667, + 1, + 0.3 + ] + ], + [ + 0.56, + [ + 0.68, + 1, + 0.288 + ] + ], + [ + 0.562, + [ + 0.68, + 1, + 0.288 + ] + ], + [ + 0.564, + [ + 0.693, + 1, + 0.275 + ] + ], + [ + 0.566, + [ + 0.693, + 1, + 0.275 + ] + ], + [ + 0.568, + [ + 0.705, + 1, + 0.262 + ] + ], + [ + 0.569, + [ + 0.705, + 1, + 0.262 + ] + ], + [ + 0.571, + [ + 0.718, + 1, + 0.25 + ] + ], + [ + 0.573, + [ + 0.718, + 1, + 0.25 + ] + ], + [ + 0.575, + [ + 0.731, + 1, + 0.237 + ] + ], + [ + 0.577, + [ + 0.731, + 1, + 0.237 + ] + ], + [ + 0.579, + [ + 0.743, + 1, + 0.225 + ] + ], + [ + 0.581, + [ + 0.743, + 1, + 0.225 + ] + ], + [ + 0.583, + [ + 0.756, + 1, + 0.212 + ] + ], + [ + 0.585, + [ + 0.756, + 1, + 0.212 + ] + ], + [ + 0.587, + [ + 0.769, + 1, + 0.199 + ] + ], + [ + 0.589, + [ + 0.769, + 1, + 0.199 + ] + ], + [ + 0.591, + [ + 0.781, + 1, + 0.187 + ] + ], + [ + 0.593, + [ + 0.781, + 1, + 0.187 + ] + ], + [ + 0.595, + [ + 0.794, + 1, + 0.174 + ] + ], + [ + 0.597, + [ + 0.794, + 1, + 0.174 + ] + ], + [ + 0.599, + [ + 0.806, + 1, + 0.161 + ] + ], + [ + 0.601, + [ + 0.806, + 1, + 0.161 + ] + ], + [ + 0.603, + [ + 0.819, + 1, + 0.149 + ] + ], + [ + 0.605, + [ + 0.819, + 1, + 0.149 + ] + ], + [ + 0.607, + [ + 0.832, + 1, + 0.136 + ] + ], + [ + 0.609, + [ + 0.832, + 1, + 0.136 + ] + ], + [ + 0.611, + [ + 0.844, + 1, + 0.123 + ] + ], + [ + 0.613, + [ + 0.844, + 1, + 0.123 + ] + ], + [ + 0.614, + [ + 0.857, + 1, + 0.111 + ] + ], + [ + 0.616, + [ + 0.857, + 1, + 0.111 + ] + ], + [ + 0.618, + [ + 0.87, + 1, + 0.098 + ] + ], + [ + 0.62, + [ + 0.87, + 1, + 0.098 + ] + ], + [ + 0.622, + [ + 0.882, + 1, + 0.085 + ] + ], + [ + 0.624, + [ + 0.882, + 1, + 0.085 + ] + ], + [ + 0.626, + [ + 0.895, + 1, + 0.073 + ] + ], + [ + 0.628, + [ + 0.895, + 1, + 0.073 + ] + ], + [ + 0.63, + [ + 0.908, + 1, + 0.06 + ] + ], + [ + 0.632, + [ + 0.908, + 1, + 0.06 + ] + ], + [ + 0.634, + [ + 0.92, + 1, + 0.047 + ] + ], + [ + 0.636, + [ + 0.92, + 1, + 0.047 + ] + ], + [ + 0.638, + [ + 0.933, + 1, + 0.035 + ] + ], + [ + 0.64, + [ + 0.933, + 1, + 0.035 + ] + ], + [ + 0.642, + [ + 0.946, + 0.988, + 0.022 + ] + ], + [ + 0.644, + [ + 0.946, + 0.988, + 0.022 + ] + ], + [ + 0.646, + [ + 0.958, + 0.974, + 0.009 + ] + ], + [ + 0.648, + [ + 0.958, + 0.974, + 0.009 + ] + ], + [ + 0.65, + [ + 0.971, + 0.959, + 0 + ] + ], + [ + 0.652, + [ + 0.971, + 0.959, + 0 + ] + ], + [ + 0.654, + [ + 0.984, + 0.945, + 0 + ] + ], + [ + 0.656, + [ + 0.984, + 0.945, + 0 + ] + ], + [ + 0.658, + [ + 0.996, + 0.93, + 0 + ] + ], + [ + 0.659, + [ + 0.996, + 0.93, + 0 + ] + ], + [ + 0.661, + [ + 1, + 0.916, + 0 + ] + ], + [ + 0.663, + [ + 1, + 0.916, + 0 + ] + ], + [ + 0.665, + [ + 1, + 0.901, + 0 + ] + ], + [ + 0.667, + [ + 1, + 0.901, + 0 + ] + ], + [ + 0.669, + [ + 1, + 0.887, + 0 + ] + ], + [ + 0.671, + [ + 1, + 0.887, + 0 + ] + ], + [ + 0.673, + [ + 1, + 0.872, + 0 + ] + ], + [ + 0.675, + [ + 1, + 0.872, + 0 + ] + ], + [ + 0.677, + [ + 1, + 0.858, + 0 + ] + ], + [ + 0.679, + [ + 1, + 0.858, + 0 + ] + ], + [ + 0.681, + [ + 1, + 0.843, + 0 + ] + ], + [ + 0.683, + [ + 1, + 0.843, + 0 + ] + ], + [ + 0.685, + [ + 1, + 0.829, + 0 + ] + ], + [ + 0.687, + [ + 1, + 0.829, + 0 + ] + ], + [ + 0.689, + [ + 1, + 0.814, + 0 + ] + ], + [ + 0.691, + [ + 1, + 0.814, + 0 + ] + ], + [ + 0.693, + [ + 1, + 0.8, + 0 + ] + ], + [ + 0.695, + [ + 1, + 0.8, + 0 + ] + ], + [ + 0.697, + [ + 1, + 0.785, + 0 + ] + ], + [ + 0.699, + [ + 1, + 0.785, + 0 + ] + ], + [ + 0.701, + [ + 1, + 0.771, + 0 + ] + ], + [ + 0.703, + [ + 1, + 0.771, + 0 + ] + ], + [ + 0.705, + [ + 1, + 0.756, + 0 + ] + ], + [ + 0.706, + [ + 1, + 0.756, + 0 + ] + ], + [ + 0.708, + [ + 1, + 0.741, + 0 + ] + ], + [ + 0.71, + [ + 1, + 0.741, + 0 + ] + ], + [ + 0.712, + [ + 1, + 0.727, + 0 + ] + ], + [ + 0.714, + [ + 1, + 0.727, + 0 + ] + ], + [ + 0.716, + [ + 1, + 0.712, + 0 + ] + ], + [ + 0.718, + [ + 1, + 0.712, + 0 + ] + ], + [ + 0.72, + [ + 1, + 0.698, + 0 + ] + ], + [ + 0.722, + [ + 1, + 0.698, + 0 + ] + ], + [ + 0.724, + [ + 1, + 0.683, + 0 + ] + ], + [ + 0.726, + [ + 1, + 0.683, + 0 + ] + ], + [ + 0.728, + [ + 1, + 0.669, + 0 + ] + ], + [ + 0.73, + [ + 1, + 0.669, + 0 + ] + ], + [ + 0.732, + [ + 1, + 0.654, + 0 + ] + ], + [ + 0.734, + [ + 1, + 0.654, + 0 + ] + ], + [ + 0.736, + [ + 1, + 0.64, + 0 + ] + ], + [ + 0.738, + [ + 1, + 0.64, + 0 + ] + ], + [ + 0.74, + [ + 1, + 0.625, + 0 + ] + ], + [ + 0.742, + [ + 1, + 0.625, + 0 + ] + ], + [ + 0.744, + [ + 1, + 0.611, + 0 + ] + ], + [ + 0.746, + [ + 1, + 0.611, + 0 + ] + ], + [ + 0.748, + [ + 1, + 0.596, + 0 + ] + ], + [ + 0.75, + [ + 1, + 0.596, + 0 + ] + ], + [ + 0.751, + [ + 1, + 0.582, + 0 + ] + ], + [ + 0.753, + [ + 1, + 0.582, + 0 + ] + ], + [ + 0.755, + [ + 1, + 0.567, + 0 + ] + ], + [ + 0.757, + [ + 1, + 0.567, + 0 + ] + ], + [ + 0.759, + [ + 1, + 0.553, + 0 + ] + ], + [ + 0.761, + [ + 1, + 0.553, + 0 + ] + ], + [ + 0.763, + [ + 1, + 0.538, + 0 + ] + ], + [ + 0.765, + [ + 1, + 0.538, + 0 + ] + ], + [ + 0.767, + [ + 1, + 0.524, + 0 + ] + ], + [ + 0.769, + [ + 1, + 0.524, + 0 + ] + ], + [ + 0.771, + [ + 1, + 0.509, + 0 + ] + ], + [ + 0.773, + [ + 1, + 0.509, + 0 + ] + ], + [ + 0.775, + [ + 1, + 0.495, + 0 + ] + ], + [ + 0.777, + [ + 1, + 0.495, + 0 + ] + ], + [ + 0.779, + [ + 1, + 0.48, + 0 + ] + ], + [ + 0.781, + [ + 1, + 0.48, + 0 + ] + ], + [ + 0.783, + [ + 1, + 0.466, + 0 + ] + ], + [ + 0.785, + [ + 1, + 0.466, + 0 + ] + ], + [ + 0.787, + [ + 1, + 0.451, + 0 + ] + ], + [ + 0.789, + [ + 1, + 0.451, + 0 + ] + ], + [ + 0.791, + [ + 1, + 0.436, + 0 + ] + ], + [ + 0.793, + [ + 1, + 0.436, + 0 + ] + ], + [ + 0.795, + [ + 1, + 0.422, + 0 + ] + ], + [ + 0.796, + [ + 1, + 0.422, + 0 + ] + ], + [ + 0.798, + [ + 1, + 0.407, + 0 + ] + ], + [ + 0.8, + [ + 1, + 0.407, + 0 + ] + ], + [ + 0.802, + [ + 1, + 0.393, + 0 + ] + ], + [ + 0.804, + [ + 1, + 0.393, + 0 + ] + ], + [ + 0.806, + [ + 1, + 0.378, + 0 + ] + ], + [ + 0.808, + [ + 1, + 0.378, + 0 + ] + ], + [ + 0.81, + [ + 1, + 0.364, + 0 + ] + ], + [ + 0.812, + [ + 1, + 0.364, + 0 + ] + ], + [ + 0.814, + [ + 1, + 0.349, + 0 + ] + ], + [ + 0.816, + [ + 1, + 0.349, + 0 + ] + ], + [ + 0.818, + [ + 1, + 0.335, + 0 + ] + ], + [ + 0.82, + [ + 1, + 0.335, + 0 + ] + ], + [ + 0.822, + [ + 1, + 0.32, + 0 + ] + ], + [ + 0.824, + [ + 1, + 0.32, + 0 + ] + ], + [ + 0.826, + [ + 1, + 0.306, + 0 + ] + ], + [ + 0.828, + [ + 1, + 0.306, + 0 + ] + ], + [ + 0.83, + [ + 1, + 0.291, + 0 + ] + ], + [ + 0.832, + [ + 1, + 0.291, + 0 + ] + ], + [ + 0.834, + [ + 1, + 0.277, + 0 + ] + ], + [ + 0.836, + [ + 1, + 0.277, + 0 + ] + ], + [ + 0.838, + [ + 1, + 0.262, + 0 + ] + ], + [ + 0.84, + [ + 1, + 0.262, + 0 + ] + ], + [ + 0.841, + [ + 1, + 0.248, + 0 + ] + ], + [ + 0.843, + [ + 1, + 0.248, + 0 + ] + ], + [ + 0.845, + [ + 1, + 0.233, + 0 + ] + ], + [ + 0.847, + [ + 1, + 0.233, + 0 + ] + ], + [ + 0.849, + [ + 1, + 0.219, + 0 + ] + ], + [ + 0.851, + [ + 1, + 0.219, + 0 + ] + ], + [ + 0.853, + [ + 1, + 0.204, + 0 + ] + ], + [ + 0.855, + [ + 1, + 0.204, + 0 + ] + ], + [ + 0.857, + [ + 1, + 0.19, + 0 + ] + ], + [ + 0.859, + [ + 1, + 0.19, + 0 + ] + ], + [ + 0.861, + [ + 1, + 0.175, + 0 + ] + ], + [ + 0.863, + [ + 1, + 0.175, + 0 + ] + ], + [ + 0.865, + [ + 1, + 0.16, + 0 + ] + ], + [ + 0.867, + [ + 1, + 0.16, + 0 + ] + ], + [ + 0.869, + [ + 1, + 0.146, + 0 + ] + ], + [ + 0.871, + [ + 1, + 0.146, + 0 + ] + ], + [ + 0.873, + [ + 1, + 0.131, + 0 + ] + ], + [ + 0.875, + [ + 1, + 0.131, + 0 + ] + ], + [ + 0.877, + [ + 1, + 0.117, + 0 + ] + ], + [ + 0.879, + [ + 1, + 0.117, + 0 + ] + ], + [ + 0.881, + [ + 1, + 0.102, + 0 + ] + ], + [ + 0.883, + [ + 1, + 0.102, + 0 + ] + ], + [ + 0.885, + [ + 1, + 0.088, + 0 + ] + ], + [ + 0.886, + [ + 1, + 0.088, + 0 + ] + ], + [ + 0.888, + [ + 0.999, + 0.073, + 0 + ] + ], + [ + 0.89, + [ + 0.999, + 0.073, + 0 + ] + ], + [ + 0.892, + [ + 0.981, + 0.059, + 0 + ] + ], + [ + 0.894, + [ + 0.981, + 0.059, + 0 + ] + ], + [ + 0.896, + [ + 0.963, + 0.044, + 0 + ] + ], + [ + 0.898, + [ + 0.963, + 0.044, + 0 + ] + ], + [ + 0.9, + [ + 0.946, + 0.03, + 0 + ] + ], + [ + 0.902, + [ + 0.946, + 0.03, + 0 + ] + ], + [ + 0.904, + [ + 0.928, + 0.015, + 0 + ] + ], + [ + 0.906, + [ + 0.928, + 0.015, + 0 + ] + ], + [ + 0.908, + [ + 0.91, + 0.001, + 0 + ] + ], + [ + 0.91, + [ + 0.91, + 0.001, + 0 + ] + ], + [ + 0.912, + [ + 0.892, + 0, + 0 + ] + ], + [ + 0.914, + [ + 0.892, + 0, + 0 + ] + ], + [ + 0.916, + [ + 0.874, + 0, + 0 + ] + ], + [ + 0.918, + [ + 0.874, + 0, + 0 + ] + ], + [ + 0.92, + [ + 0.857, + 0, + 0 + ] + ], + [ + 0.922, + [ + 0.857, + 0, + 0 + ] + ], + [ + 0.924, + [ + 0.839, + 0, + 0 + ] + ], + [ + 0.926, + [ + 0.839, + 0, + 0 + ] + ], + [ + 0.928, + [ + 0.821, + 0, + 0 + ] + ], + [ + 0.93, + [ + 0.821, + 0, + 0 + ] + ], + [ + 0.932, + [ + 0.803, + 0, + 0 + ] + ], + [ + 0.933, + [ + 0.803, + 0, + 0 + ] + ], + [ + 0.935, + [ + 0.785, + 0, + 0 + ] + ], + [ + 0.937, + [ + 0.785, + 0, + 0 + ] + ], + [ + 0.939, + [ + 0.767, + 0, + 0 + ] + ], + [ + 0.941, + [ + 0.767, + 0, + 0 + ] + ], + [ + 0.943, + [ + 0.75, + 0, + 0 + ] + ], + [ + 0.945, + [ + 0.75, + 0, + 0 + ] + ], + [ + 0.947, + [ + 0.732, + 0, + 0 + ] + ], + [ + 0.949, + [ + 0.732, + 0, + 0 + ] + ], + [ + 0.951, + [ + 0.714, + 0, + 0 + ] + ], + [ + 0.953, + [ + 0.714, + 0, + 0 + ] + ], + [ + 0.955, + [ + 0.696, + 0, + 0 + ] + ], + [ + 0.957, + [ + 0.696, + 0, + 0 + ] + ], + [ + 0.959, + [ + 0.678, + 0, + 0 + ] + ], + [ + 0.961, + [ + 0.678, + 0, + 0 + ] + ], + [ + 0.963, + [ + 0.66, + 0, + 0 + ] + ], + [ + 0.965, + [ + 0.66, + 0, + 0 + ] + ], + [ + 0.967, + [ + 0.643, + 0, + 0 + ] + ], + [ + 0.969, + [ + 0.643, + 0, + 0 + ] + ], + [ + 0.971, + [ + 0.625, + 0, + 0 + ] + ], + [ + 0.973, + [ + 0.625, + 0, + 0 + ] + ], + [ + 0.975, + [ + 0.607, + 0, + 0 + ] + ], + [ + 0.977, + [ + 0.607, + 0, + 0 + ] + ], + [ + 0.978, + [ + 0.589, + 0, + 0 + ] + ], + [ + 0.98, + [ + 0.589, + 0, + 0 + ] + ], + [ + 0.982, + [ + 0.571, + 0, + 0 + ] + ], + [ + 0.984, + [ + 0.571, + 0, + 0 + ] + ], + [ + 0.986, + [ + 0.553, + 0, + 0 + ] + ], + [ + 0.988, + [ + 0.553, + 0, + 0 + ] + ], + [ + 0.99, + [ + 0.536, + 0, + 0 + ] + ], + [ + 0.992, + [ + 0.536, + 0, + 0 + ] + ], + [ + 0.994, + [ + 0.518, + 0, + 0 + ] + ], + [ + 0.996, + [ + 0.518, + 0, + 0 + ] + ], + [ + 0.998, + [ + 0.5, + 0, + 0 + ] + ], + [ + 1, + [ + 0.5, + 0, + 0 + ] + ] + ] + ], + "colorMap": 0 + }, + "bar": false + } +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/setupChiral3.json b/01_Code/physical_computing_interface/simulation/json/setupChiral3.json new file mode 100644 index 0000000000000000000000000000000000000000..bd33977185a1e882ec602fe89ca32ecf92479ef8 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/setupChiral3.json @@ -0,0 +1,74434 @@ +{ + "setup": { + "nodes": [ + { + "id": "n0", + "parent": "11", + "degrees_of_freedom": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n1", + "parent": "11", + "degrees_of_freedom": [ + 6, + 7, + 8, + 9, + 10, + 11 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n2", + "parent": "11", + "degrees_of_freedom": [ + 12, + 13, + 14, + 15, + 16, + 17 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n3", + "parent": "11", + "degrees_of_freedom": [ + 18, + 19, + 20, + 21, + 22, + 23 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n4", + "parent": "11", + "degrees_of_freedom": [ + 24, + 25, + 26, + 27, + 28, + 29 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.857142857142857, + "y": -5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n5", + "parent": "11", + "degrees_of_freedom": [ + 30, + 31, + 32, + 33, + 34, + 35 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.0203050891044216, + "y": -5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n6", + "parent": "11", + "degrees_of_freedom": [ + 36, + 37, + 38, + 39, + 40, + 41 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 3.140184917367551e-16, + "y": -5, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n7", + "parent": "11", + "degrees_of_freedom": [ + 42, + 43, + 44, + 45, + 46, + 47 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.020305089104421, + "y": -5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n8", + "parent": "11", + "degrees_of_freedom": [ + 48, + 49, + 50, + 51, + 52, + 53 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.857142857142857, + "y": -5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n9", + "parent": "11", + "degrees_of_freedom": [ + 54, + 55, + 56, + 57, + 58, + 59 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.0203050891044216, + "y": -5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n10", + "parent": "11", + "degrees_of_freedom": [ + 60, + 61, + 62, + 63, + 64, + 65 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -3.140184917367551e-16, + "y": -5, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n11", + "parent": "11", + "degrees_of_freedom": [ + 66, + 67, + 68, + 69, + 70, + 71 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.020305089104421, + "y": -5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n12", + "parent": "11", + "degrees_of_freedom": [ + 72, + 73, + 74, + 75, + 76, + 77 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00006127054474367485, + "y": -0.0005764219598477146, + "z": -0.00007638816988533589 + }, + "angle": { + "x": -0.0000019006746924249295, + "y": -0.000008548681036030396, + "z": 0.000003013162245068095 + } + }, + { + "id": "n13", + "parent": "11", + "degrees_of_freedom": [ + 78, + 79, + 80, + 81, + 82, + 83 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000009569548046759798, + "y": -0.00028571762654177625, + "z": -0.00010777000743863096 + }, + "angle": { + "x": -0.000006622576169758562, + "y": 0.000014662372358721586, + "z": -0.000007927134747995262 + } + }, + { + "id": "n14", + "parent": "11", + "degrees_of_freedom": [ + 84, + 85, + 86, + 87, + 88, + 89 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 6.115830716494401e-7, + "y": -0.00028307506231904986, + "z": -0.000034745841276784984 + }, + "angle": { + "x": -0.000006064924516595151, + "y": -0.0000033821795274807894, + "z": -1.4713928190740948e-8 + } + }, + { + "id": "n15", + "parent": "11", + "degrees_of_freedom": [ + 90, + 91, + 92, + 93, + 94, + 95 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -3.140184917367551e-16, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000014578194319754071, + "y": -0.0002771800324804563, + "z": -0.000019602894802517637 + }, + "angle": { + "x": -0.000009386268329808981, + "y": -0.000006886624854111889, + "z": -0.000008717503787093083 + } + }, + { + "id": "n16", + "parent": "11", + "degrees_of_freedom": [ + 96, + 97, + 98, + 99, + 100, + 101 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.020305089104421, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004229528969680477, + "y": -0.0003714592911443493, + "z": -0.00005648025341231486 + }, + "angle": { + "x": -0.00004924003441013519, + "y": 0.00004792127439237459, + "z": -0.000029768509322254585 + } + }, + { + "id": "n17", + "parent": "11", + "degrees_of_freedom": [ + 102, + 103, + 104, + 105, + 106, + 107 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.857142857142857, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012196071904202409, + "y": -0.00039109489440707724, + "z": -0.00007539437718710755 + }, + "angle": { + "x": -0.000002486071211121955, + "y": -0.00000535439583019665, + "z": -0.000012606219301004874 + } + }, + { + "id": "n18", + "parent": "11", + "degrees_of_freedom": [ + 108, + 109, + 110, + 111, + 112, + 113 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.0203050891044216, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000057555076855349864, + "y": -0.00037678526296035095, + "z": -0.00009187793468356992 + }, + "angle": { + "x": 0.00004372045592178046, + "y": -0.00005261206629698934, + "z": -0.000030987825802928826 + } + }, + { + "id": "n19", + "parent": "11", + "degrees_of_freedom": [ + 114, + 115, + 116, + 117, + 118, + 119 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 3.140184917367551e-16, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000025595995668574682, + "y": -0.0002959407580447984, + "z": -0.00010808508175088611 + }, + "angle": { + "x": -0.000009587243042159157, + "y": 0.000003030462737377417, + "z": -0.000012988705630439005 + } + }, + { + "id": "n20", + "parent": "11", + "degrees_of_freedom": [ + 120, + 121, + 122, + 123, + 124, + 125 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.020305089104421, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000012910790322815035, + "y": -0.00020148098081930986, + "z": -0.00005842098828322429 + }, + "angle": { + "x": -0.00006220052598546832, + "y": 0.00010558641441872815, + "z": -0.00004757422950501538 + } + }, + { + "id": "n21", + "parent": "11", + "degrees_of_freedom": [ + 126, + 127, + 128, + 129, + 130, + 131 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.857142857142857, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000053452008288899775, + "y": -0.0001826741788125608, + "z": -0.00003477877168440209 + }, + "angle": { + "x": -0.000003973010382698029, + "y": 0.0000014980951436545792, + "z": -0.000009100002101653562 + } + }, + { + "id": "n22", + "parent": "11", + "degrees_of_freedom": [ + 132, + 133, + 134, + 135, + 136, + 137 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.0203050891044216, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00000161292496482119, + "y": -0.0001970078213880183, + "z": -0.00002304540200854616 + }, + "angle": { + "x": 0.000029730692901087793, + "y": -0.00006837391386896984, + "z": -0.00003213002884479446 + } + }, + { + "id": "n23", + "parent": "11", + "degrees_of_freedom": [ + 138, + 139, + 140, + 141, + 142, + 143 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000045376803669656656, + "y": -0.0006552311690138593, + "z": -0.00011723094882094128 + }, + "angle": { + "x": -0.00009965171562005181, + "y": -0.0000055183585737048576, + "z": 0.0000055380590526361155 + } + }, + { + "id": "n24", + "parent": "11", + "degrees_of_freedom": [ + 144, + 145, + 146, + 147, + 148, + 149 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00007949883194846103, + "y": -0.0006056016012145995, + "z": -0.0000949751030616181 + }, + "angle": { + "x": 0.0000015392310848041018, + "y": -0.00001032816106206127, + "z": -0.00007392048856027853 + } + }, + { + "id": "n25", + "parent": "11", + "degrees_of_freedom": [ + 150, + 151, + 152, + 153, + 154, + 155 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 1.3798290402499141e-8, + "y": -0.0005923843206117704, + "z": -0.00008891351162851928 + }, + "angle": { + "x": -0.000006071012025554741, + "y": -0.00001096021361719583, + "z": -0.000009053425653134453 + } + }, + { + "id": "n26", + "parent": "11", + "degrees_of_freedom": [ + 156, + 157, + 158, + 159, + 160, + 161 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004980312132016755, + "y": -0.0003427628712535605, + "z": -0.00008350989691214072 + }, + "angle": { + "x": -0.00010147118260025388, + "y": -0.000007115131980994271, + "z": 0.0000829677523963722 + } + }, + { + "id": "n27", + "parent": "11", + "degrees_of_freedom": [ + 162, + 163, + 164, + 165, + 166, + 167 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000042736267126770904, + "y": -0.0006166093615372127, + "z": -0.00008665868951419579 + }, + "angle": { + "x": -0.00033163715800038683, + "y": -0.000005063622646087242, + "z": 0.00016683630038726895 + } + }, + { + "id": "n28", + "parent": "11", + "degrees_of_freedom": [ + 168, + 169, + 170, + 171, + 172, + 173 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 5, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000343039542518728, + "y": -0.0007379065439882641, + "z": -0.0000928635598299773 + }, + "angle": { + "x": 0.0002235029723516984, + "y": -0.0000041906530835042935, + "z": -0.000026942880641811607 + } + }, + { + "id": "n29", + "parent": "11", + "degrees_of_freedom": [ + 174, + 175, + 176, + 177, + 178, + 179 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003479769803631925, + "y": -0.0004851320456467893, + "z": -0.00010388283543915325 + }, + "angle": { + "x": -0.0007796693806157891, + "y": -0.000008436493155516496, + "z": -0.0003841105947779016 + } + }, + { + "id": "n30", + "parent": "11", + "degrees_of_freedom": [ + 180, + 181, + 182, + 183, + 184, + 185 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004586905113259864, + "y": 0.00014411144126016785, + "z": -0.00010780582514534089 + }, + "angle": { + "x": -0.0000912645440717244, + "y": -0.000009353640840618196, + "z": -0.0001432153742907414 + } + }, + { + "id": "n31", + "parent": "11", + "degrees_of_freedom": [ + 186, + 187, + 188, + 189, + 190, + 191 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005592961827891487, + "y": -0.0008633920827297179, + "z": -0.00010475666949358845 + }, + "angle": { + "x": 0.001140844994495974, + "y": -0.000005927463993312462, + "z": -0.0005813244075546423 + } + }, + { + "id": "n32", + "parent": "11", + "degrees_of_freedom": [ + 192, + 193, + 194, + 195, + 196, + 197 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 5, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000615863909578695, + "y": -0.001288579675473449, + "z": -0.00009562379791351924 + }, + "angle": { + "x": -0.00041623816693341987, + "y": -0.0000051599624048427225, + "z": -0.000033304741766947905 + } + }, + { + "id": "n33", + "parent": "11", + "degrees_of_freedom": [ + 198, + 199, + 200, + 201, + 202, + 203 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000587690051904647, + "y": -0.001017119138855471, + "z": -0.00008574794083671528 + }, + "angle": { + "x": 0.0015797916550857715, + "y": -0.00000610813783254991, + "z": 0.00067489123807611 + } + }, + { + "id": "n34", + "parent": "11", + "degrees_of_freedom": [ + 204, + 205, + 206, + 207, + 208, + 209 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003627929327289444, + "y": -0.0002882957670558257, + "z": 0.000023959296926272404 + }, + "angle": { + "x": -0.00004856375524979564, + "y": 0.00007164280723123878, + "z": -0.000007664864049975665 + } + }, + { + "id": "n35", + "parent": "11", + "degrees_of_freedom": [ + 210, + 211, + 212, + 213, + 214, + 215 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000097011070813752, + "y": -0.00028911960569334076, + "z": -8.019076287780866e-8 + }, + "angle": { + "x": -0.000028222494944679125, + "y": 0.0000155908670364615, + "z": -0.0000038340555212078655 + } + }, + { + "id": "n36", + "parent": "11", + "degrees_of_freedom": [ + 216, + 217, + 218, + 219, + 220, + 221 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 3.140184917367551e-16, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001571194299779932, + "y": -0.00016875647860164336, + "z": -0.000010144469079943254 + }, + "angle": { + "x": 0.000005185464597983968, + "y": -0.00005250321504563754, + "z": -0.000047818833582684096 + } + }, + { + "id": "n37", + "parent": "11", + "degrees_of_freedom": [ + 222, + 223, + 224, + 225, + 226, + 227 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.0203050891044216, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00022636689694653238, + "y": -0.00021576674983523, + "z": 0.000006562899237580777 + }, + "angle": { + "x": 0.000021268925296625755, + "y": 0.0001053446301081736, + "z": 0.000007988691492968814 + } + }, + { + "id": "n38", + "parent": "11", + "degrees_of_freedom": [ + 228, + 229, + 230, + 231, + 232, + 233 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.857142857142857, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0003935461097372367, + "y": -0.00033999110131356815, + "z": 0.00002121120630290968 + }, + "angle": { + "x": 0.00008649868953323537, + "y": -0.000041590993806104217, + "z": -0.00004396105030867014 + } + }, + { + "id": "n39", + "parent": "11", + "degrees_of_freedom": [ + 234, + 235, + 236, + 237, + 238, + 239 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.020305089104421, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005831334745087521, + "y": -0.0004360622678904798, + "z": 0.000020815128102917125 + }, + "angle": { + "x": -0.00003411448977640222, + "y": 0.0005556293686021298, + "z": -0.0002551104592615901 + } + }, + { + "id": "n40", + "parent": "11", + "degrees_of_freedom": [ + 240, + 241, + 242, + 243, + 244, + 245 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -3.140184917367551e-16, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008054499665651462, + "y": -0.0003886033369717099, + "z": 0.00003302697346104777 + }, + "angle": { + "x": 0.00000729765481948087, + "y": -0.00003067910297257591, + "z": -0.000047819230019951786 + } + }, + { + "id": "n41", + "parent": "11", + "degrees_of_freedom": [ + 246, + 247, + 248, + 249, + 250, + 251 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.0203050891044216, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016805642625899116, + "y": -0.00034206386434031084, + "z": 0.000005209611943643121 + }, + "angle": { + "x": 0.000027614161474936785, + "y": -0.00023344729767656814, + "z": -0.00011950844394708272 + } + }, + { + "id": "n42", + "parent": "11", + "degrees_of_freedom": [ + 252, + 253, + 254, + 255, + 256, + 257 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.857142857142857, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00037932649886913413, + "y": -0.00022523010799298344, + "z": -0.000013731987978695668 + }, + "angle": { + "x": 0.00008625003772759054, + "y": -0.00004159163430965543, + "z": -0.000051677074594252826 + } + }, + { + "id": "n43", + "parent": "11", + "degrees_of_freedom": [ + 258, + 259, + 260, + 261, + 262, + 263 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.020305089104421, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -1.4874906575444635e-9, + "y": -0.0001265967941531805, + "z": -0.000009336212667427188 + }, + "angle": { + "x": -0.000015855251943392123, + "y": 0.0005983787867073952, + "z": -0.00027794058968840787 + } + }, + { + "id": "n44", + "parent": "11", + "degrees_of_freedom": [ + 264, + 265, + 266, + 267, + 268, + 269 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": -2.857142857142857, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000011436618657628905, + "y": -0.00019919909525198238, + "z": -0.00019009062912018993 + }, + "angle": { + "x": 0.00017254288405703255, + "y": -0.00002262009694080183, + "z": 0.000039614549594786575 + } + }, + { + "id": "n45", + "parent": "11", + "degrees_of_freedom": [ + 270, + 271, + 272, + 273, + 274, + 275 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": -2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000088684403344587, + "y": -0.00015321722605799468, + "z": -7.551155115595768e-10 + }, + "angle": { + "x": -0.00008870902047512056, + "y": -0.00013083411498512591, + "z": -0.000009064576289071527 + } + }, + { + "id": "n46", + "parent": "11", + "degrees_of_freedom": [ + 276, + 277, + 278, + 279, + 280, + 281 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000004101394494696725, + "y": -0.00020478446653933045, + "z": -0.00006973312107098645 + }, + "angle": { + "x": -0.00001917032919582828, + "y": 0.00003704713608022324, + "z": 0.000009410880560877652 + } + }, + { + "id": "n47", + "parent": "11", + "degrees_of_freedom": [ + 282, + 283, + 284, + 285, + 286, + 287 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000027788179486716528, + "y": -0.0002704730532198599, + "z": -0.00007746057002598709 + }, + "angle": { + "x": -0.000011177320039036937, + "y": 0.00001775038212181241, + "z": 0.000025295635602216103 + } + }, + { + "id": "n48", + "parent": "11", + "degrees_of_freedom": [ + 288, + 289, + 290, + 291, + 292, + 293 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 2.857142857142857, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000048993951787200266, + "y": -0.00034821613701420905, + "z": -0.00005095302427413182 + }, + "angle": { + "x": 0.0000573475023860056, + "y": -0.000010633558027581113, + "z": 0.00003645759757552682 + } + }, + { + "id": "n49", + "parent": "11", + "degrees_of_freedom": [ + 294, + 295, + 296, + 297, + 298, + 299 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000050711743428182374, + "y": -0.00038288901318149395, + "z": -0.00012042661583252216 + }, + "angle": { + "x": -0.000020543954957916244, + "y": -0.00004289725273661017, + "z": -0.000018411871646118484 + } + }, + { + "id": "n50", + "parent": "11", + "degrees_of_freedom": [ + 300, + 301, + 302, + 303, + 304, + 305 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004771553618160712, + "y": -0.00033804397209899733, + "z": -0.00011481948709199971 + }, + "angle": { + "x": -0.000007183841456673279, + "y": -0.00001064288352871891, + "z": 0.000009938844647811856 + } + }, + { + "id": "n51", + "parent": "11", + "degrees_of_freedom": [ + 306, + 307, + 308, + 309, + 310, + 311 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": -2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000015253096196086068, + "y": -0.0002821586476955923, + "z": -0.00009139961720183774 + }, + "angle": { + "x": -0.00003841784018241686, + "y": 0.00006476284373861947, + "z": 0.000029395131844843642 + } + }, + { + "id": "n52", + "parent": "11", + "degrees_of_freedom": [ + 312, + 313, + 314, + 315, + 316, + 317 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 2.857142857142857, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000029574555487828714, + "y": -0.0004203199726417168, + "z": -0.0000878661173720974 + }, + "angle": { + "x": -0.000027688775728569043, + "y": -0.0000017332456065344634, + "z": 4.202990344265578e-7 + } + }, + { + "id": "n53", + "parent": "11", + "degrees_of_freedom": [ + 318, + 319, + 320, + 321, + 322, + 323 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005660812701891558, + "y": -0.000382205988698001, + "z": -0.00006745701563715543 + }, + "angle": { + "x": -0.000011257561972398398, + "y": 0.0000061712919372248216, + "z": -0.000041513550754797244 + } + }, + { + "id": "n54", + "parent": "11", + "degrees_of_freedom": [ + 324, + 325, + 326, + 327, + 328, + 329 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008106984273147554, + "y": -0.00029457646201000215, + "z": -0.00003618428679705189 + }, + "angle": { + "x": -0.000015510972963349986, + "y": 0.000001933650009103205, + "z": 9.134362715488472e-7 + } + }, + { + "id": "n55", + "parent": "11", + "degrees_of_freedom": [ + 330, + 331, + 332, + 333, + 334, + 335 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": -2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005310403372685053, + "y": -0.0002056403961039222, + "z": -0.000008147857133726807 + }, + "angle": { + "x": -0.000020326476819119875, + "y": 0.000019590296669808156, + "z": 0.00004298704405467151 + } + }, + { + "id": "n56", + "parent": "11", + "degrees_of_freedom": [ + 336, + 337, + 338, + 339, + 340, + 341 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": -2.857142857142857, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002317354708755738, + "y": -0.00016682150592803606, + "z": -0.000029457151338117483 + }, + "angle": { + "x": 0.00001560683448901777, + "y": 0.0000037713819698236164, + "z": 1.847528277617659e-7 + } + }, + { + "id": "n57", + "parent": "11", + "degrees_of_freedom": [ + 342, + 343, + 344, + 345, + 346, + 347 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": -2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 5.628788861989848e-7, + "y": -0.00019994924836049774, + "z": -0.000024645656382718545 + }, + "angle": { + "x": -0.000019639107806408463, + "y": -0.00000989312781444795, + "z": -0.00003326085975731748 + } + }, + { + "id": "n58", + "parent": "11", + "degrees_of_freedom": [ + 348, + 349, + 350, + 351, + 352, + 353 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000015452100930562136, + "y": -0.0002900736442710795, + "z": -0.00005609933874827015 + }, + "angle": { + "x": -0.000009241961089679373, + "y": 0.00001530752358985549, + "z": 0.000001170011114161468 + } + }, + { + "id": "n59", + "parent": "11", + "degrees_of_freedom": [ + 354, + 355, + 356, + 357, + 358, + 359 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000005041469979935639, + "y": -0.00038319976799769834, + "z": -0.00006193318415909225 + }, + "angle": { + "x": 0.0000025995059324380717, + "y": -0.000013180565279607756, + "z": 0.00003726002193699799 + } + }, + { + "id": "n60", + "parent": "11", + "degrees_of_freedom": [ + 360, + 361, + 362, + 363, + 364, + 365 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n61", + "parent": "11", + "degrees_of_freedom": [ + 366, + 367, + 368, + 369, + 370, + 371 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n62", + "parent": "11", + "degrees_of_freedom": [ + 372, + 373, + 374, + 375, + 376, + 377 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n63", + "parent": "11", + "degrees_of_freedom": [ + 378, + 379, + 380, + 381, + 382, + 383 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.857142857142857, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n64", + "parent": "11", + "degrees_of_freedom": [ + 384, + 385, + 386, + 387, + 388, + 389 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.0203050891044216, + "y": -5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n65", + "parent": "11", + "degrees_of_freedom": [ + 390, + 391, + 392, + 393, + 394, + 395 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 3.140184917367551e-16, + "y": -5, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n66", + "parent": "11", + "degrees_of_freedom": [ + 396, + 397, + 398, + 399, + 400, + 401 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.020305089104421, + "y": -5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n67", + "parent": "11", + "degrees_of_freedom": [ + 402, + 403, + 404, + 405, + 406, + 407 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.857142857142857, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n68", + "parent": "11", + "degrees_of_freedom": [ + 408, + 409, + 410, + 411, + 412, + 413 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.0203050891044216, + "y": -5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n69", + "parent": "11", + "degrees_of_freedom": [ + 414, + 415, + 416, + 417, + 418, + 419 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -3.140184917367551e-16, + "y": -5, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n70", + "parent": "11", + "degrees_of_freedom": [ + 420, + 421, + 422, + 423, + 424, + 425 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.020305089104421, + "y": -5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n71", + "parent": "11", + "degrees_of_freedom": [ + 426, + 427, + 428, + 429, + 430, + 431 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.000007375324998276995, + "y": -0.000573141582481275, + "z": -0.00004296401627897174 + }, + "angle": { + "x": -0.00000705638991157361, + "y": -0.00000916538026814789, + "z": 2.4343725210459205e-7 + } + }, + { + "id": "n72", + "parent": "11", + "degrees_of_freedom": [ + 432, + 433, + 434, + 435, + 436, + 437 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002489927090760473, + "y": -0.00028172266274326287, + "z": -0.0000016246699992069685 + }, + "angle": { + "x": -0.0000030016146933206397, + "y": -0.0000046079730786703585, + "z": 0.0000023598616772761394 + } + }, + { + "id": "n73", + "parent": "11", + "degrees_of_freedom": [ + 438, + 439, + 440, + 441, + 442, + 443 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -3.140184917367551e-16, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000020366641833108408, + "y": -0.00027896723551028025, + "z": 0.000017055236541480598 + }, + "angle": { + "x": -0.000004500050933481329, + "y": -0.00000986352912313192, + "z": 0.0000027314534219760496 + } + }, + { + "id": "n74", + "parent": "11", + "degrees_of_freedom": [ + 444, + 445, + 446, + 447, + 448, + 449 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.020305089104421, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001779583600626506, + "y": -0.0003680612123850235, + "z": -0.00001361996941448994 + }, + "angle": { + "x": -0.000046567227630877706, + "y": 6.127442555603198e-7, + "z": -0.000001963375093396032 + } + }, + { + "id": "n75", + "parent": "11", + "degrees_of_freedom": [ + 450, + 451, + 452, + 453, + 454, + 455 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000004039593751578064, + "y": -0.00039008252923029884, + "z": -0.00002803152783506492 + }, + "angle": { + "x": -0.0000027463544767665162, + "y": -0.000004851801620024673, + "z": -0.0000010222748615596812 + } + }, + { + "id": "n76", + "parent": "11", + "degrees_of_freedom": [ + 456, + 457, + 458, + 459, + 460, + 461 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.0203050891044216, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000019664943738746818, + "y": -0.0003734340622944034, + "z": -0.00003874320840709309 + }, + "angle": { + "x": 0.00003747895830033661, + "y": -1.591371026989181e-7, + "z": -3.540781811396128e-7 + } + }, + { + "id": "n77", + "parent": "11", + "degrees_of_freedom": [ + 462, + 463, + 464, + 465, + 466, + 467 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 3.140184917367551e-16, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000004235015724623381, + "y": -0.0002897111915035743, + "z": -0.000052643783072390654 + }, + "angle": { + "x": -0.000004988866605763612, + "y": 0.000004217445080275738, + "z": 2.02367080829085e-7 + } + }, + { + "id": "n78", + "parent": "11", + "degrees_of_freedom": [ + 468, + 469, + 470, + 471, + 472, + 473 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.020305089104421, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 5.551018872082317e-7, + "y": -0.00019956719476979808, + "z": -0.000021913523108949578 + }, + "angle": { + "x": -0.000045885387431320904, + "y": -0.000021546190693133173, + "z": 0.00001030210254682283 + } + }, + { + "id": "n79", + "parent": "11", + "degrees_of_freedom": [ + 474, + 475, + 476, + 477, + 478, + 479 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00001966931656493607, + "y": -0.00017920539584494836, + "z": -0.000007870750127654386 + }, + "angle": { + "x": -0.0000016679403328745974, + "y": -7.942529048833456e-7, + "z": 0.00000395610479578794 + } + }, + { + "id": "n80", + "parent": "11", + "degrees_of_freedom": [ + 480, + 481, + 482, + 483, + 484, + 485 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.0203050891044216, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000064290927864266216, + "y": -0.00019693527835052497, + "z": 0.0000026707251169845917 + }, + "angle": { + "x": 0.000036669426973552195, + "y": 0.000027807666197273836, + "z": 0.00001505933381127126 + } + }, + { + "id": "n81", + "parent": "11", + "degrees_of_freedom": [ + 486, + 487, + 488, + 489, + 490, + 491 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00003081788888989356, + "y": -0.0006379493039198182, + "z": -0.00011605968007597794 + }, + "angle": { + "x": -0.00007249446676707465, + "y": -0.000009023354731803054, + "z": 0.000010455505550007162 + } + }, + { + "id": "n82", + "parent": "11", + "degrees_of_freedom": [ + 492, + 493, + 494, + 495, + 496, + 497 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.00006509836150592759, + "y": -0.000591845454930122, + "z": -0.00007289612636194268 + }, + "angle": { + "x": 0.0000011931070231889818, + "y": -0.000011605842636477861, + "z": 0.000007080420951308833 + } + }, + { + "id": "n83", + "parent": "11", + "degrees_of_freedom": [ + 498, + 499, + 500, + 501, + 502, + 503 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000021394892242763324, + "y": -0.00039533296019520246, + "z": -0.00006031822622980541 + }, + "angle": { + "x": -0.00002360161163186567, + "y": -0.000011099135309893124, + "z": 0.00003223644801260808 + } + }, + { + "id": "n84", + "parent": "11", + "degrees_of_freedom": [ + 504, + 505, + 506, + 507, + 508, + 509 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000030150719682701913, + "y": -0.0005505099692663431, + "z": -0.00006439899175570777 + }, + "angle": { + "x": -0.00031882518591478775, + "y": -0.000009248861182786175, + "z": 0.0001418033956330618 + } + }, + { + "id": "n85", + "parent": "11", + "degrees_of_freedom": [ + 510, + 511, + 512, + 513, + 514, + 515 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 5, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003988185159230939, + "y": -0.0006202712134964111, + "z": -0.00007743118804844365 + }, + "angle": { + "x": 0.00007906143591984706, + "y": -0.0000075264584083951804, + "z": 0.0000017165877396992252 + } + }, + { + "id": "n86", + "parent": "11", + "degrees_of_freedom": [ + 516, + 517, + 518, + 519, + 520, + 521 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000355457967157774, + "y": -0.0005577091797665374, + "z": -0.00009361713726724856 + }, + "angle": { + "x": -0.00014042322303561546, + "y": -0.000011417305036236161, + "z": -0.00007647040341478193 + } + }, + { + "id": "n87", + "parent": "11", + "degrees_of_freedom": [ + 522, + 523, + 524, + 525, + 526, + 527 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000026391196509793205, + "y": -0.0004166905161007573, + "z": -0.00010032798751887169 + }, + "angle": { + "x": -0.000027698414510611912, + "y": -0.000011053483882022318, + "z": -0.000029593576940968855 + } + }, + { + "id": "n88", + "parent": "11", + "degrees_of_freedom": [ + 528, + 529, + 530, + 531, + 532, + 533 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000016243806113511287, + "y": -0.0006720970033829439, + "z": -0.00009660218921975527 + }, + "angle": { + "x": 0.00041330817446093114, + "y": -0.000007801777803902757, + "z": -0.00019214521889947763 + } + }, + { + "id": "n89", + "parent": "11", + "degrees_of_freedom": [ + 534, + 535, + 536, + 537, + 538, + 539 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 5, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000009804736771862188, + "y": -0.0007768156281304869, + "z": -0.00008376553336394015 + }, + "angle": { + "x": -0.0001349283720701212, + "y": -0.000007630326920736775, + "z": 0.000004350304612054572 + } + }, + { + "id": "n90", + "parent": "11", + "degrees_of_freedom": [ + 540, + 541, + 542, + 543, + 544, + 545 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001630603593431225, + "y": -0.000655707768364756, + "z": -0.00006813531669686258 + }, + "angle": { + "x": 0.0005505862204945326, + "y": -0.000010741751480834353, + "z": 0.00024405185128420693 + } + }, + { + "id": "n91", + "parent": "11", + "degrees_of_freedom": [ + 546, + 547, + 548, + 549, + 550, + 551 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011840285823009582, + "y": -0.00031217901897628955, + "z": -0.000006276692207072672 + }, + "angle": { + "x": -0.000026042298370291238, + "y": 0.0000080320448145119, + "z": 0.000006444046115307483 + } + }, + { + "id": "n92", + "parent": "11", + "degrees_of_freedom": [ + 552, + 553, + 554, + 555, + 556, + 557 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 3.140184917367551e-16, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000015066856185806444, + "y": -0.00018070252006256054, + "z": -0.000022579555299625352 + }, + "angle": { + "x": 0.000002237555998772429, + "y": 0.000014748441240390444, + "z": -0.00000575295329636735 + } + }, + { + "id": "n93", + "parent": "11", + "degrees_of_freedom": [ + 558, + 559, + 560, + 561, + 562, + 563 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.0203050891044216, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000012001943245731507, + "y": -0.0002271210528981834, + "z": -0.00001074840690673501 + }, + "angle": { + "x": 0.000018912610457458785, + "y": 0.00006831175067978516, + "z": 0.000011777800684910102 + } + }, + { + "id": "n94", + "parent": "11", + "degrees_of_freedom": [ + 564, + 565, + 566, + 567, + 568, + 569 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008806981210168448, + "y": -0.0003503253954524802, + "z": 0.000001698733606181142 + }, + "angle": { + "x": 0.00008478639000817235, + "y": -0.000006847313273877123, + "z": -0.000016201680434265853 + } + }, + { + "id": "n95", + "parent": "11", + "degrees_of_freedom": [ + 570, + 571, + 572, + 573, + 574, + 575 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.020305089104421, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000021024386833581884, + "y": -0.0004435140236321222, + "z": 3.10117731435676e-7 + }, + "angle": { + "x": -0.00003418812027032673, + "y": 0.00018275835659608427, + "z": -0.00008464417400955741 + } + }, + { + "id": "n96", + "parent": "11", + "degrees_of_freedom": [ + 576, + 577, + 578, + 579, + 580, + 581 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -3.140184917367551e-16, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007065238606035828, + "y": -0.00039702612063630664, + "z": 0.00001831056420777892 + }, + "angle": { + "x": 0.000002772585303751741, + "y": -0.000034203358436365134, + "z": -0.000009343419911166395 + } + }, + { + "id": "n97", + "parent": "11", + "degrees_of_freedom": [ + 582, + 583, + 584, + 585, + 586, + 587 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.0203050891044216, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006303503308460195, + "y": -0.00035444116849620217, + "z": -0.0000025130338870500217 + }, + "angle": { + "x": 0.00002524089583248651, + "y": -0.00006700864490520898, + "z": -0.000019535014386424196 + } + }, + { + "id": "n98", + "parent": "11", + "degrees_of_freedom": [ + 588, + 589, + 590, + 591, + 592, + 593 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003392677675814612, + "y": -0.00023424703386983875, + "z": -0.000020044966049625098 + }, + "angle": { + "x": 0.00008754823968337898, + "y": -0.000012607620797145316, + "z": 0.000001105390369329748 + } + }, + { + "id": "n99", + "parent": "11", + "degrees_of_freedom": [ + 594, + 595, + 596, + 597, + 598, + 599 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.020305089104421, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000017451560316552338, + "y": -0.00013462790522631742, + "z": -0.000016080234682067963 + }, + "angle": { + "x": -0.000019764918131888248, + "y": 0.00007178671024965781, + "z": -0.000027325769651137974 + } + }, + { + "id": "n100", + "parent": "11", + "degrees_of_freedom": [ + 600, + 601, + 602, + 603, + 604, + 605 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 2.857142857142857, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006535329694838822, + "y": -0.0004214766719464039, + "z": -0.00008196226153544998 + }, + "angle": { + "x": -0.00003524461305820361, + "y": -0.000005025988441448716, + "z": 0.00000407771725905519 + } + }, + { + "id": "n101", + "parent": "11", + "degrees_of_freedom": [ + 606, + 607, + 608, + 609, + 610, + 611 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008967946945306084, + "y": -0.000391615334311715, + "z": -0.00006210708538158564 + }, + "angle": { + "x": -0.000009670631911722348, + "y": 0.000006332107987116597, + "z": -0.00003718885791317282 + } + }, + { + "id": "n102", + "parent": "11", + "degrees_of_freedom": [ + 612, + 613, + 614, + 615, + 616, + 617 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010204267155807687, + "y": -0.0003064396121297275, + "z": -0.000033700395924445145 + }, + "angle": { + "x": -0.000014606136531519101, + "y": 8.160378567214704e-7, + "z": 0.000007196610282151992 + } + }, + { + "id": "n103", + "parent": "11", + "degrees_of_freedom": [ + 618, + 619, + 620, + 621, + 622, + 623 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": -2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006303550198460156, + "y": -0.00021211679225459376, + "z": -0.0000066594852518904005 + }, + "angle": { + "x": -0.000019357436016106278, + "y": 0.000018685972262055023, + "z": 0.00004697486093773955 + } + }, + { + "id": "n104", + "parent": "11", + "degrees_of_freedom": [ + 624, + 625, + 626, + 627, + 628, + 629 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": -2.857142857142857, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003199341902909071, + "y": -0.00016859166401910595, + "z": -0.000027450586659073605 + }, + "angle": { + "x": 0.000022598005254243407, + "y": 7.422733448211816e-7, + "z": 0.000001592796026696583 + } + }, + { + "id": "n105", + "parent": "11", + "degrees_of_freedom": [ + 630, + 631, + 632, + 633, + 634, + 635 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": -2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000012443773505828278, + "y": -0.0001982645217898509, + "z": -0.000010419945791719038 + }, + "angle": { + "x": -0.000015486922360732853, + "y": -0.000014467848030957637, + "z": -0.000029755288271971993 + } + }, + { + "id": "n106", + "parent": "11", + "degrees_of_freedom": [ + 636, + 637, + 638, + 639, + 640, + 641 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00000727010226352444, + "y": -0.00028349121688721416, + "z": -0.000029747902318614763 + }, + "angle": { + "x": -0.000008057278656257917, + "y": 0.000003732188199104277, + "z": 0.000006582829939129917 + } + }, + { + "id": "n107", + "parent": "11", + "degrees_of_freedom": [ + 642, + 643, + 644, + 645, + 646, + 647 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000037528407524945915, + "y": -0.0003779335262624648, + "z": -0.000042829379859133304 + }, + "angle": { + "x": 0.000001701646668391322, + "y": -0.00001956463514302516, + "z": 0.00004005598788043108 + } + }, + { + "id": "n108", + "parent": "11", + "degrees_of_freedom": [ + 648, + 649, + 650, + 651, + 652, + 653 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n109", + "parent": "11", + "degrees_of_freedom": [ + 654, + 655, + 656, + 657, + 658, + 659 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n110", + "parent": "11", + "degrees_of_freedom": [ + 660, + 661, + 662, + 663, + 664, + 665 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n111", + "parent": "11", + "degrees_of_freedom": [ + 666, + 667, + 668, + 669, + 670, + 671 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.857142857142857, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n112", + "parent": "11", + "degrees_of_freedom": [ + 672, + 673, + 674, + 675, + 676, + 677 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.0203050891044216, + "y": -5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n113", + "parent": "11", + "degrees_of_freedom": [ + 678, + 679, + 680, + 681, + 682, + 683 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 3.140184917367551e-16, + "y": -5, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n114", + "parent": "11", + "degrees_of_freedom": [ + 684, + 685, + 686, + 687, + 688, + 689 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.020305089104421, + "y": -5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n115", + "parent": "11", + "degrees_of_freedom": [ + 690, + 691, + 692, + 693, + 694, + 695 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.857142857142857, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n116", + "parent": "11", + "degrees_of_freedom": [ + 696, + 697, + 698, + 699, + 700, + 701 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -2.0203050891044216, + "y": -5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n117", + "parent": "11", + "degrees_of_freedom": [ + 702, + 703, + 704, + 705, + 706, + 707 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -3.140184917367551e-16, + "y": -5, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n118", + "parent": "11", + "degrees_of_freedom": [ + 708, + 709, + 710, + 711, + 712, + 713 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 2.020305089104421, + "y": -5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n119", + "parent": "11", + "degrees_of_freedom": [ + 714, + 715, + 716, + 717, + 718, + 719 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.00006702513183061129, + "y": -0.0005706174393340137, + "z": -0.000009633214338184643 + }, + "angle": { + "x": -0.00000822004092185738, + "y": -0.000009734287205036067, + "z": -0.000010836304552929936 + } + }, + { + "id": "n120", + "parent": "11", + "degrees_of_freedom": [ + 720, + 721, + 722, + 723, + 724, + 725 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000011021962165948259, + "y": -0.0002726679171671268, + "z": 0.00007024922891841937 + }, + "angle": { + "x": -0.0000026846944467198106, + "y": 0.000013447988695381521, + "z": 0.000010486215521732277 + } + }, + { + "id": "n121", + "parent": "11", + "degrees_of_freedom": [ + 726, + 727, + 728, + 729, + 730, + 731 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -3.140184917367551e-16, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000044353384347287877, + "y": -0.000279211738729372, + "z": 0.00007087091165309198 + }, + "angle": { + "x": -3.7630800479776355e-7, + "y": -0.0000016181245750265074, + "z": 0.000017417524803855967 + } + }, + { + "id": "n122", + "parent": "11", + "degrees_of_freedom": [ + 732, + 733, + 734, + 735, + 736, + 737 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.020305089104421, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008281357893075004, + "y": -0.00036562483883706756, + "z": 0.00003686392422667909 + }, + "angle": { + "x": -0.000053693638113099025, + "y": -0.00008769575265428927, + "z": 0.00004606110543601688 + } + }, + { + "id": "n123", + "parent": "11", + "degrees_of_freedom": [ + 738, + 739, + 740, + 741, + 742, + 743 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.857142857142857, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016203099281913568, + "y": -0.0003858362430107432, + "z": 0.000016511669045420663 + }, + "angle": { + "x": -0.0000034922452444451438, + "y": -0.00000510917733809268, + "z": 0.000015072939235679414 + } + }, + { + "id": "n124", + "parent": "11", + "degrees_of_freedom": [ + 744, + 745, + 746, + 747, + 748, + 749 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 2.0203050891044216, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006898612552207457, + "y": -0.00037188036905817925, + "z": 0.000002009873432845077 + }, + "angle": { + "x": 0.00003876052144022896, + "y": 0.00008851909442985021, + "z": 0.000046386143097717736 + } + }, + { + "id": "n125", + "parent": "11", + "degrees_of_freedom": [ + 750, + 751, + 752, + 753, + 754, + 755 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 3.140184917367551e-16, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000036092806337890364, + "y": -0.00028468648421008395, + "z": -0.00001652817686245499 + }, + "angle": { + "x": -7.084762165130503e-7, + "y": -0.0000012730740628067812, + "z": 0.000012850458550036994 + } + }, + { + "id": "n126", + "parent": "11", + "degrees_of_freedom": [ + 756, + 757, + 758, + 759, + 760, + 761 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.020305089104421, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000005330199334883964, + "y": -0.00019724117922990478, + "z": 0.000003822653024916471 + }, + "angle": { + "x": -0.000038750452176690514, + "y": -0.00009949427756873593, + "z": 0.000049366257515025486 + } + }, + { + "id": "n127", + "parent": "11", + "degrees_of_freedom": [ + 762, + 763, + 764, + 765, + 766, + 767 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.857142857142857, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008257069324907321, + "y": -0.00017947605757484862, + "z": 0.000019173420880876613 + }, + "angle": { + "x": -3.886434418749532e-7, + "y": 0.000002217981331666793, + "z": 0.000015194938372656206 + } + }, + { + "id": "n128", + "parent": "11", + "degrees_of_freedom": [ + 768, + 769, + 770, + 771, + 772, + 773 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": -2.0203050891044216, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000031849672182105786, + "y": -0.00019405951335008898, + "z": 0.00003881205994761082 + }, + "angle": { + "x": 0.000051644077342830764, + "y": 0.00014237507546543832, + "z": 0.0000665373589077162 + } + }, + { + "id": "n129", + "parent": "11", + "degrees_of_freedom": [ + 774, + 775, + 776, + 777, + 778, + 779 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00007696516361833152, + "y": -0.0006466458114966589, + "z": -0.00010775579358602998 + }, + "angle": { + "x": -0.00007320049459052329, + "y": -0.000009047020747049384, + "z": -0.000019328426855047164 + } + }, + { + "id": "n130", + "parent": "11", + "degrees_of_freedom": [ + 780, + 781, + 782, + 783, + 784, + 785 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00009942848732337863, + "y": -0.0005876003057475682, + "z": -0.0000652729470770121 + }, + "angle": { + "x": 0.000014344013928015405, + "y": -0.000013169557004050799, + "z": 0.00005286634703792717 + } + }, + { + "id": "n131", + "parent": "11", + "degrees_of_freedom": [ + 786, + 787, + 788, + 789, + 790, + 791 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000744335013797331, + "y": -0.00005097190314231731, + "z": -0.00004028031285354666 + }, + "angle": { + "x": -0.00003320453011052071, + "y": -0.000008997387306952962, + "z": 0.00007340657260623582 + } + }, + { + "id": "n132", + "parent": "11", + "degrees_of_freedom": [ + 792, + 793, + 794, + 795, + 796, + 797 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008541828520915099, + "y": -0.00046241357599116503, + "z": -0.000043318138345711326 + }, + "angle": { + "x": -0.0009696894023117611, + "y": -0.00001293139913915111, + "z": 0.00042042336587543245 + } + }, + { + "id": "n133", + "parent": "11", + "degrees_of_freedom": [ + 798, + 799, + 800, + 801, + 802, + 803 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 5, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009331248028173482, + "y": -0.0006473717474233481, + "z": -0.00006428789413198967 + }, + "angle": { + "x": 0.000053825721645740574, + "y": -0.00001106955038920032, + "z": 0.0000593902618932547 + } + }, + { + "id": "n134", + "parent": "11", + "degrees_of_freedom": [ + 804, + 805, + 806, + 807, + 808, + 809 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000839882704814041, + "y": -0.0007422430176748616, + "z": -0.00008325721696693535 + }, + "angle": { + "x": 0.00023858443782433206, + "y": -0.00001113656009913509, + "z": 0.00012387808870259115 + } + }, + { + "id": "n135", + "parent": "11", + "degrees_of_freedom": [ + 810, + 811, + 812, + 813, + 814, + 815 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007653992204117915, + "y": -0.000993662919848009, + "z": -0.00008901757412169468 + }, + "angle": { + "x": -0.000029791257587852086, + "y": -0.000008686901183573113, + "z": 0.00004324527240201904 + } + }, + { + "id": "n136", + "parent": "11", + "degrees_of_freedom": [ + 816, + 817, + 818, + 819, + 820, + 821 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006694036914808906, + "y": -0.0008341458490702607, + "z": -0.00008570161400852802 + }, + "angle": { + "x": -0.0005783275293990174, + "y": -0.000008672036375912801, + "z": 0.00023063010932513272 + } + }, + { + "id": "n137", + "parent": "11", + "degrees_of_freedom": [ + 822, + 823, + 824, + 825, + 826, + 827 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 5, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000620757930382223, + "y": -0.000770194047162599, + "z": -0.00006880038328405504 + }, + "angle": { + "x": -0.00009064425996919604, + "y": -0.000010212272248428501, + "z": 0.00005949559844561485 + } + }, + { + "id": "n138", + "parent": "11", + "degrees_of_freedom": [ + 828, + 829, + 830, + 831, + 832, + 833 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007255751204543293, + "y": -0.0005545331048312783, + "z": -0.00004932636687427182 + }, + "angle": { + "x": 0.0007643494497956536, + "y": -0.000012550158747716141, + "z": 0.0003604940273453603 + } + }, + { + "id": "n139", + "parent": "11", + "degrees_of_freedom": [ + 834, + 835, + 836, + 837, + 838, + 839 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001741903688782226, + "y": -0.00027444523597865833, + "z": -0.000018514930365220126 + }, + "angle": { + "x": -0.00005349284838845846, + "y": 0.000040727151023610885, + "z": 0.000014851642328620108 + } + }, + { + "id": "n140", + "parent": "11", + "degrees_of_freedom": [ + 840, + 841, + 842, + 843, + 844, + 845 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 3.140184917367551e-16, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009165984146326095, + "y": -0.00019085921125943552, + "z": -0.00002173144020585263 + }, + "angle": { + "x": 0.00000116198558053419, + "y": 0.000028388776783268926, + "z": 0.00002868703962170272 + } + }, + { + "id": "n141", + "parent": "11", + "degrees_of_freedom": [ + 846, + 847, + 848, + 849, + 850, + 851 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.0203050891044216, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00013580327759394768, + "y": -0.00023960272478872974, + "z": -0.000011842258504880727 + }, + "angle": { + "x": 0.000018508656477224188, + "y": 0.00014366644313263655, + "z": 0.00006944370672766575 + } + }, + { + "id": "n142", + "parent": "11", + "degrees_of_freedom": [ + 852, + 853, + 854, + 855, + 856, + 857 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.857142857142857, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00024237375271770456, + "y": -0.0003568615098271488, + "z": 0.0000016624715265600802 + }, + "angle": { + "x": 0.00008170929135843484, + "y": -0.000010767198846848604, + "z": 0.000014842982611238496 + } + }, + { + "id": "n143", + "parent": "11", + "degrees_of_freedom": [ + 858, + 859, + 860, + 861, + 862, + 863 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 2.020305089104421, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00017931004585913766, + "y": -0.000448170648881321, + "z": 0.000001889935705378381 + }, + "angle": { + "x": -0.00003339594788260427, + "y": -0.00031158059118968287, + "z": 0.00012119638809497748 + } + }, + { + "id": "n144", + "parent": "11", + "degrees_of_freedom": [ + 864, + 865, + 866, + 867, + 868, + 869 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -3.140184917367551e-16, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001531883233335792, + "y": -0.00039854506404954235, + "z": 0.000018601778530904024 + }, + "angle": { + "x": 0.0000022590441037847467, + "y": -0.00004992443087082302, + "z": 0.000028687089732808418 + } + }, + { + "id": "n145", + "parent": "11", + "degrees_of_freedom": [ + 870, + 871, + 872, + 873, + 874, + 875 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.0203050891044216, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004350926446656808, + "y": -0.0003547518955510994, + "z": 0.000001907835510454472 + }, + "angle": { + "x": 0.000021271173327496222, + "y": 0.00045436571653895055, + "z": 0.00020698049777731327 + } + }, + { + "id": "n146", + "parent": "11", + "degrees_of_freedom": [ + 876, + 877, + 878, + 879, + 880, + 881 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.857142857142857, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00022127790899027062, + "y": -0.00023975776495772802, + "z": -0.000015342881932064067 + }, + "angle": { + "x": 0.00008474951677232433, + "y": -0.000010766986131527998, + "z": 0.00004253090974435229 + } + }, + { + "id": "n147", + "parent": "11", + "degrees_of_freedom": [ + 882, + 883, + 884, + 885, + 886, + 887 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": -2.020305089104421, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -2.768262298422973e-9, + "y": -0.00014107788379941433, + "z": -0.000013547999113448906 + }, + "angle": { + "x": -0.000021168555779291412, + "y": -0.00034905114729539736, + "z": 0.000162132098255742 + } + }, + { + "id": "n148", + "parent": "11", + "degrees_of_freedom": [ + 888, + 889, + 890, + 891, + 892, + 893 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 2.857142857142857, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000009764487411832658, + "y": -0.0003419949566769024, + "z": -0.00033068628806875837 + }, + "angle": { + "x": -0.00019838285327237904, + "y": -0.000041214790078130736, + "z": -0.00003828926120948758 + } + }, + { + "id": "n149", + "parent": "11", + "degrees_of_freedom": [ + 894, + 895, + 896, + 897, + 898, + 899 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 2.020305089104421, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000008335983216849323, + "y": -0.0002612082425931557, + "z": -0.00024793830701441645 + }, + "angle": { + "x": -0.00013660001884894426, + "y": -0.000015623255457172844, + "z": -0.0000248228747728961 + } + }, + { + "id": "n150", + "parent": "11", + "degrees_of_freedom": [ + 900, + 901, + 902, + 903, + 904, + 905 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000027101220405463114, + "y": -0.0002022747492464577, + "z": 0.00001496126852077982 + }, + "angle": { + "x": -0.00006136148106898553, + "y": 0.00016601858509923722, + "z": -0.000004939831802560162 + } + }, + { + "id": "n151", + "parent": "11", + "degrees_of_freedom": [ + 906, + 907, + 908, + 909, + 910, + 911 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": -2.020305089104421, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000029420063423447263, + "y": -0.00015294682718319647, + "z": -4.663221153626612e-10 + }, + "angle": { + "x": 0.000019034031407209242, + "y": -0.000028073246626824015, + "z": 0.000012816005394250263 + } + }, + { + "id": "n152", + "parent": "11", + "degrees_of_freedom": [ + 912, + 913, + 914, + 915, + 916, + 917 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": -2.857142857142857, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003528598127820864, + "y": -0.0001944571549345859, + "z": 0.000040787718842610146 + }, + "angle": { + "x": 0.000020414355349095335, + "y": -0.000028645038269001718, + "z": -0.00003885491232282986 + } + }, + { + "id": "n153", + "parent": "11", + "degrees_of_freedom": [ + 918, + 919, + 920, + 921, + 922, + 923 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": -2.020305089104421, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000016929691741519144, + "y": -0.00027565596608350695, + "z": 0.00011574294779519685 + }, + "angle": { + "x": -0.0001985088607312658, + "y": -0.00011932599791507376, + "z": -0.000025642193143554528 + } + }, + { + "id": "n154", + "parent": "11", + "degrees_of_freedom": [ + 924, + 925, + 926, + 927, + 928, + 929 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000007513976980635557, + "y": -0.00033117146558811803, + "z": -0.00018544917629950147 + }, + "angle": { + "x": -0.000048791843919978056, + "y": 0.00024212309079634856, + "z": -0.000006901145524915752 + } + }, + { + "id": "n155", + "parent": "11", + "degrees_of_freedom": [ + 930, + 931, + 932, + 933, + 934, + 935 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 2.020305089104421, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000007678740500793252, + "y": -0.00037903609968292936, + "z": -0.00008140567265109407 + }, + "angle": { + "x": 0.0001238586032822136, + "y": -0.00017469139476960967, + "z": 0.000018039816692920713 + } + }, + { + "id": "n156", + "parent": "11", + "degrees_of_freedom": [ + 936, + 937, + 938, + 939, + 940, + 941 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000051121675884731816, + "y": -0.0006919083544238802, + "z": -0.00007889713238020258 + }, + "angle": { + "x": 0.000040558538789284665, + "y": -0.000014339162307580825, + "z": -0.000007486268109228591 + } + }, + { + "id": "n157", + "parent": "11", + "degrees_of_freedom": [ + 942, + 943, + 944, + 945, + 946, + 947 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006487544390179219, + "y": -0.0005624408428692444, + "z": -0.00008383433371015078 + }, + "angle": { + "x": -0.0001581892967803995, + "y": -0.0000037723865577151774, + "z": -0.00008024704629679002 + } + }, + { + "id": "n158", + "parent": "11", + "degrees_of_freedom": [ + 948, + 949, + 950, + 951, + 952, + 953 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 5, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006774089824231198, + "y": -0.0005009464538720438, + "z": -0.00009278300875079902 + }, + "angle": { + "x": -0.00014112060524257866, + "y": -0.000006151550359274816, + "z": -0.0000767052291171552 + } + }, + { + "id": "n159", + "parent": "11", + "degrees_of_freedom": [ + 954, + 955, + 956, + 957, + 958, + 959 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006178382963955866, + "y": -0.00020326184905991682, + "z": -0.00010537715995541304 + }, + "angle": { + "x": 0.0006006184145779906, + "y": -0.000008242697292830733, + "z": -0.0003364568175790642 + } + }, + { + "id": "n160", + "parent": "11", + "degrees_of_freedom": [ + 960, + 961, + 962, + 963, + 964, + 965 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004735799913687454, + "y": 0.0004964197694061184, + "z": -0.00010920514390190476 + }, + "angle": { + "x": 0.00005076609181017551, + "y": -0.000011923766798739224, + "z": -0.00013956187048490092 + } + }, + { + "id": "n161", + "parent": "11", + "degrees_of_freedom": [ + 966, + 967, + 968, + 969, + 970, + 971 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003427317172426441, + "y": -0.00039889124957812234, + "z": -0.00010528236605443722 + }, + "angle": { + "x": -0.0019606457877638416, + "y": -0.000006716845003126227, + "z": -0.000848210421810471 + } + }, + { + "id": "n162", + "parent": "11", + "degrees_of_freedom": [ + 972, + 973, + 974, + 975, + 976, + 977 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 5, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002722843250491163, + "y": -0.0007618735747873199, + "z": -0.00009434366122785691 + }, + "angle": { + "x": 0.00023244471415997887, + "y": -0.000006572438697322425, + "z": -0.00007034279531594938 + } + }, + { + "id": "n163", + "parent": "11", + "degrees_of_freedom": [ + 978, + 979, + 980, + 981, + 982, + 983 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003077055634104715, + "y": -0.000735818503718196, + "z": -0.00008125114025531227 + }, + "angle": { + "x": -0.00033305794610492893, + "y": -0.000008236048354834045, + "z": 0.0001270999071255722 + } + }, + { + "id": "n164", + "parent": "11", + "degrees_of_freedom": [ + 984, + 985, + 986, + 987, + 988, + 989 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00015277002034628367, + "y": -0.0009833120389322698, + "z": -0.00012319554814920887 + }, + "angle": { + "x": -0.0000010653832112632133, + "y": -0.00002202317010903255, + "z": 7.877488244614568e-7 + } + }, + { + "id": "n165", + "parent": "11", + "degrees_of_freedom": [ + 990, + 991, + 992, + 993, + 994, + 995 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018508411618107712, + "y": -0.0008119634855336806, + "z": -0.00014690185326631476 + }, + "angle": { + "x": -0.000012916888246513136, + "y": -0.000016771006760989144, + "z": -0.000003503604134562885 + } + }, + { + "id": "n166", + "parent": "11", + "degrees_of_freedom": [ + 996, + 997, + 998, + 999, + 1000, + 1001 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004218177197175425, + "y": -0.0007793275111401966, + "z": -0.0000894451972687125 + }, + "angle": { + "x": -0.000006182141165935334, + "y": -0.000010687748841940042, + "z": 0.0000012021691461249947 + } + }, + { + "id": "n167", + "parent": "11", + "degrees_of_freedom": [ + 1002, + 1003, + 1004, + 1005, + 1006, + 1007 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009173470278050001, + "y": -0.0007751017822106945, + "z": -0.00008174973234145958 + }, + "angle": { + "x": -0.000006525231578492068, + "y": 0.000018192487831025864, + "z": -0.000011592687110009152 + } + }, + { + "id": "n168", + "parent": "11", + "degrees_of_freedom": [ + 1008, + 1009, + 1010, + 1011, + 1012, + 1013 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.020305089104422, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010522508113014569, + "y": -0.000841404580876879, + "z": -0.00010886256819666256 + }, + "angle": { + "x": -0.00003559475025309316, + "y": -0.000049494560603119316, + "z": 0.000010721766304879206 + } + }, + { + "id": "n169", + "parent": "11", + "degrees_of_freedom": [ + 1014, + 1015, + 1016, + 1017, + 1018, + 1019 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.857142857142858, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015011028276790201, + "y": -0.0008568874288052733, + "z": -0.00012411397274225732 + }, + "angle": { + "x": -0.000004482752851049217, + "y": -0.000018071788681447326, + "z": -0.0000020044214287531047 + } + }, + { + "id": "n170", + "parent": "11", + "degrees_of_freedom": [ + 1020, + 1021, + 1022, + 1023, + 1024, + 1025 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.020305089104422, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017208780633938743, + "y": -0.0008516663276082542, + "z": -0.00013629068506709454 + }, + "angle": { + "x": 0.000029496848133812056, + "y": 0.00001571875559670963, + "z": 0.000008325777204270284 + } + }, + { + "id": "n171", + "parent": "11", + "degrees_of_freedom": [ + 1026, + 1027, + 1028, + 1029, + 1030, + 1031 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001760894861865939, + "y": -0.0007951445646046104, + "z": -0.00014694405123261183 + }, + "angle": { + "x": -0.00000668528567699223, + "y": -0.00004771654987694326, + "z": -0.000015718540524507183 + } + }, + { + "id": "n172", + "parent": "11", + "degrees_of_freedom": [ + 1032, + 1033, + 1034, + 1035, + 1036, + 1037 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.979694910895579, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010022909685864534, + "y": -0.0007281464493803745, + "z": -0.0001121023843627755 + }, + "angle": { + "x": -0.000044173559993387, + "y": 0.0001568161264171467, + "z": -0.00008641525830657209 + } + }, + { + "id": "n173", + "parent": "11", + "degrees_of_freedom": [ + 1038, + 1039, + 1040, + 1041, + 1042, + 1043 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.142857142857142, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007059796478853253, + "y": -0.0007103106908669005, + "z": -0.00009521660551352569 + }, + "angle": { + "x": -0.000005552318036796641, + "y": -0.000011452499578750777, + "z": -0.00002530683863919245 + } + }, + { + "id": "n174", + "parent": "11", + "degrees_of_freedom": [ + 1044, + 1045, + 1046, + 1047, + 1048, + 1049 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.979694910895578, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000047795965266435466, + "y": -0.0007176208297424682, + "z": -0.00008648001402868269 + }, + "angle": { + "x": 0.00002382778875789711, + "y": -0.00017427503011176111, + "z": -0.00008125679997867373 + } + }, + { + "id": "n175", + "parent": "11", + "degrees_of_freedom": [ + 1050, + 1051, + 1052, + 1053, + 1054, + 1055 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0001419444788641652, + "y": -0.0011466994130137382, + "z": -0.0003445129744581141 + }, + "angle": { + "x": -0.00006809824796460998, + "y": -0.000032927564146573415, + "z": 0.000005293133474433082 + } + }, + { + "id": "n176", + "parent": "11", + "degrees_of_freedom": [ + 1056, + 1057, + 1058, + 1059, + 1060, + 1061 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00024031924486281114, + "y": -0.0010758662084483976, + "z": -0.0002209428256961662 + }, + "angle": { + "x": 0.00000516213260164006, + "y": -0.00004129091178827757, + "z": -0.000045570007334746755 + } + }, + { + "id": "n177", + "parent": "11", + "degrees_of_freedom": [ + 1062, + 1063, + 1064, + 1065, + 1066, + 1067 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.000045914190405525095, + "y": -0.0010041706270868562, + "z": -0.00021200747406678548 + }, + "angle": { + "x": -0.000005024597227709808, + "y": -0.00003095088945876997, + "z": -0.000006121077827811904 + } + }, + { + "id": "n178", + "parent": "11", + "degrees_of_freedom": [ + 1068, + 1069, + 1070, + 1071, + 1072, + 1073 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 15, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001466033762918302, + "y": -0.0002798801875690024, + "z": -0.0001608511618444309 + }, + "angle": { + "x": -0.00008693701461904504, + "y": -0.000029575855613825786, + "z": 0.0001565243263485857 + } + }, + { + "id": "n179", + "parent": "11", + "degrees_of_freedom": [ + 1074, + 1075, + 1076, + 1077, + 1078, + 1079 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 15, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011499805747718721, + "y": -0.0010012196734893312, + "z": -0.00017177885444964706 + }, + "angle": { + "x": -0.0010916038475826037, + "y": -0.00002283652381352806, + "z": 0.0005130685493242187 + } + }, + { + "id": "n180", + "parent": "11", + "degrees_of_freedom": [ + 1080, + 1081, + 1082, + 1083, + 1084, + 1085 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 15, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009447130562333688, + "y": -0.001304239659817759, + "z": -0.00021179629002371402 + }, + "angle": { + "x": 0.0003964748632762643, + "y": -0.000024665160359077395, + "z": -0.00001170603405427696 + } + }, + { + "id": "n181", + "parent": "11", + "degrees_of_freedom": [ + 1086, + 1087, + 1088, + 1089, + 1090, + 1091 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 15, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011355071882621645, + "y": -0.0009436889245763731, + "z": -0.00026185492926525064 + }, + "angle": { + "x": -0.0012707551302926243, + "y": -0.000033052200868472085, + "z": -0.0006025019964611226 + } + }, + { + "id": "n182", + "parent": "11", + "degrees_of_freedom": [ + 1092, + 1093, + 1094, + 1095, + 1096, + 1097 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 15, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014715286038310748, + "y": -0.00006302486034695664, + "z": -0.0002792763810434986 + }, + "angle": { + "x": -0.00008144626554533334, + "y": -0.000032371998940220756, + "z": -0.0001833588003251661 + } + }, + { + "id": "n183", + "parent": "11", + "degrees_of_freedom": [ + 1098, + 1099, + 1100, + 1101, + 1102, + 1103 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 15, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001847180084788707, + "y": -0.0012778897533849026, + "z": -0.000268657067300431 + }, + "angle": { + "x": 0.0016353547171356934, + "y": -0.000028185664743849584, + "z": -0.0007916804257381937 + } + }, + { + "id": "n184", + "parent": "11", + "degrees_of_freedom": [ + 1104, + 1105, + 1106, + 1107, + 1108, + 1109 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 15, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020321158093833757, + "y": -0.0017853344377837224, + "z": -0.00022169696597409928 + }, + "angle": { + "x": -0.0005648577020383917, + "y": -0.000025995012294424563, + "z": -0.00001512845111861496 + } + }, + { + "id": "n185", + "parent": "11", + "degrees_of_freedom": [ + 1110, + 1111, + 1112, + 1113, + 1114, + 1115 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 15, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018063688814267287, + "y": -0.0013473899398589216, + "z": -0.00017431290071350571 + }, + "angle": { + "x": 0.0020320223577673536, + "y": -0.00002948904692307643, + "z": 0.0009043485654069587 + } + }, + { + "id": "n186", + "parent": "11", + "degrees_of_freedom": [ + 1116, + 1117, + 1118, + 1119, + 1120, + 1121 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015301046324299667, + "y": -0.0009018883551920561, + "z": -0.00026092051037178497 + }, + "angle": { + "x": -0.000019142389079099692, + "y": -0.000013205337241278705, + "z": 0.00000804748396480804 + } + }, + { + "id": "n187", + "parent": "11", + "degrees_of_freedom": [ + 1122, + 1123, + 1124, + 1125, + 1126, + 1127 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000035460308784669915, + "y": -0.0008355028795932392, + "z": -0.00024451750001688367 + }, + "angle": { + "x": -0.000023795405905176903, + "y": -0.00001691722318097168, + "z": 0.000008401956135041743 + } + }, + { + "id": "n188", + "parent": "11", + "degrees_of_freedom": [ + 1128, + 1129, + 1130, + 1131, + 1132, + 1133 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000038031249824081095, + "y": -0.0008518433774455922, + "z": -0.00027281001580538636 + }, + "angle": { + "x": -0.0000028107687682290416, + "y": 0.000011001719686411642, + "z": -0.000006252690637490188 + } + }, + { + "id": "n189", + "parent": "11", + "degrees_of_freedom": [ + 1134, + 1135, + 1136, + 1137, + 1138, + 1139 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.020305089104422, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006203759624524705, + "y": -0.0008742751705334241, + "z": -0.00026479037343608836 + }, + "angle": { + "x": 0.000013492770658085315, + "y": -0.00021925727268092853, + "z": -0.00008766152449894947 + } + }, + { + "id": "n190", + "parent": "11", + "degrees_of_freedom": [ + 1140, + 1141, + 1142, + 1143, + 1144, + 1145 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.857142857142858, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001199940560493832, + "y": -0.0009395255979240607, + "z": -0.0002555228776615372 + }, + "angle": { + "x": 0.00004345598741089806, + "y": 0.000009010101211443921, + "z": -0.000006956830670243513 + } + }, + { + "id": "n191", + "parent": "11", + "degrees_of_freedom": [ + 1146, + 1147, + 1148, + 1149, + 1150, + 1151 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.020305089104422, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009844389043556291, + "y": -0.0009865806273253578, + "z": -0.0002505717246284985 + }, + "angle": { + "x": -0.000029500052603721514, + "y": -0.000056156928968908446, + "z": 0.00001608319249074416 + } + }, + { + "id": "n192", + "parent": "11", + "degrees_of_freedom": [ + 1152, + 1153, + 1154, + 1155, + 1156, + 1157 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008951758454743685, + "y": -0.0009429101209896248, + "z": -0.00023187400229919254 + }, + "angle": { + "x": -0.000002490524760570881, + "y": 0.000007018339940476869, + "z": -0.000006252596148171074 + } + }, + { + "id": "n193", + "parent": "11", + "degrees_of_freedom": [ + 1158, + 1159, + 1160, + 1161, + 1162, + 1163 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.979694910895578, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006884481841408405, + "y": -0.0009120825324300207, + "z": -0.00023374701425454752 + }, + "angle": { + "x": 0.000007736185680849142, + "y": -0.00022529532587941046, + "z": -0.00008838795839321382 + } + }, + { + "id": "n194", + "parent": "11", + "degrees_of_freedom": [ + 1164, + 1165, + 1166, + 1167, + 1168, + 1169 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.142857142857142, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000018935829223406138, + "y": -0.0008579022265205547, + "z": -0.00024113931536732367 + }, + "angle": { + "x": 0.00003555977810311983, + "y": 0.000009010218804256186, + "z": -0.000005548498354549554 + } + }, + { + "id": "n195", + "parent": "11", + "degrees_of_freedom": [ + 1170, + 1171, + 1172, + 1173, + 1174, + 1175 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.979694910895579, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003243823132578119, + "y": -0.0008182942823734446, + "z": -0.0002487539187962415 + }, + "angle": { + "x": -0.000031899186370681265, + "y": 0.00004811400026232488, + "z": -0.000019373818834539872 + } + }, + { + "id": "n196", + "parent": "11", + "degrees_of_freedom": [ + 1176, + 1177, + 1178, + 1179, + 1180, + 1181 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 7.142857142857142, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020496481127510078, + "y": -0.0007999036655899106, + "z": -0.0001890462026324824 + }, + "angle": { + "x": 0.00007508618246220369, + "y": -0.000028059123234135614, + "z": 0.000028144419280288823 + } + }, + { + "id": "n197", + "parent": "11", + "degrees_of_freedom": [ + 1182, + 1183, + 1184, + 1185, + 1186, + 1187 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 7.979694910895579, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020421930656993183, + "y": -0.0007739444443062377, + "z": -0.00006952325448469474 + }, + "angle": { + "x": -0.00004389996548534999, + "y": -0.00007734478542749073, + "z": -0.00001316064195183534 + } + }, + { + "id": "n198", + "parent": "11", + "degrees_of_freedom": [ + 1188, + 1189, + 1190, + 1191, + 1192, + 1193 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020064872455650542, + "y": -0.000799927497134728, + "z": -0.00009348955278349342 + }, + "angle": { + "x": -0.00003797604284592105, + "y": -0.0000630431606799413, + "z": 0.000009492042319654044 + } + }, + { + "id": "n199", + "parent": "11", + "degrees_of_freedom": [ + 1194, + 1195, + 1196, + 1197, + 1198, + 1199 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 12.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00016971357421919305, + "y": -0.0008372174753279655, + "z": -0.00022296962669895187 + }, + "angle": { + "x": -0.00007441402618770071, + "y": 0.000024925931072783003, + "z": 0.000024863328497890354 + } + }, + { + "id": "n200", + "parent": "11", + "degrees_of_freedom": [ + 1200, + 1201, + 1202, + 1203, + 1204, + 1205 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 12.857142857142858, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000151688365641567, + "y": -0.0009029016123241134, + "z": -0.00023488405078468848 + }, + "angle": { + "x": 0.000043582295541265794, + "y": -0.000023949701476349593, + "z": 0.000029425999555342464 + } + }, + { + "id": "n201", + "parent": "11", + "degrees_of_freedom": [ + 1206, + 1207, + 1208, + 1209, + 1210, + 1211 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 12.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015456254248465658, + "y": -0.0009322957551398897, + "z": -0.00031974112329339786 + }, + "angle": { + "x": 0.000006504670991847221, + "y": -0.000039307827693676396, + "z": -0.000011087036874337353 + } + }, + { + "id": "n202", + "parent": "11", + "degrees_of_freedom": [ + 1212, + 1213, + 1214, + 1215, + 1216, + 1217 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001581772822590106, + "y": -0.000904510604328599, + "z": -0.0003657764873574937 + }, + "angle": { + "x": -0.00003386669664156507, + "y": -0.00013677232220899943, + "z": 0.000008118466598512946 + } + }, + { + "id": "n203", + "parent": "11", + "degrees_of_freedom": [ + 1218, + 1219, + 1220, + 1221, + 1222, + 1223 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 7.979694910895579, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018633157730329062, + "y": -0.0008643689161035151, + "z": -0.00018289919214109355 + }, + "angle": { + "x": -0.00011078815510643483, + "y": 0.00004893261515766611, + "z": 0.00002536639004586411 + } + }, + { + "id": "n204", + "parent": "11", + "degrees_of_freedom": [ + 1224, + 1225, + 1226, + 1227, + 1228, + 1229 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 12.857142857142858, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000014807006160801762, + "y": -0.0008880522086724323, + "z": -0.00018643534138316117 + }, + "angle": { + "x": -0.0000017853410057151695, + "y": -0.00002041567530133571, + "z": 0.0000033346259094262847 + } + }, + { + "id": "n205", + "parent": "11", + "degrees_of_freedom": [ + 1230, + 1231, + 1232, + 1233, + 1234, + 1235 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 12.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000005482126957235547, + "y": -0.0008674291585547075, + "z": -0.00022518092715577347 + }, + "angle": { + "x": -0.00002291640135722812, + "y": -0.000027674209997571673, + "z": -0.000027789815531660565 + } + }, + { + "id": "n206", + "parent": "11", + "degrees_of_freedom": [ + 1236, + 1237, + 1238, + 1239, + 1240, + 1241 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000023876358486085018, + "y": -0.0008055129974760131, + "z": -0.0002000135840336856 + }, + "angle": { + "x": -0.000018485598126096564, + "y": -0.000013342103467460586, + "z": -9.19008440829147e-7 + } + }, + { + "id": "n207", + "parent": "11", + "degrees_of_freedom": [ + 1242, + 1243, + 1244, + 1245, + 1246, + 1247 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 7.979694910895579, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000006674374632684302, + "y": -0.0007421343763343346, + "z": -0.00015251583464496676 + }, + "angle": { + "x": -0.00001475872668725318, + "y": -0.000018704527313325464, + "z": 0.00003072249261584091 + } + }, + { + "id": "n208", + "parent": "11", + "degrees_of_freedom": [ + 1248, + 1249, + 1250, + 1251, + 1252, + 1253 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 7.142857142857142, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000014502182661979927, + "y": -0.0007109078024789292, + "z": -0.00010269541204239042 + }, + "angle": { + "x": -0.000026388789335027626, + "y": -0.00001365028312065717, + "z": 0.0000021870152841872506 + } + }, + { + "id": "n209", + "parent": "11", + "degrees_of_freedom": [ + 1254, + 1255, + 1256, + 1257, + 1258, + 1259 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 7.979694910895579, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003117579028154302, + "y": -0.00073258952304975, + "z": -0.00009704126590384848 + }, + "angle": { + "x": -0.00000975399999572473, + "y": -0.000006996836795514092, + "z": -0.000025008765799729922 + } + }, + { + "id": "n210", + "parent": "11", + "degrees_of_freedom": [ + 1260, + 1261, + 1262, + 1263, + 1264, + 1265 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000047251863194523244, + "y": -0.0007953059764731628, + "z": -0.00011124421823892683 + }, + "angle": { + "x": -0.00001188249948838701, + "y": -0.0000115043438381071, + "z": -0.0000017464435345073315 + } + }, + { + "id": "n211", + "parent": "11", + "degrees_of_freedom": [ + 1266, + 1267, + 1268, + 1269, + 1270, + 1271 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 12.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003563181821073794, + "y": -0.0008581945411126666, + "z": -0.00014470167880181156 + }, + "angle": { + "x": -0.00000994952670353186, + "y": -0.000015539716963602235, + "z": 0.000026437070617260792 + } + }, + { + "id": "n212", + "parent": "11", + "degrees_of_freedom": [ + 1272, + 1273, + 1274, + 1275, + 1276, + 1277 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000004530590115721449, + "y": -0.0006025511933760703, + "z": -0.00006374135000662715 + }, + "angle": { + "x": 0.0002288760233308259, + "y": -0.000008275579303031504, + "z": 0.00011469247954034976 + } + }, + { + "id": "n213", + "parent": "11", + "degrees_of_freedom": [ + 1278, + 1279, + 1280, + 1281, + 1282, + 1283 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 5, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000001259009658981066, + "y": -0.000681441547770218, + "z": -0.0000807875163535908 + }, + "angle": { + "x": -0.00009125316896839304, + "y": -0.000009817098691632043, + "z": 8.461016215340887e-7 + } + }, + { + "id": "n214", + "parent": "11", + "degrees_of_freedom": [ + 1284, + 1285, + 1286, + 1287, + 1288, + 1289 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000011010826559696763, + "y": -0.0006076035983229807, + "z": -0.00009719784554824542 + }, + "angle": { + "x": 0.0003628070214372336, + "y": -0.000008973664350800955, + "z": -0.00015902491148181205 + } + }, + { + "id": "n215", + "parent": "11", + "degrees_of_freedom": [ + 1290, + 1291, + 1292, + 1293, + 1294, + 1295 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004113380095321535, + "y": -0.0005057768490466571, + "z": -0.00009638408033686932 + }, + "angle": { + "x": -0.0003452114839611454, + "y": -0.000008798187161593648, + "z": -0.00013682975128882565 + } + }, + { + "id": "n216", + "parent": "11", + "degrees_of_freedom": [ + 1296, + 1297, + 1298, + 1299, + 1300, + 1301 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 5, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000047534033813734415, + "y": -0.00054484237640105, + "z": -0.00008025880965433578 + }, + "angle": { + "x": 0.00004451990795191278, + "y": -0.000009456663708337192, + "z": -0.0000016273384957762486 + } + }, + { + "id": "n217", + "parent": "11", + "degrees_of_freedom": [ + 1302, + 1303, + 1304, + 1305, + 1306, + 1307 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000040092358824717364, + "y": -0.0005093959627182904, + "z": -0.00006302267073303692 + }, + "angle": { + "x": -0.000011174983860761136, + "y": -0.000010181318996059652, + "z": 0.000020652282339988616 + } + }, + { + "id": "n218", + "parent": "11", + "degrees_of_freedom": [ + 1308, + 1309, + 1310, + 1311, + 1312, + 1313 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.000004990526578916954, + "y": -0.0009670951666047487, + "z": -0.00010143809248810286 + }, + "angle": { + "x": -0.000007137398520451502, + "y": -0.000022521976181586347, + "z": 6.83721657344317e-7 + } + }, + { + "id": "n219", + "parent": "11", + "degrees_of_freedom": [ + 1314, + 1315, + 1316, + 1317, + 1318, + 1319 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006527213229389502, + "y": -0.0007743089491118271, + "z": -0.000053271308745416134 + }, + "angle": { + "x": -0.000006196601773887285, + "y": -0.000010143293328303725, + "z": 0.000003967654429756519 + } + }, + { + "id": "n220", + "parent": "11", + "degrees_of_freedom": [ + 1320, + 1321, + 1322, + 1323, + 1324, + 1325 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005037239998039926, + "y": -0.000764671059303823, + "z": -0.000044469540351749664 + }, + "angle": { + "x": -0.00000599333572059113, + "y": -0.000020420690295873032, + "z": 0.0000024066952984271137 + } + }, + { + "id": "n221", + "parent": "11", + "degrees_of_freedom": [ + 1326, + 1327, + 1328, + 1329, + 1330, + 1331 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.020305089104422, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003791286936862296, + "y": -0.0008282311081158317, + "z": -0.00007166117592148267 + }, + "angle": { + "x": -0.00003564976543709922, + "y": -7.164744076069794e-7, + "z": -0.000005912451786442668 + } + }, + { + "id": "n222", + "parent": "11", + "degrees_of_freedom": [ + 1332, + 1333, + 1334, + 1335, + 1336, + 1337 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.857142857142858, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000024729724738633, + "y": -0.0008441164809794137, + "z": -0.00008446534689875416 + }, + "angle": { + "x": -0.0000039276104835730435, + "y": -0.000015252525615251263, + "z": -0.000002125821766428112 + } + }, + { + "id": "n223", + "parent": "11", + "degrees_of_freedom": [ + 1338, + 1339, + 1340, + 1341, + 1342, + 1343 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.020305089104422, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00001856370615567655, + "y": -0.0008360941800100533, + "z": -0.00009233444382670385 + }, + "angle": { + "x": 0.00002370217773799368, + "y": -0.000005235607176921414, + "z": 6.304815433765532e-8 + } + }, + { + "id": "n224", + "parent": "11", + "degrees_of_freedom": [ + 1344, + 1345, + 1346, + 1347, + 1348, + 1349 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000020959860662631628, + "y": -0.0007810284500667084, + "z": -0.00009858450220266253 + }, + "angle": { + "x": -0.0000057461545094227035, + "y": -0.000004545629493846802, + "z": -0.0000010456625232980882 + } + }, + { + "id": "n225", + "parent": "11", + "degrees_of_freedom": [ + 1350, + 1351, + 1352, + 1353, + 1354, + 1355 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.979694910895579, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000015748108709140945, + "y": -0.0007170424003296479, + "z": -0.00007161777716175345 + }, + "angle": { + "x": -0.000036163386836382614, + "y": -0.000034556429027132044, + "z": 0.000010917414208622184 + } + }, + { + "id": "n226", + "parent": "11", + "degrees_of_freedom": [ + 1356, + 1357, + 1358, + 1359, + 1360, + 1361 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.142857142857142, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000013471832454683623, + "y": -0.0007004052203416237, + "z": -0.00005900956064737879 + }, + "angle": { + "x": -0.0000038731191108269205, + "y": -0.000009713729489100021, + "z": 0.0000034868632842554827 + } + }, + { + "id": "n227", + "parent": "11", + "degrees_of_freedom": [ + 1362, + 1363, + 1364, + 1365, + 1366, + 1367 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.979694910895578, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002865430665868375, + "y": -0.0007092079777058705, + "z": -0.00005110815169220141 + }, + "angle": { + "x": 0.00002485249546492523, + "y": 0.000032617502851801434, + "z": 0.000019805888431902476 + } + }, + { + "id": "n228", + "parent": "11", + "degrees_of_freedom": [ + 1368, + 1369, + 1370, + 1371, + 1372, + 1373 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000023716307595344704, + "y": -0.0011005171933601164, + "z": -0.00032417822810729336 + }, + "angle": { + "x": -0.00005228411415788001, + "y": -0.00003182687970081207, + "z": 0.000019031590639289892 + } + }, + { + "id": "n229", + "parent": "11", + "degrees_of_freedom": [ + 1374, + 1375, + 1376, + 1377, + 1378, + 1379 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.00010147760018640083, + "y": -0.0010021443884690488, + "z": -0.00019494610971957076 + }, + "angle": { + "x": -0.0000013914616140826213, + "y": -0.000029498173607605923, + "z": 0.000004939316551007473 + } + }, + { + "id": "n230", + "parent": "11", + "degrees_of_freedom": [ + 1380, + 1381, + 1382, + 1383, + 1384, + 1385 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000017514957466525825, + "y": -0.0007219358573593768, + "z": -0.00014797174754056495 + }, + "angle": { + "x": -0.000017200556523835904, + "y": -0.000028079394968049335, + "z": 0.00004552123969056036 + } + }, + { + "id": "n231", + "parent": "11", + "degrees_of_freedom": [ + 1386, + 1387, + 1388, + 1389, + 1390, + 1391 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004580717454879011, + "y": -0.0009563322624734547, + "z": -0.0001579320034455391 + }, + "angle": { + "x": -0.00040141526326080255, + "y": -0.000024113133195923052, + "z": 0.00018405744886893066 + } + }, + { + "id": "n232", + "parent": "11", + "degrees_of_freedom": [ + 1392, + 1393, + 1394, + 1395, + 1396, + 1397 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 15, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006539011709473919, + "y": -0.0010570953686658954, + "z": -0.00019824872613359955 + }, + "angle": { + "x": 0.00010386260215058908, + "y": -0.000023653154450232672, + "z": 0.000006067866415526638 + } + }, + { + "id": "n233", + "parent": "11", + "degrees_of_freedom": [ + 1398, + 1399, + 1400, + 1401, + 1402, + 1403 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000046414400923074314, + "y": -0.0009840260625136453, + "z": -0.00024481702810328466 + }, + "angle": { + "x": -0.00021883530974913112, + "y": -0.00003053520716454498, + "z": -0.00010867631386190383 + } + }, + { + "id": "n234", + "parent": "11", + "degrees_of_freedom": [ + 1404, + 1405, + 1406, + 1407, + 1408, + 1409 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002144397099301414, + "y": -0.0008113974409269897, + "z": -0.0002624308939243035 + }, + "angle": { + "x": -0.000020044740175002456, + "y": -0.000029059307800167753, + "z": -0.00003445093436242342 + } + }, + { + "id": "n235", + "parent": "11", + "degrees_of_freedom": [ + 1410, + 1411, + 1412, + 1413, + 1414, + 1415 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 15, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000013363226242669502, + "y": -0.0010731173088025215, + "z": -0.0002531290926128817 + }, + "angle": { + "x": 0.0005323676327515306, + "y": -0.000025460551432784587, + "z": -0.00023520324307195595 + } + }, + { + "id": "n236", + "parent": "11", + "degrees_of_freedom": [ + 1416, + 1417, + 1418, + 1419, + 1420, + 1421 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 15, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000029113417099760364, + "y": -0.0011813252907416786, + "z": -0.00020970664502103627 + }, + "angle": { + "x": -0.00014926592173662305, + "y": -0.00002438132385660891, + "z": 0.000007690156029387414 + } + }, + { + "id": "n237", + "parent": "11", + "degrees_of_freedom": [ + 1422, + 1423, + 1424, + 1425, + 1426, + 1427 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 15, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000006308393673739429, + "y": -0.0010397103580701067, + "z": -0.00016460975599634798 + }, + "angle": { + "x": 0.0005857470106689003, + "y": -0.000028700132135799802, + "z": 0.00026565712120293536 + } + }, + { + "id": "n238", + "parent": "11", + "degrees_of_freedom": [ + 1428, + 1429, + 1430, + 1431, + 1432, + 1433 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00014475190765339416, + "y": -0.0008486574595939773, + "z": -0.00022504148826584474 + }, + "angle": { + "x": -0.000020849142926843432, + "y": -0.00002189056088062709, + "z": 0.000012875226284594606 + } + }, + { + "id": "n239", + "parent": "11", + "degrees_of_freedom": [ + 1434, + 1435, + 1436, + 1437, + 1438, + 1439 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015172087405145103, + "y": -0.0008062006545130681, + "z": -0.00025470242985919787 + }, + "angle": { + "x": -0.000006187061961585965, + "y": 0.00007039142987771097, + "z": 0.000010574814773870413 + } + }, + { + "id": "n240", + "parent": "11", + "degrees_of_freedom": [ + 1440, + 1441, + 1442, + 1443, + 1444, + 1445 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.020305089104422, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011718433723755061, + "y": -0.0008240081059174239, + "z": -0.00025098297613646226 + }, + "angle": { + "x": 0.000012828942454724498, + "y": -0.0002355260241174556, + "z": -0.00009842015111732801 + } + }, + { + "id": "n241", + "parent": "11", + "degrees_of_freedom": [ + 1446, + 1447, + 1448, + 1449, + 1450, + 1451 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.857142857142858, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000027429932786777853, + "y": -0.0009017488024941588, + "z": -0.00024213240330551848 + }, + "angle": { + "x": 0.000052469425997151124, + "y": 0.000025924954627252333, + "z": -0.000006820109692842317 + } + }, + { + "id": "n242", + "parent": "11", + "degrees_of_freedom": [ + 1452, + 1453, + 1454, + 1455, + 1456, + 1457 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.020305089104422, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000015619621457574787, + "y": -0.0009590441645500124, + "z": -0.00023961271422835137 + }, + "angle": { + "x": -0.000028857810313512746, + "y": -0.000007579113641742895, + "z": 0.000004188541818566324 + } + }, + { + "id": "n243", + "parent": "11", + "degrees_of_freedom": [ + 1458, + 1459, + 1460, + 1461, + 1462, + 1463 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001336858219010035, + "y": -0.0009206835840562351, + "z": -0.00021616504521984904 + }, + "angle": { + "x": -0.000005567878187323917, + "y": -0.000021968367279331545, + "z": 0.000008439084175096343 + } + }, + { + "id": "n244", + "parent": "11", + "degrees_of_freedom": [ + 1464, + 1465, + 1466, + 1467, + 1468, + 1469 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.979694910895578, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000025650376884483484, + "y": -0.0008955710395160943, + "z": -0.00021551436834133203 + }, + "angle": { + "x": 0.000008389873564979673, + "y": -0.00010168141320501939, + "z": -0.000018906904608110456 + } + }, + { + "id": "n245", + "parent": "11", + "degrees_of_freedom": [ + 1470, + 1471, + 1472, + 1473, + 1474, + 1475 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.142857142857142, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012622596926754661, + "y": -0.0008268154378149594, + "z": -0.00022247172029388413 + }, + "angle": { + "x": 0.00004573748173495719, + "y": 0.0000224984965003713, + "z": 0.00002583406749836846 + } + }, + { + "id": "n246", + "parent": "11", + "degrees_of_freedom": [ + 1476, + 1477, + 1478, + 1479, + 1480, + 1481 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.979694910895579, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006844491111596633, + "y": -0.0007764780208648954, + "z": -0.0002266574276704917 + }, + "angle": { + "x": -0.000030457749590031088, + "y": -0.00022337989077487991, + "z": 0.00011360194564946231 + } + }, + { + "id": "n247", + "parent": "11", + "degrees_of_freedom": [ + 1482, + 1483, + 1484, + 1485, + 1486, + 1487 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 12.857142857142858, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010767857119663771, + "y": -0.0008880387891101822, + "z": -0.00016044148547702627 + }, + "angle": { + "x": -0.0000018745994744657722, + "y": -0.000021107251281084055, + "z": 0.000006906375427042528 + } + }, + { + "id": "n248", + "parent": "11", + "degrees_of_freedom": [ + 1488, + 1489, + 1490, + 1491, + 1492, + 1493 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 12.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001251841853351512, + "y": -0.00087535542709388, + "z": -0.000200701549858324 + }, + "angle": { + "x": -0.00003112783543078475, + "y": -0.000032015174523660644, + "z": -0.000023429580586236868 + } + }, + { + "id": "n249", + "parent": "11", + "degrees_of_freedom": [ + 1494, + 1495, + 1496, + 1497, + 1498, + 1499 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00013334218310322656, + "y": -0.0008179424268702367, + "z": -0.00016222945794280356 + }, + "angle": { + "x": -0.000019605032714272276, + "y": 6.200552270784802e-8, + "z": 0.000004477287935988258 + } + }, + { + "id": "n250", + "parent": "11", + "degrees_of_freedom": [ + 1500, + 1501, + 1502, + 1503, + 1504, + 1505 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 7.979694910895579, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010574188558985514, + "y": -0.0007514275331280917, + "z": -0.00012386110590907392 + }, + "angle": { + "x": -0.000006642070287703867, + "y": -0.000026974785368665185, + "z": 0.000034941282364665066 + } + }, + { + "id": "n251", + "parent": "11", + "degrees_of_freedom": [ + 1506, + 1507, + 1508, + 1509, + 1510, + 1511 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 7.142857142857142, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008125634785270714, + "y": -0.0007113330126420269, + "z": -0.0000643578749065731 + }, + "angle": { + "x": -0.00003405051846976557, + "y": -0.000015211694090686662, + "z": 0.000006491901925131907 + } + }, + { + "id": "n252", + "parent": "11", + "degrees_of_freedom": [ + 1512, + 1513, + 1514, + 1515, + 1516, + 1517 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 7.979694910895579, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000679039182141855, + "y": -0.0007249712946785292, + "z": -0.00006184417442457 + }, + "angle": { + "x": -0.000001243572940017154, + "y": -0.000002032741610400697, + "z": -0.00002153172989530751 + } + }, + { + "id": "n253", + "parent": "11", + "degrees_of_freedom": [ + 1518, + 1519, + 1520, + 1521, + 1522, + 1523 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006159762378915152, + "y": -0.0007846423464835864, + "z": -0.00006374398936389535 + }, + "angle": { + "x": -0.000013930638902358584, + "y": -0.000030710948488543826, + "z": 0.0000035642092350346443 + } + }, + { + "id": "n254", + "parent": "11", + "degrees_of_freedom": [ + 1524, + 1525, + 1526, + 1527, + 1528, + 1529 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 12.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008308452171943998, + "y": -0.0008512057891749351, + "z": -0.00011704395767463874 + }, + "angle": { + "x": -0.000020858411436844327, + "y": -0.000012034727119176376, + "z": 0.00003013425725070939 + } + }, + { + "id": "n255", + "parent": "11", + "degrees_of_freedom": [ + 1530, + 1531, + 1532, + 1533, + 1534, + 1535 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005946497964704949, + "y": -0.0005173348336243649, + "z": -0.00004293669592863265 + }, + "angle": { + "x": 0.00084043502525357, + "y": -0.000012259419828665797, + "z": 0.00037550825769533386 + } + }, + { + "id": "n256", + "parent": "11", + "degrees_of_freedom": [ + 1536, + 1537, + 1538, + 1539, + 1540, + 1541 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 5, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005528355181308995, + "y": -0.0006981692285789784, + "z": -0.00006579608300631705 + }, + "angle": { + "x": -0.0000576605193930933, + "y": -0.000012130678342985376, + "z": 0.000055029483192667055 + } + }, + { + "id": "n257", + "parent": "11", + "degrees_of_freedom": [ + 1542, + 1543, + 1544, + 1545, + 1546, + 1547 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006754682636010862, + "y": -0.0007824984975562466, + "z": -0.00008458556248659715 + }, + "angle": { + "x": 0.00002853396373004852, + "y": -0.000009696739081958569, + "z": 0.000027509059122461044 + } + }, + { + "id": "n258", + "parent": "11", + "degrees_of_freedom": [ + 1548, + 1549, + 1550, + 1551, + 1552, + 1553 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008763680398380692, + "y": -0.0006273002976558068, + "z": -0.00008537612777250521 + }, + "angle": { + "x": 0.0006342499555659405, + "y": -0.000009550937268391042, + "z": 0.0002939388242688471 + } + }, + { + "id": "n259", + "parent": "11", + "degrees_of_freedom": [ + 1554, + 1555, + 1556, + 1557, + 1558, + 1559 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 5, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009353787351823909, + "y": -0.00046101492364011696, + "z": -0.00006688626737848042 + }, + "angle": { + "x": -0.00003151272310505372, + "y": -0.000011032112865162856, + "z": 0.000059389964490985305 + } + }, + { + "id": "n260", + "parent": "11", + "degrees_of_freedom": [ + 1560, + 1561, + 1562, + 1563, + 1564, + 1565 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008342380998001752, + "y": -0.00034747168831664166, + "z": -0.000046572874741013247 + }, + "angle": { + "x": -0.00018957242658495109, + "y": -0.000012348439675208187, + "z": 0.00011443865254819033 + } + }, + { + "id": "n261", + "parent": "11", + "degrees_of_freedom": [ + 1566, + 1567, + 1568, + 1569, + 1570, + 1571 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.00015160372979863742, + "y": -0.0009602701547733815, + "z": -0.00007850437811728768 + }, + "angle": { + "x": -0.000010942023080455103, + "y": -0.00002252082467391393, + "z": -0.000004759486461432886 + } + }, + { + "id": "n262", + "parent": "11", + "degrees_of_freedom": [ + 1572, + 1573, + 1574, + 1575, + 1576, + 1577 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018057971900368707, + "y": -0.0007705107877580715, + "z": 0.000002026403106482233 + }, + "angle": { + "x": -0.000001638389415119687, + "y": -0.00001623921215961589, + "z": 0.000008988418194566339 + } + }, + { + "id": "n263", + "parent": "11", + "degrees_of_freedom": [ + 1578, + 1579, + 1580, + 1581, + 1582, + 1583 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016663961498914557, + "y": -0.0007571830756429751, + "z": 0.0000021111971649837835 + }, + "angle": { + "x": -0.000005858838851086607, + "y": -0.00003901776809990635, + "z": 0.000020921406546535455 + } + }, + { + "id": "n264", + "parent": "11", + "degrees_of_freedom": [ + 1584, + 1585, + 1586, + 1587, + 1588, + 1589 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.020305089104422, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018223967673596656, + "y": -0.0008207072259614712, + "z": -0.00003029372695801222 + }, + "angle": { + "x": -0.00004166518682444725, + "y": -0.00006457982832098746, + "z": 0.000028351828610992934 + } + }, + { + "id": "n265", + "parent": "11", + "degrees_of_freedom": [ + 1590, + 1591, + 1592, + 1593, + 1594, + 1595 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.857142857142858, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002076571178620447, + "y": -0.000836954854438402, + "z": -0.000047388385806209585 + }, + "angle": { + "x": -0.0000059812268549657215, + "y": -0.000015865140166215997, + "z": 0.00000952154196379043 + } + }, + { + "id": "n266", + "parent": "11", + "degrees_of_freedom": [ + 1596, + 1597, + 1598, + 1599, + 1600, + 1601 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 12.020305089104422, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001242568619174725, + "y": -0.0008323618975626248, + "z": -0.00005633217427527321 + }, + "angle": { + "x": 0.00002159799339788114, + "y": 0.0000496415944644902, + "z": 0.00003107463492082209 + } + }, + { + "id": "n267", + "parent": "11", + "degrees_of_freedom": [ + 1602, + 1603, + 1604, + 1605, + 1606, + 1607 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000947828348814084, + "y": -0.0007777949418447888, + "z": -0.00006044863292751141 + }, + "angle": { + "x": -0.000006103303923726475, + "y": 0.000013867976835977435, + "z": 0.00001681983968795383 + } + }, + { + "id": "n268", + "parent": "11", + "degrees_of_freedom": [ + 1608, + 1609, + 1610, + 1611, + 1612, + 1613 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.979694910895579, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000042098285449233406, + "y": -0.0007134391245565568, + "z": -0.00003405334561527206 + }, + "angle": { + "x": -0.000035406282092424485, + "y": -0.00018833505490502018, + "z": 0.00008991634163220584 + } + }, + { + "id": "n269", + "parent": "11", + "degrees_of_freedom": [ + 1614, + 1615, + 1616, + 1617, + 1618, + 1619 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.142857142857142, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009733702926936298, + "y": -0.0006966130528433565, + "z": -0.000019972735648721665 + }, + "angle": { + "x": -0.000004666133626358359, + "y": -0.000009284795908796834, + "z": 0.000028219498550379394 + } + }, + { + "id": "n270", + "parent": "11", + "degrees_of_freedom": [ + 1620, + 1621, + 1622, + 1623, + 1624, + 1625 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 7.979694910895578, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008573642879816988, + "y": -0.0007027838218570308, + "z": -0.000009144729640973172 + }, + "angle": { + "x": 0.000028905289556591383, + "y": 0.0001924367773451204, + "z": 0.00010114584998179919 + } + }, + { + "id": "n271", + "parent": "11", + "degrees_of_freedom": [ + 1626, + 1627, + 1628, + 1629, + 1630, + 1631 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.0001646717644099178, + "y": -0.0011131535943700707, + "z": -0.00029320598083382296 + }, + "angle": { + "x": -0.000050117911430253604, + "y": -0.00002389839252806143, + "z": 0.000010725678883790428 + } + }, + { + "id": "n272", + "parent": "11", + "degrees_of_freedom": [ + 1632, + 1633, + 1634, + 1635, + 1636, + 1637 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00024622712399454934, + "y": -0.001010245197545564, + "z": -0.00018953993887988884 + }, + "angle": { + "x": 0.00002311584915002437, + "y": -0.000037316873586200516, + "z": 0.00003102401333233097 + } + }, + { + "id": "n273", + "parent": "11", + "degrees_of_freedom": [ + 1638, + 1639, + 1640, + 1641, + 1642, + 1643 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016119441939888826, + "y": -0.0006326256997437424, + "z": -0.0001315603642741264 + }, + "angle": { + "x": -0.00002597348976819875, + "y": -0.000026661256582010485, + "z": 0.00004828202839648521 + } + }, + { + "id": "n274", + "parent": "11", + "degrees_of_freedom": [ + 1644, + 1645, + 1646, + 1647, + 1648, + 1649 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 15, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00019118679255396108, + "y": -0.0008904661975082005, + "z": -0.00014138854007826571 + }, + "angle": { + "x": -0.0006083615907912285, + "y": -0.000026788211148953653, + "z": 0.0002634264340870516 + } + }, + { + "id": "n275", + "parent": "11", + "degrees_of_freedom": [ + 1650, + 1651, + 1652, + 1653, + 1654, + 1655 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 15, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00021058173231135307, + "y": -0.0010055260387667108, + "z": -0.00018670150283315795 + }, + "angle": { + "x": 0.00003647640528902306, + "y": -0.000025484779652655504, + "z": 0.00003585156400567087 + } + }, + { + "id": "n276", + "parent": "11", + "degrees_of_freedom": [ + 1656, + 1657, + 1658, + 1659, + 1660, + 1661 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 15, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00019072051416947194, + "y": -0.0010595361489296863, + "z": -0.00023300166432396155 + }, + "angle": { + "x": 0.00019076732524526277, + "y": -0.000027920684310086044, + "z": 0.0000899917889674176 + } + }, + { + "id": "n277", + "parent": "11", + "degrees_of_freedom": [ + 1662, + 1663, + 1664, + 1665, + 1666, + 1667 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016403080554257824, + "y": -0.0012036256776480478, + "z": -0.0002465354331895281 + }, + "angle": { + "x": -0.000024297491254944226, + "y": -0.000026615627682293645, + "z": 0.000022375499349309015 + } + }, + { + "id": "n278", + "parent": "11", + "degrees_of_freedom": [ + 1668, + 1669, + 1670, + 1671, + 1672, + 1673 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 15, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00013379259627911951, + "y": -0.0011407528449585132, + "z": -0.0002368925514024366 + }, + "angle": { + "x": -0.0001196082358124389, + "y": -0.000023166531696338323, + "z": 0.000052315690562391595 + } + }, + { + "id": "n279", + "parent": "11", + "degrees_of_freedom": [ + 1674, + 1675, + 1676, + 1677, + 1678, + 1679 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 15, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011826431155733208, + "y": -0.0011157040055463073, + "z": -0.00019485200874502177 + }, + "angle": { + "x": -0.00007142831932177747, + "y": -0.00002467899704034165, + "z": 0.00003611405576178282 + } + }, + { + "id": "n280", + "parent": "11", + "degrees_of_freedom": [ + 1680, + 1681, + 1682, + 1683, + 1684, + 1685 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 15, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001402851241752432, + "y": -0.00097110726044429, + "z": -0.00014858321749958042 + }, + "angle": { + "x": 0.0005054329871445262, + "y": -0.00002896340970762756, + "z": 0.00023923286627671586 + } + }, + { + "id": "n281", + "parent": "11", + "degrees_of_freedom": [ + 1686, + 1687, + 1688, + 1689, + 1690, + 1691 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001961644988152055, + "y": -0.0008443481479740092, + "z": -0.00022316088363121366 + }, + "angle": { + "x": -0.00004402741943804096, + "y": -0.00008139814883601821, + "z": 0.00001640131176311876 + } + }, + { + "id": "n282", + "parent": "11", + "degrees_of_freedom": [ + 1692, + 1693, + 1694, + 1695, + 1696, + 1697 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001672075851280177, + "y": -0.0008159357398038216, + "z": -0.00023633430299254248 + }, + "angle": { + "x": -0.000003436545410338896, + "y": 0.00004017377541432317, + "z": 0.00006715522386531991 + } + }, + { + "id": "n283", + "parent": "11", + "degrees_of_freedom": [ + 1698, + 1699, + 1700, + 1701, + 1702, + 1703 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.020305089104422, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00029253957404289853, + "y": -0.0008367400787905083, + "z": -0.00022828211009919927 + }, + "angle": { + "x": 0.000015100220481730429, + "y": 0.00026965688484141916, + "z": 0.00014828838839153047 + } + }, + { + "id": "n284", + "parent": "11", + "degrees_of_freedom": [ + 1704, + 1705, + 1706, + 1707, + 1708, + 1709 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.857142857142858, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0005951084237175867, + "y": -0.0009157814611377471, + "z": -0.00021817442577840232 + }, + "angle": { + "x": 0.00005433610322630154, + "y": 0.000031243265626946564, + "z": 0.00006399530498961654 + } + }, + { + "id": "n285", + "parent": "11", + "degrees_of_freedom": [ + 1710, + 1711, + 1712, + 1713, + 1714, + 1715 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 12.020305089104422, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016630187163912952, + "y": -0.0009755063001055487, + "z": -0.00021675689096256926 + }, + "angle": { + "x": -0.000025410217513642415, + "y": -0.0006797963223515705, + "z": 0.00031538466757250947 + } + }, + { + "id": "n286", + "parent": "11", + "degrees_of_freedom": [ + 1716, + 1717, + 1718, + 1719, + 1720, + 1721 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00001131343170157053, + "y": -0.0009386855548195256, + "z": -0.00019908085393100512 + }, + "angle": { + "x": -0.0000029427800502848126, + "y": 0.000022307045357063705, + "z": 0.00006715343297960584 + } + }, + { + "id": "n287", + "parent": "11", + "degrees_of_freedom": [ + 1722, + 1723, + 1724, + 1725, + 1726, + 1727 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.979694910895578, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015159392587049689, + "y": -0.0009121376882464333, + "z": -0.0002011614492639808 + }, + "angle": { + "x": 0.000008630014856794875, + "y": 0.00004557726005842709, + "z": 0.00007538080847335456 + } + }, + { + "id": "n288", + "parent": "11", + "degrees_of_freedom": [ + 1728, + 1729, + 1730, + 1731, + 1732, + 1733 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.142857142857142, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0004902620960807545, + "y": -0.0008417187540774938, + "z": -0.00020936012811836858 + }, + "angle": { + "x": 0.000048394471214887827, + "y": 0.00003124051781515614, + "z": 0.00007031214196023647 + } + }, + { + "id": "n289", + "parent": "11", + "degrees_of_freedom": [ + 1734, + 1735, + 1736, + 1737, + 1738, + 1739 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 7.979694910895579, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000025362389870630824, + "y": -0.0007868048946060672, + "z": -0.0002132776865979245 + }, + "angle": { + "x": -0.00002800587442957576, + "y": -0.0009454095911509777, + "z": 0.00041561028956599397 + } + }, + { + "id": "n290", + "parent": "11", + "degrees_of_freedom": [ + 1740, + 1741, + 1742, + 1743, + 1744, + 1745 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 12.857142857142858, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000190300795903739, + "y": -0.0008564333603433604, + "z": 0.00005626463413161435 + }, + "angle": { + "x": 0.00021815669938973558, + "y": 0.00002807889420371922, + "z": -0.000018232738228908306 + } + }, + { + "id": "n291", + "parent": "11", + "degrees_of_freedom": [ + 1746, + 1747, + 1748, + 1749, + 1750, + 1751 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 12.020305089104422, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00020176832107415629, + "y": -0.0008173272965396303, + "z": -0.00006956931169697401 + }, + "angle": { + "x": -0.00004070748228050557, + "y": -0.0000791463147833577, + "z": -0.000011544142169508034 + } + }, + { + "id": "n292", + "parent": "11", + "degrees_of_freedom": [ + 1752, + 1753, + 1754, + 1755, + 1756, + 1757 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00020861366402207657, + "y": -0.0007844649566023425, + "z": -0.00005356031814678516 + }, + "angle": { + "x": -0.000005056124452136054, + "y": 0.000006923837649372519, + "z": -1.3109510830496097e-7 + } + }, + { + "id": "n293", + "parent": "11", + "degrees_of_freedom": [ + 1758, + 1759, + 1760, + 1761, + 1762, + 1763 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 7.979694910895579, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001984473847794248, + "y": -0.0007472391070348067, + "z": -0.000049139580129052244 + }, + "angle": { + "x": -0.000014124646663667539, + "y": 0.000028817352627733483, + "z": 0.0000185685158788236 + } + }, + { + "id": "n294", + "parent": "11", + "degrees_of_freedom": [ + 1764, + 1765, + 1766, + 1767, + 1768, + 1769 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 7.142857142857142, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00019111207241513667, + "y": -0.0007560811019507919, + "z": -0.00009553936745378285 + }, + "angle": { + "x": 0.00005908402965387827, + "y": -0.0000015066913628140634, + "z": -0.000016907045358806205 + } + }, + { + "id": "n295", + "parent": "11", + "degrees_of_freedom": [ + 1770, + 1771, + 1772, + 1773, + 1774, + 1775 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 7.979694910895579, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018156785848639218, + "y": -0.0007936339239046389, + "z": -0.00004305162978821813 + }, + "angle": { + "x": -0.000041134443636420314, + "y": -0.000043018555383921856, + "z": -0.000010903678126079543 + } + }, + { + "id": "n296", + "parent": "11", + "degrees_of_freedom": [ + 1776, + 1777, + 1778, + 1779, + 1780, + 1781 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00017675925714599392, + "y": -0.0008300743008932913, + "z": -0.00009015624056588249 + }, + "angle": { + "x": -0.00003464166249763331, + "y": -0.000027343534982565093, + "z": -1.1795763170312081e-7 + } + }, + { + "id": "n297", + "parent": "11", + "degrees_of_freedom": [ + 1782, + 1783, + 1784, + 1785, + 1786, + 1787 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 12.020305089104422, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018377330463848062, + "y": -0.000869509217303505, + "z": -0.00018302505358562052 + }, + "angle": { + "x": -0.0001147091025478684, + "y": 0.00016595637446092292, + "z": 0.000015742972320868107 + } + }, + { + "id": "n298", + "parent": "11", + "degrees_of_freedom": [ + 1788, + 1789, + 1790, + 1791, + 1792, + 1793 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 15, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014396788128340582, + "y": -0.0003928523245673666, + "z": -0.000160312433252391 + }, + "angle": { + "x": 0.000029018046254409986, + "y": -0.00003485827512913621, + "z": 0.00011210062348785518 + } + }, + { + "id": "n299", + "parent": "11", + "degrees_of_freedom": [ + 1794, + 1795, + 1796, + 1797, + 1798, + 1799 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 15, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001812674212663491, + "y": -0.000972246679389249, + "z": -0.00017273677572602776 + }, + "angle": { + "x": 0.0009460975307817664, + "y": -0.00002348523921481581, + "z": 0.00043499561676018164 + } + }, + { + "id": "n300", + "parent": "11", + "degrees_of_freedom": [ + 1800, + 1801, + 1802, + 1803, + 1804, + 1805 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 15, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019874140121254637, + "y": -0.001208005575726297, + "z": -0.00021728583344056036 + }, + "angle": { + "x": -0.00036365828904938907, + "y": -0.000027247169803003234, + "z": -0.00002941471992578249 + } + }, + { + "id": "n301", + "parent": "11", + "degrees_of_freedom": [ + 1806, + 1807, + 1808, + 1809, + 1810, + 1811 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 15, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017535050084250333, + "y": -0.0008351180986616618, + "z": -0.0002697187199041278 + }, + "angle": { + "x": 0.0010991713024308884, + "y": -0.000032990964764967406, + "z": -0.000545261760526316 + } + }, + { + "id": "n302", + "parent": "11", + "degrees_of_freedom": [ + 1812, + 1813, + 1814, + 1815, + 1816, + 1817 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 15, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00013737729611816883, + "y": 0.00005489173832756957, + "z": -0.00028567273133067934 + }, + "angle": { + "x": 0.00003451127382638566, + "y": -0.00003435091915801468, + "z": -0.00016750613736944608 + } + }, + { + "id": "n303", + "parent": "11", + "degrees_of_freedom": [ + 1818, + 1819, + 1820, + 1821, + 1822, + 1823 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 15, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000099213240059547, + "y": -0.0009694540773857707, + "z": -0.0002731027780054237 + }, + "angle": { + "x": -0.001992395415826512, + "y": -0.000028362702491388096, + "z": -0.0008827842354211155 + } + }, + { + "id": "n304", + "parent": "11", + "degrees_of_freedom": [ + 1824, + 1825, + 1826, + 1827, + 1828, + 1829 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 15, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007976863356258073, + "y": -0.0013895176584701973, + "z": -0.00022414869778197223 + }, + "angle": { + "x": 0.00042718726422286146, + "y": -0.000027666464608511713, + "z": -0.00002599075310768811 + } + }, + { + "id": "n305", + "parent": "11", + "degrees_of_freedom": [ + 1830, + 1831, + 1832, + 1833, + 1834, + 1835 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 15, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010256663043372361, + "y": -0.0010946078067013178, + "z": -0.0001739739162311847 + }, + "angle": { + "x": -0.0012675752823887389, + "y": -0.00003034763641059399, + "z": 0.0005718570355872361 + } + }, + { + "id": "n306", + "parent": "11", + "degrees_of_freedom": [ + 1836, + 1837, + 1838, + 1839, + 1840, + 1841 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00019591067244609876, + "y": -0.001188452461278152, + "z": -0.00016131758122432967 + }, + "angle": { + "x": -4.836537261108301e-7, + "y": -0.00003591073316083428, + "z": -0.0000060212297527902694 + } + }, + { + "id": "n307", + "parent": "11", + "degrees_of_freedom": [ + 1842, + 1843, + 1844, + 1845, + 1846, + 1847 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002777752995504491, + "y": -0.0011352881494527459, + "z": -0.00016629629379033594 + }, + "angle": { + "x": -0.00001739569737308014, + "y": -0.000020276028479222795, + "z": 0.000003944830630096082 + } + }, + { + "id": "n308", + "parent": "11", + "degrees_of_freedom": [ + 1848, + 1849, + 1850, + 1851, + 1852, + 1853 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006655534284467241, + "y": -0.0010737077446741302, + "z": -0.00013767771386373638 + }, + "angle": { + "x": -0.0000069611169130603934, + "y": -0.00001745013900153783, + "z": 0.0000037922919695084134 + } + }, + { + "id": "n309", + "parent": "11", + "degrees_of_freedom": [ + 1854, + 1855, + 1856, + 1857, + 1858, + 1859 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00013267850026083428, + "y": -0.001078316849092265, + "z": -0.00013362955876388086 + }, + "angle": { + "x": -0.000006049543698644457, + "y": 0.00001641912147601988, + "z": -8.993546162423919e-7 + } + }, + { + "id": "n310", + "parent": "11", + "degrees_of_freedom": [ + 1860, + 1861, + 1862, + 1863, + 1864, + 1865 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 22.020305089104422, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012186252455735333, + "y": -0.0011138950546641904, + "z": -0.00015216229292496948 + }, + "angle": { + "x": -0.000020822525091930357, + "y": -0.00014763682756295925, + "z": 0.00005609495955696452 + } + }, + { + "id": "n311", + "parent": "11", + "degrees_of_freedom": [ + 1866, + 1867, + 1868, + 1869, + 1870, + 1871 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 22.857142857142858, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010343226511679163, + "y": -0.0011267680646131826, + "z": -0.00016193856288322254 + }, + "angle": { + "x": -0.000007366322907974082, + "y": -0.000026327678395588254, + "z": 0.000012197452864855429 + } + }, + { + "id": "n312", + "parent": "11", + "degrees_of_freedom": [ + 1872, + 1873, + 1874, + 1875, + 1876, + 1877 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 22.020305089104422, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002244014480270005, + "y": -0.00113081218532008, + "z": -0.00016677046657804842 + }, + "angle": { + "x": 0.000011120816663231762, + "y": 0.00013836681306706906, + "z": 0.00006941748750587264 + } + }, + { + "id": "n313", + "parent": "11", + "degrees_of_freedom": [ + 1878, + 1879, + 1880, + 1881, + 1882, + 1883 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00027132654476170315, + "y": -0.0011049851110366757, + "z": -0.00016633677140526895 + }, + "angle": { + "x": -0.000006511292164980456, + "y": -0.00006494591080227355, + "z": -0.0000034726837499255186 + } + }, + { + "id": "n314", + "parent": "11", + "degrees_of_freedom": [ + 1884, + 1885, + 1886, + 1887, + 1888, + 1889 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 17.979694910895578, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020955316451519679, + "y": -0.0010685802997171532, + "z": -0.00014288470342406682 + }, + "angle": { + "x": -0.000026097491534457225, + "y": 0.0001026500600226801, + "z": -0.00006171860688133656 + } + }, + { + "id": "n315", + "parent": "11", + "degrees_of_freedom": [ + 1890, + 1891, + 1892, + 1893, + 1894, + 1895 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 17.142857142857142, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006810078897184092, + "y": -0.0010528366981454671, + "z": -0.0001330988938279159 + }, + "angle": { + "x": -0.000007950395406582417, + "y": -0.000022199137240499874, + "z": -0.000016569501394934723 + } + }, + { + "id": "n316", + "parent": "11", + "degrees_of_freedom": [ + 1896, + 1897, + 1898, + 1899, + 1900, + 1901 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 17.979694910895578, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011601412880515478, + "y": -0.0010514691152078547, + "z": -0.00013092928176995522 + }, + "angle": { + "x": 0.000008907804335272202, + "y": -0.00012713772689162123, + "z": -0.000052662633400167106 + } + }, + { + "id": "n317", + "parent": "11", + "degrees_of_freedom": [ + 1902, + 1903, + 1904, + 1905, + 1906, + 1907 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00012361851997840978, + "y": -0.0014541735167856215, + "z": -0.0006275950873448741 + }, + "angle": { + "x": -0.00007033029846712791, + "y": -0.00008775921590315076, + "z": 0.0004116855985210537 + } + }, + { + "id": "n318", + "parent": "11", + "degrees_of_freedom": [ + 1908, + 1909, + 1910, + 1911, + 1912, + 1913 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0003306851315546218, + "y": -0.0013894312392350807, + "z": -0.00030690518767031056 + }, + "angle": { + "x": -0.0006917588740371689, + "y": -0.000048742538009065096, + "z": -0.00005340562705766889 + } + }, + { + "id": "n319", + "parent": "11", + "degrees_of_freedom": [ + 1914, + 1915, + 1916, + 1917, + 1918, + 1919 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00001123968247330871, + "y": -0.0012074231406490616, + "z": -0.0003555813204013298 + }, + "angle": { + "x": -0.000022607083499302923, + "y": -0.00004999783407950283, + "z": 0.000003338359112269751 + } + }, + { + "id": "n320", + "parent": "11", + "degrees_of_freedom": [ + 1920, + 1921, + 1922, + 1923, + 1924, + 1925 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 25, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018213666586536017, + "y": -0.00007175426611469245, + "z": -0.00022547530902841816 + }, + "angle": { + "x": 0.0003688848660106299, + "y": -0.000053799746459534414, + "z": 0.00006024896223880356 + } + }, + { + "id": "n321", + "parent": "11", + "degrees_of_freedom": [ + 1926, + 1927, + 1928, + 1929, + 1930, + 1931 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 25, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001252080314773863, + "y": -0.0011612956708111687, + "z": -0.0002490960973634158 + }, + "angle": { + "x": -0.0017749998180059902, + "y": -0.000047299796963097874, + "z": 0.0008182274749604174 + } + }, + { + "id": "n322", + "parent": "11", + "degrees_of_freedom": [ + 1932, + 1933, + 1934, + 1935, + 1936, + 1937 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 25, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008375570046680861, + "y": -0.0016126007319258637, + "z": -0.00033551394543406205 + }, + "angle": { + "x": 0.0004587100616036595, + "y": -0.000052512487815764143, + "z": 0.000028492364367395374 + } + }, + { + "id": "n323", + "parent": "11", + "degrees_of_freedom": [ + 1938, + 1939, + 1940, + 1941, + 1942, + 1943 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 25, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001205262756895223, + "y": -0.0012961734300187561, + "z": -0.00043553875087292614 + }, + "angle": { + "x": -0.001329766293656106, + "y": -0.00006057045712816534, + "z": -0.0006038306717942637 + } + }, + { + "id": "n324", + "parent": "11", + "degrees_of_freedom": [ + 1944, + 1945, + 1946, + 1947, + 1948, + 1949 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 25, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017485949972488273, + "y": -0.0005322424092512191, + "z": -0.00046702999348446005 + }, + "angle": { + "x": 0.0003688882845844622, + "y": -0.00005670479127328258, + "z": -0.0000032665301723061047 + } + }, + { + "id": "n325", + "parent": "11", + "degrees_of_freedom": [ + 1950, + 1951, + 1952, + 1953, + 1954, + 1955 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 25, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00024193975615238814, + "y": 0.0001943570853161301, + "z": -0.00044295012436729343 + }, + "angle": { + "x": 0.002270295396082948, + "y": -0.0000657155868687149, + "z": -0.0006755162365979588 + } + }, + { + "id": "n326", + "parent": "11", + "degrees_of_freedom": [ + 1956, + 1957, + 1958, + 1959, + 1960, + 1961 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 25, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002848791399750147, + "y": 0.0004953218153107657, + "z": -0.00033821516227332526 + }, + "angle": { + "x": 0.0002790617699918667, + "y": -0.00005450294298632118, + "z": 0.000028490266016646086 + } + }, + { + "id": "n327", + "parent": "11", + "degrees_of_freedom": [ + 1962, + 1963, + 1964, + 1965, + 1966, + 1967 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 25, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00024410013876782657, + "y": 0.0003292274792778509, + "z": -0.0002472288562568129 + }, + "angle": { + "x": -0.003047568593480708, + "y": -0.00005085601077358078, + "z": -0.0011476505071416827 + } + }, + { + "id": "n328", + "parent": "11", + "degrees_of_freedom": [ + 1968, + 1969, + 1970, + 1971, + 1972, + 1973 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002445894194357213, + "y": -0.00131289198983803, + "z": -0.0005072688587018689 + }, + "angle": { + "x": -0.000016005572172605055, + "y": 0.0005164782809895583, + "z": 0.000021436109753772086 + } + }, + { + "id": "n329", + "parent": "11", + "degrees_of_freedom": [ + 1974, + 1975, + 1976, + 1977, + 1978, + 1979 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000009778462801048466, + "y": -0.001197204063443737, + "z": -0.000461139675376579 + }, + "angle": { + "x": -0.000018050220256837527, + "y": -0.00004374589474915901, + "z": 0.00002124271314290355 + } + }, + { + "id": "n330", + "parent": "11", + "degrees_of_freedom": [ + 1980, + 1981, + 1982, + 1983, + 1984, + 1985 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0004169947929754213, + "y": -0.0012866381740970264, + "z": -0.0004964388867566231 + }, + "angle": { + "x": -0.000019402085815741643, + "y": 0.0005960079116639778, + "z": -0.0003085440315869241 + } + }, + { + "id": "n331", + "parent": "11", + "degrees_of_freedom": [ + 1986, + 1987, + 1988, + 1989, + 1990, + 1991 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 22.020305089104422, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0016460603387809531, + "y": -0.0012861521183689221, + "z": -0.0005217082687440415 + }, + "angle": { + "x": -0.000007879000179400357, + "y": -0.002711363504679462, + "z": -0.001477876033293185 + } + }, + { + "id": "n332", + "parent": "11", + "degrees_of_freedom": [ + 1992, + 1993, + 1994, + 1995, + 1996, + 1997 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 22.857142857142858, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0046132991246421165, + "y": -0.0013090006778571006, + "z": -0.0005244699525529659 + }, + "angle": { + "x": 0.000008949029996961573, + "y": 0.000022502174542956818, + "z": -0.000511312288985472 + } + }, + { + "id": "n333", + "parent": "11", + "degrees_of_freedom": [ + 1998, + 1999, + 2000, + 2001, + 2002, + 2003 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 22.020305089104422, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0017369695924170675, + "y": -0.0013166439596728064, + "z": -0.0005134866818786121 + }, + "angle": { + "x": -0.0000385444891491584, + "y": 0.007880990410753947, + "z": -0.0032897105999094046 + } + }, + { + "id": "n334", + "parent": "11", + "degrees_of_freedom": [ + 2004, + 2005, + 2006, + 2007, + 2008, + 2009 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0005455515363453, + "y": -0.0012752743973598296, + "z": -0.0004697345920727734 + }, + "angle": { + "x": -0.000018496065103415166, + "y": -0.0005510191150145567, + "z": -0.0003085437190085748 + } + }, + { + "id": "n335", + "parent": "11", + "degrees_of_freedom": [ + 2010, + 2011, + 2012, + 2013, + 2014, + 2015 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 17.979694910895578, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00027636235349409293, + "y": -0.0012680594664439158, + "z": -0.00044204666424676564 + }, + "angle": { + "x": -0.00001148539398027171, + "y": -0.0013997330863898313, + "z": -0.0006086095824343926 + } + }, + { + "id": "n336", + "parent": "11", + "degrees_of_freedom": [ + 2016, + 2017, + 2018, + 2019, + 2020, + 2021 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 17.142857142857142, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0003735254432697356, + "y": -0.0012586097525919269, + "z": -0.0004391354268761239 + }, + "angle": { + "x": 0.000001352026418837578, + "y": 0.00002250025439288476, + "z": -0.00010577588940349517 + } + }, + { + "id": "n337", + "parent": "11", + "degrees_of_freedom": [ + 2022, + 2023, + 2024, + 2025, + 2026, + 2027 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 17.979694910895578, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018545392284841474, + "y": -0.0012567796164216943, + "z": -0.0004515609356703395 + }, + "angle": { + "x": -0.00003460700378141159, + "y": 0.0007916103055084855, + "z": -0.00037769896131535044 + } + }, + { + "id": "n338", + "parent": "11", + "degrees_of_freedom": [ + 2028, + 2029, + 2030, + 2031, + 2032, + 2033 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 17.142857142857142, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00031216763250519283, + "y": -0.0011896326941502732, + "z": -0.0015655980881170448 + }, + "angle": { + "x": 0.0005946087506174192, + "y": -0.00046818009519158693, + "z": 0.000024433588563941448 + } + }, + { + "id": "n339", + "parent": "11", + "degrees_of_freedom": [ + 2034, + 2035, + 2036, + 2037, + 2038, + 2039 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 17.979694910895578, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0003060640686173784, + "y": -0.0011593220462582177, + "z": -0.00012214063449159923 + }, + "angle": { + "x": -0.0006275048211980932, + "y": -0.0009743956327622998, + "z": -3.7191867401858503e-7 + } + }, + { + "id": "n340", + "parent": "11", + "degrees_of_freedom": [ + 2040, + 2041, + 2042, + 2043, + 2044, + 2045 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002900936916923025, + "y": -0.0011634049781172192, + "z": -0.0005744805593341814 + }, + "angle": { + "x": -0.000034575441988293404, + "y": 0.00045706176739509396, + "z": 0.000013654960095434082 + } + }, + { + "id": "n341", + "parent": "11", + "degrees_of_freedom": [ + 2046, + 2047, + 2048, + 2049, + 2050, + 2051 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 22.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002516328240410312, + "y": -0.0011894574257463428, + "z": -0.0002618471249398735 + }, + "angle": { + "x": 0.00023364540495096945, + "y": -0.00019048167617784703, + "z": 0.0000262755942593725 + } + }, + { + "id": "n342", + "parent": "11", + "degrees_of_freedom": [ + 2052, + 2053, + 2054, + 2055, + 2056, + 2057 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 22.857142857142858, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002345358826669316, + "y": -0.0012515692159981127, + "z": -0.0004511537408905593 + }, + "angle": { + "x": -0.001372011539210029, + "y": 0.0004746040653005668, + "z": 0.000027171979886303556 + } + }, + { + "id": "n343", + "parent": "11", + "degrees_of_freedom": [ + 2058, + 2059, + 2060, + 2061, + 2062, + 2063 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 22.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00024287156919670485, + "y": -0.0012824068363913807, + "z": 0.0016558423268224984 + }, + "angle": { + "x": 0.00006731748419003814, + "y": 0.001070793355487931, + "z": -0.000003801532649278881 + } + }, + { + "id": "n344", + "parent": "11", + "degrees_of_freedom": [ + 2064, + 2065, + 2066, + 2067, + 2068, + 2069 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00025542923542604644, + "y": -0.001273549882060427, + "z": 0.0024159205803045616 + }, + "angle": { + "x": 0.000908208054965361, + "y": 0.0031008825576913086, + "z": 0.000012627903989289027 + } + }, + { + "id": "n345", + "parent": "11", + "degrees_of_freedom": [ + 2070, + 2071, + 2072, + 2073, + 2074, + 2075 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 17.979694910895578, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002921493434350833, + "y": -0.0012456367246188773, + "z": -0.0020138735609480374 + }, + "angle": { + "x": 0.0027576870097263994, + "y": -0.0013641561061545993, + "z": 0.000025752117231600824 + } + }, + { + "id": "n346", + "parent": "11", + "degrees_of_freedom": [ + 2076, + 2077, + 2078, + 2079, + 2080, + 2081 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 22.857142857142858, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000014019996446796092, + "y": -0.0011561453865467862, + "z": -0.00025601395235611306 + }, + "angle": { + "x": 0.000037932452670021105, + "y": -0.000037151470200151896, + "z": 0.000009698701759331781 + } + }, + { + "id": "n347", + "parent": "11", + "degrees_of_freedom": [ + 2082, + 2083, + 2084, + 2085, + 2086, + 2087 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 22.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000007046984010428661, + "y": -0.0011642445373260613, + "z": -0.000361559070414894 + }, + "angle": { + "x": -0.00005320661107041806, + "y": -0.00007303817162137286, + "z": -0.000004162009284314246 + } + }, + { + "id": "n348", + "parent": "11", + "degrees_of_freedom": [ + 2088, + 2089, + 2090, + 2091, + 2092, + 2093 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000016142077429566596, + "y": -0.0011399467347040623, + "z": -0.00031507375296435864 + }, + "angle": { + "x": -0.000016783434688701147, + "y": 0.000015097354612789062, + "z": 0.00000806899302315529 + } + }, + { + "id": "n349", + "parent": "11", + "degrees_of_freedom": [ + 2094, + 2095, + 2096, + 2097, + 2098, + 2099 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 17.979694910895578, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000041847623985942514, + "y": -0.0010995293386287007, + "z": -0.00029385652597030924 + }, + "angle": { + "x": 0.000017718778817367275, + "y": -0.00006799617613569291, + "z": 0.00002445730304447962 + } + }, + { + "id": "n350", + "parent": "11", + "degrees_of_freedom": [ + 2100, + 2101, + 2102, + 2103, + 2104, + 2105 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 17.142857142857142, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005923073115512039, + "y": -0.0010669560403385688, + "z": -0.0001715035623300105 + }, + "angle": { + "x": -0.00006999041486706434, + "y": -0.000031523043814602055, + "z": 0.000008527633329811336 + } + }, + { + "id": "n351", + "parent": "11", + "degrees_of_freedom": [ + 2106, + 2107, + 2108, + 2109, + 2110, + 2111 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 17.979694910895578, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006259936847274063, + "y": -0.0010652892891315413, + "z": -0.00016629187462776596 + }, + "angle": { + "x": 0.000019038896267562316, + "y": 0.0000052113409927889155, + "z": -0.000007812276101051477 + } + }, + { + "id": "n352", + "parent": "11", + "degrees_of_freedom": [ + 2112, + 2113, + 2114, + 2115, + 2116, + 2117 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000058858070467049674, + "y": -0.0010898149022721014, + "z": -0.00013179300866780056 + }, + "angle": { + "x": -0.000011698250104705095, + "y": -0.00006970366181517263, + "z": 0.000006324564280435923 + } + }, + { + "id": "n353", + "parent": "11", + "degrees_of_freedom": [ + 2118, + 2119, + 2120, + 2121, + 2122, + 2123 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 22.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003623734943279496, + "y": -0.0011258861243617644, + "z": -0.0002139554809950727 + }, + "angle": { + "x": -0.000039539852514549076, + "y": -0.000003197026719206514, + "z": 0.000021988314068771387 + } + }, + { + "id": "n354", + "parent": "11", + "degrees_of_freedom": [ + 2124, + 2125, + 2126, + 2127, + 2128, + 2129 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 15, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000018040422546966712, + "y": -0.000996551276956769, + "z": -0.00015769113324087653 + }, + "angle": { + "x": 0.0003413774287332297, + "y": -0.000023690237503692384, + "z": 0.0001667253270858784 + } + }, + { + "id": "n355", + "parent": "11", + "degrees_of_freedom": [ + 2130, + 2131, + 2132, + 2133, + 2134, + 2135 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 15, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000031873796636505146, + "y": -0.001104696432633924, + "z": -0.00020251413854917058 + }, + "angle": { + "x": -0.00011417484162265214, + "y": -0.000025987423509496397, + "z": 0.000005152943611494348 + } + }, + { + "id": "n356", + "parent": "11", + "degrees_of_freedom": [ + 2136, + 2137, + 2138, + 2139, + 2140, + 2141 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 15, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000008333212786953635, + "y": -0.001021749816007152, + "z": -0.00024878945435001705 + }, + "angle": { + "x": 0.000387984827396658, + "y": -0.000027255484073766463, + "z": -0.00017187711251772817 + } + }, + { + "id": "n357", + "parent": "11", + "degrees_of_freedom": [ + 2142, + 2143, + 2144, + 2145, + 2146, + 2147 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005962041221272905, + "y": -0.0009541464485568383, + "z": -0.0002525700416724062 + }, + "angle": { + "x": -0.00048343417183702294, + "y": -0.000026913404899442497, + "z": -0.0001957305953798371 + } + }, + { + "id": "n358", + "parent": "11", + "degrees_of_freedom": [ + 2148, + 2149, + 2150, + 2151, + 2152, + 2153 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 15, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007633544991363306, + "y": -0.0010160946843170795, + "z": -0.00020586126104655346 + }, + "angle": { + "x": 0.00008508688939514796, + "y": -0.000026029935872265488, + "z": 0.0000032296474682093783 + } + }, + { + "id": "n359", + "parent": "11", + "degrees_of_freedom": [ + 2154, + 2155, + 2156, + 2157, + 2158, + 2159 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005365276271356245, + "y": -0.0009356349597256356, + "z": -0.00015960738071069748 + }, + "angle": { + "x": -0.00019785601108364252, + "y": -0.000027693147899812488, + "z": 0.00010530749138983423 + } + }, + { + "id": "n360", + "parent": "11", + "degrees_of_freedom": [ + 2160, + 2161, + 2162, + 2163, + 2164, + 2165 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.00004155350387549882, + "y": -0.0011583164481993385, + "z": -0.00016399145749416367 + }, + "angle": { + "x": -0.000009581510732292033, + "y": -0.00004461154323853817, + "z": -2.0676099231074823e-7 + } + }, + { + "id": "n361", + "parent": "11", + "degrees_of_freedom": [ + 2166, + 2167, + 2168, + 2169, + 2170, + 2171 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010911684851678622, + "y": -0.0010646926068206594, + "z": -0.00012129612500316091 + }, + "angle": { + "x": -0.000006396749868897406, + "y": -0.000014886986608541685, + "z": 0.000005136649192135425 + } + }, + { + "id": "n362", + "parent": "11", + "degrees_of_freedom": [ + 2172, + 2173, + 2174, + 2175, + 2176, + 2177 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008421071084756901, + "y": -0.0010557542225722019, + "z": -0.0001169394888977205 + }, + "angle": { + "x": -0.0000061788866479828545, + "y": -0.000016341558282380918, + "z": 0.000009140575418489689 + } + }, + { + "id": "n363", + "parent": "11", + "degrees_of_freedom": [ + 2178, + 2179, + 2180, + 2181, + 2182, + 2183 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 22.020305089104422, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009074062948899674, + "y": -0.0010886932109952703, + "z": -0.00013609805044735292 + }, + "angle": { + "x": -0.000020685794483358838, + "y": -0.00005862579168975352, + "z": 0.000022277843604660764 + } + }, + { + "id": "n364", + "parent": "11", + "degrees_of_freedom": [ + 2184, + 2185, + 2186, + 2187, + 2188, + 2189 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 22.857142857142858, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000092696172794138, + "y": -0.0010996026945932363, + "z": -0.00014381338119569297 + }, + "angle": { + "x": -0.00000504527716629912, + "y": -0.00002682833650238698, + "z": 0.000009223334574408153 + } + }, + { + "id": "n365", + "parent": "11", + "degrees_of_freedom": [ + 2190, + 2191, + 2192, + 2193, + 2194, + 2195 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 22.020305089104422, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010757813812278631, + "y": -0.0010991641316242145, + "z": -0.00014592504647165162 + }, + "angle": { + "x": 0.000007506682361300763, + "y": 0.00008523399473248941, + "z": 0.00004703093980077779 + } + }, + { + "id": "n366", + "parent": "11", + "degrees_of_freedom": [ + 2196, + 2197, + 2198, + 2199, + 2200, + 2201 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004789009432220715, + "y": -0.0010747515837009978, + "z": -0.00014266161010698962 + }, + "angle": { + "x": -0.000006002709839056605, + "y": -0.000029893637763066557, + "z": 0.000004514789813640931 + } + }, + { + "id": "n367", + "parent": "11", + "degrees_of_freedom": [ + 2202, + 2203, + 2204, + 2205, + 2206, + 2207 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 17.979694910895578, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000349900907972526, + "y": -0.0010409546036776953, + "z": -0.00012422578923002088 + }, + "angle": { + "x": -0.00002064440743912902, + "y": -0.000025418900010205963, + "z": 0.000004745091847085364 + } + }, + { + "id": "n368", + "parent": "11", + "degrees_of_freedom": [ + 2208, + 2209, + 2210, + 2211, + 2212, + 2213 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 17.142857142857142, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00001765524067416413, + "y": -0.00102973803199055, + "z": -0.00011697767153780624 + }, + "angle": { + "x": -0.000004562548102506534, + "y": -0.000019407005257666395, + "z": 0.000004431937207384191 + } + }, + { + "id": "n369", + "parent": "11", + "degrees_of_freedom": [ + 2214, + 2215, + 2216, + 2217, + 2218, + 2219 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 17.979694910895578, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005033031767996486, + "y": -0.0010314260143670327, + "z": -0.00011467881477742245 + }, + "angle": { + "x": 0.000009074754330502475, + "y": 0.00003798353001523335, + "z": 0.000026534934969831724 + } + }, + { + "id": "n370", + "parent": "11", + "degrees_of_freedom": [ + 2220, + 2221, + 2222, + 2223, + 2224, + 2225 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00013645089782848426, + "y": -0.0014255967994925042, + "z": -0.0005750785183658216 + }, + "angle": { + "x": -0.00007173480099709351, + "y": -0.00006307209048552865, + "z": 0.00004082069211429353 + } + }, + { + "id": "n371", + "parent": "11", + "degrees_of_freedom": [ + 2226, + 2227, + 2228, + 2229, + 2230, + 2231 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.00019985494120652598, + "y": -0.0012087102830964436, + "z": -0.0003750243415026673 + }, + "angle": { + "x": -0.00003800201579733119, + "y": -0.00004270569586809688, + "z": 0.000011710712101806988 + } + }, + { + "id": "n372", + "parent": "11", + "degrees_of_freedom": [ + 2232, + 2233, + 2234, + 2235, + 2236, + 2237 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008279875585662648, + "y": -0.0005250869964950239, + "z": -0.00026353828503044685 + }, + "angle": { + "x": 0.000003267686168436425, + "y": -0.00003337171550527966, + "z": 0.00010579469919727602 + } + }, + { + "id": "n373", + "parent": "11", + "degrees_of_freedom": [ + 2238, + 2239, + 2240, + 2241, + 2242, + 2243 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 25, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012223413503527445, + "y": -0.0011358968223844578, + "z": -0.0002796953512948853 + }, + "angle": { + "x": -0.0010111913943309807, + "y": -0.00004808341560430955, + "z": 0.00046428545167517127 + } + }, + { + "id": "n374", + "parent": "11", + "degrees_of_freedom": [ + 2244, + 2245, + 2246, + 2247, + 2248, + 2249 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 25, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015765629227559928, + "y": -0.0013883513545830202, + "z": -0.0003597649801222646 + }, + "angle": { + "x": 0.00014281350635087997, + "y": -0.000044169984142634245, + "z": 0.0000561084069171053 + } + }, + { + "id": "n375", + "parent": "11", + "degrees_of_freedom": [ + 2250, + 2251, + 2252, + 2253, + 2254, + 2255 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 25, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000125995846812382, + "y": -0.0014017822112884736, + "z": -0.0004376430060537076 + }, + "angle": { + "x": -0.00022241279623514177, + "y": -0.0000449952849223493, + "z": -0.00007284409582956921 + } + }, + { + "id": "n376", + "parent": "11", + "degrees_of_freedom": [ + 2256, + 2257, + 2258, + 2259, + 2260, + 2261 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009226138346936323, + "y": -0.0014355369926010806, + "z": -0.00045992989848624404 + }, + "angle": { + "x": 0.0000025524710147102314, + "y": -0.00003628394975377111, + "z": 0.0000068677107073054 + } + }, + { + "id": "n377", + "parent": "11", + "degrees_of_freedom": [ + 2262, + 2263, + 2264, + 2265, + 2266, + 2267 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 25, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000050403937243779736, + "y": -0.001390803651571068, + "z": -0.0004424903748594339 + }, + "angle": { + "x": 0.000002741228327994272, + "y": -0.00004809500455115119, + "z": 0.000006975539488097069 + } + }, + { + "id": "n378", + "parent": "11", + "degrees_of_freedom": [ + 2268, + 2269, + 2270, + 2271, + 2272, + 2273 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 25, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000018850266509704836, + "y": -0.0013717232834146794, + "z": -0.00036231488297240545 + }, + "angle": { + "x": -0.00013699390903646323, + "y": -0.000043584694639726255, + "z": 0.000056554131345096875 + } + }, + { + "id": "n379", + "parent": "11", + "degrees_of_freedom": [ + 2274, + 2275, + 2276, + 2277, + 2278, + 2279 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 25, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005389743716904327, + "y": -0.0011233594063957753, + "z": -0.0002862798242272866 + }, + "angle": { + "x": 0.0008299983869206709, + "y": -0.00004449246159735631, + "z": 0.00039826293495440326 + } + }, + { + "id": "n380", + "parent": "11", + "degrees_of_freedom": [ + 2280, + 2281, + 2282, + 2283, + 2284, + 2285 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001708818562871817, + "y": -0.0012090469293273372, + "z": -0.0004324993423997333 + }, + "angle": { + "x": -0.00001812971336175472, + "y": -0.000045792344757747196, + "z": 0.00002298052917481644 + } + }, + { + "id": "n381", + "parent": "11", + "degrees_of_freedom": [ + 2286, + 2287, + 2288, + 2289, + 2290, + 2291 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002475920805066893, + "y": -0.0012093825934833507, + "z": -0.00045721199106447263 + }, + "angle": { + "x": -0.0000145930598673919, + "y": 0.00011872110106278105, + "z": 0.00004394672629313255 + } + }, + { + "id": "n382", + "parent": "11", + "degrees_of_freedom": [ + 2292, + 2293, + 2294, + 2295, + 2296, + 2297 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 22.020305089104422, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002521228685953695, + "y": -0.0012092584185570345, + "z": -0.00046919415981355777 + }, + "angle": { + "x": 0.0000025366056174049863, + "y": -0.00034849364392372864, + "z": -0.00012141341160873746 + } + }, + { + "id": "n383", + "parent": "11", + "degrees_of_freedom": [ + 2298, + 2299, + 2300, + 2301, + 2302, + 2303 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 22.857142857142858, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00026172869853067083, + "y": -0.00126033787794159, + "z": -0.00046715017135454936 + }, + "angle": { + "x": 0.000030587753391113123, + "y": 0.00004066094625103249, + "z": 0.0000159984981190797 + } + }, + { + "id": "n384", + "parent": "11", + "degrees_of_freedom": [ + 2304, + 2305, + 2306, + 2307, + 2308, + 2309 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 22.020305089104422, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008849452163314397, + "y": -0.0012915661915468717, + "z": -0.00046166973999234534 + }, + "angle": { + "x": -0.00003288501914183525, + "y": -0.0001750805476576505, + "z": 0.00009209966778068256 + } + }, + { + "id": "n385", + "parent": "11", + "degrees_of_freedom": [ + 2310, + 2311, + 2312, + 2313, + 2314, + 2315 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000017290510930237916, + "y": -0.0012583647396235684, + "z": -0.00042750842064278845 + }, + "angle": { + "x": -0.000012118696960652765, + "y": -0.00003811570413001857, + "z": 0.000043500443134104505 + } + }, + { + "id": "n386", + "parent": "11", + "degrees_of_freedom": [ + 2316, + 2317, + 2318, + 2319, + 2320, + 2321 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 17.979694910895578, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011770683648757119, + "y": -0.0012492360002918418, + "z": -0.0004133810115838445 + }, + "angle": { + "x": -0.000002983435171617983, + "y": 0.00010633408782092692, + "z": 0.00009474600862535911 + } + }, + { + "id": "n387", + "parent": "11", + "degrees_of_freedom": [ + 2322, + 2323, + 2324, + 2325, + 2326, + 2327 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 17.142857142857142, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00044495211156973726, + "y": -0.001212285480880362, + "z": -0.00041321015968850055 + }, + "angle": { + "x": 0.000021444582402380476, + "y": 0.000039944488658739845, + "z": 0.0000714488095943727 + } + }, + { + "id": "n388", + "parent": "11", + "degrees_of_freedom": [ + 2328, + 2329, + 2330, + 2331, + 2332, + 2333 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 17.979694910895578, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000044360393886082546, + "y": -0.001189706125150788, + "z": -0.0004190754545998742 + }, + "angle": { + "x": -0.000028982148822901283, + "y": -0.0007279044834136554, + "z": 0.00034309949964013 + } + }, + { + "id": "n389", + "parent": "11", + "degrees_of_freedom": [ + 2334, + 2335, + 2336, + 2337, + 2338, + 2339 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 22.857142857142858, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00017712872944859054, + "y": -0.0011572468624975005, + "z": -0.0002223493936687897 + }, + "angle": { + "x": 0.0000501258619098963, + "y": -0.00003447812019743119, + "z": 0.00001347053990605439 + } + }, + { + "id": "n390", + "parent": "11", + "degrees_of_freedom": [ + 2340, + 2341, + 2342, + 2343, + 2344, + 2345 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 22.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001816550225512806, + "y": -0.0011729317650172157, + "z": -0.00033323358370826526 + }, + "angle": { + "x": -0.00007433704463481129, + "y": -0.00008496414829140348, + "z": -4.6856159781903997e-7 + } + }, + { + "id": "n391", + "parent": "11", + "degrees_of_freedom": [ + 2346, + 2347, + 2348, + 2349, + 2350, + 2351 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016445747710115325, + "y": -0.001151604620981002, + "z": -0.0002544670298969235 + }, + "angle": { + "x": -0.00001862948916684985, + "y": 0.00004895975745919595, + "z": 0.000012226738493889175 + } + }, + { + "id": "n392", + "parent": "11", + "degrees_of_freedom": [ + 2352, + 2353, + 2354, + 2355, + 2356, + 2357 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 17.979694910895578, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00013029451920452078, + "y": -0.0011074847689587814, + "z": -0.00025764325604601165 + }, + "angle": { + "x": 0.00003595346526442027, + "y": -0.00008338121643316487, + "z": 0.000028625251919197747 + } + }, + { + "id": "n393", + "parent": "11", + "degrees_of_freedom": [ + 2358, + 2359, + 2360, + 2361, + 2362, + 2363 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 17.142857142857142, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010904192386394504, + "y": -0.0010662176389359635, + "z": -0.00011936859783414131 + }, + "angle": { + "x": -0.00009276559693791046, + "y": -0.000029994515308643183, + "z": 0.00001276438376549792 + } + }, + { + "id": "n394", + "parent": "11", + "degrees_of_freedom": [ + 2364, + 2365, + 2366, + 2367, + 2368, + 2369 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 17.979694910895578, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010806288833729231, + "y": -0.0010568246114383908, + "z": -0.0001363534947930593 + }, + "angle": { + "x": 0.00003803912817883062, + "y": 0.000024117101895904447, + "z": -0.000004829340577470207 + } + }, + { + "id": "n395", + "parent": "11", + "degrees_of_freedom": [ + 2370, + 2371, + 2372, + 2373, + 2374, + 2375 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011937024842437399, + "y": -0.0010789900082912032, + "z": -0.0000782435131906688 + }, + "angle": { + "x": -0.00001424654711251666, + "y": -0.00010469538296376064, + "z": 0.000010481716400607087 + } + }, + { + "id": "n396", + "parent": "11", + "degrees_of_freedom": [ + 2376, + 2377, + 2378, + 2379, + 2380, + 2381 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 22.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015071615112376887, + "y": -0.001119056292205929, + "z": -0.00019535967295052892 + }, + "angle": { + "x": -0.00006451308593801247, + "y": 0.000014075123774502786, + "z": 0.00002636181934589949 + } + }, + { + "id": "n397", + "parent": "11", + "degrees_of_freedom": [ + 2382, + 2383, + 2384, + 2385, + 2386, + 2387 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 15, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012645691558636437, + "y": -0.0009493288252134261, + "z": -0.00014035219868762823 + }, + "angle": { + "x": 0.0005184086567504862, + "y": -0.000025072175155223587, + "z": 0.00023686140861593424 + } + }, + { + "id": "n398", + "parent": "11", + "degrees_of_freedom": [ + 2388, + 2389, + 2390, + 2391, + 2392, + 2393 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 15, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011228444486562292, + "y": -0.0010735354249519252, + "z": -0.00018648118768626522 + }, + "angle": { + "x": -0.00005211733946081414, + "y": -0.000026243265539259037, + "z": 0.000033499173262550024 + } + }, + { + "id": "n399", + "parent": "11", + "degrees_of_freedom": [ + 2394, + 2395, + 2396, + 2397, + 2398, + 2399 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 15, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001364281614725603, + "y": -0.001110514419613747, + "z": -0.00023284928990866544 + }, + "angle": { + "x": 0.00005832116126440966, + "y": -0.000027421916090116922, + "z": -0.000003895986206615908 + } + }, + { + "id": "n400", + "parent": "11", + "degrees_of_freedom": [ + 2400, + 2401, + 2402, + 2403, + 2404, + 2405 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 15, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00019620528979481824, + "y": -0.0009922589500597568, + "z": -0.00023665376331437706 + }, + "angle": { + "x": 0.00013985483716767548, + "y": -0.000024060381271726617, + "z": 0.00008965139091968826 + } + }, + { + "id": "n401", + "parent": "11", + "degrees_of_freedom": [ + 2406, + 2407, + 2408, + 2409, + 2410, + 2411 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 15, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00021299820669592952, + "y": -0.0008964500616893975, + "z": -0.0001929760832736561 + }, + "angle": { + "x": -0.000013472900616313225, + "y": -0.000025642323347871166, + "z": 0.00003585105550497775 + } + }, + { + "id": "n402", + "parent": "11", + "degrees_of_freedom": [ + 2412, + 2413, + 2414, + 2415, + 2416, + 2417 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 15, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001911926456201847, + "y": -0.0008231904512418048, + "z": -0.0001452611994582937 + }, + "angle": { + "x": -0.00007049559313713914, + "y": -0.000029345542048582734, + "z": 0.000055602401333810085 + } + }, + { + "id": "n403", + "parent": "11", + "degrees_of_freedom": [ + 2418, + 2419, + 2420, + 2421, + 2422, + 2423 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.00026649539667952473, + "y": -0.001151771089785497, + "z": -0.00016657590030205214 + }, + "angle": { + "x": -0.000017528702359250453, + "y": -0.00004728338983176694, + "z": 0.000007354048995493011 + } + }, + { + "id": "n404", + "parent": "11", + "degrees_of_freedom": [ + 2424, + 2425, + 2426, + 2427, + 2428, + 2429 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002873696404000793, + "y": -0.0010560813157070967, + "z": -0.00009583472493399516 + }, + "angle": { + "x": -0.0000029103460845869386, + "y": -0.00001302575443110048, + "z": 0.0000031087967519584482 + } + }, + { + "id": "n405", + "parent": "11", + "degrees_of_freedom": [ + 2430, + 2431, + 2432, + 2433, + 2434, + 2435 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00025412818646443, + "y": -0.00104297966249671, + "z": -0.00009557038427196438 + }, + "angle": { + "x": -0.000006960651818197859, + "y": -0.000009509165383964412, + "z": 0.000018269476484155162 + } + }, + { + "id": "n406", + "parent": "11", + "degrees_of_freedom": [ + 2436, + 2437, + 2438, + 2439, + 2440, + 2441 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 22.020305089104422, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00028817696817787203, + "y": -0.0010771018518803343, + "z": -0.00011946253568019671 + }, + "angle": { + "x": -0.000025674159753704137, + "y": -0.00011355336252712944, + "z": 0.00005348774515871383 + } + }, + { + "id": "n407", + "parent": "11", + "degrees_of_freedom": [ + 2442, + 2443, + 2444, + 2445, + 2446, + 2447 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 22.857142857142858, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00035843962451643656, + "y": -0.00109130412081514, + "z": -0.000130175458690604 + }, + "angle": { + "x": -0.0000085884556497341, + "y": -0.000027591690367197366, + "z": 0.00002152878754610963 + } + }, + { + "id": "n408", + "parent": "11", + "degrees_of_freedom": [ + 2448, + 2449, + 2450, + 2451, + 2452, + 2453 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 22.020305089104422, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018265882653691978, + "y": -0.0010952301205197498, + "z": -0.00013195316778449125 + }, + "angle": { + "x": 0.000005019032391880598, + "y": 0.00015328327843558103, + "z": 0.00008391084735600707 + } + }, + { + "id": "n409", + "parent": "11", + "degrees_of_freedom": [ + 2454, + 2455, + 2456, + 2457, + 2458, + 2459 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011479298897275037, + "y": -0.0010714064251377275, + "z": -0.00012552226896664882 + }, + "angle": { + "x": -0.000007182878975083745, + "y": -0.00003925803368847897, + "z": 0.000014270353533850968 + } + }, + { + "id": "n410", + "parent": "11", + "degrees_of_freedom": [ + 2460, + 2461, + 2462, + 2463, + 2464, + 2465 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 17.979694910895578, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011263241240899533, + "y": -0.0010358287088951012, + "z": -0.00010552925194704326 + }, + "angle": { + "x": -0.000021695871643285542, + "y": -0.000043616886434230736, + "z": 0.000017378264591637244 + } + }, + { + "id": "n411", + "parent": "11", + "degrees_of_freedom": [ + 2466, + 2467, + 2468, + 2469, + 2470, + 2471 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 17.142857142857142, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009547848169107263, + "y": -0.0010221726312137254, + "z": -0.00009685880076957278 + }, + "angle": { + "x": -0.000007011475671564604, + "y": -0.00002117569075792995, + "z": 0.000011010957368901162 + } + }, + { + "id": "n412", + "parent": "11", + "degrees_of_freedom": [ + 2472, + 2473, + 2474, + 2475, + 2476, + 2477 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 17.979694910895578, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00020416415341059654, + "y": -0.0010202218497356425, + "z": -0.00009387885251422291 + }, + "angle": { + "x": 0.000009560656354390351, + "y": 0.00004496779606165804, + "z": 0.000035963077088040725 + } + }, + { + "id": "n413", + "parent": "11", + "degrees_of_freedom": [ + 2478, + 2479, + 2480, + 2481, + 2482, + 2483 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00034977315422240123, + "y": -0.0014631766593721797, + "z": -0.0006233667186888259 + }, + "angle": { + "x": -0.00010431185835744973, + "y": -0.000052677756679296685, + "z": 0.0000541478660541412 + } + }, + { + "id": "n414", + "parent": "11", + "degrees_of_freedom": [ + 2484, + 2485, + 2486, + 2487, + 2488, + 2489 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.0004954162801252413, + "y": -0.0012698033016777493, + "z": -0.00042785678342890796 + }, + "angle": { + "x": 0.0000532706667028591, + "y": -0.00006978572205106596, + "z": 0.00007097429566942342 + } + }, + { + "id": "n415", + "parent": "11", + "degrees_of_freedom": [ + 2490, + 2491, + 2492, + 2493, + 2494, + 2495 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00031185455014102364, + "y": -0.0004051995331103659, + "z": -0.0002795280220244961 + }, + "angle": { + "x": 0.00003167273184104076, + "y": -0.00004504889283425961, + "z": 0.00011885474011622713 + } + }, + { + "id": "n416", + "parent": "11", + "degrees_of_freedom": [ + 2496, + 2497, + 2498, + 2499, + 2500, + 2501 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.0203050891044216, + "y": 25, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0003647485937207687, + "y": -0.0011483564413498845, + "z": -0.0003011704070326707 + }, + "angle": { + "x": -0.0011793586948714626, + "y": -0.00006105318297225432, + "z": 0.0005470179330370462 + } + }, + { + "id": "n417", + "parent": "11", + "degrees_of_freedom": [ + 2502, + 2503, + 2504, + 2505, + 2506, + 2507 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 3.140184917367551e-16, + "y": 25, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00041225616509490927, + "y": -0.0014561808529084536, + "z": -0.00040363132863946465 + }, + "angle": { + "x": 0.00011808661825210491, + "y": -0.000057001327080006524, + "z": 0.00008830211093665772 + } + }, + { + "id": "n418", + "parent": "11", + "degrees_of_freedom": [ + 2508, + 2509, + 2510, + 2511, + 2512, + 2513 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 25, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0003745318121053553, + "y": -0.0015663663937859082, + "z": -0.00050383222235023 + }, + "angle": { + "x": 0.000002902495819266435, + "y": -0.000056625671961351824, + "z": 0.0000475778207535301 + } + }, + { + "id": "n419", + "parent": "11", + "degrees_of_freedom": [ + 2514, + 2515, + 2516, + 2517, + 2518, + 2519 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0003197165344353601, + "y": -0.0018323750994444345, + "z": -0.000527838567286639 + }, + "angle": { + "x": 0.000031671268817214117, + "y": -0.000049818884968084616, + "z": 0.000057748922444192255 + } + }, + { + "id": "n420", + "parent": "11", + "degrees_of_freedom": [ + 2520, + 2521, + 2522, + 2523, + 2524, + 2525 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.0203050891044216, + "y": 25, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002678138334310416, + "y": -0.0014383956581880885, + "z": -0.0005031178326783458 + }, + "angle": { + "x": -0.0005701231114383748, + "y": -0.00005404262218386551, + "z": 0.00027051522767797563 + } + }, + { + "id": "n421", + "parent": "11", + "degrees_of_freedom": [ + 2526, + 2527, + 2528, + 2529, + 2530, + 2531 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -3.140184917367551e-16, + "y": 25, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00022933178453321638, + "y": -0.00127520344084579, + "z": -0.0004054445639027816 + }, + "angle": { + "x": -0.000054746439476141514, + "y": -0.00005588919019791389, + "z": 0.0000883026244601077 + } + }, + { + "id": "n422", + "parent": "11", + "degrees_of_freedom": [ + 2532, + 2533, + 2534, + 2535, + 2536, + 2537 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 25, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00027099414639358106, + "y": -0.0010203834080996792, + "z": -0.00030740313610432175 + }, + "angle": { + "x": 0.000705837701913214, + "y": -0.00005509789206230998, + "z": 0.00035720920249967083 + } + }, + { + "id": "n423", + "parent": "11", + "degrees_of_freedom": [ + 2538, + 2539, + 2540, + 2541, + 2542, + 2543 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00033556211906125795, + "y": -0.0011940054890783498, + "z": -0.00039265936574208214 + }, + "angle": { + "x": -0.00003292271746555818, + "y": -0.00009538272594879556, + "z": 0.00001906955841868255 + } + }, + { + "id": "n424", + "parent": "11", + "degrees_of_freedom": [ + 2544, + 2545, + 2546, + 2547, + 2548, + 2549 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00034767644218118863, + "y": -0.0012231988277927534, + "z": -0.00042522184148747225 + }, + "angle": { + "x": -0.000021250493800550788, + "y": 0.000046348732016069983, + "z": 0.00006161501214072642 + } + }, + { + "id": "n425", + "parent": "11", + "degrees_of_freedom": [ + 2550, + 2551, + 2552, + 2553, + 2554, + 2555 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 22.020305089104422, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00045472815038071727, + "y": -0.001218076868361425, + "z": -0.0004513847991282184 + }, + "angle": { + "x": -0.000006099957470142214, + "y": 0.000008849021254422287, + "z": 0.000048356067887750105 + } + }, + { + "id": "n426", + "parent": "11", + "degrees_of_freedom": [ + 2556, + 2557, + 2558, + 2559, + 2560, + 2561 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 22.857142857142858, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0007131676926877162, + "y": -0.0012695421348094139, + "z": -0.0004559138791348507 + }, + "angle": { + "x": 0.0000251719781182087, + "y": 0.00005792332236154847, + "z": 0.00006570560232686788 + } + }, + { + "id": "n427", + "parent": "11", + "degrees_of_freedom": [ + 2562, + 2563, + 2564, + 2565, + 2566, + 2567 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 22.020305089104422, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000220685529775217, + "y": -0.0012909760204315901, + "z": -0.0004473524488531803 + }, + "angle": { + "x": -0.00004911954239057753, + "y": -0.0005093465352217021, + "z": 0.0002662650054946903 + } + }, + { + "id": "n428", + "parent": "11", + "degrees_of_freedom": [ + 2568, + 2569, + 2570, + 2571, + 2572, + 2573 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000016694714824821432, + "y": -0.0012501369222952358, + "z": -0.0003920566406352967 + }, + "angle": { + "x": -0.000020288155350663458, + "y": 0.00006949363972494251, + "z": 0.0000616136495036434 + } + }, + { + "id": "n429", + "parent": "11", + "degrees_of_freedom": [ + 2574, + 2575, + 2576, + 2577, + 2578, + 2579 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 17.979694910895578, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007098609961657619, + "y": -0.0012471718735535123, + "z": -0.0003686321042241861 + }, + "angle": { + "x": -0.000006505402888401718, + "y": -0.00023735050470020372, + "z": -0.000046871825847363686 + } + }, + { + "id": "n430", + "parent": "11", + "degrees_of_freedom": [ + 2580, + 2581, + 2582, + 2583, + 2584, + 2585 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 17.142857142857142, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002826681539435607, + "y": -0.0012204296202956873, + "z": -0.0003695141592803226 + }, + "angle": { + "x": 0.000015980723640935554, + "y": 0.00005792121212718979, + "z": 0.000057522637062641534 + } + }, + { + "id": "n431", + "parent": "11", + "degrees_of_freedom": [ + 2586, + 2587, + 2588, + 2589, + 2590, + 2591 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 17.979694910895578, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016305182601558785, + "y": -0.0012005687840518687, + "z": -0.0003793471488438325 + }, + "angle": { + "x": -0.000030438271559309435, + "y": -0.0007064548887452042, + "z": 0.0003277706082954568 + } + }, + { + "id": "n432", + "parent": "11", + "degrees_of_freedom": [ + 2592, + 2593, + 2594, + 2595, + 2596, + 2597 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 22.857142857142858, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0003661950709129471, + "y": -0.0011459296271663175, + "z": -0.000017519679675875673 + }, + "angle": { + "x": 0.0003498420738915789, + "y": 0.00006697809337178193, + "z": 0.0000035541355704437424 + } + }, + { + "id": "n433", + "parent": "11", + "degrees_of_freedom": [ + 2598, + 2599, + 2600, + 2601, + 2602, + 2603 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 22.020305089104422, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0003602751143026337, + "y": -0.0011481490665416552, + "z": -0.00017496476179177232 + }, + "angle": { + "x": -0.000018471783376434576, + "y": -0.00008558279211878563, + "z": 0.000005048296133978314 + } + }, + { + "id": "n434", + "parent": "11", + "degrees_of_freedom": [ + 2604, + 2605, + 2606, + 2607, + 2608, + 2609 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.857142857142857, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000339082281955587, + "y": -0.0011379009696595702, + "z": -0.00020926482916993827 + }, + "angle": { + "x": 0.000005219441472286869, + "y": -0.000028386737562258355, + "z": 0.00001217051586571535 + } + }, + { + "id": "n435", + "parent": "11", + "degrees_of_freedom": [ + 2610, + 2611, + 2612, + 2613, + 2614, + 2615 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -2.020305089104421, + "y": 17.979694910895578, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0003104368925688731, + "y": -0.0011064956312979602, + "z": -0.00019605470424783068 + }, + "angle": { + "x": -0.000013371321379329678, + "y": 0.000016495717603302837, + "z": 0.000020545231347525156 + } + }, + { + "id": "n436", + "parent": "11", + "degrees_of_freedom": [ + 2616, + 2617, + 2618, + 2619, + 2620, + 2621 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 17.142857142857142, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002914438866721724, + "y": -0.0010861198163670018, + "z": -0.00021819137005411283 + }, + "angle": { + "x": 0.00006665579268101382, + "y": -0.00001665266750227, + "z": 0.000004678938609792262 + } + }, + { + "id": "n437", + "parent": "11", + "degrees_of_freedom": [ + 2622, + 2623, + 2624, + 2625, + 2626, + 2627 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 17.979694910895578, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00028940205483035946, + "y": -0.0010799268221061344, + "z": -0.00012876781987343898 + }, + "angle": { + "x": -0.00012588515812025051, + "y": -0.00009640571877204596, + "z": 0.0000033133380496656683 + } + }, + { + "id": "n438", + "parent": "11", + "degrees_of_freedom": [ + 2628, + 2629, + 2630, + 2631, + 2632, + 2633 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.857142857142857, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0003092668680493587, + "y": -0.0010863641232874107, + "z": -0.0003024183904061513 + }, + "angle": { + "x": -0.000078411158593854, + "y": 0.000018206691844598874, + "z": 0.000014142907128822494 + } + }, + { + "id": "n439", + "parent": "11", + "degrees_of_freedom": [ + 2634, + 2635, + 2636, + 2637, + 2638, + 2639 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 2.020305089104421, + "y": 22.020305089104422, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00034892587408862823, + "y": -0.0011193020170380595, + "z": -0.0004455968764509623 + }, + "angle": { + "x": -0.00019149091961612224, + "y": 0.0002912054319403775, + "z": 0.0000294720076517286 + } + }, + { + "id": "n440", + "parent": "11", + "degrees_of_freedom": [ + 2640, + 2641, + 2642, + 2643, + 2644, + 2645 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n441", + "parent": "11", + "degrees_of_freedom": [ + 2646, + 2647, + 2648, + 2649, + 2650, + 2651 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n442", + "parent": "11", + "degrees_of_freedom": [ + 2652, + 2653, + 2654, + 2655, + 2656, + 2657 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n443", + "parent": "11", + "degrees_of_freedom": [ + 2658, + 2659, + 2660, + 2661, + 2662, + 2663 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.857142857142858, + "y": -5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n444", + "parent": "11", + "degrees_of_freedom": [ + 2664, + 2665, + 2666, + 2667, + 2668, + 2669 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.020305089104422, + "y": -5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n445", + "parent": "11", + "degrees_of_freedom": [ + 2670, + 2671, + 2672, + 2673, + 2674, + 2675 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n446", + "parent": "11", + "degrees_of_freedom": [ + 2676, + 2677, + 2678, + 2679, + 2680, + 2681 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.979694910895579, + "y": -5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n447", + "parent": "11", + "degrees_of_freedom": [ + 2682, + 2683, + 2684, + 2685, + 2686, + 2687 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.142857142857142, + "y": -5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n448", + "parent": "11", + "degrees_of_freedom": [ + 2688, + 2689, + 2690, + 2691, + 2692, + 2693 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.979694910895578, + "y": -5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n449", + "parent": "11", + "degrees_of_freedom": [ + 2694, + 2695, + 2696, + 2697, + 2698, + 2699 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n450", + "parent": "11", + "degrees_of_freedom": [ + 2700, + 2701, + 2702, + 2703, + 2704, + 2705 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.020305089104422, + "y": -5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n451", + "parent": "11", + "degrees_of_freedom": [ + 2706, + 2707, + 2708, + 2709, + 2710, + 2711 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00008022951977192783, + "y": -0.0005750329253582077, + "z": 0.000002470338163816408 + }, + "angle": { + "x": 0.00000921462435688672, + "y": -0.000009825476871971282, + "z": 0.000011203490069919117 + } + }, + { + "id": "n452", + "parent": "11", + "degrees_of_freedom": [ + 2712, + 2713, + 2714, + 2715, + 2716, + 2717 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000014952596633590354, + "y": -0.0002769954065899694, + "z": -0.00007464983403524757 + }, + "angle": { + "x": 0.0000011438560818302115, + "y": 0.000014397052279635786, + "z": -0.000010753805848127543 + } + }, + { + "id": "n453", + "parent": "11", + "degrees_of_freedom": [ + 2718, + 2719, + 2720, + 2721, + 2722, + 2723 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000306743753282146, + "y": -0.0002828983239372127, + "z": -0.0000016604365919606187 + }, + "angle": { + "x": 0.000001954218537246279, + "y": -0.000004799339465942721, + "z": -0.0000027842858952051242 + } + }, + { + "id": "n454", + "parent": "11", + "degrees_of_freedom": [ + 2724, + 2725, + 2726, + 2727, + 2728, + 2729 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -3.140184917367551e-16, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005112554897003724, + "y": -0.0002858806370072355, + "z": 0.000013054071509430507 + }, + "angle": { + "x": -4.414878612617341e-7, + "y": 0.000008781481184026609, + "z": -0.0000148731844976382 + } + }, + { + "id": "n455", + "parent": "11", + "degrees_of_freedom": [ + 2730, + 2731, + 2732, + 2733, + 2734, + 2735 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.020305089104421, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000803815882086606, + "y": -0.00037466283487113213, + "z": -0.000007769143939415786 + }, + "angle": { + "x": -0.000040320051097981715, + "y": 0.00006627386042052219, + "z": -0.00003697534402678045 + } + }, + { + "id": "n456", + "parent": "11", + "degrees_of_freedom": [ + 2736, + 2737, + 2738, + 2739, + 2740, + 2741 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.857142857142857, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00016453990386343316, + "y": -0.00038889451604425885, + "z": -0.000022940134213702693 + }, + "angle": { + "x": 0.000003153418500957111, + "y": -0.0000050226792530845096, + "z": -0.000013543773490049104 + } + }, + { + "id": "n457", + "parent": "11", + "degrees_of_freedom": [ + 2742, + 2743, + 2744, + 2745, + 2746, + 2747 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.0203050891044216, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009391224495293849, + "y": -0.00036886545202901227, + "z": -0.00004309830317895727 + }, + "angle": { + "x": 0.000052932997986737054, + "y": -0.00006390903710928776, + "z": -0.000036138799275032456 + } + }, + { + "id": "n458", + "parent": "11", + "degrees_of_freedom": [ + 2748, + 2749, + 2750, + 2751, + 2752, + 2753 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 3.140184917367551e-16, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005905383328321132, + "y": -0.00028270452332669605, + "z": -0.0000752802631743511 + }, + "angle": { + "x": -8.078204797238408e-7, + "y": -0.000011556269323957524, + "z": -0.000019404844554394737 + } + }, + { + "id": "n459", + "parent": "11", + "degrees_of_freedom": [ + 2754, + 2755, + 2756, + 2757, + 2758, + 2759 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.020305089104421, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000048539572080947536, + "y": -0.00019613446850608583, + "z": -0.00004092431024542123 + }, + "angle": { + "x": -0.000053144721689649466, + "y": 0.0001867190793726513, + "z": -0.00008773024150747456 + } + }, + { + "id": "n460", + "parent": "11", + "degrees_of_freedom": [ + 2760, + 2761, + 2762, + 2763, + 2764, + 2765 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.857142857142857, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011246851035297298, + "y": -0.0001809890701619095, + "z": -0.000020689538075898302 + }, + "angle": { + "x": -9.154619154218752e-8, + "y": 0.000002247662363121414, + "z": -0.00002073427529726499 + } + }, + { + "id": "n461", + "parent": "11", + "degrees_of_freedom": [ + 2766, + 2767, + 2768, + 2769, + 2770, + 2771 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.0203050891044216, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000007172146831238389, + "y": -0.00019847097735902326, + "z": -0.000005576855724792985 + }, + "angle": { + "x": 0.000038110038514189084, + "y": -0.0001433949191652782, + "z": -0.00007045121343494757 + } + }, + { + "id": "n462", + "parent": "11", + "degrees_of_freedom": [ + 2772, + 2773, + 2774, + 2775, + 2776, + 2777 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00010335695581931072, + "y": -0.0005797414454645449, + "z": -0.00002847904863512832 + }, + "angle": { + "x": 0.000002499139461900107, + "y": -0.000014528753633007414, + "z": -0.00004353433243059863 + } + }, + { + "id": "n463", + "parent": "11", + "degrees_of_freedom": [ + 2778, + 2779, + 2780, + 2781, + 2782, + 2783 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00003913109607852131, + "y": -0.0005684621259046955, + "z": -0.000016703344455978405 + }, + "angle": { + "x": -0.0000010767859594691434, + "y": -0.000011517225872156428, + "z": -0.000005218109840680666 + } + }, + { + "id": "n464", + "parent": "11", + "degrees_of_freedom": [ + 2784, + 2785, + 2786, + 2787, + 2788, + 2789 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007085115881846042, + "y": -0.000652185225083571, + "z": -0.000008665598417722919 + }, + "angle": { + "x": -0.0000046389328078199294, + "y": -0.000009689694679050105, + "z": 0.0000024343718903704073 + } + }, + { + "id": "n465", + "parent": "11", + "degrees_of_freedom": [ + 2790, + 2791, + 2792, + 2793, + 2794, + 2795 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006085222476658734, + "y": -0.0006626127897288382, + "z": -0.00001276521145622802 + }, + "angle": { + "x": 0.00016744125714499963, + "y": -0.000007721985730287168, + "z": -0.000055313473802995194 + } + }, + { + "id": "n466", + "parent": "11", + "degrees_of_freedom": [ + 2796, + 2797, + 2798, + 2799, + 2800, + 2801 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000507822522482318, + "y": -0.0006783179714930246, + "z": -0.000025786999350675756 + }, + "angle": { + "x": 0.00010394340675165965, + "y": -0.00000913958463478885, + "z": -0.00002770714324663975 + } + }, + { + "id": "n467", + "parent": "11", + "degrees_of_freedom": [ + 2802, + 2803, + 2804, + 2805, + 2806, + 2807 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000059313724881588185, + "y": -0.0005266973955977187, + "z": -0.000042094671054411183 + }, + "angle": { + "x": -0.0005088724952618051, + "y": -0.00001184488714568079, + "z": -0.0002437730455417202 + } + }, + { + "id": "n468", + "parent": "11", + "degrees_of_freedom": [ + 2808, + 2809, + 2810, + 2811, + 2812, + 2813 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006742521368694586, + "y": -0.00016177792270868655, + "z": -0.00004940708151009905 + }, + "angle": { + "x": 0.0000018301839035279235, + "y": -0.000010153301541810904, + "z": -0.00006321456339680539 + } + }, + { + "id": "n469", + "parent": "11", + "degrees_of_freedom": [ + 2814, + 2815, + 2816, + 2817, + 2818, + 2819 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008077145205914503, + "y": -0.0005193105212436728, + "z": -0.00004620878543821997 + }, + "angle": { + "x": 0.0007319507731491605, + "y": -0.00001241884905901197, + "z": -0.00032135328569514454 + } + }, + { + "id": "n470", + "parent": "11", + "degrees_of_freedom": [ + 2820, + 2821, + 2822, + 2823, + 2824, + 2825 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008999453382613226, + "y": -0.0006717175056079114, + "z": -0.000027716848764446835 + }, + "angle": { + "x": -0.00010163283057492259, + "y": -0.00000931238257490594, + "z": -0.000032096184883892395 + } + }, + { + "id": "n471", + "parent": "11", + "degrees_of_freedom": [ + 2826, + 2827, + 2828, + 2829, + 2830, + 2831 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008238793192936253, + "y": -0.0006695790653369275, + "z": -0.000012494902114339685 + }, + "angle": { + "x": -0.000003229639171726188, + "y": -0.000009239493628400934, + "z": -1.5904894893436266e-7 + } + }, + { + "id": "n472", + "parent": "11", + "degrees_of_freedom": [ + 2832, + 2833, + 2834, + 2835, + 2836, + 2837 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": -2.857142857142857, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000030003069840878747, + "y": -0.00019739050179663615, + "z": -0.00013704236368065548 + }, + "angle": { + "x": 0.00008126161208528677, + "y": -0.00003417261217135159, + "z": 0.00003905666667911143 + } + }, + { + "id": "n473", + "parent": "11", + "degrees_of_freedom": [ + 2838, + 2839, + 2840, + 2841, + 2842, + 2843 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": -2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000026095396492859243, + "y": -0.00015557267524718974, + "z": -4.844405436375089e-10 + }, + "angle": { + "x": -0.00006395318507424701, + "y": -0.00009432255350144472, + "z": -0.000013056342111737729 + } + }, + { + "id": "n474", + "parent": "11", + "degrees_of_freedom": [ + 2844, + 2845, + 2846, + 2847, + 2848, + 2849 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002432404327301432, + "y": -0.00020685626387875443, + "z": -0.00005027275634815008 + }, + "angle": { + "x": -0.000007286060835514862, + "y": 0.00004248397842409453, + "z": 0.000004279429173794663 + } + }, + { + "id": "n475", + "parent": "11", + "degrees_of_freedom": [ + 2850, + 2851, + 2852, + 2853, + 2854, + 2855 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000007665603435103898, + "y": -0.0002666569561439384, + "z": -0.00002944060424623271 + }, + "angle": { + "x": 0.000005599422629137878, + "y": 0.000011375731895626197, + "z": 0.00002376916823799351 + } + }, + { + "id": "n476", + "parent": "11", + "degrees_of_freedom": [ + 2856, + 2857, + 2858, + 2859, + 2860, + 2861 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 2.857142857142857, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000006832025030533186, + "y": -0.0003465641717951097, + "z": -0.0000017724270207294617 + }, + "angle": { + "x": 0.00005447532922218774, + "y": -0.000008869392534788388, + "z": 0.00003743841809325618 + } + }, + { + "id": "n477", + "parent": "11", + "degrees_of_freedom": [ + 2862, + 2863, + 2864, + 2865, + 2866, + 2867 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000003701634276968834, + "y": -0.0003800939192281112, + "z": -0.00006527830710592297 + }, + "angle": { + "x": -0.000012463000767275186, + "y": -0.00003659612843939199, + "z": -0.00002049107120367081 + } + }, + { + "id": "n478", + "parent": "11", + "degrees_of_freedom": [ + 2868, + 2869, + 2870, + 2871, + 2872, + 2873 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001176458269422696, + "y": -0.00033235897226616736, + "z": -0.00007072428486262395 + }, + "angle": { + "x": 0.000018017155319034422, + "y": 0.00003698944478712772, + "z": 0.0000031573634063831173 + } + }, + { + "id": "n479", + "parent": "11", + "degrees_of_freedom": [ + 2874, + 2875, + 2876, + 2877, + 2878, + 2879 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": -2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000009041396655793733, + "y": -0.0002793570540074279, + "z": -0.00013807861338769684 + }, + "angle": { + "x": 0.00004049978781423558, + "y": -0.000017288410564009705, + "z": 0.00002677808571509319 + } + }, + { + "id": "n480", + "parent": "11", + "degrees_of_freedom": [ + 2880, + 2881, + 2882, + 2883, + 2884, + 2885 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 2.857142857142857, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002353000081979775, + "y": -0.00040150351530433696, + "z": -0.000015006445609962803 + }, + "angle": { + "x": 0.0000032907888125076247, + "y": -0.000005235218456552708, + "z": -5.635827863549237e-7 + } + }, + { + "id": "n481", + "parent": "11", + "degrees_of_freedom": [ + 2886, + 2887, + 2888, + 2889, + 2890, + 2891 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000006142156719022298, + "y": -0.00036584058715174897, + "z": -0.000027866942595545688 + }, + "angle": { + "x": -0.0000035791459482550886, + "y": -0.0000073827763935636616, + "z": -0.00003584513998500481 + } + }, + { + "id": "n482", + "parent": "11", + "degrees_of_freedom": [ + 2892, + 2893, + 2894, + 2895, + 2896, + 2897 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000017704223671044033, + "y": -0.00027924921228988903, + "z": -0.00002634291927534907 + }, + "angle": { + "x": -0.00000381754917075309, + "y": -0.0000071136494000912725, + "z": -0.0000034248611461085755 + } + }, + { + "id": "n483", + "parent": "11", + "degrees_of_freedom": [ + 2898, + 2899, + 2900, + 2901, + 2902, + 2903 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": -2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000006378188057713721, + "y": -0.00019682110746629855, + "z": -0.000012912954158141662 + }, + "angle": { + "x": -0.000005188410926087045, + "y": -0.000002959415146204661, + "z": 0.000031489805828291874 + } + }, + { + "id": "n484", + "parent": "11", + "degrees_of_freedom": [ + 2904, + 2905, + 2906, + 2907, + 2908, + 2909 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": -2.857142857142857, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000008030523262795331, + "y": -0.0001642855606454595, + "z": -0.000003175432552460299 + }, + "angle": { + "x": -0.0000073206806673038675, + "y": -0.0000016431523914167512, + "z": 1.2993067630504392e-7 + } + }, + { + "id": "n485", + "parent": "11", + "degrees_of_freedom": [ + 2910, + 2911, + 2912, + 2913, + 2914, + 2915 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": -2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002475038109150171, + "y": -0.00019842071375733157, + "z": -0.000005690357582974766 + }, + "angle": { + "x": -0.000002657170113337651, + "y": -1.4450885242027335e-7, + "z": -0.00003525033287266834 + } + }, + { + "id": "n486", + "parent": "11", + "degrees_of_freedom": [ + 2916, + 2917, + 2918, + 2919, + 2920, + 2921 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004869200462382665, + "y": -0.00028588971364505294, + "z": -0.000010850386919243899 + }, + "angle": { + "x": -4.6427909960294477e-7, + "y": 0.0000049930536684133035, + "z": -0.000003908555590384669 + } + }, + { + "id": "n487", + "parent": "11", + "degrees_of_freedom": [ + 2922, + 2923, + 2924, + 2925, + 2926, + 2927 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003819168384914314, + "y": -0.00036961586961140313, + "z": -0.000007653661933938176 + }, + "angle": { + "x": 0.0000034448583567060506, + "y": -0.000004600977435891245, + "z": 0.00003188322089238922 + } + }, + { + "id": "n488", + "parent": "11", + "degrees_of_freedom": [ + 2928, + 2929, + 2930, + 2931, + 2932, + 2933 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n489", + "parent": "11", + "degrees_of_freedom": [ + 2934, + 2935, + 2936, + 2937, + 2938, + 2939 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n490", + "parent": "11", + "degrees_of_freedom": [ + 2940, + 2941, + 2942, + 2943, + 2944, + 2945 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.857142857142858, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n491", + "parent": "11", + "degrees_of_freedom": [ + 2946, + 2947, + 2948, + 2949, + 2950, + 2951 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.020305089104422, + "y": -5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n492", + "parent": "11", + "degrees_of_freedom": [ + 2952, + 2953, + 2954, + 2955, + 2956, + 2957 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n493", + "parent": "11", + "degrees_of_freedom": [ + 2958, + 2959, + 2960, + 2961, + 2962, + 2963 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.979694910895579, + "y": -5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n494", + "parent": "11", + "degrees_of_freedom": [ + 2964, + 2965, + 2966, + 2967, + 2968, + 2969 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.142857142857142, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n495", + "parent": "11", + "degrees_of_freedom": [ + 2970, + 2971, + 2972, + 2973, + 2974, + 2975 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.979694910895578, + "y": -5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n496", + "parent": "11", + "degrees_of_freedom": [ + 2976, + 2977, + 2978, + 2979, + 2980, + 2981 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n497", + "parent": "11", + "degrees_of_freedom": [ + 2982, + 2983, + 2984, + 2985, + 2986, + 2987 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.020305089104422, + "y": -5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n498", + "parent": "11", + "degrees_of_freedom": [ + 2988, + 2989, + 2990, + 2991, + 2992, + 2993 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.000021519721757576718, + "y": -0.0005707907208864982, + "z": 0.000036150533053316634 + }, + "angle": { + "x": 0.000006453165226722125, + "y": -0.000009480102518720664, + "z": 0.000001122855606987184 + } + }, + { + "id": "n499", + "parent": "11", + "degrees_of_freedom": [ + 2994, + 2995, + 2996, + 2997, + 2998, + 2999 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000036087918397787136, + "y": -0.00028171799729155746, + "z": 0.00003040485841823034 + }, + "angle": { + "x": 0.000005584725106798216, + "y": -0.000004091000929624874, + "z": 1.1500361635845939e-7 + } + }, + { + "id": "n500", + "parent": "11", + "degrees_of_freedom": [ + 3000, + 3001, + 3002, + 3003, + 3004, + 3005 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -3.140184917367551e-16, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000014522058894589134, + "y": -0.0002876473501796777, + "z": 0.000048656386267060177 + }, + "angle": { + "x": 0.000004174464679704424, + "y": 0.000007875287714255593, + "z": -0.0000024192845547564584 + } + }, + { + "id": "n501", + "parent": "11", + "degrees_of_freedom": [ + 3006, + 3007, + 3008, + 3009, + 3010, + 3011 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.020305089104421, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000014512645794915544, + "y": -0.0003715470302813837, + "z": 0.000033616108662392084 + }, + "angle": { + "x": -0.000037903831766539385, + "y": -0.0000044930668481833405, + "z": 8.703689654418024e-7 + } + }, + { + "id": "n502", + "parent": "11", + "degrees_of_freedom": [ + 3012, + 3013, + 3014, + 3015, + 3016, + 3017 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000022743012010561493, + "y": -0.0003887534038873706, + "z": 0.000022717621331319544 + }, + "angle": { + "x": 0.000002124212660061547, + "y": -0.000005118217767301752, + "z": 8.176894012763958e-9 + } + }, + { + "id": "n503", + "parent": "11", + "degrees_of_freedom": [ + 3018, + 3019, + 3020, + 3021, + 3022, + 3023 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.0203050891044216, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003106682659693715, + "y": -0.00036748934764795174, + "z": 0.000008762532872416114 + }, + "angle": { + "x": 0.000045507603866933674, + "y": 0.0000033981175384369407, + "z": 0.0000019359383158077706 + } + }, + { + "id": "n504", + "parent": "11", + "degrees_of_freedom": [ + 3024, + 3025, + 3026, + 3027, + 3028, + 3029 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 3.140184917367551e-16, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000031096114456851015, + "y": -0.0002793666874444911, + "z": -0.000020330839805517788 + }, + "angle": { + "x": 0.000003663221205263164, + "y": -0.000013676167149482383, + "z": -0.000005183956034169221 + } + }, + { + "id": "n505", + "parent": "11", + "degrees_of_freedom": [ + 3030, + 3031, + 3032, + 3033, + 3034, + 3035 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.020305089104421, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000008235923309230655, + "y": -0.00019698490349392042, + "z": -0.000004491847517324232 + }, + "angle": { + "x": -0.000037464780495309386, + "y": 0.00005539966051569375, + "z": -0.000028522739292311125 + } + }, + { + "id": "n506", + "parent": "11", + "degrees_of_freedom": [ + 3036, + 3037, + 3038, + 3039, + 3040, + 3041 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000038700486111968176, + "y": -0.0001786563532850552, + "z": 0.000006251533966864507 + }, + "angle": { + "x": 0.0000011020093985736304, + "y": -6.827351831272468e-7, + "z": -0.000007611422273900621 + } + }, + { + "id": "n507", + "parent": "11", + "degrees_of_freedom": [ + 3042, + 3043, + 3044, + 3045, + 3046, + 3047 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.0203050891044216, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000013507862176291785, + "y": -0.00019853833306581297, + "z": 0.000019676732970701338 + }, + "angle": { + "x": 0.00004463978917517242, + "y": -0.00004765002153030882, + "z": -0.000023133675664323336 + } + }, + { + "id": "n508", + "parent": "11", + "degrees_of_freedom": [ + 3048, + 3049, + 3050, + 3051, + 3052, + 3053 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.000025412691913004735, + "y": -0.0005656667862915737, + "z": 0.000009338134322563002 + }, + "angle": { + "x": 0.0000011142313465600563, + "y": -0.000011386782126939818, + "z": 0.000003920937463271183 + } + }, + { + "id": "n509", + "parent": "11", + "degrees_of_freedom": [ + 3054, + 3055, + 3056, + 3057, + 3058, + 3059 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000012024554249061525, + "y": -0.0005497206453852439, + "z": 0.00001678798858946791 + }, + "angle": { + "x": -9.793700613655051e-7, + "y": -0.000010834074473163774, + "z": 0.000003809330975053125 + } + }, + { + "id": "n510", + "parent": "11", + "degrees_of_freedom": [ + 3060, + 3061, + 3062, + 3063, + 3064, + 3065 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000029695516725790037, + "y": -0.0005696881636986217, + "z": 0.00001516280650245164 + }, + "angle": { + "x": -0.00005730131558494944, + "y": -0.000009377816356178976, + "z": 0.000023815894753556838 + } + }, + { + "id": "n511", + "parent": "11", + "degrees_of_freedom": [ + 3066, + 3067, + 3068, + 3069, + 3070, + 3071 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000014132480108840013, + "y": -0.0005782546483716617, + "z": 1.2155916016775893e-7 + }, + "angle": { + "x": 0.000012152425823425428, + "y": -0.000009395280201843736, + "z": -6.461083437820094e-7 + } + }, + { + "id": "n512", + "parent": "11", + "degrees_of_freedom": [ + 3072, + 3073, + 3074, + 3075, + 3076, + 3077 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00000531970253096484, + "y": -0.0005669020514003592, + "z": -0.000016639188797198315 + }, + "angle": { + "x": -0.00003159978926500712, + "y": -0.000012211099952149664, + "z": -0.0000160905804593031 + } + }, + { + "id": "n513", + "parent": "11", + "degrees_of_freedom": [ + 3078, + 3079, + 3080, + 3081, + 3082, + 3083 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000036294798724826122, + "y": -0.0005378290620213962, + "z": -0.000024553291465855232 + }, + "angle": { + "x": -7.396590789897997e-7, + "y": -0.000011932056985202781, + "z": -0.000005297798086623531 + } + }, + { + "id": "n514", + "parent": "11", + "degrees_of_freedom": [ + 3084, + 3085, + 3086, + 3087, + 3088, + 3089 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000015864419813249396, + "y": -0.0005703979754746911, + "z": -0.00002083001282075215 + }, + "angle": { + "x": 0.00007154691525498136, + "y": -0.000009905882302950565, + "z": -0.00003076951875659092 + } + }, + { + "id": "n515", + "parent": "11", + "degrees_of_freedom": [ + 3090, + 3091, + 3092, + 3093, + 3094, + 3095 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000272847650029335, + "y": -0.0005830285517699284, + "z": -0.00000660552866380808 + }, + "angle": { + "x": -0.000013738467993121796, + "y": -0.000008846395679039317, + "z": -7.954942534318748e-7 + } + }, + { + "id": "n516", + "parent": "11", + "degrees_of_freedom": [ + 3096, + 3097, + 3098, + 3099, + 3100, + 3101 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000019237038911345204, + "y": -0.000573845658804708, + "z": 0.000009125011743940476 + }, + "angle": { + "x": 0.00002633589047421032, + "y": -0.000011553419191196079, + "z": 0.0000133329468543607 + } + }, + { + "id": "n517", + "parent": "11", + "degrees_of_freedom": [ + 3102, + 3103, + 3104, + 3105, + 3106, + 3107 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 2.857142857142857, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001519529078480628, + "y": -0.00039966949875026815, + "z": 0.000006993473211185164 + }, + "angle": { + "x": -0.000005170575210735203, + "y": -0.000005032654135532851, + "z": 3.819419303305798e-7 + } + }, + { + "id": "n518", + "parent": "11", + "degrees_of_freedom": [ + 3108, + 3109, + 3110, + 3111, + 3112, + 3113 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003009369377849544, + "y": -0.0003673001343239642, + "z": 0.0000015832881018102678 + }, + "angle": { + "x": -0.000003632877648810296, + "y": -0.000003756637358985361, + "z": -0.000032445112039096376 + } + }, + { + "id": "n519", + "parent": "11", + "degrees_of_freedom": [ + 3114, + 3115, + 3116, + 3117, + 3118, + 3119 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004294303216413329, + "y": -0.00028343834810124255, + "z": 0.000006027964877998053 + }, + "angle": { + "x": -5.984076680694926e-7, + "y": 0.00000401527751498497, + "z": 0.0000025646746840227257 + } + }, + { + "id": "n520", + "parent": "11", + "degrees_of_freedom": [ + 3120, + 3121, + 3122, + 3123, + 3124, + 3125 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": -2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000021423887890422645, + "y": -0.00019729910387817024, + "z": 0.0000037523679731522826 + }, + "angle": { + "x": 9.85869181540559e-7, + "y": 6.365559094144819e-7, + "z": 0.00003437072878690297 + } + }, + { + "id": "n521", + "parent": "11", + "degrees_of_freedom": [ + 3126, + 3127, + 3128, + 3129, + 3130, + 3131 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": -2.857142857142857, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000005377175286810044, + "y": -0.00016375168428206364, + "z": 0.0000010515690604697475 + }, + "angle": { + "x": 0.000006927704669914486, + "y": -0.0000013867665218035804, + "z": -1.6999219818711832e-7 + } + }, + { + "id": "n522", + "parent": "11", + "degrees_of_freedom": [ + 3132, + 3133, + 3134, + 3135, + 3136, + 3137 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": -2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000009222223120441618, + "y": -0.00019653082908425602, + "z": 0.000009945501330976946 + }, + "angle": { + "x": 0.000003445958203043271, + "y": -0.000003266821949842966, + "z": -0.00003195717241591464 + } + }, + { + "id": "n523", + "parent": "11", + "degrees_of_freedom": [ + 3138, + 3139, + 3140, + 3141, + 3142, + 3143 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000022546676424968576, + "y": -0.00027942590308252687, + "z": 0.00002007039806439956 + }, + "angle": { + "x": 0.000002856308367831328, + "y": -0.000005459703805548579, + "z": 0.0000021689893671601023 + } + }, + { + "id": "n524", + "parent": "11", + "degrees_of_freedom": [ + 3144, + 3145, + 3146, + 3147, + 3148, + 3149 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000001291552498800615, + "y": -0.00036495932662510846, + "z": 0.000021057522022183115 + }, + "angle": { + "x": 0.000003600994498279518, + "y": -0.000008026876635589448, + "z": 0.00003471817257396875 + } + }, + { + "id": "n525", + "parent": "11", + "degrees_of_freedom": [ + 3150, + 3151, + 3152, + 3153, + 3154, + 3155 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n526", + "parent": "11", + "degrees_of_freedom": [ + 3156, + 3157, + 3158, + 3159, + 3160, + 3161 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n527", + "parent": "11", + "degrees_of_freedom": [ + 3162, + 3163, + 3164, + 3165, + 3166, + 3167 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.857142857142858, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n528", + "parent": "11", + "degrees_of_freedom": [ + 3168, + 3169, + 3170, + 3171, + 3172, + 3173 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.020305089104422, + "y": -5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n529", + "parent": "11", + "degrees_of_freedom": [ + 3174, + 3175, + 3176, + 3177, + 3178, + 3179 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n530", + "parent": "11", + "degrees_of_freedom": [ + 3180, + 3181, + 3182, + 3183, + 3184, + 3185 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.979694910895579, + "y": -5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n531", + "parent": "11", + "degrees_of_freedom": [ + 3186, + 3187, + 3188, + 3189, + 3190, + 3191 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.142857142857142, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n532", + "parent": "11", + "degrees_of_freedom": [ + 3192, + 3193, + 3194, + 3195, + 3196, + 3197 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 7.979694910895578, + "y": -5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n533", + "parent": "11", + "degrees_of_freedom": [ + 3198, + 3199, + 3200, + 3201, + 3202, + 3203 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n534", + "parent": "11", + "degrees_of_freedom": [ + 3204, + 3205, + 3206, + 3207, + 3208, + 3209 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 12.020305089104422, + "y": -5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n535", + "parent": "11", + "degrees_of_freedom": [ + 3210, + 3211, + 3212, + 3213, + 3214, + 3215 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.00004708820200643956, + "y": -0.00058331876905838, + "z": 0.00006785874871910055 + }, + "angle": { + "x": 0.000005141417383283542, + "y": -0.000009231792878525805, + "z": -0.000005008219831312894 + } + }, + { + "id": "n536", + "parent": "11", + "degrees_of_freedom": [ + 3216, + 3217, + 3218, + 3219, + 3220, + 3221 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000031526154353087053, + "y": -0.000291250861448312, + "z": 0.00010310511769511958 + }, + "angle": { + "x": 0.000005774614901534472, + "y": 0.000010072491305687027, + "z": 0.00000788246174462313 + } + }, + { + "id": "n537", + "parent": "11", + "degrees_of_freedom": [ + 3222, + 3223, + 3224, + 3225, + 3226, + 3227 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -3.140184917367551e-16, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000028994497423491798, + "y": -0.0002993741424865262, + "z": 0.00010338003639069293 + }, + "angle": { + "x": 0.00000809360754454482, + "y": -0.0000014929635316806095, + "z": 0.000011781733229697324 + } + }, + { + "id": "n538", + "parent": "11", + "degrees_of_freedom": [ + 3228, + 3229, + 3230, + 3231, + 3232, + 3233 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.020305089104421, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005428648635263737, + "y": -0.00038251266351843307, + "z": 0.0000842716582724367 + }, + "angle": { + "x": -0.00004565390099598111, + "y": -0.000050731466942907266, + "z": 0.000027485136983211038 + } + }, + { + "id": "n539", + "parent": "11", + "degrees_of_freedom": [ + 3234, + 3235, + 3236, + 3237, + 3238, + 3239 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.857142857142857, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010235615099803117, + "y": -0.0003954823427277752, + "z": 0.00006740194658104414 + }, + "angle": { + "x": 0.0000036442125912655247, + "y": -0.000006420521963365869, + "z": 0.00001011384962657121 + } + }, + { + "id": "n540", + "parent": "11", + "degrees_of_freedom": [ + 3240, + 3241, + 3242, + 3243, + 3244, + 3245 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 2.0203050891044216, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000034838881114123525, + "y": -0.0003737745459386951, + "z": 0.00004881943251976654 + }, + "angle": { + "x": 0.000048292547310289786, + "y": 0.00003962041342085631, + "z": 0.000024686786510008072 + } + }, + { + "id": "n541", + "parent": "11", + "degrees_of_freedom": [ + 3246, + 3247, + 3248, + 3249, + 3250, + 3251 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 3.140184917367551e-16, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000012253099515071648, + "y": -0.0002796632224424589, + "z": 0.000014393599054115124 + }, + "angle": { + "x": 0.000007883083612959398, + "y": -0.000004366517727202254, + "z": 0.000007430086136153608 + } + }, + { + "id": "n542", + "parent": "11", + "degrees_of_freedom": [ + 3252, + 3253, + 3254, + 3255, + 3256, + 3257 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.020305089104421, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000003024549826474164, + "y": -0.00019790432946906802, + "z": 0.000020298075941958218 + }, + "angle": { + "x": -0.000030987807521286675, + "y": -0.00006972242312523339, + "z": 0.000032241860754784104 + } + }, + { + "id": "n543", + "parent": "11", + "degrees_of_freedom": [ + 3258, + 3259, + 3260, + 3261, + 3262, + 3263 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.857142857142857, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005289843251767875, + "y": -0.00018445745304162495, + "z": 0.000032339609610127436 + }, + "angle": { + "x": 0.0000047026716222512525, + "y": 5.610334629229787e-7, + "z": 0.000009097901243823497 + } + }, + { + "id": "n544", + "parent": "11", + "degrees_of_freedom": [ + 3264, + 3265, + 3266, + 3267, + 3268, + 3269 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": -2.0203050891044216, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000012037657351377141, + "y": -0.00020452653286509237, + "z": 0.000055839202353240384 + }, + "angle": { + "x": 0.00006164677984764275, + "y": 0.00009888588729979226, + "z": 0.00004556598608946445 + } + }, + { + "id": "n545", + "parent": "11", + "degrees_of_freedom": [ + 3270, + 3271, + 3272, + 3273, + 3274, + 3275 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00008947228907274243, + "y": -0.0005728507914147993, + "z": 0.000020239689049827837 + }, + "angle": { + "x": -0.000007667960212465812, + "y": -0.000014000366322135276, + "z": 0.00003982279745589736 + } + }, + { + "id": "n546", + "parent": "11", + "degrees_of_freedom": [ + 3276, + 3277, + 3278, + 3279, + 3280, + 3281 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000052637232988810324, + "y": -0.00039425973613361657, + "z": 0.000042073371221090436 + }, + "angle": { + "x": -0.000006667677235734714, + "y": -0.000011806624897938362, + "z": 0.000026884708729022547 + } + }, + { + "id": "n547", + "parent": "11", + "degrees_of_freedom": [ + 3282, + 3283, + 3284, + 3285, + 3286, + 3287 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006694366664624306, + "y": -0.0005403950829127807, + "z": 0.000037719399568120035 + }, + "angle": { + "x": -0.0003577116662196487, + "y": -0.000012745149265896551, + "z": 0.0001541365241100924 + } + }, + { + "id": "n548", + "parent": "11", + "degrees_of_freedom": [ + 3288, + 3289, + 3290, + 3291, + 3292, + 3293 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007652161934435653, + "y": -0.0006108334156207451, + "z": 0.000019611077888884845 + }, + "angle": { + "x": 0.000016847187968633537, + "y": -0.000008659617298089108, + "z": 0.000024849396895635703 + } + }, + { + "id": "n549", + "parent": "11", + "degrees_of_freedom": [ + 3294, + 3295, + 3296, + 3297, + 3298, + 3299 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006979023710773379, + "y": -0.0006573164614911196, + "z": 0.000005164482230238966 + }, + "angle": { + "x": 0.00017868258470929955, + "y": -0.000008708349849581795, + "z": 0.00008105453373352709 + } + }, + { + "id": "n550", + "parent": "11", + "degrees_of_freedom": [ + 3300, + 3301, + 3302, + 3303, + 3304, + 3305 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005914791170737715, + "y": -0.0007473243140525715, + "z": 8.605997258574256e-7 + }, + "angle": { + "x": 0.0000029725119570754986, + "y": -0.000011082253803373165, + "z": 0.000016804658279341427 + } + }, + { + "id": "n551", + "parent": "11", + "degrees_of_freedom": [ + 3306, + 3307, + 3308, + 3309, + 3310, + 3311 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000047806399458685425, + "y": -0.0006485109868820324, + "z": 0.000005193615459496679 + }, + "angle": { + "x": -0.0003232829384276688, + "y": -0.00000751477899595223, + "z": 0.00013062635528675732 + } + }, + { + "id": "n552", + "parent": "11", + "degrees_of_freedom": [ + 3312, + 3313, + 3314, + 3315, + 3316, + 3317 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000037935556284878284, + "y": -0.000612210021066782, + "z": 0.00001706782479329685 + }, + "angle": { + "x": -0.000011663892280721857, + "y": -0.000008022799374912813, + "z": 0.000018840614691359807 + } + }, + { + "id": "n553", + "parent": "11", + "degrees_of_freedom": [ + 3318, + 3319, + 3320, + 3321, + 3322, + 3323 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004147045279308856, + "y": -0.0005553783914764994, + "z": 0.00003524115607516522 + }, + "angle": { + "x": 0.00025888316875350575, + "y": -0.00001241630522860215, + "z": 0.00011763209446200781 + } + }, + { + "id": "n554", + "parent": "11", + "degrees_of_freedom": [ + 3324, + 3325, + 3326, + 3327, + 3328, + 3329 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 2.857142857142857, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000011163780528108817, + "y": -0.0003446707126185603, + "z": -0.0000034430627364560794 + }, + "angle": { + "x": -0.00006154919018753651, + "y": -0.000011537283560257052, + "z": -0.000038466244880780036 + } + }, + { + "id": "n555", + "parent": "11", + "degrees_of_freedom": [ + 3330, + 3331, + 3332, + 3333, + 3334, + 3335 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 2.020305089104421, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00000414909309072065, + "y": -0.00026352586423399667, + "z": 0.000024754818016666655 + }, + "angle": { + "x": -0.000004968607108887214, + "y": 0.000011899197304867652, + "z": -0.000024351955370973817 + } + }, + { + "id": "n556", + "parent": "11", + "degrees_of_freedom": [ + 3336, + 3337, + 3338, + 3339, + 3340, + 3341 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000023491762256593795, + "y": -0.00020371238512330623, + "z": 0.000044750592628235903 + }, + "angle": { + "x": 0.000006126394335901608, + "y": 0.00003868485024702648, + "z": -0.000005839027516765688 + } + }, + { + "id": "n557", + "parent": "11", + "degrees_of_freedom": [ + 3342, + 3343, + 3344, + 3345, + 3346, + 3347 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": -2.020305089104421, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000028113388938048557, + "y": -0.00015411315761732514, + "z": 4.542486968203012e-10 + }, + "angle": { + "x": 0.00005692828363046258, + "y": -0.00008396174722147216, + "z": 0.000011971747627540562 + } + }, + { + "id": "n558", + "parent": "11", + "degrees_of_freedom": [ + 3348, + 3349, + 3350, + 3351, + 3352, + 3353 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": -2.857142857142857, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003550440329609541, + "y": -0.0001980383240595914, + "z": 0.0001219891271768929 + }, + "angle": { + "x": -0.00007320886285801936, + "y": -0.000030057213363507672, + "z": -0.00004040681258732489 + } + }, + { + "id": "n559", + "parent": "11", + "degrees_of_freedom": [ + 3354, + 3355, + 3356, + 3357, + 3358, + 3359 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": -2.020305089104421, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000016413737685122006, + "y": -0.0002828089916697753, + "z": 0.00012144983246057203 + }, + "angle": { + "x": -0.000022323306271373574, + "y": -0.00000897959771054449, + "z": -0.000027364479476020805 + } + }, + { + "id": "n560", + "parent": "11", + "degrees_of_freedom": [ + 3360, + 3361, + 3362, + 3363, + 3364, + 3365 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000008051866517094199, + "y": -0.0003367407677701057, + "z": 0.00008386445660938234 + }, + "angle": { + "x": -0.000012393506452713051, + "y": 0.000014992966525378978, + "z": -0.000005772855655225684 + } + }, + { + "id": "n561", + "parent": "11", + "degrees_of_freedom": [ + 3366, + 3367, + 3368, + 3369, + 3370, + 3371 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 2.020305089104421, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000006092085661655642, + "y": -0.00038198662480747335, + "z": 0.00007137245564921399 + }, + "angle": { + "x": 0.000011052065736179633, + "y": -0.00004160971161767516, + "z": 0.000017370517410483004 + } + }, + { + "id": "n562", + "parent": "11", + "degrees_of_freedom": [ + 3372, + 3373, + 3374, + 3375, + 3376, + 3377 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000074267444834497, + "y": -0.000593771866096584, + "z": -0.000007216543216600217 + }, + "angle": { + "x": -9.270660263483367e-8, + "y": -0.000012387614106013176, + "z": 0.000010444714418237507 + } + }, + { + "id": "n563", + "parent": "11", + "degrees_of_freedom": [ + 3378, + 3379, + 3380, + 3381, + 3382, + 3383 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008641720878507812, + "y": -0.000652980866968167, + "z": -0.000012512892706718883 + }, + "angle": { + "x": -0.00011979817774893286, + "y": -0.000006898900033184192, + "z": -0.00003222530773171519 + } + }, + { + "id": "n564", + "parent": "11", + "degrees_of_freedom": [ + 3384, + 3385, + 3386, + 3387, + 3388, + 3389 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008168766236428737, + "y": -0.0005047981711696396, + "z": -0.00004577322792520924 + }, + "angle": { + "x": 0.0006644506664915908, + "y": -0.000011470122094657335, + "z": -0.0003049678762474596 + } + }, + { + "id": "n565", + "parent": "11", + "degrees_of_freedom": [ + 3390, + 3391, + 3392, + 3393, + 3394, + 3395 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006843708629396887, + "y": -0.00011761096498292893, + "z": -0.0000516258222096257 + }, + "angle": { + "x": 0.00000752130014448006, + "y": -0.000012670286644011054, + "z": -0.00006927127070201309 + } + }, + { + "id": "n566", + "parent": "11", + "degrees_of_freedom": [ + 3396, + 3397, + 3398, + 3399, + 3400, + 3401 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000053738656650921754, + "y": -0.0005220953294046874, + "z": -0.00004669089900045009 + }, + "angle": { + "x": -0.0007687332815265808, + "y": -0.000011945469330829734, + "z": -0.0003402816300274166 + } + }, + { + "id": "n567", + "parent": "11", + "degrees_of_freedom": [ + 3402, + 3403, + 3404, + 3405, + 3406, + 3407 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005781532085305002, + "y": -0.0006539310215560874, + "z": -0.000009930667965087018 + }, + "angle": { + "x": -0.0002513635074974604, + "y": -0.00000851939513389048, + "z": 0.00009963009697675582 + } + }, + { + "id": "n568", + "parent": "11", + "degrees_of_freedom": [ + 3408, + 3409, + 3410, + 3411, + 3412, + 3413 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00017091732957439637, + "y": -0.0009678835359694923, + "z": 0.00005516905135704979 + }, + "angle": { + "x": 0.000010187684515559086, + "y": -0.000021451700657335782, + "z": 0.0000052801763375041675 + } + }, + { + "id": "n569", + "parent": "11", + "degrees_of_freedom": [ + 3414, + 3415, + 3416, + 3417, + 3418, + 3419 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019982294635414639, + "y": -0.0007833795340218676, + "z": -0.00001663735764412426 + }, + "angle": { + "x": -0.0000020191112891404114, + "y": -0.000017227690428586793, + "z": -0.000009529769092223643 + } + }, + { + "id": "n570", + "parent": "11", + "degrees_of_freedom": [ + 3420, + 3421, + 3422, + 3423, + 3424, + 3425 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008201487238236626, + "y": -0.0007765789633884381, + "z": 0.000039062942348390855 + }, + "angle": { + "x": 0.0000037209568744741996, + "y": -0.000009515688972797828, + "z": -0.0000040687340502669214 + } + }, + { + "id": "n571", + "parent": "11", + "degrees_of_freedom": [ + 3426, + 3427, + 3428, + 3429, + 3430, + 3431 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012878386233975976, + "y": -0.0007809165072594485, + "z": 0.00004637591308852591 + }, + "angle": { + "x": 0.0000037373988461199837, + "y": 0.00003474236931722974, + "z": -0.00001807576917066162 + } + }, + { + "id": "n572", + "parent": "11", + "degrees_of_freedom": [ + 3432, + 3433, + 3434, + 3435, + 3436, + 3437 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.020305089104422, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014374009083725276, + "y": -0.0008375255326975473, + "z": 0.00003791252880965881 + }, + "angle": { + "x": -0.000024216236829723455, + "y": -0.00001116083622201697, + "z": -0.0000034255347652757807 + } + }, + { + "id": "n573", + "parent": "11", + "degrees_of_freedom": [ + 3438, + 3439, + 3440, + 3441, + 3442, + 3443 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.857142857142858, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019187809006308092, + "y": -0.0008438147395058741, + "z": 0.000027789532494216965 + }, + "angle": { + "x": 0.000004283215908865531, + "y": -0.000015837232112071758, + "z": -0.0000033511741837110455 + } + }, + { + "id": "n574", + "parent": "11", + "degrees_of_freedom": [ + 3444, + 3445, + 3446, + 3447, + 3448, + 3449 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.020305089104422, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020171695541786766, + "y": -0.0008293277246951702, + "z": 0.00001153510643858096 + }, + "angle": { + "x": 0.000039454495301389935, + "y": -0.000008934266250494948, + "z": -0.0000024896017450797627 + } + }, + { + "id": "n575", + "parent": "11", + "degrees_of_freedom": [ + 3450, + 3451, + 3452, + 3453, + 3454, + 3455 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020080911522756705, + "y": -0.0007669461384773214, + "z": -0.00001667361093056068 + }, + "angle": { + "x": 0.000003420360518928237, + "y": -0.0000599511078672254, + "z": -0.000022105817395211283 + } + }, + { + "id": "n576", + "parent": "11", + "degrees_of_freedom": [ + 3456, + 3457, + 3458, + 3459, + 3460, + 3461 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.979694910895579, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009956250747548441, + "y": -0.0007100946034097184, + "z": -9.890086130327528e-7 + }, + "angle": { + "x": -0.00003163527503126654, + "y": 0.00026492812844395577, + "z": -0.00013538899726089763 + } + }, + { + "id": "n577", + "parent": "11", + "degrees_of_freedom": [ + 3462, + 3463, + 3464, + 3465, + 3466, + 3467 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.142857142857142, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00013283836008829046, + "y": -0.0007023163969492887, + "z": 0.000010847141928025982 + }, + "angle": { + "x": 0.0000032365240714365883, + "y": -0.000009371705053027036, + "z": -0.00003683044646330489 + } + }, + { + "id": "n578", + "parent": "11", + "degrees_of_freedom": [ + 3468, + 3469, + 3470, + 3471, + 3472, + 3473 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.979694910895578, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000055680126380340955, + "y": -0.0007179721919927823, + "z": 0.00002397192793458154 + }, + "angle": { + "x": 0.0000332933840021593, + "y": -0.0002619755055355175, + "z": -0.00012456043079422957 + } + }, + { + "id": "n579", + "parent": "11", + "degrees_of_freedom": [ + 3474, + 3475, + 3476, + 3477, + 3478, + 3479 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00024447232756483027, + "y": -0.0009945252457710517, + "z": -0.000027020083124788278 + }, + "angle": { + "x": -0.000005742366821198073, + "y": -0.00003533507132939948, + "z": -0.000024168422166550365 + } + }, + { + "id": "n580", + "parent": "11", + "degrees_of_freedom": [ + 3480, + 3481, + 3482, + 3483, + 3484, + 3485 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.0000823191105004813, + "y": -0.000957595979781115, + "z": -0.000019122133694355677 + }, + "angle": { + "x": -4.5183121984700237e-7, + "y": -0.000026988796928925533, + "z": -0.0000029732418097001207 + } + }, + { + "id": "n581", + "parent": "11", + "degrees_of_freedom": [ + 3486, + 3487, + 3488, + 3489, + 3490, + 3491 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 15, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00016073319984300633, + "y": -0.0009875396412037812, + "z": 0.000021080924577014218 + }, + "angle": { + "x": -0.0000013797117026111082, + "y": -0.00002573141742441543, + "z": 0.000004970884248617946 + } + }, + { + "id": "n582", + "parent": "11", + "degrees_of_freedom": [ + 3492, + 3493, + 3494, + 3495, + 3496, + 3497 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00013317720151800983, + "y": -0.0010161355854295022, + "z": 0.00001033897546818787 + }, + "angle": { + "x": 0.000050366894372814834, + "y": -0.0000213336343357868, + "z": -0.000011760680512771613 + } + }, + { + "id": "n583", + "parent": "11", + "degrees_of_freedom": [ + 3498, + 3499, + 3500, + 3501, + 3502, + 3503 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011408512504108303, + "y": -0.0010342359037812435, + "z": -0.00002553236571039599 + }, + "angle": { + "x": 0.00006135003247288513, + "y": -0.000020836072898889865, + "z": -0.00001240588349326287 + } + }, + { + "id": "n584", + "parent": "11", + "degrees_of_freedom": [ + 3504, + 3505, + 3506, + 3507, + 3508, + 3509 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 15, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00013173085805544534, + "y": -0.0009536996407770459, + "z": -0.00006255708874100116 + }, + "angle": { + "x": -0.0003086776902490527, + "y": -0.000024654284719263118, + "z": -0.00014290708990084301 + } + }, + { + "id": "n585", + "parent": "11", + "degrees_of_freedom": [ + 3510, + 3511, + 3512, + 3513, + 3514, + 3515 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 15, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001589218862864559, + "y": -0.0007623653075362675, + "z": -0.00007552373397643231 + }, + "angle": { + "x": 0.0000010967332682844578, + "y": -0.000026347158573866705, + "z": -0.00003295098246265891 + } + }, + { + "id": "n586", + "parent": "11", + "degrees_of_freedom": [ + 3516, + 3517, + 3518, + 3519, + 3520, + 3521 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 15, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018979856128996123, + "y": -0.0009476135842314503, + "z": -0.00006595757980148023 + }, + "angle": { + "x": 0.00039926969532683485, + "y": -0.00002433407199478983, + "z": -0.00017329203461348685 + } + }, + { + "id": "n587", + "parent": "11", + "degrees_of_freedom": [ + 3522, + 3523, + 3524, + 3525, + 3526, + 3527 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020775029873728787, + "y": -0.0010255862750671225, + "z": -0.000026390965226439892 + }, + "angle": { + "x": -0.00005832204224816025, + "y": -0.00002131134766918548, + "z": -0.000014384201588948608 + } + }, + { + "id": "n588", + "parent": "11", + "degrees_of_freedom": [ + 3528, + 3529, + 3530, + 3531, + 3532, + 3533 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019046437185922923, + "y": -0.0010157538075910427, + "z": 0.000010962289058217025 + }, + "angle": { + "x": -0.00001705226261500658, + "y": -0.000023133627733565466, + "z": -0.000002133820272887581 + } + }, + { + "id": "n589", + "parent": "11", + "degrees_of_freedom": [ + 3534, + 3535, + 3536, + 3537, + 3538, + 3539 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 7.142857142857142, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002031148297177865, + "y": -0.0007455237904034369, + "z": -0.00003070941872517409 + }, + "angle": { + "x": -6.541108139885039e-7, + "y": -0.000019589407815415682, + "z": 0.00002509796724270762 + } + }, + { + "id": "n590", + "parent": "11", + "degrees_of_freedom": [ + 3540, + 3541, + 3542, + 3543, + 3544, + 3545 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 7.979694910895579, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020070663257379032, + "y": -0.0007253617415927789, + "z": 0.000008319782152651141 + }, + "angle": { + "x": -0.0000010409668483147753, + "y": -0.00001974966212226311, + "z": -0.00001575251008045206 + } + }, + { + "id": "n591", + "parent": "11", + "degrees_of_freedom": [ + 3546, + 3547, + 3548, + 3549, + 3550, + 3551 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020891423045799924, + "y": -0.0007558978958415005, + "z": 0.000022743942687742126 + }, + "angle": { + "x": -0.000019890296718583888, + "y": -0.00006525591237994743, + "z": 0.0000017258292207654823 + } + }, + { + "id": "n592", + "parent": "11", + "degrees_of_freedom": [ + 3552, + 3553, + 3554, + 3555, + 3556, + 3557 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 12.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001942436533345189, + "y": -0.0007887149649071703, + "z": -0.0000720491468411831 + }, + "angle": { + "x": -0.000054532696621737284, + "y": 0.000018378183202311827, + "z": 0.000018238265438218227 + } + }, + { + "id": "n593", + "parent": "11", + "degrees_of_freedom": [ + 3558, + 3559, + 3560, + 3561, + 3562, + 3563 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 12.857142857142858, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018178531775481073, + "y": -0.0008444614803010658, + "z": -0.00008055456699081196 + }, + "angle": { + "x": -0.000004638641081143761, + "y": -0.0000022885632028005072, + "z": 0.00002579374499746695 + } + }, + { + "id": "n594", + "parent": "11", + "degrees_of_freedom": [ + 3564, + 3565, + 3566, + 3567, + 3568, + 3569 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 12.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018377923213523407, + "y": -0.0008688075908921299, + "z": -0.00008129639317550069 + }, + "angle": { + "x": 0.000024982441950822797, + "y": 0.000009980862809690267, + "z": -0.000012311440345625226 + } + }, + { + "id": "n595", + "parent": "11", + "degrees_of_freedom": [ + 3570, + 3571, + 3572, + 3573, + 3574, + 3575 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017979544191953803, + "y": -0.000837389062727665, + "z": -0.00012341608669761046 + }, + "angle": { + "x": -0.0000025894712750158467, + "y": -0.00005658344888520508, + "z": 0.0000023093084752518373 + } + }, + { + "id": "n596", + "parent": "11", + "degrees_of_freedom": [ + 3576, + 3577, + 3578, + 3579, + 3580, + 3581 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 7.979694910895579, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001936749641257881, + "y": -0.0008014333129312641, + "z": -0.00007083338888510067 + }, + "angle": { + "x": -0.00002148732351135216, + "y": -0.000010960009005886848, + "z": 0.000017998703066079797 + } + }, + { + "id": "n597", + "parent": "11", + "degrees_of_freedom": [ + 3582, + 3583, + 3584, + 3585, + 3586, + 3587 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 12.857142857142858, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006975419125453463, + "y": -0.0008491288485098541, + "z": -0.000017674469471071123 + }, + "angle": { + "x": 0.000004651710441640873, + "y": -0.00001726145366319449, + "z": -1.0200788971032148e-7 + } + }, + { + "id": "n598", + "parent": "11", + "degrees_of_freedom": [ + 3588, + 3589, + 3590, + 3591, + 3592, + 3593 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 12.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000054185315726786536, + "y": -0.0008257526961854052, + "z": -0.000055364382446555626 + }, + "angle": { + "x": -0.0000052109906669503765, + "y": -0.000019748610456677763, + "z": -0.000024942173773899444 + } + }, + { + "id": "n599", + "parent": "11", + "degrees_of_freedom": [ + 3594, + 3595, + 3596, + 3597, + 3598, + 3599 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003558692093692167, + "y": -0.0007656654095352343, + "z": -0.00006102589119348673 + }, + "angle": { + "x": -0.0000023806302644074743, + "y": -0.00001231130554376803, + "z": -0.0000034714935639003738 + } + }, + { + "id": "n600", + "parent": "11", + "degrees_of_freedom": [ + 3600, + 3601, + 3602, + 3603, + 3604, + 3605 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 7.979694910895579, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000042935047294654305, + "y": -0.0007080835222044098, + "z": -0.00004608225352001454 + }, + "angle": { + "x": -0.0000018186372547610242, + "y": -0.000013063916703632366, + "z": 0.000023253506797197415 + } + }, + { + "id": "n601", + "parent": "11", + "degrees_of_freedom": [ + 3606, + 3607, + 3608, + 3609, + 3610, + 3611 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 7.142857142857142, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000054652112902627, + "y": -0.0006849150893884692, + "z": -0.00001813488583572277 + }, + "angle": { + "x": -0.0000030909291983877443, + "y": -0.000012560943850002792, + "z": -4.112432349604587e-7 + } + }, + { + "id": "n602", + "parent": "11", + "degrees_of_freedom": [ + 3612, + 3613, + 3614, + 3615, + 3616, + 3617 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 7.979694910895579, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000687958403982214, + "y": -0.0007112058293334812, + "z": 0.000004639265546718188 + }, + "angle": { + "x": -2.2163584616780767e-8, + "y": -0.000011265795756097866, + "z": -0.00002683994665904851 + } + }, + { + "id": "n603", + "parent": "11", + "degrees_of_freedom": [ + 3618, + 3619, + 3620, + 3621, + 3622, + 3623 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008897557499575174, + "y": -0.0007721016529353324, + "z": 0.000014269184323448115 + }, + "angle": { + "x": 0.0000019397495661286104, + "y": -0.000006972150254644786, + "z": -0.000003791095073087744 + } + }, + { + "id": "n604", + "parent": "11", + "degrees_of_freedom": [ + 3624, + 3625, + 3626, + 3627, + 3628, + 3629 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 12.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000830143716886933, + "y": -0.0008279612585201184, + "z": 0.000012229982927069452 + }, + "angle": { + "x": 0.000005502264220537592, + "y": -0.00001601566029492585, + "z": 0.000021338879990068893 + } + }, + { + "id": "n605", + "parent": "11", + "degrees_of_freedom": [ + 3630, + 3631, + 3632, + 3633, + 3634, + 3635 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000025578737882021416, + "y": -0.0005729094473182159, + "z": 0.00001206689927344389 + }, + "angle": { + "x": 0.000022784670697383012, + "y": -0.0000096118373436191, + "z": 0.000012251192485572567 + } + }, + { + "id": "n606", + "parent": "11", + "degrees_of_freedom": [ + 3636, + 3637, + 3638, + 3639, + 3640, + 3641 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000020447706313198893, + "y": -0.0005689732962309676, + "z": -0.000022242546290957716 + }, + "angle": { + "x": 0.00007857630699288124, + "y": -0.000008291422489161256, + "z": -0.00003351922585996324 + } + }, + { + "id": "n607", + "parent": "11", + "degrees_of_freedom": [ + 3642, + 3643, + 3644, + 3645, + 3646, + 3647 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000011627852853476155, + "y": -0.0005661354439297409, + "z": -0.000019412575208753438 + }, + "angle": { + "x": -0.00005152802726807732, + "y": -0.000010071835173889577, + "z": -0.00002327856810804165 + } + }, + { + "id": "n608", + "parent": "11", + "degrees_of_freedom": [ + 3648, + 3649, + 3650, + 3651, + 3652, + 3653 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.000026428114646932232, + "y": -0.0009632160419834766, + "z": 0.00007837715527083457 + }, + "angle": { + "x": 0.0000055312895697228194, + "y": -0.000021818030945158623, + "z": 4.383769015954691e-7 + } + }, + { + "id": "n609", + "parent": "11", + "degrees_of_freedom": [ + 3654, + 3655, + 3656, + 3657, + 3658, + 3659 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000024998010557543233, + "y": -0.0007729431341546646, + "z": 0.00007502919084860958 + }, + "angle": { + "x": 0.000004526285280424788, + "y": -0.000009939140360171795, + "z": -2.884385491476605e-7 + } + }, + { + "id": "n610", + "parent": "11", + "degrees_of_freedom": [ + 3660, + 3661, + 3662, + 3663, + 3664, + 3665 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -1.0442255526555835e-7, + "y": -0.0007748030558570213, + "z": 0.00008417367899198939 + }, + "angle": { + "x": 0.000003858464296532624, + "y": -7.139696522229622e-8, + "z": -3.741937110369267e-7 + } + }, + { + "id": "n611", + "parent": "11", + "degrees_of_freedom": [ + 3666, + 3667, + 3668, + 3669, + 3670, + 3671 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.020305089104422, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000019540135061101176, + "y": -0.0008310183848984953, + "z": 0.00007453581515844892 + }, + "angle": { + "x": -0.000025676318082118028, + "y": -0.000017224760512415538, + "z": 0.0000042797551715392095 + } + }, + { + "id": "n612", + "parent": "11", + "degrees_of_freedom": [ + 3672, + 3673, + 3674, + 3675, + 3676, + 3677 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.857142857142858, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000017671607918095845, + "y": -0.0008409045718806397, + "z": 0.00006573227430639711 + }, + "angle": { + "x": 0.0000020576150412518223, + "y": -0.00001545042181773002, + "z": 0.000002241739206136324 + } + }, + { + "id": "n613", + "parent": "11", + "degrees_of_freedom": [ + 3678, + 3679, + 3680, + 3681, + 3682, + 3683 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.020305089104422, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005900907636141247, + "y": -0.000827141826728865, + "z": 0.00005386084911264067 + }, + "angle": { + "x": 0.00003335736641666336, + "y": 0.000006461459519035384, + "z": 0.000008578064744395192 + } + }, + { + "id": "n614", + "parent": "11", + "degrees_of_freedom": [ + 3684, + 3685, + 3686, + 3687, + 3688, + 3689 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007167961106607455, + "y": -0.0007652432427999118, + "z": 0.00003029981275259348 + }, + "angle": { + "x": 0.000004054515581588393, + "y": -0.00002505293680014675, + "z": -0.0000039746371344887595 + } + }, + { + "id": "n615", + "parent": "11", + "degrees_of_freedom": [ + 3690, + 3691, + 3692, + 3693, + 3694, + 3695 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.979694910895579, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004241963819540695, + "y": -0.0007083884333127991, + "z": 0.00004033580565982702 + }, + "angle": { + "x": -0.00002684376117343947, + "y": 0.000055263508704429596, + "z": -0.000030960129581933456 + } + }, + { + "id": "n616", + "parent": "11", + "degrees_of_freedom": [ + 3696, + 3697, + 3698, + 3699, + 3700, + 3701 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.142857142857142, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001747233985574599, + "y": -0.0006977445921711379, + "z": 0.00004903638861633535 + }, + "angle": { + "x": 0.0000021645179942750977, + "y": -0.000009674057751862965, + "z": -0.000006590582910991398 + } + }, + { + "id": "n617", + "parent": "11", + "degrees_of_freedom": [ + 3702, + 3703, + 3704, + 3705, + 3706, + 3707 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.979694910895578, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000020433717272865074, + "y": -0.0007126251501118155, + "z": 0.00006064873879623112 + }, + "angle": { + "x": 0.000033994048825719624, + "y": -0.000054470779883420544, + "z": -0.000021017969595509996 + } + }, + { + "id": "n618", + "parent": "11", + "degrees_of_freedom": [ + 3708, + 3709, + 3710, + 3711, + 3712, + 3713 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.00006201763339750429, + "y": -0.0009528605692745379, + "z": -0.0000022619362588028393 + }, + "angle": { + "x": -8.284141111198657e-7, + "y": -0.00002665849514679778, + "z": 0.0000027427577184634744 + } + }, + { + "id": "n619", + "parent": "11", + "degrees_of_freedom": [ + 3714, + 3715, + 3716, + 3717, + 3718, + 3719 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00001614769480780591, + "y": -0.0009252503366311717, + "z": 0.00003571909327289386 + }, + "angle": { + "x": -4.795356242438619e-7, + "y": -0.000025356844233847722, + "z": 0.00000637259343790804 + } + }, + { + "id": "n620", + "parent": "11", + "degrees_of_freedom": [ + 3720, + 3721, + 3722, + 3723, + 3724, + 3725 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001544481483807974, + "y": -0.0009602306712000102, + "z": 0.00002698413415431625 + }, + "angle": { + "x": -0.00007821116972539985, + "y": -0.000023011629702089792, + "z": 0.00003361042195148113 + } + }, + { + "id": "n621", + "parent": "11", + "degrees_of_freedom": [ + 3726, + 3727, + 3728, + 3729, + 3730, + 3731 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000036071217283852675, + "y": -0.0009739482115930957, + "z": -0.000008787390775240157 + }, + "angle": { + "x": 0.000016939296784298602, + "y": -0.000020261194127531458, + "z": -2.7503749673709615e-7 + } + }, + { + "id": "n622", + "parent": "11", + "degrees_of_freedom": [ + 3732, + 3733, + 3734, + 3735, + 3736, + 3737 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000018365990437788206, + "y": -0.0009595488217205201, + "z": -0.000044636543286596386 + }, + "angle": { + "x": -0.000054811630586625506, + "y": -0.000023704178132980506, + "z": -0.00002545922553135439 + } + }, + { + "id": "n623", + "parent": "11", + "degrees_of_freedom": [ + 3738, + 3739, + 3740, + 3741, + 3742, + 3743 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000065385899847292315, + "y": -0.0009245887199180812, + "z": -0.000057936428122392364 + }, + "angle": { + "x": -0.0000011055120451720335, + "y": -0.0000266448009835314, + "z": -0.000006410218092809654 + } + }, + { + "id": "n624", + "parent": "11", + "degrees_of_freedom": [ + 3744, + 3745, + 3746, + 3747, + 3748, + 3749 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 15, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003613309142134298, + "y": -0.000963789400005792, + "z": -0.00004827095231292081 + }, + "angle": { + "x": 0.00008138586636734582, + "y": -0.000022955865135615863, + "z": -0.00003534703656371486 + } + }, + { + "id": "n625", + "parent": "11", + "degrees_of_freedom": [ + 3750, + 3751, + 3752, + 3753, + 3754, + 3755 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005579053464718767, + "y": -0.0009788335340753657, + "z": -0.00001215993772451581 + }, + "angle": { + "x": -0.000018869357420520056, + "y": -0.000020072215989951924, + "z": 1.1518086458388394e-7 + } + }, + { + "id": "n626", + "parent": "11", + "degrees_of_freedom": [ + 3756, + 3757, + 3758, + 3759, + 3760, + 3761 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003888800346771548, + "y": -0.0009631728432411783, + "z": 0.00002282703420503589 + }, + "angle": { + "x": 0.00005886045403880083, + "y": -0.00002289350424318076, + "z": 0.000027417810959458235 + } + }, + { + "id": "n627", + "parent": "11", + "degrees_of_freedom": [ + 3762, + 3763, + 3764, + 3765, + 3766, + 3767 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 12.857142857142858, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000051734371966254953, + "y": -0.0008450894899358177, + "z": 0.0000031149988499514736 + }, + "angle": { + "x": -0.0000030850870778747203, + "y": -0.000017257461480343947, + "z": 3.182058309671701e-7 + } + }, + { + "id": "n628", + "parent": "11", + "degrees_of_freedom": [ + 3768, + 3769, + 3770, + 3771, + 3772, + 3773 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 12.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000649787762043851, + "y": -0.0008242397266460042, + "z": -0.00002812871232845228 + }, + "angle": { + "x": -0.000009290746990692388, + "y": -0.000018283737469173342, + "z": -0.000021414195221746577 + } + }, + { + "id": "n629", + "parent": "11", + "degrees_of_freedom": [ + 3774, + 3775, + 3776, + 3777, + 3778, + 3779 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007165988136715677, + "y": -0.0007684096900918589, + "z": -0.000024147226400908994 + }, + "angle": { + "x": -0.000003805459776967164, + "y": -0.0000041235830612323344, + "z": 0.000003354293575265737 + } + }, + { + "id": "n630", + "parent": "11", + "degrees_of_freedom": [ + 3780, + 3781, + 3782, + 3783, + 3784, + 3785 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 7.979694910895579, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000052169170099384374, + "y": -0.0007078507839573184, + "z": -0.00001326419637063255 + }, + "angle": { + "x": 2.6042127598076104e-7, + "y": -0.00001302199769010977, + "z": 0.00002671535069812095 + } + }, + { + "id": "n631", + "parent": "11", + "degrees_of_freedom": [ + 3786, + 3787, + 3788, + 3789, + 3790, + 3791 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 7.142857142857142, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003791662963401475, + "y": -0.000681633675121826, + "z": 0.000012893614957581214 + }, + "angle": { + "x": -0.0000011650067960263437, + "y": -0.000012481555895393834, + "z": 4.562713275567715e-7 + } + }, + { + "id": "n632", + "parent": "11", + "degrees_of_freedom": [ + 3792, + 3793, + 3794, + 3795, + 3796, + 3797 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 7.979694910895579, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000026050158199598664, + "y": -0.0007046439497747525, + "z": 0.000037101572187545916 + }, + "angle": { + "x": 0.000002338100165379813, + "y": -0.000010980525070601215, + "z": -0.000023223217846190517 + } + }, + { + "id": "n633", + "parent": "11", + "degrees_of_freedom": [ + 3798, + 3799, + 3800, + 3801, + 3802, + 3803 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000018273721125526622, + "y": -0.0007619828720388762, + "z": 0.000051260077165333036 + }, + "angle": { + "x": 6.599219269578825e-7, + "y": -0.000015472791093091283, + "z": 0.000003176564990757812 + } + }, + { + "id": "n634", + "parent": "11", + "degrees_of_freedom": [ + 3804, + 3805, + 3806, + 3807, + 3808, + 3809 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 12.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003630052792943106, + "y": -0.0008215618411563436, + "z": 0.000039522135612341424 + }, + "angle": { + "x": 0.0000013353600197092297, + "y": -0.000017544277191430928, + "z": 0.00002468495523153984 + } + }, + { + "id": "n635", + "parent": "11", + "degrees_of_freedom": [ + 3810, + 3811, + 3812, + 3813, + 3814, + 3815 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000043976996670010534, + "y": -0.0006480527038710697, + "z": 0.0000030593025820241603 + }, + "angle": { + "x": 0.00000722408737024083, + "y": -0.000007561802787716606, + "z": 0.000013689463036282057 + } + }, + { + "id": "n636", + "parent": "11", + "degrees_of_freedom": [ + 3816, + 3817, + 3818, + 3819, + 3820, + 3821 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007267387839559201, + "y": -0.0006513104011471472, + "z": 0.00000534163355663376 + }, + "angle": { + "x": 0.00037034341244163437, + "y": -0.000006701885478295481, + "z": 0.0001477019651297865 + } + }, + { + "id": "n637", + "parent": "11", + "degrees_of_freedom": [ + 3822, + 3823, + 3824, + 3825, + 3826, + 3827 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.0001267901252814751, + "y": -0.0009798166070734049, + "z": 0.00010002379059249781 + }, + "angle": { + "x": 0.0000026906523557149297, + "y": -0.00002209021507360671, + "z": -0.0000030832652665293085 + } + }, + { + "id": "n638", + "parent": "11", + "degrees_of_freedom": [ + 3828, + 3829, + 3830, + 3831, + 3832, + 3833 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001577196625094346, + "y": -0.0008004889420411364, + "z": 0.0001308866422665596 + }, + "angle": { + "x": 0.0000069856041608091565, + "y": -0.000014396831007963245, + "z": 0.000003714404944721476 + } + }, + { + "id": "n639", + "parent": "11", + "degrees_of_freedom": [ + 3834, + 3835, + 3836, + 3837, + 3838, + 3839 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00013932447046578528, + "y": -0.0007916446203963041, + "z": 0.00013098065916301787 + }, + "angle": { + "x": 0.0000036846410466482427, + "y": -0.000029021442656364436, + "z": 0.000015551536306995396 + } + }, + { + "id": "n640", + "parent": "11", + "degrees_of_freedom": [ + 3840, + 3841, + 3842, + 3843, + 3844, + 3845 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.020305089104422, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015068114745210167, + "y": -0.0008486185868662292, + "z": 0.00011554440600972538 + }, + "angle": { + "x": -0.0000316027182028959, + "y": -0.000042146975999611506, + "z": 0.000018713556140337672 + } + }, + { + "id": "n641", + "parent": "11", + "degrees_of_freedom": [ + 3846, + 3847, + 3848, + 3849, + 3850, + 3851 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.857142857142858, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016683362768969795, + "y": -0.0008541572525068364, + "z": 0.00010315061731941465 + }, + "angle": { + "x": 0.000004257745556480001, + "y": -0.00001736689669888968, + "z": 0.000008473972829960862 + } + }, + { + "id": "n642", + "parent": "11", + "degrees_of_freedom": [ + 3852, + 3853, + 3854, + 3855, + 3856, + 3857 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 12.020305089104422, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000861406344452273, + "y": -0.0008380805475859791, + "z": 0.00008940899851265 + }, + "angle": { + "x": 0.000032760167035982456, + "y": 0.000016714402486913287, + "z": 0.000019045039297081907 + } + }, + { + "id": "n643", + "parent": "11", + "degrees_of_freedom": [ + 3858, + 3859, + 3860, + 3861, + 3862, + 3863 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000057382392187931064, + "y": -0.0007748299913447126, + "z": 0.00006751240898592015 + }, + "angle": { + "x": 0.0000036036823386189786, + "y": 3.4178382272319284e-7, + "z": 0.000011778029247153124 + } + }, + { + "id": "n644", + "parent": "11", + "degrees_of_freedom": [ + 3864, + 3865, + 3866, + 3867, + 3868, + 3869 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.979694910895579, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000028052098684275566, + "y": -0.0007171457203182305, + "z": 0.0000764410044434224 + }, + "angle": { + "x": -0.00002499608702874634, + "y": -0.0001213885543344872, + "z": 0.000056294630459498606 + } + }, + { + "id": "n645", + "parent": "11", + "degrees_of_freedom": [ + 3870, + 3871, + 3872, + 3873, + 3874, + 3875 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.142857142857142, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000054021840749655676, + "y": -0.0007113120587006392, + "z": 0.00008596954968779018 + }, + "angle": { + "x": 0.000005567870049536582, + "y": -0.000011312879052263982, + "z": 0.000018855455589234468 + } + }, + { + "id": "n646", + "parent": "11", + "degrees_of_freedom": [ + 3876, + 3877, + 3878, + 3879, + 3880, + 3881 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 7.979694910895578, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007939528834317622, + "y": -0.0007285754100779988, + "z": 0.00010193222939501226 + }, + "angle": { + "x": 0.00004027718433929884, + "y": 0.00010840354634721974, + "z": 0.00006266007327680621 + } + }, + { + "id": "n647", + "parent": "11", + "degrees_of_freedom": [ + 3882, + 3883, + 3884, + 3885, + 3886, + 3887 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00021690112019111235, + "y": -0.0009773281221627252, + "z": 0.000004233302893278968 + }, + "angle": { + "x": 0.0000010879984298294665, + "y": -0.000032706693644406136, + "z": 0.000022328134002027052 + } + }, + { + "id": "n648", + "parent": "11", + "degrees_of_freedom": [ + 3888, + 3889, + 3890, + 3891, + 3892, + 3893 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00013351119394371181, + "y": -0.0008587921118189218, + "z": 0.00005298757517196063 + }, + "angle": { + "x": -0.000002347769984687431, + "y": -0.000027772762388213068, + "z": 0.000016800656030074707 + } + }, + { + "id": "n649", + "parent": "11", + "degrees_of_freedom": [ + 3894, + 3895, + 3896, + 3897, + 3898, + 3899 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000165860379917627, + "y": -0.0009519300784791598, + "z": 0.00004227874317337909 + }, + "angle": { + "x": -0.00021674803492041845, + "y": -0.00002545319529610227, + "z": 0.00009358821784762415 + } + }, + { + "id": "n650", + "parent": "11", + "degrees_of_freedom": [ + 3900, + 3901, + 3902, + 3903, + 3904, + 3905 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018525464618479598, + "y": -0.0009936198129760628, + "z": 0.000003660646759428591 + }, + "angle": { + "x": 0.0000206520967361177, + "y": -0.000020219161336247416, + "z": 0.000010640333013609467 + } + }, + { + "id": "n651", + "parent": "11", + "degrees_of_freedom": [ + 3906, + 3907, + 3908, + 3909, + 3910, + 3911 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 15, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016888669078719804, + "y": -0.0010031333606799076, + "z": -0.00003156395512626349 + }, + "angle": { + "x": 0.00007296247919512162, + "y": -0.000021692413018400498, + "z": 0.000029013092660982347 + } + }, + { + "id": "n652", + "parent": "11", + "degrees_of_freedom": [ + 3912, + 3913, + 3914, + 3915, + 3916, + 3917 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001413432530572752, + "y": -0.001015517454826023, + "z": -0.00004214281422392021 + }, + "angle": { + "x": 6.790512077767984e-7, + "y": -0.00002698454502628257, + "z": 0.000002593032455045435 + } + }, + { + "id": "n653", + "parent": "11", + "degrees_of_freedom": [ + 3918, + 3919, + 3920, + 3921, + 3922, + 3923 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 15, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011194029531289883, + "y": -0.001000635813737082, + "z": -0.00003149993328926776 + }, + "angle": { + "x": -0.00010283816051827457, + "y": -0.00002157629559316082, + "z": 0.000038767606287445273 + } + }, + { + "id": "n654", + "parent": "11", + "degrees_of_freedom": [ + 3924, + 3925, + 3926, + 3927, + 3928, + 3929 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009244455799668007, + "y": -0.0009955047619368712, + "z": 0.0000032059724089688856 + }, + "angle": { + "x": -0.000019533068154992813, + "y": -0.000019622456384825828, + "z": 0.000008753732018947822 + } + }, + { + "id": "n655", + "parent": "11", + "degrees_of_freedom": [ + 3930, + 3931, + 3932, + 3933, + 3934, + 3935 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010424943382803092, + "y": -0.0009576617587720041, + "z": 0.00004074175062140582 + }, + "angle": { + "x": 0.0001868195979710918, + "y": -0.000023835973572605595, + "z": 0.00008269580222584328 + } + }, + { + "id": "n656", + "parent": "11", + "degrees_of_freedom": [ + 3936, + 3937, + 3938, + 3939, + 3940, + 3941 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 12.857142857142858, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001587420014965753, + "y": -0.0008312174999179588, + "z": 0.00004891308597401643 + }, + "angle": { + "x": -0.000009766437220760894, + "y": -0.00000494096041837655, + "z": -0.00002558008713812767 + } + }, + { + "id": "n657", + "parent": "11", + "degrees_of_freedom": [ + 3942, + 3943, + 3944, + 3945, + 3946, + 3947 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 12.020305089104422, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00017203479705413217, + "y": -0.0007760236340349649, + "z": 0.00004710374393108816 + }, + "angle": { + "x": 0.000053949613616455995, + "y": 0.000021451064792586344, + "z": -0.000018301141905770964 + } + }, + { + "id": "n658", + "parent": "11", + "degrees_of_freedom": [ + 3948, + 3949, + 3950, + 3951, + 3952, + 3953 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018641618262285012, + "y": -0.0007430782351280648, + "z": -0.000043939859495756495 + }, + "angle": { + "x": 0.000019303178697577584, + "y": -0.00006219281398645695, + "z": -0.0000016379835434942538 + } + }, + { + "id": "n659", + "parent": "11", + "degrees_of_freedom": [ + 3954, + 3955, + 3956, + 3957, + 3958, + 3959 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 7.979694910895579, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00017870868616486527, + "y": -0.0007129401843394005, + "z": -0.000030892844782612165 + }, + "angle": { + "x": 0.000010345740356498396, + "y": -0.000040567751248429926, + "z": 0.000014920306155683238 + } + }, + { + "id": "n660", + "parent": "11", + "degrees_of_freedom": [ + 3960, + 3961, + 3962, + 3963, + 3964, + 3965 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 7.142857142857142, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018040879601665538, + "y": -0.0007339365625089572, + "z": 0.000042408685364624114 + }, + "angle": { + "x": -0.00002499603838767521, + "y": -0.00002592870127083138, + "z": -0.000025090419092060482 + } + }, + { + "id": "n661", + "parent": "11", + "degrees_of_freedom": [ + 3966, + 3967, + 3968, + 3969, + 3970, + 3971 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 7.979694910895579, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016956309635344417, + "y": -0.0007895781285300828, + "z": 0.00007387491762161196 + }, + "angle": { + "x": 0.000013489053052629068, + "y": -0.000009987623909863612, + "z": -0.000018280875434315735 + } + }, + { + "id": "n662", + "parent": "11", + "degrees_of_freedom": [ + 3972, + 3973, + 3974, + 3975, + 3976, + 3977 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015581721813370854, + "y": -0.0008250748906312815, + "z": 0.00010948495816858439 + }, + "angle": { + "x": -0.00000168454615676927, + "y": -0.00004661995776064666, + "z": -0.000002044940656661303 + } + }, + { + "id": "n663", + "parent": "11", + "degrees_of_freedom": [ + 3978, + 3979, + 3980, + 3981, + 3982, + 3983 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 12.020305089104422, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016009934803291038, + "y": -0.0008557196981057977, + "z": 0.00006706827076286467 + }, + "angle": { + "x": -0.00002085031003283396, + "y": -3.4988907900512054e-7, + "z": 0.000011918429374168675 + } + }, + { + "id": "n664", + "parent": "11", + "degrees_of_freedom": [ + 3984, + 3985, + 3986, + 3987, + 3988, + 3989 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 15, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001646313521226317, + "y": -0.0009468577592533898, + "z": 0.000021366135673681703 + }, + "angle": { + "x": 0.0000012328107368366668, + "y": -0.00002826513995083272, + "z": 0.000010549673709559814 + } + }, + { + "id": "n665", + "parent": "11", + "degrees_of_freedom": [ + 3990, + 3991, + 3992, + 3993, + 3994, + 3995 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019494547597001462, + "y": -0.0010046761134021448, + "z": 0.00001053397058623701 + }, + "angle": { + "x": -0.00002061852912041297, + "y": -0.00001976260839129631, + "z": 0.000002837266119335651 + } + }, + { + "id": "n666", + "parent": "11", + "degrees_of_freedom": [ + 3996, + 3997, + 3998, + 3999, + 4000, + 4001 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 15, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018966055952549638, + "y": -0.0009390765393149388, + "z": -0.00006618400173984148 + }, + "angle": { + "x": 0.00033155963701186414, + "y": -0.000025138881705355105, + "z": -0.00015355374419161964 + } + }, + { + "id": "n667", + "parent": "11", + "degrees_of_freedom": [ + 4002, + 4003, + 4004, + 4005, + 4006, + 4007 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 15, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015775532851469297, + "y": -0.0007390376748727899, + "z": -0.00007797368479260105 + }, + "angle": { + "x": 0.000005104195217312426, + "y": -0.000028444519530542983, + "z": -0.00003614994876224866 + } + }, + { + "id": "n668", + "parent": "11", + "degrees_of_freedom": [ + 4008, + 4009, + 4010, + 4011, + 4012, + 4013 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 15, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012628041978170735, + "y": -0.0009521410327222976, + "z": -0.00006680788186152758 + }, + "angle": { + "x": -0.0004153603163166422, + "y": -0.00002370864227738144, + "z": -0.00018282219399990224 + } + }, + { + "id": "n669", + "parent": "11", + "degrees_of_freedom": [ + 4014, + 4015, + 4016, + 4017, + 4018, + 4019 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00013091507313796137, + "y": -0.0010096070933134373, + "z": 0.000011473947472022241 + }, + "angle": { + "x": -0.00019418558861843138, + "y": -0.000022628175885699784, + "z": 0.00007962729369186373 + } + }, + { + "id": "n670", + "parent": "11", + "degrees_of_freedom": [ + 4020, + 4021, + 4022, + 4023, + 4024, + 4025 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00027376264813196356, + "y": -0.0011604676975966123, + "z": 0.00011992717670899164 + }, + "angle": { + "x": 0.000013985433699298907, + "y": -0.00004378686402615451, + "z": -0.000006483013392386288 + } + }, + { + "id": "n671", + "parent": "11", + "degrees_of_freedom": [ + 4026, + 4027, + 4028, + 4029, + 4030, + 4031 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00030566481780229033, + "y": -0.0010731441823569928, + "z": 0.00006243404946625518 + }, + "angle": { + "x": -0.0000011082907168222814, + "y": -0.00001526340078520227, + "z": -0.0000033466111021173006 + } + }, + { + "id": "n672", + "parent": "11", + "degrees_of_freedom": [ + 4032, + 4033, + 4034, + 4035, + 4036, + 4037 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012418626999701103, + "y": -0.0010667158326418322, + "z": 0.00008817411289549929 + }, + "angle": { + "x": 0.000003582670702056391, + "y": -0.000014114366800129526, + "z": -0.000004533344718835791 + } + }, + { + "id": "n673", + "parent": "11", + "degrees_of_freedom": [ + 4038, + 4039, + 4040, + 4041, + 4042, + 4043 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018551201465011595, + "y": -0.0010746103628034708, + "z": 0.00009243926751661754 + }, + "angle": { + "x": 0.0000045412426445197715, + "y": 0.00002697734316041815, + "z": -0.000013107952771224072 + } + }, + { + "id": "n674", + "parent": "11", + "degrees_of_freedom": [ + 4044, + 4045, + 4046, + 4047, + 4048, + 4049 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 22.020305089104422, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019514366004065473, + "y": -0.001100419259399614, + "z": 0.00009388734283964784 + }, + "angle": { + "x": -0.0000081277784100228, + "y": -0.00006586634266112186, + "z": 0.00001821955365437027 + } + }, + { + "id": "n675", + "parent": "11", + "degrees_of_freedom": [ + 4050, + 4051, + 4052, + 4053, + 4054, + 4055 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 22.857142857142858, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00022980779788690992, + "y": -0.001099858045020521, + "z": 0.00009059793292067099 + }, + "angle": { + "x": 0.000005432158721031081, + "y": -0.000026820256430303614, + "z": 0.0000029169140204851906 + } + }, + { + "id": "n676", + "parent": "11", + "degrees_of_freedom": [ + 4056, + 4057, + 4058, + 4059, + 4060, + 4061 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 22.020305089104422, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002978080852658872, + "y": -0.001089208609587591, + "z": 0.00008114955455136704 + }, + "angle": { + "x": 0.000022687652513233666, + "y": 0.00009227238050159303, + "z": 0.00004352474823915149 + } + }, + { + "id": "n677", + "parent": "11", + "degrees_of_freedom": [ + 4062, + 4063, + 4064, + 4065, + 4066, + 4067 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00032124784959557405, + "y": -0.001056797917106819, + "z": 0.00006225563565646764 + }, + "angle": { + "x": 0.000004237812975738461, + "y": -0.00007448483248802203, + "z": -0.000016930636868931116 + } + }, + { + "id": "n678", + "parent": "11", + "degrees_of_freedom": [ + 4068, + 4069, + 4070, + 4071, + 4072, + 4073 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 17.979694910895578, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00022002405160163744, + "y": -0.0010314542105823161, + "z": 0.00006544417086054956 + }, + "angle": { + "x": -0.00001260744312793592, + "y": 0.00024398672000456968, + "z": -0.00012802961266499547 + } + }, + { + "id": "n679", + "parent": "11", + "degrees_of_freedom": [ + 4074, + 4075, + 4076, + 4077, + 4078, + 4079 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 17.142857142857142, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000012940454354216515, + "y": -0.0010303479343179022, + "z": 0.00006969289681369295 + }, + "angle": { + "x": 0.00000430367270113419, + "y": -0.000020687306629346446, + "z": -0.000032955471639243115 + } + }, + { + "id": "n680", + "parent": "11", + "degrees_of_freedom": [ + 4080, + 4081, + 4082, + 4083, + 4084, + 4085 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 17.979694910895578, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001307289693356394, + "y": -0.0010412250223825424, + "z": 0.00007705442313069363 + }, + "angle": { + "x": 0.000018936039255619093, + "y": -0.0002480837597853231, + "z": -0.0001118544882916457 + } + }, + { + "id": "n681", + "parent": "11", + "degrees_of_freedom": [ + 4086, + 4087, + 4088, + 4089, + 4090, + 4091 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0003555741715125189, + "y": -0.001259593675040127, + "z": -0.000009853113765925529 + }, + "angle": { + "x": -0.00011077691280646927, + "y": -0.00005040432444289686, + "z": -0.00004871768702417753 + } + }, + { + "id": "n682", + "parent": "11", + "degrees_of_freedom": [ + 4092, + 4093, + 4094, + 4095, + 4096, + 4097 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00010493586107488335, + "y": -0.0011512977876780353, + "z": -0.00002030195261157454 + }, + "angle": { + "x": 5.497802211312379e-7, + "y": -0.00004068591751771297, + "z": -0.0000024221774224987583 + } + }, + { + "id": "n683", + "parent": "11", + "degrees_of_freedom": [ + 4098, + 4099, + 4100, + 4101, + 4102, + 4103 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 25, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00023435532677129175, + "y": -0.0010127920428985241, + "z": 0.000055525313702335614 + }, + "angle": { + "x": -0.00002017115857952672, + "y": -0.00003153835683194143, + "z": 0.00003298487881884839 + } + }, + { + "id": "n684", + "parent": "11", + "degrees_of_freedom": [ + 4104, + 4105, + 4106, + 4107, + 4108, + 4109 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 25, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020160175030143593, + "y": -0.001160525235598385, + "z": 0.00003967305622454446 + }, + "angle": { + "x": -0.0002329244389635223, + "y": -0.000033641471291148555, + "z": 0.00010820455187851679 + } + }, + { + "id": "n685", + "parent": "11", + "degrees_of_freedom": [ + 4110, + 4111, + 4112, + 4113, + 4114, + 4115 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017125073706814327, + "y": -0.0012217186125439879, + "z": -0.000014952525958152113 + }, + "angle": { + "x": 0.00008890489094314836, + "y": -0.00003137958052800128, + "z": -0.000005579144937697516 + } + }, + { + "id": "n686", + "parent": "11", + "degrees_of_freedom": [ + 4116, + 4117, + 4118, + 4119, + 4120, + 4121 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 25, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019072678905842955, + "y": -0.0011341139446355165, + "z": -0.00007443366087610311 + }, + "angle": { + "x": -0.000309480913718554, + "y": -0.00003643924606315147, + "z": -0.0001464300675330467 + } + }, + { + "id": "n687", + "parent": "11", + "degrees_of_freedom": [ + 4122, + 4123, + 4124, + 4125, + 4126, + 4127 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 25, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002242723688223865, + "y": -0.0009226161871789043, + "z": -0.00009186204884169941 + }, + "angle": { + "x": -0.000020170892903996955, + "y": -0.00003279917028873824, + "z": -0.000044143624924289305 + } + }, + { + "id": "n688", + "parent": "11", + "degrees_of_freedom": [ + 4128, + 4129, + 4130, + 4131, + 4132, + 4133 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 25, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002609973297879645, + "y": -0.0012156169536284241, + "z": -0.00007723163501063048 + }, + "angle": { + "x": 0.00040590751368408393, + "y": -0.00003635769480712544, + "z": -0.00019478514512643214 + } + }, + { + "id": "n689", + "parent": "11", + "degrees_of_freedom": [ + 4134, + 4135, + 4136, + 4137, + 4138, + 4139 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00029063341526768514, + "y": -0.001336981714557005, + "z": -0.00001792412822793609 + }, + "angle": { + "x": -0.0001292469592618161, + "y": -0.000032947110888398075, + "z": -0.0000055793234773876264 + } + }, + { + "id": "n690", + "parent": "11", + "degrees_of_freedom": [ + 4140, + 4141, + 4142, + 4143, + 4144, + 4145 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 25, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002695065096820886, + "y": -0.0012420288565537952, + "z": 0.000041217688847485314 + }, + "angle": { + "x": 0.000336927874929581, + "y": -0.000034392702768107616, + "z": 0.0001592383909734574 + } + }, + { + "id": "n691", + "parent": "11", + "degrees_of_freedom": [ + 4146, + 4147, + 4148, + 4149, + 4150, + 4151 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 17.142857142857142, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002992252405147336, + "y": -0.0010799243831667127, + "z": 0.0001478273081498841 + }, + "angle": { + "x": -0.00020262853000451253, + "y": -0.000024252445746232372, + "z": 0.000015335330500162477 + } + }, + { + "id": "n692", + "parent": "11", + "degrees_of_freedom": [ + 4152, + 4153, + 4154, + 4155, + 4156, + 4157 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 17.979694910895578, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00029786910154920023, + "y": -0.0010661555576402992, + "z": 0.00002725743715916954 + }, + "angle": { + "x": 0.00008159550200474242, + "y": 0.00009347699543780576, + "z": -0.00000742137234473614 + } + }, + { + "id": "n693", + "parent": "11", + "degrees_of_freedom": [ + 4158, + 4159, + 4160, + 4161, + 4162, + 4163 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0003018418494219059, + "y": -0.0010781807567705718, + "z": 0.0001138802284337926 + }, + "angle": { + "x": -0.0000031040402200205855, + "y": -0.00011100584456904611, + "z": 0.0000021424277804206357 + } + }, + { + "id": "n694", + "parent": "11", + "degrees_of_freedom": [ + 4164, + 4165, + 4166, + 4167, + 4168, + 4169 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 22.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000286941518855294, + "y": -0.0010964943452530685, + "z": 0.000014715204130963117 + }, + "angle": { + "x": -0.00005902877028196055, + "y": 0.00002400839589936183, + "z": 0.000016003358154091788 + } + }, + { + "id": "n695", + "parent": "11", + "degrees_of_freedom": [ + 4170, + 4171, + 4172, + 4173, + 4174, + 4175 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 22.857142857142858, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002746534292466765, + "y": -0.0011367450399467883, + "z": 0.000013822028929688215 + }, + "angle": { + "x": -0.0001227627940297442, + "y": 0.0000504079348651076, + "z": 0.000017504420766313082 + } + }, + { + "id": "n696", + "parent": "11", + "degrees_of_freedom": [ + 4176, + 4177, + 4178, + 4179, + 4180, + 4181 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 22.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002742188482698102, + "y": -0.0011525665756855527, + "z": 0.00021839400898693471 + }, + "angle": { + "x": -0.000011047739332128806, + "y": 0.00009668183707368555, + "z": -0.000008728516943468858 + } + }, + { + "id": "n697", + "parent": "11", + "degrees_of_freedom": [ + 4182, + 4183, + 4184, + 4185, + 4186, + 4187 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00027435214846206844, + "y": -0.0011362975814681652, + "z": 0.00032162066099523066 + }, + "angle": { + "x": 0.00007155640006798885, + "y": 0.00029610556396984225, + "z": 0.000004570967462240598 + } + }, + { + "id": "n698", + "parent": "11", + "degrees_of_freedom": [ + 4188, + 4189, + 4190, + 4191, + 4192, + 4193 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 17.979694910895578, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00029038025412646187, + "y": -0.001115125247636555, + "z": -0.00007073744104605002 + }, + "angle": { + "x": 0.00028852086980612145, + "y": -0.0002276934387304144, + "z": 0.000013502864478130975 + } + }, + { + "id": "n699", + "parent": "11", + "degrees_of_freedom": [ + 4194, + 4195, + 4196, + 4197, + 4198, + 4199 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 22.857142857142858, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000976874789799877, + "y": -0.0011004686395498695, + "z": -0.00001710604909239605 + }, + "angle": { + "x": 0.0000049929329959249875, + "y": -0.00002912166542302559, + "z": 2.3821365251692814e-7 + } + }, + { + "id": "n700", + "parent": "11", + "degrees_of_freedom": [ + 4200, + 4201, + 4202, + 4203, + 4204, + 4205 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 22.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008400398059762148, + "y": -0.001089048837645458, + "z": -0.00007859861030124045 + }, + "angle": { + "x": -0.000008491854301359757, + "y": -0.00003244961142796834, + "z": -0.000013692590533307552 + } + }, + { + "id": "n701", + "parent": "11", + "degrees_of_freedom": [ + 4206, + 4207, + 4208, + 4209, + 4210, + 4211 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007380376070969493, + "y": -0.0010589784353085554, + "z": -0.0000879673438851819 + }, + "angle": { + "x": -0.000002542197507716694, + "y": -0.00001695627959132544, + "z": -0.00000124089453593941 + } + }, + { + "id": "n702", + "parent": "11", + "degrees_of_freedom": [ + 4212, + 4213, + 4214, + 4215, + 4216, + 4217 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 17.979694910895578, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008062834402568878, + "y": -0.0010290350270955038, + "z": -0.00006895676612784733 + }, + "angle": { + "x": 0.000001522409351810207, + "y": -0.000025639517335211744, + "z": 0.000014311006216209795 + } + }, + { + "id": "n703", + "parent": "11", + "degrees_of_freedom": [ + 4218, + 4219, + 4220, + 4221, + 4222, + 4223 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 17.142857142857142, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009163910340325999, + "y": -0.0010151356864879558, + "z": -0.00001711697814513917 + }, + "angle": { + "x": -0.0000030889895714266293, + "y": -0.000024705114862833134, + "z": 2.111640277628131e-7 + } + }, + { + "id": "n704", + "parent": "11", + "degrees_of_freedom": [ + 4224, + 4225, + 4226, + 4227, + 4228, + 4229 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 17.979694910895578, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010340267773778662, + "y": -0.0010291112933678763, + "z": 0.00002955283288081587 + }, + "angle": { + "x": 1.379811076377721e-7, + "y": -0.0000223927609611123, + "z": -0.000015647561016563383 + } + }, + { + "id": "n705", + "parent": "11", + "degrees_of_freedom": [ + 4230, + 4231, + 4232, + 4233, + 4234, + 4235 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011596454755586212, + "y": -0.0010602667450991682, + "z": 0.0000487973335038364 + }, + "angle": { + "x": 0.000001659090335413265, + "y": -0.000019126695890232116, + "z": -0.000002017077831704478 + } + }, + { + "id": "n706", + "parent": "11", + "degrees_of_freedom": [ + 4236, + 4237, + 4238, + 4239, + 4240, + 4241 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 22.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011091797719416072, + "y": -0.0010888019218244541, + "z": 0.00003602994859015756 + }, + "angle": { + "x": 0.0000046341895877245995, + "y": -0.000026715435081278694, + "z": 0.000012814873298440878 + } + }, + { + "id": "n707", + "parent": "11", + "degrees_of_freedom": [ + 4242, + 4243, + 4244, + 4245, + 4246, + 4247 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 15, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004630782041465264, + "y": -0.0009625605769460102, + "z": 0.00002613932821280367 + }, + "angle": { + "x": 0.00005301959748847079, + "y": -0.000020919365253061616, + "z": 0.00002546642567099497 + } + }, + { + "id": "n708", + "parent": "11", + "degrees_of_freedom": [ + 4248, + 4249, + 4250, + 4251, + 4252, + 4253 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 15, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003857888494238099, + "y": -0.0009626483703974201, + "z": -0.00004831282313843157 + }, + "angle": { + "x": 0.00008615349472051544, + "y": -0.000021992991592693676, + "z": -0.00003724443925163037 + } + }, + { + "id": "n709", + "parent": "11", + "degrees_of_freedom": [ + 4254, + 4255, + 4256, + 4257, + 4258, + 4259 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000025866035936545043, + "y": -0.0009588875482255258, + "z": -0.00004792465956915987 + }, + "angle": { + "x": -0.00006340772265045716, + "y": -0.000021666000370005583, + "z": -0.00002862114117229659 + } + }, + { + "id": "n710", + "parent": "11", + "degrees_of_freedom": [ + 4260, + 4261, + 4262, + 4263, + 4264, + 4265 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00005101645135249504, + "y": -0.0011544648041101225, + "z": 0.00011923343920702248 + }, + "angle": { + "x": 0.000006302230636836283, + "y": -0.000041919280155767416, + "z": 7.802557943659956e-7 + } + }, + { + "id": "n711", + "parent": "11", + "degrees_of_freedom": [ + 4266, + 4267, + 4268, + 4269, + 4270, + 4271 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004897776084257313, + "y": -0.0010641116476582681, + "z": 0.00010578650993299132 + }, + "angle": { + "x": 0.000004583650128927168, + "y": -0.000016354320819290577, + "z": -0.0000023720187693370002 + } + }, + { + "id": "n712", + "parent": "11", + "degrees_of_freedom": [ + 4272, + 4273, + 4274, + 4275, + 4276, + 4277 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001905997354340585, + "y": -0.0010661258779842994, + "z": 0.0001104001638149604 + }, + "angle": { + "x": 0.000003748583706265547, + "y": -0.000015033080459765984, + "z": -0.0000030080257680603224 + } + }, + { + "id": "n713", + "parent": "11", + "degrees_of_freedom": [ + 4278, + 4279, + 4280, + 4281, + 4282, + 4283 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 22.020305089104422, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000020385939056922716, + "y": -0.0010922405857426393, + "z": 0.00010925500337806226 + }, + "angle": { + "x": -0.000010364336524584418, + "y": 0.00002569439207131791, + "z": -0.00001917992574288671 + } + }, + { + "id": "n714", + "parent": "11", + "degrees_of_freedom": [ + 4284, + 4285, + 4286, + 4287, + 4288, + 4289 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 22.857142857142858, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006648052298467534, + "y": -0.0010956261707810307, + "z": 0.00010572712824610784 + }, + "angle": { + "x": 0.000002265041427258554, + "y": -0.000026210185597032573, + "z": -0.0000026015175019454394 + } + }, + { + "id": "n715", + "parent": "11", + "degrees_of_freedom": [ + 4290, + 4291, + 4292, + 4293, + 4294, + 4295 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 22.020305089104422, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010119082022470959, + "y": -0.001087854303806167, + "z": 0.00009905844130981413 + }, + "angle": { + "x": 0.000018123182478449796, + "y": -0.000007924981942357375, + "z": 0.0000020906370802527552 + } + }, + { + "id": "n716", + "parent": "11", + "degrees_of_freedom": [ + 4296, + 4297, + 4298, + 4299, + 4300, + 4301 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001099739750027059, + "y": -0.0010565617205152784, + "z": 0.00008410570683715655 + }, + "angle": { + "x": 0.000003879782987233082, + "y": -0.00003012876090917901, + "z": -0.0000075322404232893035 + } + }, + { + "id": "n717", + "parent": "11", + "degrees_of_freedom": [ + 4302, + 4303, + 4304, + 4305, + 4306, + 4307 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 17.979694910895578, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006833132512641108, + "y": -0.001030211774076165, + "z": 0.00008601476201438834 + }, + "angle": { + "x": -0.000011678563644372003, + "y": 0.00007078184241993843, + "z": -0.00004143689517318673 + } + }, + { + "id": "n718", + "parent": "11", + "degrees_of_freedom": [ + 4308, + 4309, + 4310, + 4311, + 4312, + 4313 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 17.142857142857142, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00001869713265579991, + "y": -0.0010258647553896597, + "z": 0.00008957229653375606 + }, + "angle": { + "x": 0.000002070540358884075, + "y": -0.000018951707122867722, + "z": -0.000007938661084567718 + } + }, + { + "id": "n719", + "parent": "11", + "degrees_of_freedom": [ + 4314, + 4315, + 4316, + 4317, + 4318, + 4319 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 17.979694910895578, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000014998037355995173, + "y": -0.0010343035272846743, + "z": 0.0000958377248103294 + }, + "angle": { + "x": 0.000018290146872500496, + "y": -0.000059784019098545095, + "z": -0.000020602432037018605 + } + }, + { + "id": "n720", + "parent": "11", + "degrees_of_freedom": [ + 4320, + 4321, + 4322, + 4323, + 4324, + 4325 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.00009254823185375533, + "y": -0.0011465946736811574, + "z": -0.000020785182755242365 + }, + "angle": { + "x": -0.0000028765883499370256, + "y": -0.000040830160301624846, + "z": 0.0000031775747068112875 + } + }, + { + "id": "n721", + "parent": "11", + "degrees_of_freedom": [ + 4326, + 4327, + 4328, + 4329, + 4330, + 4331 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00001182800109187635, + "y": -0.0010226370221324756, + "z": 0.00004566802869831385 + }, + "angle": { + "x": 9.053794617559746e-9, + "y": -0.000025169427920201863, + "z": 0.00002578106149350916 + } + }, + { + "id": "n722", + "parent": "11", + "degrees_of_freedom": [ + 4332, + 4333, + 4334, + 4335, + 4336, + 4337 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 25, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000016546855080078406, + "y": -0.001169864014335878, + "z": 0.00003314236298844231 + }, + "angle": { + "x": -0.00020073451309346173, + "y": -0.000033118026899740163, + "z": 0.00009669604743758481 + } + }, + { + "id": "n723", + "parent": "11", + "degrees_of_freedom": [ + 4338, + 4339, + 4340, + 4341, + 4342, + 4343 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000043013804277981206, + "y": -0.0012306623776538474, + "z": -0.000019430662946047602 + }, + "angle": { + "x": 0.00006830868220510961, + "y": -0.000028851200974346244, + "z": 0.0000015162061347676662 + } + }, + { + "id": "n724", + "parent": "11", + "degrees_of_freedom": [ + 4344, + 4345, + 4346, + 4347, + 4348, + 4349 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 25, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002358488535198632, + "y": -0.0011771340891261572, + "z": -0.00007184333535759111 + }, + "angle": { + "x": -0.0002475282574373146, + "y": -0.00003146830897674644, + "z": -0.00011009040053519332 + } + }, + { + "id": "n725", + "parent": "11", + "degrees_of_freedom": [ + 4350, + 4351, + 4352, + 4353, + 4354, + 4355 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 2.0156976757553374e-7, + "y": -0.0010483518390720632, + "z": -0.00008696084045819224 + }, + "angle": { + "x": -2.3088991531985812e-7, + "y": -0.000025124387472461087, + "z": -0.00002259901620551451 + } + }, + { + "id": "n726", + "parent": "11", + "degrees_of_freedom": [ + 4356, + 4357, + 4358, + 4359, + 4360, + 4361 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 25, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000286471394392215, + "y": -0.0011778440521197505, + "z": -0.00007435031215813157 + }, + "angle": { + "x": 0.00016420553594116583, + "y": -0.000033639162849129866, + "z": -0.00008067753381072589 + } + }, + { + "id": "n727", + "parent": "11", + "degrees_of_freedom": [ + 4362, + 4363, + 4364, + 4365, + 4366, + 4367 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000055324063765118397, + "y": -0.0012312964501186457, + "z": -0.000021471713608289605 + }, + "angle": { + "x": -0.00006853063785016428, + "y": -0.00002879252576250663, + "z": 0.000001665854971115625 + } + }, + { + "id": "n728", + "parent": "11", + "degrees_of_freedom": [ + 4368, + 4369, + 4370, + 4371, + 4372, + 4373 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 25, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000035909066679514284, + "y": -0.0011700507185611554, + "z": 0.000030674797736551755 + }, + "angle": { + "x": 0.000260351446758056, + "y": -0.00003134332314459276, + "z": 0.00011788459832204558 + } + }, + { + "id": "n729", + "parent": "11", + "degrees_of_freedom": [ + 4374, + 4375, + 4376, + 4377, + 4378, + 4379 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 22.857142857142858, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008355319240081164, + "y": -0.001095718480591688, + "z": -0.000015151096543870376 + }, + "angle": { + "x": -0.0000029503384132066306, + "y": -0.000029392203992091227, + "z": 4.1446594863270857e-7 + } + }, + { + "id": "n730", + "parent": "11", + "degrees_of_freedom": [ + 4380, + 4381, + 4382, + 4383, + 4384, + 4385 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 22.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009644811481417311, + "y": -0.0010852834857620222, + "z": -0.00007052333631653695 + }, + "angle": { + "x": -0.000008907837120802806, + "y": -0.000029573048714231396, + "z": -0.000012242038712866696 + } + }, + { + "id": "n731", + "parent": "11", + "degrees_of_freedom": [ + 4386, + 4387, + 4388, + 4389, + 4390, + 4391 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009984334640643019, + "y": -0.0010572867199864357, + "z": -0.00007693292076476728 + }, + "angle": { + "x": -0.000003874513828572718, + "y": -0.000016809031650663343, + "z": 0.000002974606861194074 + } + }, + { + "id": "n732", + "parent": "11", + "degrees_of_freedom": [ + 4392, + 4393, + 4394, + 4395, + 4396, + 4397 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 17.979694910895578, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008526334579308209, + "y": -0.0010253045605401528, + "z": -0.000055209638862284356 + }, + "angle": { + "x": -4.0539903453577963e-7, + "y": -0.00002457171408261703, + "z": 0.000016612209937498043 + } + }, + { + "id": "n733", + "parent": "11", + "degrees_of_freedom": [ + 4398, + 4399, + 4400, + 4401, + 4402, + 4403 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 17.142857142857142, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007238344856308238, + "y": -0.001010133949379769, + "z": -0.000003928341357460274 + }, + "angle": { + "x": -0.0000021539635674927162, + "y": -0.000024812396834572265, + "z": 2.839949873136812e-7 + } + }, + { + "id": "n734", + "parent": "11", + "degrees_of_freedom": [ + 4404, + 4405, + 4406, + 4407, + 4408, + 4409 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 17.979694910895578, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006155540760637488, + "y": -0.0010228323773722235, + "z": 0.00004374790723992918 + }, + "angle": { + "x": -0.0000013113854712257205, + "y": -0.00002349842699222575, + "z": -0.000013537572913318861 + } + }, + { + "id": "n735", + "parent": "11", + "degrees_of_freedom": [ + 4410, + 4411, + 4412, + 4413, + 4414, + 4415 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000056645436165926195, + "y": -0.001051980277219562, + "z": 0.0000613213090183958 + }, + "angle": { + "x": 4.874411679585112e-7, + "y": -0.000020156634752782462, + "z": 0.000002290453030445187 + } + }, + { + "id": "n736", + "parent": "11", + "degrees_of_freedom": [ + 4416, + 4417, + 4418, + 4419, + 4420, + 4421 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 22.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006897462481658247, + "y": -0.001082777001960392, + "z": 0.00004515904179963537 + }, + "angle": { + "x": 0.000004173321968975976, + "y": -0.000030056094360093806, + "z": 0.000014644968204242036 + } + }, + { + "id": "n737", + "parent": "11", + "degrees_of_freedom": [ + 4422, + 4423, + 4424, + 4425, + 4426, + 4427 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 15, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010883997729113472, + "y": -0.0009998979375203771, + "z": -0.00003242112676789697 + }, + "angle": { + "x": 0.00006803892623262776, + "y": -0.00002207037347907057, + "z": -0.000021783568681775872 + } + }, + { + "id": "n738", + "parent": "11", + "degrees_of_freedom": [ + 4428, + 4429, + 4430, + 4431, + 4432, + 4433 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 15, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001735008454225925, + "y": -0.0009991333680975964, + "z": -0.00003222065377287166 + }, + "angle": { + "x": 0.00014457342440431537, + "y": -0.000019417144079738002, + "z": 0.000053588936746800824 + } + }, + { + "id": "n739", + "parent": "11", + "degrees_of_freedom": [ + 4434, + 4435, + 4436, + 4437, + 4438, + 4439 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.00018199981145071163, + "y": -0.0011746599305049819, + "z": 0.00011818436201058158 + }, + "angle": { + "x": -0.0000018798118401445101, + "y": -0.000034382947751589465, + "z": 0.000007010714221845026 + } + }, + { + "id": "n740", + "parent": "11", + "degrees_of_freedom": [ + 4440, + 4441, + 4442, + 4443, + 4444, + 4445 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00023752360507520596, + "y": -0.0011048203172412364, + "z": 0.00013382942739454464 + }, + "angle": { + "x": 0.000009582786951292041, + "y": -0.00001630788464018477, + "z": -0.000002473431285514716 + } + }, + { + "id": "n741", + "parent": "11", + "degrees_of_freedom": [ + 4446, + 4447, + 4448, + 4449, + 4450, + 4451 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00019762573270873369, + "y": -0.0010874082785707307, + "z": 0.00013394868547777431 + }, + "angle": { + "x": 0.0000033533948675797725, + "y": -0.000010734603185337353, + "z": 0.000006005756597384124 + } + }, + { + "id": "n742", + "parent": "11", + "degrees_of_freedom": [ + 4452, + 4453, + 4454, + 4455, + 4456, + 4457 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 22.020305089104422, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00020215023265478002, + "y": -0.0011138585764247295, + "z": 0.0001291027701138942 + }, + "angle": { + "x": -0.000013803563125263156, + "y": -0.00003760553975793869, + "z": 0.00001460919038151925 + } + }, + { + "id": "n743", + "parent": "11", + "degrees_of_freedom": [ + 4458, + 4459, + 4460, + 4461, + 4462, + 4463 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 22.857142857142858, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002062398959836305, + "y": -0.0011136467366105608, + "z": 0.00012351166939267609 + }, + "angle": { + "x": 0.000004305665691103423, + "y": -0.000024400238259004093, + "z": 0.000009043509577684636 + } + }, + { + "id": "n744", + "parent": "11", + "degrees_of_freedom": [ + 4464, + 4465, + 4466, + 4467, + 4468, + 4469 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 22.020305089104422, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010697509065191378, + "y": -0.001103659671208553, + "z": 0.00011564799626754479 + }, + "angle": { + "x": 0.00001765462256079885, + "y": 0.00003702438664665583, + "z": 0.00002986350211700329 + } + }, + { + "id": "n745", + "parent": "11", + "degrees_of_freedom": [ + 4470, + 4471, + 4472, + 4473, + 4474, + 4475 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006868878558141192, + "y": -0.0010712181734785617, + "z": 0.00010248471055427036 + }, + "angle": { + "x": 0.0000030701890589374234, + "y": -0.0000343932464995167, + "z": 0.0000037166631424435215 + } + }, + { + "id": "n746", + "parent": "11", + "degrees_of_freedom": [ + 4476, + 4477, + 4478, + 4479, + 4480, + 4481 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 17.979694910895578, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000879656522587402, + "y": -0.0010435561201711937, + "z": 0.00010456735430565868 + }, + "angle": { + "x": -0.000010972264535593195, + "y": 0.000019124039503968878, + "z": -0.000014307688581046213 + } + }, + { + "id": "n747", + "parent": "11", + "degrees_of_freedom": [ + 4482, + 4483, + 4484, + 4485, + 4486, + 4487 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 17.142857142857142, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001276708676099754, + "y": -0.001043505789813192, + "z": 0.0001082769476073841 + }, + "angle": { + "x": 0.000005452597712702027, + "y": -0.000020727728679741326, + "z": 6.78903986444237e-7 + } + }, + { + "id": "n748", + "parent": "11", + "degrees_of_freedom": [ + 4488, + 4489, + 4490, + 4491, + 4492, + 4493 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 17.979694910895578, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000175134995621031, + "y": -0.0010555011241468264, + "z": 0.00011679327622761561 + }, + "angle": { + "x": 0.000021533490388394648, + "y": -0.00003296031906061447, + "z": -0.000002749100971002015 + } + }, + { + "id": "n749", + "parent": "11", + "degrees_of_freedom": [ + 4494, + 4495, + 4496, + 4497, + 4498, + 4499 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00034117065258021655, + "y": -0.0012406000853322327, + "z": -0.0000321527448074255 + }, + "angle": { + "x": 0.00011260514506686288, + "y": -0.00005002154414969308, + "z": 0.000052045676729395165 + } + }, + { + "id": "n750", + "parent": "11", + "degrees_of_freedom": [ + 4500, + 4501, + 4502, + 4503, + 4504, + 4505 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00021088586496394304, + "y": -0.001054213597088506, + "z": 0.000050431798561922635 + }, + "angle": { + "x": 0.00002072186616504396, + "y": -0.00003203919861350526, + "z": 0.000018425064895716704 + } + }, + { + "id": "n751", + "parent": "11", + "degrees_of_freedom": [ + 4506, + 4507, + 4508, + 4509, + 4510, + 4511 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 25, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00024667947469164924, + "y": -0.001201364813983766, + "z": 0.00003583629743337432 + }, + "angle": { + "x": -0.0001767729113945232, + "y": -0.00003632903211468095, + "z": 0.00008825030615883281 + } + }, + { + "id": "n752", + "parent": "11", + "degrees_of_freedom": [ + 4512, + 4513, + 4514, + 4515, + 4516, + 4517 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002765713124611353, + "y": -0.0012623181226819595, + "z": -0.000023613836692188077 + }, + "angle": { + "x": 0.000050389219000460515, + "y": -0.000033093688224620024, + "z": 0.000007936906053681496 + } + }, + { + "id": "n753", + "parent": "11", + "degrees_of_freedom": [ + 4518, + 4519, + 4520, + 4521, + 4522, + 4523 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 25, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00025573131788644783, + "y": -0.0012389361781775384, + "z": -0.00008291538344126805 + }, + "angle": { + "x": -0.00008670959819956062, + "y": -0.000034267677187522626, + "z": -0.000040535448920907884 + } + }, + { + "id": "n754", + "parent": "11", + "degrees_of_freedom": [ + 4524, + 4525, + 4526, + 4527, + 4528, + 4529 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00022203570509656567, + "y": -0.0011824838001721037, + "z": -0.00009723277939590798 + }, + "angle": { + "x": 0.000020723142942650173, + "y": -0.00003074866226995826, + "z": -0.0000025525146368920674 + } + }, + { + "id": "n755", + "parent": "11", + "degrees_of_freedom": [ + 4530, + 4531, + 4532, + 4533, + 4534, + 4535 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895578, + "y": 25, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018996101131055025, + "y": -0.001155203037565605, + "z": -0.00008128266336260427 + }, + "angle": { + "x": -0.00005015047263653874, + "y": -0.00003460575237908895, + "z": 0.00002250481496238978 + } + }, + { + "id": "n756", + "parent": "11", + "degrees_of_freedom": [ + 4536, + 4537, + 4538, + 4539, + 4540, + 4541 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015901713705976207, + "y": -0.0011439037630202149, + "z": -0.000025896118732177516 + }, + "angle": { + "x": -0.000008944261982324685, + "y": -0.00003143506588398463, + "z": 0.000007936002278145983 + } + }, + { + "id": "n757", + "parent": "11", + "degrees_of_freedom": [ + 4542, + 4543, + 4544, + 4545, + 4546, + 4547 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 25, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00017826182937420867, + "y": -0.0011176346936791449, + "z": 0.000033264757437637776 + }, + "angle": { + "x": 0.00005934605032171815, + "y": -0.00003609722251788602, + "z": 0.00003208049832754962 + } + }, + { + "id": "n758", + "parent": "11", + "degrees_of_freedom": [ + 4548, + 4549, + 4550, + 4551, + 4552, + 4553 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 22.857142857142858, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00025348275718073036, + "y": -0.0011159312379950225, + "z": -0.00006581395107558283 + }, + "angle": { + "x": 0.00011823917319404884, + "y": 0.00005041771673324176, + "z": -0.000015657798426817475 + } + }, + { + "id": "n759", + "parent": "11", + "degrees_of_freedom": [ + 4554, + 4555, + 4556, + 4557, + 4558, + 4559 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 22.020305089104422, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002654256621950999, + "y": -0.0010786236814719838, + "z": -0.00006290177973728387 + }, + "angle": { + "x": 0.00004735932144083005, + "y": 0.000021058323468323643, + "z": -0.000015027788559224919 + } + }, + { + "id": "n760", + "parent": "11", + "degrees_of_freedom": [ + 4560, + 4561, + 4562, + 4563, + 4564, + 4565 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.142857142857142, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002759569507875022, + "y": -0.0010614004319943915, + "z": -0.00014095967996348725 + }, + "angle": { + "x": -0.0000010639639716824368, + "y": -0.00009584582469126165, + "z": 5.130465006270572e-7 + } + }, + { + "id": "n761", + "parent": "11", + "degrees_of_freedom": [ + 4566, + 4567, + 4568, + 4569, + 4570, + 4571 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 7.979694910895579, + "y": 17.979694910895578, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002670921078625446, + "y": -0.0010477690234271938, + "z": -0.00005860272621775097 + }, + "angle": { + "x": -0.00007165886426378696, + "y": 0.00007458539231627883, + "z": 0.00000897773072322441 + } + }, + { + "id": "n762", + "parent": "11", + "degrees_of_freedom": [ + 4572, + 4573, + 4574, + 4575, + 4576, + 4577 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 17.142857142857142, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002643760414120609, + "y": -0.0010582289757701657, + "z": -0.0001493211530486007 + }, + "angle": { + "x": 0.00018278193705508757, + "y": -0.0000308074351412261, + "z": -0.000013294557560252147 + } + }, + { + "id": "n763", + "parent": "11", + "degrees_of_freedom": [ + 4578, + 4579, + 4580, + 4581, + 4582, + 4583 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 17.979694910895578, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002540780303042978, + "y": -0.001089161910355511, + "z": 0.00006587825180233295 + }, + "angle": { + "x": -0.00031732711710061816, + "y": -0.00023795964739164302, + "z": -0.00001224394133834859 + } + }, + { + "id": "n764", + "parent": "11", + "degrees_of_freedom": [ + 4584, + 4585, + 4586, + 4587, + 4588, + 4589 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.857142857142858, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00024306757345880192, + "y": -0.001108446509107564, + "z": -0.00037608618621801955 + }, + "angle": { + "x": -0.00008228917973541913, + "y": 0.0003294726763460599, + "z": -0.000001307994362387661 + } + }, + { + "id": "n765", + "parent": "11", + "degrees_of_freedom": [ + 4590, + 4591, + 4592, + 4593, + 4594, + 4595 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 12.020305089104422, + "y": 22.020305089104422, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002500044301465388, + "y": -0.0011269838091626395, + "z": -0.0002666201375358389 + }, + "angle": { + "x": 0.000015707702142644076, + "y": 0.00009288767752249557, + "z": 0.00001192045437238192 + } + }, + { + "id": "n766", + "parent": "11", + "degrees_of_freedom": [ + 4596, + 4597, + 4598, + 4599, + 4600, + 4601 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n767", + "parent": "11", + "degrees_of_freedom": [ + 4602, + 4603, + 4604, + 4605, + 4606, + 4607 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n768", + "parent": "11", + "degrees_of_freedom": [ + 4608, + 4609, + 4610, + 4611, + 4612, + 4613 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n769", + "parent": "11", + "degrees_of_freedom": [ + 4614, + 4615, + 4616, + 4617, + 4618, + 4619 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 22.857142857142858, + "y": -5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n770", + "parent": "11", + "degrees_of_freedom": [ + 4620, + 4621, + 4622, + 4623, + 4624, + 4625 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 22.020305089104422, + "y": -5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n771", + "parent": "11", + "degrees_of_freedom": [ + 4626, + 4627, + 4628, + 4629, + 4630, + 4631 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n772", + "parent": "11", + "degrees_of_freedom": [ + 4632, + 4633, + 4634, + 4635, + 4636, + 4637 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 17.979694910895578, + "y": -5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n773", + "parent": "11", + "degrees_of_freedom": [ + 4638, + 4639, + 4640, + 4641, + 4642, + 4643 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 17.142857142857142, + "y": -5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n774", + "parent": "11", + "degrees_of_freedom": [ + 4644, + 4645, + 4646, + 4647, + 4648, + 4649 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 17.979694910895578, + "y": -5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n775", + "parent": "11", + "degrees_of_freedom": [ + 4650, + 4651, + 4652, + 4653, + 4654, + 4655 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n776", + "parent": "11", + "degrees_of_freedom": [ + 4656, + 4657, + 4658, + 4659, + 4660, + 4661 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 22.020305089104422, + "y": -5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n777", + "parent": "11", + "degrees_of_freedom": [ + 4662, + 4663, + 4664, + 4665, + 4666, + 4667 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00008800013855385991, + "y": -0.0006529444452605066, + "z": 0.00010232422529890549 + }, + "angle": { + "x": 0.00006471548718714836, + "y": -0.000009987343858452525, + "z": 0.00002961919193999351 + } + }, + { + "id": "n778", + "parent": "11", + "degrees_of_freedom": [ + 4668, + 4669, + 4670, + 4671, + 4672, + 4673 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000027739609529315828, + "y": -0.00028415624473674496, + "z": 0.000021585028922410732 + }, + "angle": { + "x": 0.00005356018976519214, + "y": 0.000053130140607959244, + "z": -0.000015411780108988623 + } + }, + { + "id": "n779", + "parent": "11", + "degrees_of_freedom": [ + 4674, + 4675, + 4676, + 4677, + 4678, + 4679 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001242649197406165, + "y": -0.0003175524882225937, + "z": 0.000011269323068613106 + }, + "angle": { + "x": 0.0000254219591852697, + "y": 0.000006679245432875613, + "z": -0.000007083674805023008 + } + }, + { + "id": "n780", + "parent": "11", + "degrees_of_freedom": [ + 4680, + 4681, + 4682, + 4683, + 4684, + 4685 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": -3.140184917367551e-16, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010630077030228617, + "y": -0.0001958617251827732, + "z": 0.000025709013854808608 + }, + "angle": { + "x": -6.982597696054449e-7, + "y": 0.00003751926485204901, + "z": -0.00003164648087266203 + } + }, + { + "id": "n781", + "parent": "11", + "degrees_of_freedom": [ + 4686, + 4687, + 4688, + 4689, + 4690, + 4691 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 2.020305089104421, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001498085298755951, + "y": -0.0002452144329089171, + "z": 0.000016014438131635033 + }, + "angle": { + "x": -0.000018912067299292642, + "y": 0.00012979821006157816, + "z": -0.00006427219839253971 + } + }, + { + "id": "n782", + "parent": "11", + "degrees_of_freedom": [ + 4692, + 4693, + 4694, + 4695, + 4696, + 4697 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 2.857142857142857, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00025484702476514577, + "y": -0.0003650208308859475, + "z": 0.000002043032756454164 + }, + "angle": { + "x": -0.00008392649532430641, + "y": -0.0000215798367495061, + "z": -0.000010752178416503734 + } + }, + { + "id": "n783", + "parent": "11", + "degrees_of_freedom": [ + 4698, + 4699, + 4700, + 4701, + 4702, + 4703 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 2.0203050891044216, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00023700351207260273, + "y": -0.0004591856391200545, + "z": 0.0000022184200609848356 + }, + "angle": { + "x": 0.00003270248174013905, + "y": -0.0003369472071910829, + "z": -0.0001222515595378053 + } + }, + { + "id": "n784", + "parent": "11", + "degrees_of_freedom": [ + 4704, + 4705, + 4706, + 4707, + 4708, + 4709 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 3.140184917367551e-16, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002296118700935571, + "y": -0.0004090124735359214, + "z": -0.000014547349321540286 + }, + "angle": { + "x": -0.0000017000767786764484, + "y": -0.00008067812675674887, + "z": -0.000031646971163584964 + } + }, + { + "id": "n785", + "parent": "11", + "degrees_of_freedom": [ + 4710, + 4711, + 4712, + 4713, + 4714, + 4715 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": -2.020305089104421, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008719115331927992, + "y": -0.0003646083741754758, + "z": 9.990238134658859e-7 + }, + "angle": { + "x": -0.000021062704305403464, + "y": 0.0006259323205735131, + "z": -0.00028147134896086714 + } + }, + { + "id": "n786", + "parent": "11", + "degrees_of_freedom": [ + 4716, + 4717, + 4718, + 4719, + 4720, + 4721 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": -2.857142857142857, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000256641698704557, + "y": -0.0002459540388130024, + "z": 0.000018096957428791306 + }, + "angle": { + "x": -0.00008706840874196362, + "y": -0.000021579047080146708, + "z": -0.000052541344255122304 + } + }, + { + "id": "n787", + "parent": "11", + "degrees_of_freedom": [ + 4722, + 4723, + 4724, + 4725, + 4726, + 4727 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": -2.0203050891044216, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -2.1128093550319672e-9, + "y": -0.00014483822192807108, + "z": 0.000016124251380741364 + }, + "angle": { + "x": 0.00002241920961162562, + "y": -0.00040484751442572306, + "z": -0.0001880469876522973 + } + }, + { + "id": "n788", + "parent": "11", + "degrees_of_freedom": [ + 4728, + 4729, + 4730, + 4731, + 4732, + 4733 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00011334097604445242, + "y": -0.0005959408076085473, + "z": 0.00005810689160274363 + }, + "angle": { + "x": -0.000004074945485378103, + "y": -0.000014339209416915777, + "z": -0.0000503459030842904 + } + }, + { + "id": "n789", + "parent": "11", + "degrees_of_freedom": [ + 4734, + 4735, + 4736, + 4737, + 4738, + 4739 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00007708857992030838, + "y": -0.0005946621749646175, + "z": 0.00006598852390605318 + }, + "angle": { + "x": -0.0000032119562514118936, + "y": -0.000011832077686109168, + "z": -0.00000819441101984399 + } + }, + { + "id": "n790", + "parent": "11", + "degrees_of_freedom": [ + 4740, + 4741, + 4742, + 4743, + 4744, + 4745 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008648774198334219, + "y": -0.0010053362222510512, + "z": 0.00008239083089080371 + }, + "angle": { + "x": 0.000025498843795611903, + "y": -0.000009422038786917714, + "z": -0.00003689732015694981 + } + }, + { + "id": "n791", + "parent": "11", + "degrees_of_freedom": [ + 4746, + 4747, + 4748, + 4749, + 4750, + 4751 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007608974909880805, + "y": -0.0008467686176235317, + "z": 0.00007862842467565444 + }, + "angle": { + "x": 0.0005813031206619342, + "y": -0.00000954419517381445, + "z": -0.0002330054372700736 + } + }, + { + "id": "n792", + "parent": "11", + "degrees_of_freedom": [ + 4752, + 4753, + 4754, + 4755, + 4756, + 4757 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007028342806035554, + "y": -0.0007887038184231921, + "z": 0.000060221585436088386 + }, + "angle": { + "x": 0.00012045260878556671, + "y": -0.000011147760045950949, + "z": -0.00006161244606001381 + } + }, + { + "id": "n793", + "parent": "11", + "degrees_of_freedom": [ + 4758, + 4759, + 4760, + 4761, + 4762, + 4763 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008276856996782183, + "y": -0.0005457934069299801, + "z": 0.0000418972826758303 + }, + "angle": { + "x": -0.000840373738322414, + "y": -0.00001186378572636638, + "z": -0.00039842155184151876 + } + }, + { + "id": "n794", + "parent": "11", + "degrees_of_freedom": [ + 4764, + 4765, + 4766, + 4767, + 4768, + 4769 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000087247496673671, + "y": 0.000029010364375023147, + "z": 0.00003435917434245788 + }, + "angle": { + "x": 0.000024695716544394738, + "y": -0.000007897877264187418, + "z": -0.00009150244248484537 + } + }, + { + "id": "n795", + "parent": "11", + "degrees_of_freedom": [ + 4770, + 4771, + 4772, + 4773, + 4774, + 4775 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009839364696358487, + "y": -0.0004419279373400572, + "z": 0.00003711539034056563 + }, + "angle": { + "x": 0.0010804557501096486, + "y": -0.000013253270976022647, + "z": -0.00046369900547867245 + } + }, + { + "id": "n796", + "parent": "11", + "degrees_of_freedom": [ + 4776, + 4777, + 4778, + 4779, + 4780, + 4781 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010625892889577985, + "y": -0.0006383345451473639, + "z": 0.00005853529396964195 + }, + "angle": { + "x": -0.00006782376989414781, + "y": -0.000011079901594522598, + "z": -0.00006262979232577605 + } + }, + { + "id": "n797", + "parent": "11", + "degrees_of_freedom": [ + 4782, + 4783, + 4784, + 4785, + 4786, + 4787 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009631318747391868, + "y": -0.000742220228301148, + "z": 0.00007701780666167298 + }, + "angle": { + "x": -0.0003275085885294475, + "y": -0.000011149917168191146, + "z": -0.00016210261521156993 + } + }, + { + "id": "n798", + "parent": "11", + "degrees_of_freedom": [ + 4788, + 4789, + 4790, + 4791, + 4792, + 4793 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": -2.857142857142857, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003915778811015539, + "y": -0.00019848611916282012, + "z": -0.00005486790262418504 + }, + "angle": { + "x": -0.0000060470247740754945, + "y": -0.00002966368940373589, + "z": 0.000038827666670513275 + } + }, + { + "id": "n799", + "parent": "11", + "degrees_of_freedom": [ + 4794, + 4795, + 4796, + 4797, + 4798, + 4799 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": -2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003403464239014078, + "y": -0.000158525194824348, + "z": 1.3993296093582833e-9 + }, + "angle": { + "x": -0.0000256044374329797, + "y": -0.00003776457068416724, + "z": -0.000014772137289030708 + } + }, + { + "id": "n800", + "parent": "11", + "degrees_of_freedom": [ + 4800, + 4801, + 4802, + 4803, + 4804, + 4805 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003562270169496472, + "y": -0.00021025694052646335, + "z": -0.00002012440292326231 + }, + "angle": { + "x": 0.00007130139091239948, + "y": 0.00019618652640471826, + "z": 0.0000030824262186479153 + } + }, + { + "id": "n801", + "parent": "11", + "degrees_of_freedom": [ + 4806, + 4807, + 4808, + 4809, + 4810, + 4811 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000019861626998446545, + "y": -0.0002691924969946136, + "z": 0.00028810246344217075 + }, + "angle": { + "x": 0.0001606271295571711, + "y": -0.000019464956873438475, + "z": 0.00002418819229287789 + } + }, + { + "id": "n802", + "parent": "11", + "degrees_of_freedom": [ + 4812, + 4813, + 4814, + 4815, + 4816, + 4817 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 2.857142857142857, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000002836477598017848, + "y": -0.00034977309260924406, + "z": 0.0003831960389982262 + }, + "angle": { + "x": 0.0002611091489887872, + "y": -0.00006108606202092013, + "z": 0.00003809852356961709 + } + }, + { + "id": "n803", + "parent": "11", + "degrees_of_freedom": [ + 4818, + 4819, + 4820, + 4821, + 4822, + 4823 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000004348209592171133, + "y": -0.00038513206590848114, + "z": 0.00004127752840752751 + }, + "angle": { + "x": -0.00015170736990555115, + "y": -0.00023208012996728323, + "z": -0.000019901448087567364 + } + }, + { + "id": "n804", + "parent": "11", + "degrees_of_freedom": [ + 4824, + 4825, + 4826, + 4827, + 4828, + 4829 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 1.1538970066650695e-7, + "y": -0.0003352554841993415, + "z": 0.00015355905960699718 + }, + "angle": { + "x": 0.000039879033188143195, + "y": 0.00023044994245285022, + "z": 0.000004777983009201617 + } + }, + { + "id": "n805", + "parent": "11", + "degrees_of_freedom": [ + 4830, + 4831, + 4832, + 4833, + 4834, + 4835 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": -2.020305089104421, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000021483820251293216, + "y": -0.00027996515718183707, + "z": -0.00011985797729658109 + }, + "angle": { + "x": 0.00017944737001061175, + "y": -0.0001064979124165925, + "z": 0.00002535046871235635 + } + }, + { + "id": "n806", + "parent": "11", + "degrees_of_freedom": [ + 4836, + 4837, + 4838, + 4839, + 4840, + 4841 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 2.857142857142857, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007382076971635289, + "y": -0.00042410784614923397, + "z": 0.00007935268607324845 + }, + "angle": { + "x": 0.00003438131446898899, + "y": -0.000005808433489952989, + "z": -0.0000046020089314912415 + } + }, + { + "id": "n807", + "parent": "11", + "degrees_of_freedom": [ + 4842, + 4843, + 4844, + 4845, + 4846, + 4847 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000045233450041434036, + "y": -0.00037934088573893227, + "z": 0.000039325948812718315 + }, + "angle": { + "x": -0.000003209644585473185, + "y": -0.00002066685146703802, + "z": -0.00004092256865528686 + } + }, + { + "id": "n808", + "parent": "11", + "degrees_of_freedom": [ + 4848, + 4849, + 4850, + 4851, + 4852, + 4853 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000012655321929306514, + "y": -0.00028385292665683516, + "z": 0.00002837473973685153 + }, + "angle": { + "x": 0.000007395290734453724, + "y": 0.000004683226701155739, + "z": -0.00000783382948276258 + } + }, + { + "id": "n809", + "parent": "11", + "degrees_of_freedom": [ + 4854, + 4855, + 4856, + 4857, + 4858, + 4859 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": -2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00001562655176213351, + "y": -0.00019904055027962102, + "z": 0.000009585321163153294 + }, + "angle": { + "x": 0.000015524400204851757, + "y": -0.000015194661681880527, + "z": 0.00002912758542549362 + } + }, + { + "id": "n810", + "parent": "11", + "degrees_of_freedom": [ + 4860, + 4861, + 4862, + 4863, + 4864, + 4865 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": -2.857142857142857, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003453251601546388, + "y": -0.00017005336147566638, + "z": 0.00002797486306374362 + }, + "angle": { + "x": -0.00002254998494264374, + "y": 6.9098700964425e-8, + "z": -0.0000019460606133545037 + } + }, + { + "id": "n811", + "parent": "11", + "degrees_of_freedom": [ + 4866, + 4867, + 4868, + 4869, + 4870, + 4871 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": -2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006625159988733089, + "y": -0.00021493312753245245, + "z": 0.000008623035830943701 + }, + "angle": { + "x": 0.000020143797478171512, + "y": 0.000018260603652938296, + "z": -0.00004821346275357245 + } + }, + { + "id": "n812", + "parent": "11", + "degrees_of_freedom": [ + 4872, + 4873, + 4874, + 4875, + 4876, + 4877 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010773131915280427, + "y": -0.00031068332210515567, + "z": 0.00003766507359502456 + }, + "angle": { + "x": 0.000014067129883790564, + "y": -0.000002910277156072352, + "z": -0.000008416980706385482 + } + }, + { + "id": "n813", + "parent": "11", + "degrees_of_freedom": [ + 4878, + 4879, + 4880, + 4881, + 4882, + 4883 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 2.020305089104421, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000976273794834836, + "y": -0.00039548102774138324, + "z": 0.0000618362466789491 + }, + "angle": { + "x": 0.000007702612030055191, + "y": 0.000005954508431333044, + "z": 0.00003636371868489461 + } + }, + { + "id": "n814", + "parent": "11", + "degrees_of_freedom": [ + 4884, + 4885, + 4886, + 4887, + 4888, + 4889 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n815", + "parent": "11", + "degrees_of_freedom": [ + 4890, + 4891, + 4892, + 4893, + 4894, + 4895 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n816", + "parent": "11", + "degrees_of_freedom": [ + 4896, + 4897, + 4898, + 4899, + 4900, + 4901 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 22.857142857142858, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n817", + "parent": "11", + "degrees_of_freedom": [ + 4902, + 4903, + 4904, + 4905, + 4906, + 4907 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 22.020305089104422, + "y": -5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n818", + "parent": "11", + "degrees_of_freedom": [ + 4908, + 4909, + 4910, + 4911, + 4912, + 4913 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n819", + "parent": "11", + "degrees_of_freedom": [ + 4914, + 4915, + 4916, + 4917, + 4918, + 4919 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 17.979694910895578, + "y": -5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n820", + "parent": "11", + "degrees_of_freedom": [ + 4920, + 4921, + 4922, + 4923, + 4924, + 4925 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 17.142857142857142, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n821", + "parent": "11", + "degrees_of_freedom": [ + 4926, + 4927, + 4928, + 4929, + 4930, + 4931 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 17.979694910895578, + "y": -5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n822", + "parent": "11", + "degrees_of_freedom": [ + 4932, + 4933, + 4934, + 4935, + 4936, + 4937 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n823", + "parent": "11", + "degrees_of_freedom": [ + 4938, + 4939, + 4940, + 4941, + 4942, + 4943 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 22.020305089104422, + "y": -5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n824", + "parent": "11", + "degrees_of_freedom": [ + 4944, + 4945, + 4946, + 4947, + 4948, + 4949 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000038705547282934753, + "y": -0.0006340978191209249, + "z": 0.0001111612059136153 + }, + "angle": { + "x": 0.00006178445968917509, + "y": -0.000010192435123156088, + "z": -0.000009675558519218499 + } + }, + { + "id": "n825", + "parent": "11", + "degrees_of_freedom": [ + 4950, + 4951, + 4952, + 4953, + 4954, + 4955 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000963818301428514, + "y": -0.00028587768048419197, + "z": 0.000013298220746442498 + }, + "angle": { + "x": 0.000026035096696969578, + "y": 0.000012411873277829473, + "z": 0.000003590651659129148 + } + }, + { + "id": "n826", + "parent": "11", + "degrees_of_freedom": [ + 4956, + 4957, + 4958, + 4959, + 4960, + 4961 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": -3.140184917367551e-16, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000028292702663038458, + "y": -0.0001831375983321152, + "z": 0.00003089826667859825 + }, + "angle": { + "x": -6.901762645805065e-7, + "y": 0.000023789165298964758, + "z": 0.000003053461984568696 + } + }, + { + "id": "n827", + "parent": "11", + "degrees_of_freedom": [ + 4962, + 4963, + 4964, + 4965, + 4966, + 4967 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 2.020305089104421, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 9.733235696344411e-8, + "y": -0.00022875039511854482, + "z": 0.00002013519695930895 + }, + "angle": { + "x": -0.000019462818447551113, + "y": 0.00004532196315662609, + "z": -0.0000032155733020833782 + } + }, + { + "id": "n828", + "parent": "11", + "degrees_of_freedom": [ + 4968, + 4969, + 4970, + 4971, + 4972, + 4973 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007821186315858859, + "y": -0.0003526324334746145, + "z": 0.00000683562576811998 + }, + "angle": { + "x": -0.00008602233477970859, + "y": -0.0000070952102515572124, + "z": 0.000016660624751737838 + } + }, + { + "id": "n829", + "parent": "11", + "degrees_of_freedom": [ + 4974, + 4975, + 4976, + 4977, + 4978, + 4979 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 2.0203050891044216, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003388607215813166, + "y": -0.00044796939575781513, + "z": 0.000008225942269198926 + }, + "angle": { + "x": 0.00003303820259150289, + "y": 0.00017761932423447738, + "z": 0.00008331100296417123 + } + }, + { + "id": "n830", + "parent": "11", + "degrees_of_freedom": [ + 4980, + 4981, + 4982, + 4983, + 4984, + 4985 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 3.140184917367551e-16, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008455986512117475, + "y": -0.0004013551009935184, + "z": -0.000010436698746830082 + }, + "angle": { + "x": -0.000001430244298411846, + "y": -0.00004348259415279368, + "z": 0.000006483590843425043 + } + }, + { + "id": "n831", + "parent": "11", + "degrees_of_freedom": [ + 4986, + 4987, + 4988, + 4989, + 4990, + 4991 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": -2.020305089104421, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006245786728580506, + "y": -0.00035908750027838416, + "z": 0.000007642952079926019 + }, + "angle": { + "x": -0.00002416951507226091, + "y": -0.00002008169575676658, + "z": -0.0000031338360393800416 + } + }, + { + "id": "n832", + "parent": "11", + "degrees_of_freedom": [ + 4992, + 4993, + 4994, + 4995, + 4996, + 4997 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": -2.857142857142857, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000001140736312352295, + "y": -0.000236786948954862, + "z": 0.000024502421832670293 + }, + "angle": { + "x": -0.0000884535430417744, + "y": -0.000012598332077424836, + "z": -0.0000071235557844523075 + } + }, + { + "id": "n833", + "parent": "11", + "degrees_of_freedom": [ + 4998, + 4999, + 5000, + 5001, + 5002, + 5003 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": -2.0203050891044216, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000016672725968885158, + "y": -0.00013644668802029737, + "z": 0.000020744831272729664 + }, + "angle": { + "x": 0.00002188427238933086, + "y": 0.00001565338461680276, + "z": 0.0000015209817599481275 + } + }, + { + "id": "n834", + "parent": "11", + "degrees_of_freedom": [ + 5004, + 5005, + 5006, + 5007, + 5008, + 5009 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.000010457181847269314, + "y": -0.000579031938556146, + "z": 0.00008245381665888511 + }, + "angle": { + "x": 0.0000021751740524717307, + "y": -0.00001047067829537853, + "z": 0.000002949532242078018 + } + }, + { + "id": "n835", + "parent": "11", + "degrees_of_freedom": [ + 5010, + 5011, + 5012, + 5013, + 5014, + 5015 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003784656816267984, + "y": -0.00054155536250001, + "z": 0.0000932356100476888 + }, + "angle": { + "x": 0.000022498552186124073, + "y": -0.000011572553693847242, + "z": 0.000008307787892953864 + } + }, + { + "id": "n836", + "parent": "11", + "degrees_of_freedom": [ + 5016, + 5017, + 5018, + 5019, + 5020, + 5021 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000023415489426755944, + "y": -0.0006289889928387043, + "z": 0.00009048125932408434 + }, + "angle": { + "x": -0.00023297392955601667, + "y": -0.000008012193491903197, + "z": 0.00009574695543460496 + } + }, + { + "id": "n837", + "parent": "11", + "degrees_of_freedom": [ + 5022, + 5023, + 5024, + 5025, + 5026, + 5027 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000014965913673896766, + "y": -0.0006561039928999661, + "z": 0.0000769178916833707 + }, + "angle": { + "x": 0.00005861515265049459, + "y": -0.00000824162086032266, + "z": -0.000010229100536982747 + } + }, + { + "id": "n838", + "parent": "11", + "degrees_of_freedom": [ + 5028, + 5029, + 5030, + 5031, + 5032, + 5033 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 5, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000019307062041933928, + "y": -0.0005851161115994901, + "z": 0.00006077064678638961 + }, + "angle": { + "x": -0.0002370164761168946, + "y": -0.000009854440783619998, + "z": -0.00011186701254996398 + } + }, + { + "id": "n839", + "parent": "11", + "degrees_of_freedom": [ + 5034, + 5035, + 5036, + 5037, + 5038, + 5039 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003226040883642178, + "y": -0.0004357052508944605, + "z": 0.00005382810539701132 + }, + "angle": { + "x": 0.000013642817725375235, + "y": -0.000012768947555493046, + "z": -0.000020362389578989585 + } + }, + { + "id": "n840", + "parent": "11", + "degrees_of_freedom": [ + 5040, + 5041, + 5042, + 5043, + 5044, + 5045 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000044697242403880486, + "y": -0.000522300111023925, + "z": 0.000058097771926127094 + }, + "angle": { + "x": 0.00025833277671141497, + "y": -0.000009894267744568667, + "z": -0.00010533026111803074 + } + }, + { + "id": "n841", + "parent": "11", + "degrees_of_freedom": [ + 5046, + 5047, + 5048, + 5049, + 5050, + 5051 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000055671950115950924, + "y": -0.0005528456349215622, + "z": 0.00007201529597152982 + }, + "angle": { + "x": -0.0000224755956002474, + "y": -0.000008172253374189303, + "z": -0.000004709224904036453 + } + }, + { + "id": "n842", + "parent": "11", + "degrees_of_freedom": [ + 5052, + 5053, + 5054, + 5055, + 5056, + 5057 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004960228787043339, + "y": -0.0005488528698725392, + "z": 0.00008728877034444663 + }, + "angle": { + "x": -0.00011481371171560443, + "y": -0.0000109654502463882, + "z": -0.00003926733997697521 + } + }, + { + "id": "n843", + "parent": "11", + "degrees_of_freedom": [ + 5058, + 5059, + 5060, + 5061, + 5062, + 5063 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 2.857142857142857, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000031377862278670674, + "y": -0.0004122078500286361, + "z": 0.00008876164783519245 + }, + "angle": { + "x": 0.000027533198254217973, + "y": -0.0000029115000537163862, + "z": -0.0000012979219557102443 + } + }, + { + "id": "n844", + "parent": "11", + "degrees_of_freedom": [ + 5064, + 5065, + 5066, + 5067, + 5068, + 5069 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000007508498965111506, + "y": -0.00037505809667206857, + "z": 0.000060464330906970976 + }, + "angle": { + "x": -0.000003916131278711208, + "y": -0.000015009225243572639, + "z": -0.00003594659433263182 + } + }, + { + "id": "n845", + "parent": "11", + "degrees_of_freedom": [ + 5070, + 5071, + 5072, + 5073, + 5074, + 5075 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000012631163619929398, + "y": -0.0002847439162237172, + "z": 0.00005552641784709506 + }, + "angle": { + "x": 0.000009163504953421826, + "y": 0.000016049060836737664, + "z": -0.0000013873333533567603 + } + }, + { + "id": "n846", + "parent": "11", + "degrees_of_freedom": [ + 5076, + 5077, + 5078, + 5079, + 5080, + 5081 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": -2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000001525709369384906, + "y": -0.00019720050479270996, + "z": 0.000023727574282093093 + }, + "angle": { + "x": 0.000020297455050419924, + "y": -0.000011349397005400137, + "z": 0.00003245831520617741 + } + }, + { + "id": "n847", + "parent": "11", + "degrees_of_freedom": [ + 5082, + 5083, + 5084, + 5085, + 5086, + 5087 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": -2.857142857142857, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000240848264413671, + "y": -0.0001646749635873265, + "z": 0.000030651105524339106 + }, + "angle": { + "x": -0.000014276958221233804, + "y": 0.000002244210604792636, + "z": -2.1120904610231608e-7 + } + }, + { + "id": "n848", + "parent": "11", + "degrees_of_freedom": [ + 5088, + 5089, + 5090, + 5091, + 5092, + 5093 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": -2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005300306755221606, + "y": -0.0002031000438918895, + "z": 0.000013679632404197222 + }, + "angle": { + "x": 0.00002211625612324489, + "y": 0.00001804635288398353, + "z": -0.000042429458200226394 + } + }, + { + "id": "n849", + "parent": "11", + "degrees_of_freedom": [ + 5094, + 5095, + 5096, + 5097, + 5098, + 5099 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008062297341532888, + "y": -0.0002908666070087346, + "z": 0.00004657275535715188 + }, + "angle": { + "x": 0.00001500047785438601, + "y": -0.000005071805920067468, + "z": -0.0000010333158318238383 + } + }, + { + "id": "n850", + "parent": "11", + "degrees_of_freedom": [ + 5100, + 5101, + 5102, + 5103, + 5104, + 5105 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 2.020305089104421, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005731839731624739, + "y": -0.0003767369918365075, + "z": 0.00007097731505403417 + }, + "angle": { + "x": 0.000007890626672223168, + "y": 0.000006153728702152552, + "z": 0.00004009771118585589 + } + }, + { + "id": "n851", + "parent": "11", + "degrees_of_freedom": [ + 5106, + 5107, + 5108, + 5109, + 5110, + 5111 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n852", + "parent": "11", + "degrees_of_freedom": [ + 5112, + 5113, + 5114, + 5115, + 5116, + 5117 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n853", + "parent": "11", + "degrees_of_freedom": [ + 5118, + 5119, + 5120, + 5121, + 5122, + 5123 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 22.857142857142858, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n854", + "parent": "11", + "degrees_of_freedom": [ + 5124, + 5125, + 5126, + 5127, + 5128, + 5129 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 22.020305089104422, + "y": -5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n855", + "parent": "11", + "degrees_of_freedom": [ + 5130, + 5131, + 5132, + 5133, + 5134, + 5135 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n856", + "parent": "11", + "degrees_of_freedom": [ + 5136, + 5137, + 5138, + 5139, + 5140, + 5141 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 17.979694910895578, + "y": -5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n857", + "parent": "11", + "degrees_of_freedom": [ + 5142, + 5143, + 5144, + 5145, + 5146, + 5147 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 17.142857142857142, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n858", + "parent": "11", + "degrees_of_freedom": [ + 5148, + 5149, + 5150, + 5151, + 5152, + 5153 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 17.979694910895578, + "y": -5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n859", + "parent": "11", + "degrees_of_freedom": [ + 5154, + 5155, + 5156, + 5157, + 5158, + 5159 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n860", + "parent": "11", + "degrees_of_freedom": [ + 5160, + 5161, + 5162, + 5163, + 5164, + 5165 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 22.020305089104422, + "y": -5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n861", + "parent": "11", + "degrees_of_freedom": [ + 5166, + 5167, + 5168, + 5169, + 5170, + 5171 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00003492189159982143, + "y": -0.0006207173450295109, + "z": 0.00011818720035276647 + }, + "angle": { + "x": 0.00006095606249993346, + "y": -0.000009176669790879508, + "z": -0.000014342032766449299 + } + }, + { + "id": "n862", + "parent": "11", + "degrees_of_freedom": [ + 5172, + 5173, + 5174, + 5175, + 5176, + 5177 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000019117863187830014, + "y": -0.00030680030891088914, + "z": 0.000003498057653559367 + }, + "angle": { + "x": 0.000055854474496133185, + "y": 0.00006944013166762031, + "z": 0.000007378618992481066 + } + }, + { + "id": "n863", + "parent": "11", + "degrees_of_freedom": [ + 5178, + 5179, + 5180, + 5181, + 5182, + 5183 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": -3.140184917367551e-16, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001789881150338019, + "y": -0.0001798830228816166, + "z": 0.00003328122235283556 + }, + "angle": { + "x": 0.0000021836412123710116, + "y": -0.00007339950949193052, + "z": 0.00004966844937646593 + } + }, + { + "id": "n864", + "parent": "11", + "degrees_of_freedom": [ + 5184, + 5185, + 5186, + 5187, + 5188, + 5189 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 2.020305089104421, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00023512652209329592, + "y": -0.0002213480715000939, + "z": 0.000029728035351322415 + }, + "angle": { + "x": -0.00001382020320041069, + "y": 0.00014346313913109107, + "z": -0.00002700417431579525 + } + }, + { + "id": "n865", + "parent": "11", + "degrees_of_freedom": [ + 5190, + 5191, + 5192, + 5193, + 5194, + 5195 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 2.857142857142857, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00037065646228905434, + "y": -0.000338665639397621, + "z": 0.000017848157532745057 + }, + "angle": { + "x": -0.00008188754047471351, + "y": -0.00003870058066459237, + "z": 0.00003740046752905216 + } + }, + { + "id": "n866", + "parent": "11", + "degrees_of_freedom": [ + 5196, + 5197, + 5198, + 5199, + 5200, + 5201 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 2.0203050891044216, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007875219158884372, + "y": -0.00043136482345476775, + "z": 0.000017299653645367448 + }, + "angle": { + "x": 0.00003456003127434714, + "y": 0.0005512923381456328, + "z": 0.00024599454041015134 + } + }, + { + "id": "n867", + "parent": "11", + "degrees_of_freedom": [ + 5202, + 5203, + 5204, + 5205, + 5206, + 5207 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 3.140184917367551e-16, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000421597045526093, + "y": -0.00038162680616759474, + "z": -0.0000046457905558846965 + }, + "angle": { + "x": 0.0000012252268983688626, + "y": -0.000004000911457319121, + "z": 0.000049669448077020036 + } + }, + { + "id": "n868", + "parent": "11", + "degrees_of_freedom": [ + 5208, + 5209, + 5210, + 5211, + 5212, + 5213 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": -2.020305089104421, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001563753480952042, + "y": -0.00034034245100691827, + "z": 0.000007156272040528043 + }, + "angle": { + "x": -0.000019960615194675403, + "y": -0.0003506865149859535, + "z": 0.0001722405764856616 + } + }, + { + "id": "n869", + "parent": "11", + "degrees_of_freedom": [ + 5214, + 5215, + 5216, + 5217, + 5218, + 5219 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": -2.857142857142857, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00043211017930853783, + "y": -0.00022694376222984574, + "z": 0.000022356163567198906 + }, + "angle": { + "x": -0.0000821068315924227, + "y": -0.00003870237634715472, + "z": 0.00006193662694382247 + } + }, + { + "id": "n870", + "parent": "11", + "degrees_of_freedom": [ + 5220, + 5221, + 5222, + 5223, + 5224, + 5225 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": -2.0203050891044216, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -2.617721116273838e-9, + "y": -0.00013288810978242608, + "z": 0.000019984980373257402 + }, + "angle": { + "x": 0.00002245651376061095, + "y": 0.000681627787559958, + "z": 0.00031661093664030464 + } + }, + { + "id": "n871", + "parent": "11", + "degrees_of_freedom": [ + 5226, + 5227, + 5228, + 5229, + 5230, + 5231 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00006619487376576087, + "y": -0.0006052690407239629, + "z": 0.000087756417985069 + }, + "angle": { + "x": -0.000008862667935893297, + "y": -0.000009363545010026301, + "z": 0.00003809192709014964 + } + }, + { + "id": "n872", + "parent": "11", + "degrees_of_freedom": [ + 5232, + 5233, + 5234, + 5235, + 5236, + 5237 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000034509539188202595, + "y": -0.0005898440757770696, + "z": 0.00010255363449875419 + }, + "angle": { + "x": 0.000013061383223533418, + "y": -0.00001278420687463421, + "z": -0.00000368351093137682 + } + }, + { + "id": "n873", + "parent": "11", + "degrees_of_freedom": [ + 5238, + 5239, + 5240, + 5241, + 5242, + 5243 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004915741506681651, + "y": -0.0005961137580108402, + "z": 0.00009857438630412013 + }, + "angle": { + "x": -0.00014946807604228462, + "y": -0.000008082881800504087, + "z": 0.000054267749139279284 + } + }, + { + "id": "n874", + "parent": "11", + "degrees_of_freedom": [ + 5244, + 5245, + 5246, + 5247, + 5248, + 5249 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000055290286518711684, + "y": -0.000600252418586035, + "z": 0.00008746848265409803 + }, + "angle": { + "x": -0.000027270408688210957, + "y": -0.0000052410282871211275, + "z": 0.000011552943062470882 + } + }, + { + "id": "n875", + "parent": "11", + "degrees_of_freedom": [ + 5250, + 5251, + 5252, + 5253, + 5254, + 5255 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 5, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005263234224391402, + "y": -0.0006500329485691828, + "z": 0.00007910661898975095 + }, + "angle": { + "x": 0.0003216167002298865, + "y": -0.000004476328901366665, + "z": 0.00013441460766751425 + } + }, + { + "id": "n876", + "parent": "11", + "degrees_of_freedom": [ + 5256, + 5257, + 5258, + 5259, + 5260, + 5261 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000039539913263911105, + "y": -0.0007664916832966497, + "z": 0.00007519790508766849 + }, + "angle": { + "x": 0.000015061556352707346, + "y": -0.00001237678086666873, + "z": 0.00002554249645119233 + } + }, + { + "id": "n877", + "parent": "11", + "degrees_of_freedom": [ + 5262, + 5263, + 5264, + 5265, + 5266, + 5267 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000023295879951678654, + "y": -0.000591035995105727, + "z": 0.00007778329440601875 + }, + "angle": { + "x": -0.0002762042948011065, + "y": -0.00000648025967859596, + "z": 0.00012803203056601186 + } + }, + { + "id": "n878", + "parent": "11", + "degrees_of_freedom": [ + 5268, + 5269, + 5270, + 5271, + 5272, + 5273 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000016403958524760854, + "y": -0.0005199014651880656, + "z": 0.00008616784596325079 + }, + "angle": { + "x": 0.00005539307949703802, + "y": -0.000004880887974587293, + "z": 0.000010306197416890756 + } + }, + { + "id": "n879", + "parent": "11", + "degrees_of_freedom": [ + 5274, + 5275, + 5276, + 5277, + 5278, + 5279 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 5, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000019869170268405687, + "y": -0.0005414770887059887, + "z": 0.00009781021387022414 + }, + "angle": { + "x": -0.00008740070147867339, + "y": -0.000009172126771361612, + "z": -0.000039690649578418386 + } + }, + { + "id": "n880", + "parent": "11", + "degrees_of_freedom": [ + 5280, + 5281, + 5282, + 5283, + 5284, + 5285 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 2.857142857142857, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000028413960958800496, + "y": -0.0003673508053020891, + "z": 0.00006461322266179075 + }, + "angle": { + "x": -0.000052945297062040665, + "y": -0.000011959274739123763, + "z": -0.00004046947960026007 + } + }, + { + "id": "n881", + "parent": "11", + "degrees_of_freedom": [ + 5286, + 5287, + 5288, + 5289, + 5290, + 5291 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 2.020305089104421, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00001009735857268281, + "y": -0.00028206437508242714, + "z": 0.0000847584650255132 + }, + "angle": { + "x": 0.000014457829709961509, + "y": 0.000015960011178968927, + "z": -0.000026310571850573507 + } + }, + { + "id": "n882", + "parent": "11", + "degrees_of_freedom": [ + 5292, + 5293, + 5294, + 5295, + 5296, + 5297 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000012283046024062715, + "y": -0.0002161911319721412, + "z": 0.00006890515816134167 + }, + "angle": { + "x": 0.000020976656760456376, + "y": 0.00003169781630866342, + "z": -0.000007691019934418753 + } + }, + { + "id": "n883", + "parent": "11", + "degrees_of_freedom": [ + 5298, + 5299, + 5300, + 5301, + 5302, + 5303 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": -2.020305089104421, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000020788699702792232, + "y": -0.0001629636043445257, + "z": -3.821173485025498e-11 + }, + "angle": { + "x": 0.00008765736695059379, + "y": -0.00012928362102398728, + "z": 0.000011288743984578955 + } + }, + { + "id": "n884", + "parent": "11", + "degrees_of_freedom": [ + 5304, + 5305, + 5306, + 5307, + 5308, + 5309 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": -2.857142857142857, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000026218958609918216, + "y": -0.00021091923485054627, + "z": 0.00018783744330893323 + }, + "angle": { + "x": -0.0001661669533212588, + "y": -0.00002414618378778399, + "z": -0.0000426447636316019 + } + }, + { + "id": "n885", + "parent": "11", + "degrees_of_freedom": [ + 5310, + 5311, + 5312, + 5313, + 5314, + 5315 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": -2.020305089104421, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000024034685861806778, + "y": -0.00029987743302763934, + "z": 0.00009756528985470571 + }, + "angle": { + "x": 0.000049706188778578024, + "y": 0.00006527140536592676, + "z": -0.000029596754671356913 + } + }, + { + "id": "n886", + "parent": "11", + "degrees_of_freedom": [ + 5316, + 5317, + 5318, + 5319, + 5320, + 5321 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002444376497763034, + "y": -0.000358937217351, + "z": 0.0001433654003224544 + }, + "angle": { + "x": 0.000008789757502763835, + "y": -0.000033509628207496447, + "z": -0.0000067967657403943986 + } + }, + { + "id": "n887", + "parent": "11", + "degrees_of_freedom": [ + 5322, + 5323, + 5324, + 5325, + 5326, + 5327 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 2.020305089104421, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002431155035995138, + "y": -0.00040751173030793657, + "z": 0.00013308124955650638 + }, + "angle": { + "x": 0.000010800290839619832, + "y": -0.00003836355538878327, + "z": 0.000017418777273052702 + } + }, + { + "id": "n888", + "parent": "11", + "degrees_of_freedom": [ + 5328, + 5329, + 5330, + 5331, + 5332, + 5333 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 5, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009056537909506886, + "y": -0.0008877978006243967, + "z": 0.0000822502506128946 + }, + "angle": { + "x": 0.00002549869607545982, + "y": -0.000008828114697109446, + "z": -0.00002077906326395153 + } + }, + { + "id": "n889", + "parent": "11", + "degrees_of_freedom": [ + 5334, + 5335, + 5336, + 5337, + 5338, + 5339 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 5, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010044978679300579, + "y": -0.0007167860444224429, + "z": 0.00007798954666347736 + }, + "angle": { + "x": -0.0004726109189854929, + "y": -0.000010254796678160747, + "z": -0.00019728592729304487 + } + }, + { + "id": "n890", + "parent": "11", + "degrees_of_freedom": [ + 5340, + 5341, + 5342, + 5343, + 5344, + 5345 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 5, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000960912325664622, + "y": -0.00042537371269838137, + "z": 0.0000385344153646603 + }, + "angle": { + "x": 0.000693695961136194, + "y": -0.00001228131944766491, + "z": -0.0003359794243039534 + } + }, + { + "id": "n891", + "parent": "11", + "degrees_of_freedom": [ + 5346, + 5347, + 5348, + 5349, + 5350, + 5351 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 5, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008585540839572378, + "y": 0.0000859142630084338, + "z": 0.0000320128945348978 + }, + "angle": { + "x": 0.000029565951935014213, + "y": -0.000010955732735494936, + "z": -0.0000993057956956737 + } + }, + { + "id": "n892", + "parent": "11", + "degrees_of_freedom": [ + 5352, + 5353, + 5354, + 5355, + 5356, + 5357 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 5, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007276290798318466, + "y": -0.0005377210259675137, + "z": 0.000036485492493034975 + }, + "angle": { + "x": -0.0010573318449776607, + "y": -0.00001287659958512086, + "z": -0.00048171388546253634 + } + }, + { + "id": "n893", + "parent": "11", + "degrees_of_freedom": [ + 5358, + 5359, + 5360, + 5361, + 5362, + 5363 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 5, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000815384739594976, + "y": -0.0008213345566032807, + "z": 0.000077877206260379 + }, + "angle": { + "x": -0.0003316637684504495, + "y": -0.000009353450176029638, + "z": 0.00010589546809049004 + } + }, + { + "id": "n894", + "parent": "11", + "degrees_of_freedom": [ + 5364, + 5365, + 5366, + 5367, + 5368, + 5369 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00017906131056542141, + "y": -0.0011140907841284279, + "z": 0.0002530677043708612 + }, + "angle": { + "x": 0.000041947773857948225, + "y": -0.000022784751287785182, + "z": -0.0000037982251370305808 + } + }, + { + "id": "n895", + "parent": "11", + "degrees_of_freedom": [ + 5370, + 5371, + 5372, + 5373, + 5374, + 5375 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000211528825189393, + "y": -0.0008558847961183132, + "z": 0.00020248159539574992 + }, + "angle": { + "x": 0.000042255064849484684, + "y": -0.00008463583728060985, + "z": -0.000016854954910736253 + } + }, + { + "id": "n896", + "parent": "11", + "degrees_of_freedom": [ + 5376, + 5377, + 5378, + 5379, + 5380, + 5381 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015976398344278887, + "y": -0.0008480289443015809, + "z": 0.0001990060801323061 + }, + "angle": { + "x": 0.000018394283531080745, + "y": -0.00002006331101785723, + "z": -0.000011975409043553758 + } + }, + { + "id": "n897", + "parent": "11", + "degrees_of_freedom": [ + 5382, + 5383, + 5384, + 5385, + 5386, + 5387 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002836848625822279, + "y": -0.0008139966026150364, + "z": 0.00021214173603257994 + }, + "angle": { + "x": 6.176330988381367e-7, + "y": 0.00019837471531556955, + "z": -0.00007549003004305594 + } + }, + { + "id": "n898", + "parent": "11", + "degrees_of_freedom": [ + 5388, + 5389, + 5390, + 5391, + 5392, + 5393 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 12.020305089104422, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002963570564530938, + "y": -0.000837631947546169, + "z": 0.00019979313547573523 + }, + "angle": { + "x": -0.000017408015002103712, + "y": -0.00014366982933871584, + "z": 0.00004544135018238771 + } + }, + { + "id": "n899", + "parent": "11", + "degrees_of_freedom": [ + 5394, + 5395, + 5396, + 5397, + 5398, + 5399 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 12.857142857142858, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00032694756689744144, + "y": -0.0009204597717921896, + "z": 0.00018859780121125358 + }, + "angle": { + "x": -0.00005782760358995616, + "y": 0.00002172605039598077, + "z": -0.000013034526210271931 + } + }, + { + "id": "n900", + "parent": "11", + "degrees_of_freedom": [ + 5400, + 5401, + 5402, + 5403, + 5404, + 5405 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 12.020305089104422, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020857206993293541, + "y": -0.0009842252222426664, + "z": 0.0001888164039851708 + }, + "angle": { + "x": 0.000021998915040085107, + "y": -0.00024788820076275173, + "z": -0.00010835715398824168 + } + }, + { + "id": "n901", + "parent": "11", + "degrees_of_freedom": [ + 5406, + 5407, + 5408, + 5409, + 5410, + 5411 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015954011806717584, + "y": -0.0009493059558009627, + "z": 0.00017651409438226523 + }, + "angle": { + "x": 2.2000818194726417e-7, + "y": -0.0001549246046410602, + "z": -0.00007548948619611646 + } + }, + { + "id": "n902", + "parent": "11", + "degrees_of_freedom": [ + 5412, + 5413, + 5414, + 5415, + 5416, + 5417 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 7.979694910895579, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00014878550541900685, + "y": -0.0009203872088543705, + "z": 0.00018307723058748308 + }, + "angle": { + "x": -0.000011206425325346358, + "y": 0.0006679118847057528, + "z": -0.0003664063223061014 + } + }, + { + "id": "n903", + "parent": "11", + "degrees_of_freedom": [ + 5418, + 5419, + 5420, + 5421, + 5422, + 5423 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 7.142857142857142, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0008931510035475264, + "y": -0.0008456941651568148, + "z": 0.00019254426693029423 + }, + "angle": { + "x": -0.00005230297249949866, + "y": 0.00002172501979946468, + "z": -0.00013794498305533162 + } + }, + { + "id": "n904", + "parent": "11", + "degrees_of_freedom": [ + 5424, + 5425, + 5426, + 5427, + 5428, + 5429 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 7.979694910895578, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006100255911679402, + "y": -0.000786234058368204, + "z": 0.00019479731108142424 + }, + "angle": { + "x": 0.000024522670818503935, + "y": -0.0016214894602701831, + "z": -0.0007189091202107293 + } + }, + { + "id": "n905", + "parent": "11", + "degrees_of_freedom": [ + 5430, + 5431, + 5432, + 5433, + 5434, + 5435 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0002600149445001279, + "y": -0.0010213843224210512, + "z": 0.00015728997689623545 + }, + "angle": { + "x": -0.0000168861970038232, + "y": -0.00003679064678567813, + "z": -0.00002892009892917447 + } + }, + { + "id": "n906", + "parent": "11", + "degrees_of_freedom": [ + 5436, + 5437, + 5438, + 5439, + 5440, + 5441 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00011823766698597596, + "y": -0.0010019286714623976, + "z": 0.00016236280899505187 + }, + "angle": { + "x": -6.90235011579373e-7, + "y": -0.00002785109684559112, + "z": -0.000005389409941826424 + } + }, + { + "id": "n907", + "parent": "11", + "degrees_of_freedom": [ + 5442, + 5443, + 5444, + 5445, + 5446, + 5447 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 15, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017654846411851083, + "y": -0.0009001116792771527, + "z": 0.00021041728400012213 + }, + "angle": { + "x": 0.000019685031409705493, + "y": -0.000026193685409369772, + "z": 0.00003580973495252028 + } + }, + { + "id": "n908", + "parent": "11", + "degrees_of_freedom": [ + 5448, + 5449, + 5450, + 5451, + 5452, + 5453 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 15, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014813423771603895, + "y": -0.001144881344175216, + "z": 0.00019967701668118946 + }, + "angle": { + "x": -0.00036227656056934433, + "y": -0.000023063047137808064, + "z": 0.00017104928261689527 + } + }, + { + "id": "n909", + "parent": "11", + "degrees_of_freedom": [ + 5454, + 5455, + 5456, + 5457, + 5458, + 5459 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001331795797738024, + "y": -0.0012504705377417086, + "z": 0.00015844133049481145 + }, + "angle": { + "x": 0.00023838587460399397, + "y": -0.00002299601520402557, + "z": -0.00003657760786400029 + } + }, + { + "id": "n910", + "parent": "11", + "degrees_of_freedom": [ + 5460, + 5461, + 5462, + 5463, + 5464, + 5465 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 15, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015475888017702457, + "y": -0.0009665432981256872, + "z": 0.00011915299643569406 + }, + "angle": { + "x": -0.0010226374792687606, + "y": -0.000024954639183200223, + "z": -0.00048074538018954324 + } + }, + { + "id": "n911", + "parent": "11", + "degrees_of_freedom": [ + 5466, + 5467, + 5468, + 5469, + 5470, + 5471 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 15, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017849665112813418, + "y": -0.0002878644517328234, + "z": 0.00010580937528736556 + }, + "angle": { + "x": 0.000019118888144923253, + "y": -0.00002429611196743211, + "z": -0.00011179942188674973 + } + }, + { + "id": "n912", + "parent": "11", + "degrees_of_freedom": [ + 5472, + 5473, + 5474, + 5475, + 5476, + 5477 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 15, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020741770212847648, + "y": -0.0008868931412356552, + "z": 0.00011500995331714754 + }, + "angle": { + "x": 0.0011478204626509997, + "y": -0.000025423219443147505, + "z": -0.0005102261067727958 + } + }, + { + "id": "n913", + "parent": "11", + "degrees_of_freedom": [ + 5478, + 5479, + 5480, + 5481, + 5482, + 5483 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002252198104301084, + "y": -0.001135694946723912, + "z": 0.00015760810467919007 + }, + "angle": { + "x": -0.0001982147336828095, + "y": -0.000023257984171104646, + "z": -0.00003707708164594591 + } + }, + { + "id": "n914", + "parent": "11", + "degrees_of_freedom": [ + 5484, + 5485, + 5486, + 5487, + 5488, + 5489 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 15, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020589580712217248, + "y": -0.001064596087777205, + "z": 0.00019881981734798954 + }, + "angle": { + "x": 0.00025437995742525285, + "y": -0.00002545189438731359, + "z": 0.00011859115486651888 + } + }, + { + "id": "n915", + "parent": "11", + "degrees_of_freedom": [ + 5490, + 5491, + 5492, + 5493, + 5494, + 5495 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 7.142857142857142, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002066945299948105, + "y": -0.000765929548617383, + "z": 0.00008188533101194777 + }, + "angle": { + "x": -0.00002991111177971432, + "y": -0.000008948914448244828, + "z": 0.000017860874281732444 + } + }, + { + "id": "n916", + "parent": "11", + "degrees_of_freedom": [ + 5496, + 5497, + 5498, + 5499, + 5500, + 5501 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 7.979694910895579, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00021258970079322332, + "y": -0.0007564280192265474, + "z": 0.0000749341240503855 + }, + "angle": { + "x": 0.000011096507011502222, + "y": 0.000008036990765650042, + "z": -0.00001903344264712253 + } + }, + { + "id": "n917", + "parent": "11", + "degrees_of_freedom": [ + 5502, + 5503, + 5504, + 5505, + 5506, + 5507 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00022370261007093699, + "y": -0.00079457460805546, + "z": 0.00009062677525221065 + }, + "angle": { + "x": -0.000009719533113880416, + "y": -0.00004221733893674714, + "z": -3.5766818005046613e-7 + } + }, + { + "id": "n918", + "parent": "11", + "degrees_of_freedom": [ + 5508, + 5509, + 5510, + 5511, + 5512, + 5513 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 12.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00021762919357070214, + "y": -0.0008278447441544479, + "z": 0.00003566127123164935 + }, + "angle": { + "x": -0.0000055851421466433794, + "y": -0.00005219870862164653, + "z": 0.00001151662189690189 + } + }, + { + "id": "n919", + "parent": "11", + "degrees_of_freedom": [ + 5514, + 5515, + 5516, + 5517, + 5518, + 5519 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 12.857142857142858, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020624855802147963, + "y": -0.0008677742065119395, + "z": -0.00007446986639641741 + }, + "angle": { + "x": -0.00018992806372660037, + "y": 0.000024158676443929562, + "z": 0.000018806200108681408 + } + }, + { + "id": "n920", + "parent": "11", + "degrees_of_freedom": [ + 5520, + 5521, + 5522, + 5523, + 5524, + 5525 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 12.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002001909397594323, + "y": -0.0008818591491128391, + "z": 0.00013327702554222673 + }, + "angle": { + "x": 0.00010815450079818449, + "y": 0.0001476284351773489, + "z": -0.000015485641953149948 + } + }, + { + "id": "n921", + "parent": "11", + "degrees_of_freedom": [ + 5526, + 5527, + 5528, + 5529, + 5530, + 5531 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019337994175700767, + "y": -0.0008423868917055979, + "z": 0.00003831306908528524 + }, + "angle": { + "x": 0.000023388045610777315, + "y": -0.00005701576343324053, + "z": 1.337457441383062e-7 + } + }, + { + "id": "n922", + "parent": "11", + "degrees_of_freedom": [ + 5532, + 5533, + 5534, + 5535, + 5536, + 5537 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 7.979694910895579, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019831364137536166, + "y": -0.0008055681275532732, + "z": 0.000038775029553901285 + }, + "angle": { + "x": 0.000010393235702660357, + "y": -0.000025643522676448023, + "z": 0.000011178159400052508 + } + }, + { + "id": "n923", + "parent": "11", + "degrees_of_freedom": [ + 5538, + 5539, + 5540, + 5541, + 5542, + 5543 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 12.857142857142858, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001233438518999659, + "y": -0.0008887635860680489, + "z": 0.00013457477061255485 + }, + "angle": { + "x": 2.329644441803811e-7, + "y": -0.00001982287585257249, + "z": -0.000006875156419337839 + } + }, + { + "id": "n924", + "parent": "11", + "degrees_of_freedom": [ + 5544, + 5545, + 5546, + 5547, + 5548, + 5549 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 12.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009918906139455405, + "y": -0.0008522035971924338, + "z": 0.00009508582613812955 + }, + "angle": { + "x": 0.000017281377861501724, + "y": -0.000011641143439054904, + "z": -0.000029828970633156792 + } + }, + { + "id": "n925", + "parent": "11", + "degrees_of_freedom": [ + 5550, + 5551, + 5552, + 5553, + 5554, + 5555 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007761556825145413, + "y": -0.0007859557264389269, + "z": 0.0000494790267476318 + }, + "angle": { + "x": 0.000011327035836812837, + "y": -0.000027721540765225914, + "z": -0.0000038065806714936144 + } + }, + { + "id": "n926", + "parent": "11", + "degrees_of_freedom": [ + 5556, + 5557, + 5558, + 5559, + 5560, + 5561 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 7.979694910895579, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008323116762954894, + "y": -0.000726765441973338, + "z": 0.000050269085439242726 + }, + "angle": { + "x": 5.810781296850298e-8, + "y": -0.000002221274903770012, + "z": 0.000021124015651627736 + } + }, + { + "id": "n927", + "parent": "11", + "degrees_of_freedom": [ + 5562, + 5563, + 5564, + 5565, + 5566, + 5567 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 7.142857142857142, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009626476228417012, + "y": -0.00071347238042927, + "z": 0.00005439562154531766 + }, + "angle": { + "x": 0.000029830192261213376, + "y": -0.000014321260320056476, + "z": -0.000006514053229987172 + } + }, + { + "id": "n928", + "parent": "11", + "degrees_of_freedom": [ + 5568, + 5569, + 5570, + 5571, + 5572, + 5573 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 7.979694910895579, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012063309982460492, + "y": -0.0007534494618401647, + "z": 0.00010844823079171364 + }, + "angle": { + "x": 0.000004552709650652508, + "y": -0.000025023547401163464, + "z": -0.000034839516958255517 + } + }, + { + "id": "n929", + "parent": "11", + "degrees_of_freedom": [ + 5574, + 5575, + 5576, + 5577, + 5578, + 5579 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014835855279220965, + "y": -0.0008194615934978213, + "z": 0.00014098798287245505 + }, + "angle": { + "x": 0.000016736789940991194, + "y": 8.729793684258932e-8, + "z": -0.000004577173990098026 + } + }, + { + "id": "n930", + "parent": "11", + "degrees_of_freedom": [ + 5580, + 5581, + 5582, + 5583, + 5584, + 5585 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 12.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001404545925852875, + "y": -0.0008762337033967444, + "z": 0.00017367381193511303 + }, + "angle": { + "x": 0.000027397798442538985, + "y": -0.00002995486852130029, + "z": 0.000023174229126415885 + } + }, + { + "id": "n931", + "parent": "11", + "degrees_of_freedom": [ + 5586, + 5587, + 5588, + 5589, + 5590, + 5591 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 5, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005056781724118187, + "y": -0.0005437894162878272, + "z": 0.00008838288668055112 + }, + "angle": { + "x": 0.00012820594369796759, + "y": -0.0000094912466618277, + "z": 0.0000475928928463813 + } + }, + { + "id": "n932", + "parent": "11", + "degrees_of_freedom": [ + 5592, + 5593, + 5594, + 5595, + 5596, + 5597 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 5, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005023316374618693, + "y": -0.0005212063443172468, + "z": 0.000056711529157268025 + }, + "angle": { + "x": 0.000016821372642446716, + "y": -0.000009130279062066585, + "z": -0.00002014609262382732 + } + }, + { + "id": "n933", + "parent": "11", + "degrees_of_freedom": [ + 5598, + 5599, + 5600, + 5601, + 5602, + 5603 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00004103643071533304, + "y": -0.0010824214271563045, + "z": 0.00027345108045152063 + }, + "angle": { + "x": 0.00004358179424669336, + "y": -0.00002778868283137768, + "z": -0.000015967272538761783 + } + }, + { + "id": "n934", + "parent": "11", + "degrees_of_freedom": [ + 5604, + 5605, + 5606, + 5607, + 5608, + 5609 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000050628224926698025, + "y": -0.0008102605478247831, + "z": 0.00020829280152118718 + }, + "angle": { + "x": 0.000019896408424755842, + "y": -0.000013906250948507028, + "z": -0.0000055370036692614725 + } + }, + { + "id": "n935", + "parent": "11", + "degrees_of_freedom": [ + 5610, + 5611, + 5612, + 5613, + 5614, + 5615 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011906794045923675, + "y": -0.0007853202864311309, + "z": 0.00022245741650042458 + }, + "angle": { + "x": 0.0000016973102265299755, + "y": 0.00003632505810574002, + "z": -0.000008513751416879488 + } + }, + { + "id": "n936", + "parent": "11", + "degrees_of_freedom": [ + 5616, + 5617, + 5618, + 5619, + 5620, + 5621 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 12.020305089104422, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010825614162746106, + "y": -0.0008059745451684436, + "z": 0.0002118056767482091 + }, + "angle": { + "x": -0.000016283618182792665, + "y": -0.0001128767291437999, + "z": 0.00004495330433394567 + } + }, + { + "id": "n937", + "parent": "11", + "degrees_of_freedom": [ + 5622, + 5623, + 5624, + 5625, + 5626, + 5627 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 12.857142857142858, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000766969774539123, + "y": -0.0008892514809939223, + "z": 0.00020178526932302507 + }, + "angle": { + "x": -0.00005714410918776784, + "y": 0.000018406177720607036, + "z": -7.459586635103046e-7 + } + }, + { + "id": "n938", + "parent": "11", + "degrees_of_freedom": [ + 5628, + 5629, + 5630, + 5631, + 5632, + 5633 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 12.020305089104422, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003661257761083187, + "y": -0.0009513965544682822, + "z": 0.00020192828782400411 + }, + "angle": { + "x": 0.000024108025895047368, + "y": -0.000058965179014989656, + "z": -0.000027384596588195794 + } + }, + { + "id": "n939", + "parent": "11", + "degrees_of_freedom": [ + 5634, + 5635, + 5636, + 5637, + 5638, + 5639 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000022269435322693257, + "y": -0.0009165911924374258, + "z": 0.00018640827257425442 + }, + "angle": { + "x": 0.0000012582861855617483, + "y": -0.0000024457548531021424, + "z": -0.000006685771214317703 + } + }, + { + "id": "n940", + "parent": "11", + "degrees_of_freedom": [ + 5640, + 5641, + 5642, + 5643, + 5644, + 5645 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 7.979694910895579, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000038329137081682965, + "y": -0.0008887282006895643, + "z": 0.00019303133578701435 + }, + "angle": { + "x": -0.00001228511399097671, + "y": -0.00015817160238626235, + "z": 0.00004765546154336099 + } + }, + { + "id": "n941", + "parent": "11", + "degrees_of_freedom": [ + 5646, + 5647, + 5648, + 5649, + 5650, + 5651 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 7.142857142857142, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000046133329668892276, + "y": -0.0008153704802159913, + "z": 0.00020185125786661184 + }, + "angle": { + "x": -0.000050407913416493416, + "y": 0.000015473439375282067, + "z": -0.000014453503294096217 + } + }, + { + "id": "n942", + "parent": "11", + "degrees_of_freedom": [ + 5652, + 5653, + 5654, + 5655, + 5656, + 5657 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 7.979694910895578, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006908333435014187, + "y": -0.0007595407732637905, + "z": 0.00020350985697811864 + }, + "angle": { + "x": 0.000024503788099255034, + "y": -0.00011389119332256016, + "z": -0.000060907007387098005 + } + }, + { + "id": "n943", + "parent": "11", + "degrees_of_freedom": [ + 5658, + 5659, + 5660, + 5661, + 5662, + 5663 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.000027280346605329798, + "y": -0.0009839402893234387, + "z": 0.00017760629099816404 + }, + "angle": { + "x": 0.000002361042343223008, + "y": -0.000027285455735688977, + "z": 0.0000015863086294130728 + } + }, + { + "id": "n944", + "parent": "11", + "degrees_of_freedom": [ + 5664, + 5665, + 5666, + 5667, + 5668, + 5669 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000040702522038078534, + "y": -0.0009415140688754746, + "z": 0.00022061586629218695 + }, + "angle": { + "x": 0.000017026494167455975, + "y": -0.00002791257543832389, + "z": 0.000012460155059750316 + } + }, + { + "id": "n945", + "parent": "11", + "degrees_of_freedom": [ + 5670, + 5671, + 5672, + 5673, + 5674, + 5675 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00000759538144082596, + "y": -0.0010424987384564585, + "z": 0.00021080977559374876 + }, + "angle": { + "x": -0.0002841895138167351, + "y": -0.000023391900556406465, + "z": 0.00011653330244272802 + } + }, + { + "id": "n946", + "parent": "11", + "degrees_of_freedom": [ + 5676, + 5677, + 5678, + 5679, + 5680, + 5681 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010319667102130354, + "y": -0.0010766823150356705, + "z": 0.00017307451589080602 + }, + "angle": { + "x": 0.00007820823566783275, + "y": -0.000020927390130494843, + "z": -0.00001401618121665743 + } + }, + { + "id": "n947", + "parent": "11", + "degrees_of_freedom": [ + 5682, + 5683, + 5684, + 5685, + 5686, + 5687 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 15, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000052214822039908064, + "y": -0.0009799705046519929, + "z": 0.00013451323568310067 + }, + "angle": { + "x": -0.00032722644639361046, + "y": -0.00002375756976285474, + "z": -0.00015493658127502022 + } + }, + { + "id": "n948", + "parent": "11", + "degrees_of_freedom": [ + 5688, + 5689, + 5690, + 5691, + 5692, + 5693 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003613462138437966, + "y": -0.0007649415813206388, + "z": 0.0001213535076506993 + }, + "angle": { + "x": 0.0000095875004489153, + "y": -0.00002815379496707695, + "z": -0.000033433148592251354 + } + }, + { + "id": "n949", + "parent": "11", + "degrees_of_freedom": [ + 5694, + 5695, + 5696, + 5697, + 5698, + 5699 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 15, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00006657270388297655, + "y": -0.0009343450061826371, + "z": 0.00013136653618896966 + }, + "angle": { + "x": 0.00033604317059205644, + "y": -0.000023258130692454238, + "z": -0.00014763569827433692 + } + }, + { + "id": "n950", + "parent": "11", + "degrees_of_freedom": [ + 5700, + 5701, + 5702, + 5703, + 5704, + 5705 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008628457489890999, + "y": -0.0010006458392715697, + "z": 0.0001687037970991248 + }, + "angle": { + "x": -0.00005159655267639999, + "y": -0.000021089732935203263, + "z": -0.000009379321952950308 + } + }, + { + "id": "n951", + "parent": "11", + "degrees_of_freedom": [ + 5706, + 5707, + 5708, + 5709, + 5710, + 5711 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 15, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000683116966754815, + "y": -0.000982305093347889, + "z": 0.0002068168908754864 + }, + "angle": { + "x": 0.0000019558639712391268, + "y": -0.0000254044122126023, + "z": 0.000008031164608149224 + } + }, + { + "id": "n952", + "parent": "11", + "degrees_of_freedom": [ + 5712, + 5713, + 5714, + 5715, + 5716, + 5717 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 12.857142857142858, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000022522416863496082, + "y": -0.0008707271147330844, + "z": 0.00015918199210354558 + }, + "angle": { + "x": 0.0000019947344915349255, + "y": -0.000017646631236425364, + "z": -0.0000029585820052749534 + } + }, + { + "id": "n953", + "parent": "11", + "degrees_of_freedom": [ + 5718, + 5719, + 5720, + 5721, + 5722, + 5723 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 12.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000021605193132708987, + "y": -0.0008427160631823468, + "z": 0.0001227493109965074 + }, + "angle": { + "x": 0.000007505730917643753, + "y": -0.000014045021131771146, + "z": -0.000024488363682169995 + } + }, + { + "id": "n954", + "parent": "11", + "degrees_of_freedom": [ + 5724, + 5725, + 5726, + 5727, + 5728, + 5729 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003045675667961378, + "y": -0.0007818238217258481, + "z": 0.00009533448485413833 + }, + "angle": { + "x": 0.000009731005482562204, + "y": -0.00000956458610536605, + "z": 0.0000028370882022183165 + } + }, + { + "id": "n955", + "parent": "11", + "degrees_of_freedom": [ + 5730, + 5731, + 5732, + 5733, + 5734, + 5735 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 7.979694910895579, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000012417973610421986, + "y": -0.0007188923173172306, + "z": 0.00008392764618422115 + }, + "angle": { + "x": 0.000008136241495599934, + "y": -0.000006606259602405748, + "z": 0.000025855058189672877 + } + }, + { + "id": "n956", + "parent": "11", + "degrees_of_freedom": [ + 5736, + 5737, + 5738, + 5739, + 5740, + 5741 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 7.142857142857142, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000004749264726228503, + "y": -0.0006966097775630685, + "z": 0.00009032772348980197 + }, + "angle": { + "x": 0.00002110645141307049, + "y": -0.00001187633004396976, + "z": -0.0000020040942842029123 + } + }, + { + "id": "n957", + "parent": "11", + "degrees_of_freedom": [ + 5742, + 5743, + 5744, + 5745, + 5746, + 5747 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 7.979694910895579, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000024879931165531085, + "y": -0.0007266617421986696, + "z": 0.0001320531579239419 + }, + "angle": { + "x": 0.00001164382420438804, + "y": -0.0000158982422180028, + "z": -0.000029241929664023017 + } + }, + { + "id": "n958", + "parent": "11", + "degrees_of_freedom": [ + 5748, + 5749, + 5750, + 5751, + 5752, + 5753 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000039187004153539745, + "y": -0.000787859185954989, + "z": 0.00017089473633188145 + }, + "angle": { + "x": 0.000015402689464571135, + "y": -0.000010432208862048388, + "z": 0.0000023539322707822358 + } + }, + { + "id": "n959", + "parent": "11", + "degrees_of_freedom": [ + 5754, + 5755, + 5756, + 5757, + 5758, + 5759 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 12.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000018314838574967252, + "y": -0.0008494898087542013, + "z": 0.00019227613648283313 + }, + "angle": { + "x": 0.000019322935059750202, + "y": -0.000023505325607449365, + "z": 0.000028374644903664755 + } + }, + { + "id": "n960", + "parent": "11", + "degrees_of_freedom": [ + 5760, + 5761, + 5762, + 5763, + 5764, + 5765 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00011612972625325069, + "y": -0.0010810037079509785, + "z": 0.0002856066495159665 + }, + "angle": { + "x": 0.000044117265686060756, + "y": -0.000028346390972941857, + "z": -0.000016242706729364966 + } + }, + { + "id": "n961", + "parent": "11", + "degrees_of_freedom": [ + 5766, + 5767, + 5768, + 5769, + 5770, + 5771 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011970243463630739, + "y": -0.0008513390850136152, + "z": 0.00021972916397115395 + }, + "angle": { + "x": 0.0000240189806544467, + "y": -0.0000052787761543122094, + "z": -0.0000015151543888884476 + } + }, + { + "id": "n962", + "parent": "11", + "degrees_of_freedom": [ + 5772, + 5773, + 5774, + 5775, + 5776, + 5777 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000058549885329849496, + "y": -0.0007920918397278502, + "z": 0.00023175444352522407 + }, + "angle": { + "x": 0.000003958678133569377, + "y": -0.000018978766180202786, + "z": 0.000021793973525658416 + } + }, + { + "id": "n963", + "parent": "11", + "degrees_of_freedom": [ + 5778, + 5779, + 5780, + 5781, + 5782, + 5783 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 12.020305089104422, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000942525621665389, + "y": -0.0008156446452981483, + "z": 0.00022778739586744334 + }, + "angle": { + "x": -0.000011452770406238929, + "y": -0.00017172968356536333, + "z": 0.00007579948428981059 + } + }, + { + "id": "n964", + "parent": "11", + "degrees_of_freedom": [ + 5784, + 5785, + 5786, + 5787, + 5788, + 5789 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 12.857142857142858, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018044622411229514, + "y": -0.0008875039942600324, + "z": 0.0002190263926065928 + }, + "angle": { + "x": -0.00004921760457828153, + "y": 0.00000872506209526391, + "z": 0.000011999111516473554 + } + }, + { + "id": "n965", + "parent": "11", + "degrees_of_freedom": [ + 5790, + 5791, + 5792, + 5793, + 5794, + 5795 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 12.020305089104422, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001295070994258274, + "y": -0.0009422753900927345, + "z": 0.00021627620032830042 + }, + "angle": { + "x": 0.000026275250838781636, + "y": 0.00010807612276632267, + "z": 0.0000471250329552276 + } + }, + { + "id": "n966", + "parent": "11", + "degrees_of_freedom": [ + 5796, + 5797, + 5798, + 5799, + 5800, + 5801 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010840717485620362, + "y": -0.0009016080690378031, + "z": 0.00019815456544078667 + }, + "angle": { + "x": 0.0000034500061985593647, + "y": 0.0000364292068221413, + "z": 0.000021794177461589367 + } + }, + { + "id": "n967", + "parent": "11", + "degrees_of_freedom": [ + 5802, + 5803, + 5804, + 5805, + 5806, + 5807 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 7.979694910895579, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00002633651561384038, + "y": -0.0008722285669616169, + "z": 0.00019865319378036588 + }, + "angle": { + "x": -0.00000798032837525199, + "y": -0.00042071005093470494, + "z": 0.0001834172100025555 + } + }, + { + "id": "n968", + "parent": "11", + "degrees_of_freedom": [ + 5808, + 5809, + 5810, + 5811, + 5812, + 5813 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 7.142857142857142, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017179799318845897, + "y": -0.0008071580722571818, + "z": 0.00020576453451644523 + }, + "angle": { + "x": -0.000043914808919759586, + "y": 0.000008724508192181011, + "z": 0.000031588826238317195 + } + }, + { + "id": "n969", + "parent": "11", + "degrees_of_freedom": [ + 5814, + 5815, + 5816, + 5817, + 5818, + 5819 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 7.979694910895578, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000008917127385341356, + "y": -0.0007581062424349144, + "z": 0.0002097680639250174 + }, + "angle": { + "x": 0.000027852604256377265, + "y": 0.0003477876278750686, + "z": 0.00015146540769816138 + } + }, + { + "id": "n970", + "parent": "11", + "degrees_of_freedom": [ + 5820, + 5821, + 5822, + 5823, + 5824, + 5825 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.0001951002860961895, + "y": -0.0010338515429696201, + "z": 0.00018368414705896503 + }, + "angle": { + "x": -0.0000029502105558539024, + "y": -0.00003047125050716563, + "z": 0.000021139372911403846 + } + }, + { + "id": "n971", + "parent": "11", + "degrees_of_freedom": [ + 5826, + 5827, + 5828, + 5829, + 5830, + 5831 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001152920813072275, + "y": -0.0011806109047865603, + "z": 0.00023277518537765307 + }, + "angle": { + "x": 0.000013375893627385145, + "y": -0.000031763550507598715, + "z": -0.000028299654744945962 + } + }, + { + "id": "n972", + "parent": "11", + "degrees_of_freedom": [ + 5832, + 5833, + 5834, + 5835, + 5836, + 5837 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 15, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001512788156989329, + "y": -0.0010449767169908113, + "z": 0.00022131310999478032 + }, + "angle": { + "x": 0.00009509277947410614, + "y": -0.000024772970732432035, + "z": -0.0000576871629147408 + } + }, + { + "id": "n973", + "parent": "11", + "degrees_of_freedom": [ + 5838, + 5839, + 5840, + 5841, + 5842, + 5843 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016835341885669512, + "y": -0.0009872293666007108, + "z": 0.00018319036087504354 + }, + "angle": { + "x": -0.00006228583389720619, + "y": -0.000019914090297536412, + "z": -0.0000025415104782889677 + } + }, + { + "id": "n974", + "parent": "11", + "degrees_of_freedom": [ + 5844, + 5845, + 5846, + 5847, + 5848, + 5849 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 15, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001530528175884515, + "y": -0.0010337284162285434, + "z": 0.00014823979736446118 + }, + "angle": { + "x": 0.00030495504752070334, + "y": -0.00002107593127149984, + "z": 0.0001277939256006413 + } + }, + { + "id": "n975", + "parent": "11", + "degrees_of_freedom": [ + 5850, + 5851, + 5852, + 5853, + 5854, + 5855 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011983186963147974, + "y": -0.001149767407738716, + "z": 0.00013687466234911505 + }, + "angle": { + "x": 0.000011344143334034058, + "y": -0.000030323371236701425, + "z": 0.000024482959494955273 + } + }, + { + "id": "n976", + "parent": "11", + "degrees_of_freedom": [ + 5856, + 5857, + 5858, + 5859, + 5860, + 5861 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 15, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008406496506031263, + "y": -0.000986000977690509, + "z": 0.00014715716889877688 + }, + "angle": { + "x": -0.00027067389081230183, + "y": -0.000022675200597151617, + "z": 0.00012468756145022044 + } + }, + { + "id": "n977", + "parent": "11", + "degrees_of_freedom": [ + 5862, + 5863, + 5864, + 5865, + 5866, + 5867 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006509358617891503, + "y": -0.0009166008723561108, + "z": 0.00018138799114670969 + }, + "angle": { + "x": 0.00008700570248452105, + "y": -0.000019188319203152585, + "z": -0.0000012751258336949637 + } + }, + { + "id": "n978", + "parent": "11", + "degrees_of_freedom": [ + 5868, + 5869, + 5870, + 5871, + 5872, + 5873 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 15, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007989210426726488, + "y": -0.0009928202438976514, + "z": 0.00021981749788898094 + }, + "angle": { + "x": -0.00022850721505368845, + "y": -0.000026195749840162237, + "z": -0.0001133220474156882 + } + }, + { + "id": "n979", + "parent": "11", + "degrees_of_freedom": [ + 5874, + 5875, + 5876, + 5877, + 5878, + 5879 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 12.857142857142858, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001302094513338972, + "y": -0.0008783744113128332, + "z": 0.0001807853097312511 + }, + "angle": { + "x": -0.00004801383978750691, + "y": -0.000016368134966648822, + "z": -0.00002795655274893928 + } + }, + { + "id": "n980", + "parent": "11", + "degrees_of_freedom": [ + 5880, + 5881, + 5882, + 5883, + 5884, + 5885 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 12.020305089104422, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00014344185686326216, + "y": -0.0008170193595615683, + "z": 0.00018789644236321133 + }, + "angle": { + "x": 0.00008586579499687082, + "y": 0.000039086564722378694, + "z": -0.000020684369170731488 + } + }, + { + "id": "n981", + "parent": "11", + "degrees_of_freedom": [ + 5886, + 5887, + 5888, + 5889, + 5890, + 5891 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001599964542419387, + "y": -0.0007807388050018936, + "z": 0.00004713044340700599 + }, + "angle": { + "x": 0.000036000714531538606, + "y": -0.0000812984269887792, + "z": -0.000002156979659702249 + } + }, + { + "id": "n982", + "parent": "11", + "degrees_of_freedom": [ + 5892, + 5893, + 5894, + 5895, + 5896, + 5897 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 7.979694910895579, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015285754132194506, + "y": -0.0007489015546148708, + "z": 0.00004243163763309982 + }, + "angle": { + "x": 0.0000298606387000532, + "y": -0.00006647508169372767, + "z": 0.00001504551829374606 + } + }, + { + "id": "n983", + "parent": "11", + "degrees_of_freedom": [ + 5898, + 5899, + 5900, + 5901, + 5902, + 5903 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 7.142857142857142, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001543506237227735, + "y": -0.0007722527079063626, + "z": 0.00015174309452793726 + }, + "angle": { + "x": -0.00006308253603842918, + "y": -0.000027976742921629835, + "z": -0.000026949310312790525 + } + }, + { + "id": "n984", + "parent": "11", + "degrees_of_freedom": [ + 5904, + 5905, + 5906, + 5907, + 5908, + 5909 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 7.979694910895579, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00014130917766299778, + "y": -0.0008321074526851729, + "z": 0.00015547482292865408 + }, + "angle": { + "x": 0.00007473854732406919, + "y": 0.000029110589331204636, + "z": -0.000020339202245463466 + } + }, + { + "id": "n985", + "parent": "11", + "degrees_of_freedom": [ + 5910, + 5911, + 5912, + 5913, + 5914, + 5915 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012679589523000592, + "y": -0.0008705922072922202, + "z": 0.00028210865844416555 + }, + "angle": { + "x": 0.00002439212144619927, + "y": -0.00009243642455551068, + "z": -0.0000015692753706572725 + } + }, + { + "id": "n986", + "parent": "11", + "degrees_of_freedom": [ + 5916, + 5917, + 5918, + 5919, + 5920, + 5921 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 12.020305089104422, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00013306147878915198, + "y": -0.0009041809520800275, + "z": 0.00025403379052182646 + }, + "angle": { + "x": 0.0000013535927826987915, + "y": -0.00003681684460251624, + "z": 0.00001359226369143602 + } + }, + { + "id": "n987", + "parent": "11", + "degrees_of_freedom": [ + 5922, + 5923, + 5924, + 5925, + 5926, + 5927 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 15, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018153611904783525, + "y": -0.0008338405056203711, + "z": 0.0002089701335181138 + }, + "angle": { + "x": 0.00001968543695253322, + "y": -0.000025329338708690433, + "z": 0.0000448976175888926 + } + }, + { + "id": "n988", + "parent": "11", + "degrees_of_freedom": [ + 5928, + 5929, + 5930, + 5931, + 5932, + 5933 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 15, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00021003597245765286, + "y": -0.0010502554839174724, + "z": 0.0001988543296289428 + }, + "angle": { + "x": 0.00043372375999518105, + "y": -0.00002308459190997862, + "z": 0.00019108683251937265 + } + }, + { + "id": "n989", + "parent": "11", + "degrees_of_freedom": [ + 5934, + 5935, + 5936, + 5937, + 5938, + 5939 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 15, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002056174460523152, + "y": -0.0008775399592314252, + "z": 0.00011522034615041044 + }, + "angle": { + "x": 0.0008496562029618467, + "y": -0.000026371694351866113, + "z": -0.0004099104950915589 + } + }, + { + "id": "n990", + "parent": "11", + "degrees_of_freedom": [ + 5940, + 5941, + 5942, + 5943, + 5944, + 5945 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 15, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017561106610660616, + "y": -0.0002556484536781727, + "z": 0.00010278336252074363 + }, + "angle": { + "x": 0.00002185411266042179, + "y": -0.000027402113433835495, + "z": -0.00011621727416586638 + } + }, + { + "id": "n991", + "parent": "11", + "degrees_of_freedom": [ + 5946, + 5947, + 5948, + 5949, + 5950, + 5951 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 15, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014527090216883134, + "y": -0.0009619542381265447, + "z": 0.0001138732526532162 + }, + "angle": { + "x": -0.001124009729493349, + "y": -0.00002484886828924403, + "z": -0.0005203202226426273 + } + }, + { + "id": "n992", + "parent": "11", + "degrees_of_freedom": [ + 5952, + 5953, + 5954, + 5955, + 5956, + 5957 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 15, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015413444712878023, + "y": -0.0011305410805494184, + "z": 0.00019757669437422596 + }, + "angle": { + "x": -0.0007145572105518637, + "y": -0.000023560123820745945, + "z": 0.0003046869715100542 + } + }, + { + "id": "n993", + "parent": "11", + "degrees_of_freedom": [ + 5958, + 5959, + 5960, + 5961, + 5962, + 5963 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00034657598792238605, + "y": -0.0014577975308641673, + "z": 0.0005412725999985844 + }, + "angle": { + "x": 0.00010066081361249122, + "y": -0.000047979309960735195, + "z": 0.000014701271349433468 + } + }, + { + "id": "n994", + "parent": "11", + "degrees_of_freedom": [ + 5964, + 5965, + 5966, + 5967, + 5968, + 5969 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0003444441781196212, + "y": -0.0012013626644851968, + "z": 0.00033118471433046196 + }, + "angle": { + "x": 0.000029281538748734657, + "y": -0.0000011588658935988204, + "z": -0.000018610295671314394 + } + }, + { + "id": "n995", + "parent": "11", + "degrees_of_freedom": [ + 5970, + 5971, + 5972, + 5973, + 5974, + 5975 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018335632338173003, + "y": -0.0011981987034137644, + "z": 0.0003614495418534764 + }, + "angle": { + "x": 0.00001567268869038983, + "y": -0.00003910939784291414, + "z": -0.00002112028137656695 + } + }, + { + "id": "n996", + "parent": "11", + "degrees_of_freedom": [ + 5976, + 5977, + 5978, + 5979, + 5980, + 5981 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00028369827275849757, + "y": -0.0012113500288022804, + "z": 0.00035895301658662993 + }, + "angle": { + "x": 0.000016275650751512558, + "y": -0.000010478306233524133, + "z": -0.00006038218189033949 + } + }, + { + "id": "n997", + "parent": "11", + "degrees_of_freedom": [ + 5982, + 5983, + 5984, + 5985, + 5986, + 5987 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 22.020305089104422, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0004353877862412183, + "y": -0.0012101067549397026, + "z": 0.0003774929491765714 + }, + "angle": { + "x": 0.000002356462861281416, + "y": 0.00022353138515548664, + "z": -0.00014311731867027618 + } + }, + { + "id": "n998", + "parent": "11", + "degrees_of_freedom": [ + 5988, + 5989, + 5990, + 5991, + 5992, + 5993 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 22.857142857142858, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0008016021693801314, + "y": -0.0012660263511506979, + "z": 0.0003804720696092895 + }, + "angle": { + "x": -0.000029214985659582702, + "y": -0.000017835170979118245, + "z": -0.00005778206670364404 + } + }, + { + "id": "n999", + "parent": "11", + "degrees_of_freedom": [ + 5994, + 5995, + 5996, + 5997, + 5998, + 5999 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 22.020305089104422, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0005074501427877447, + "y": -0.0012918017765243264, + "z": 0.00037404634046248996 + }, + "angle": { + "x": 0.000044673813175070334, + "y": -0.0007974251718643006, + "z": -0.00033340940912677305 + } + }, + { + "id": "n1000", + "parent": "11", + "degrees_of_freedom": [ + 6000, + 6001, + 6002, + 6003, + 6004, + 6005 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0003856069410705065, + "y": -0.0012542833626815644, + "z": 0.00032705977889573127 + }, + "angle": { + "x": 0.000015445640541846688, + "y": -0.000025188672618491012, + "z": -0.000060382812397480057 + } + }, + { + "id": "n1001", + "parent": "11", + "degrees_of_freedom": [ + 6006, + 6007, + 6008, + 6009, + 6010, + 6011 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 17.979694910895578, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00022160612202446047, + "y": -0.0012479043318350765, + "z": 0.000312100635624369 + }, + "angle": { + "x": 0.0000018764340748999262, + "y": 0.00045196093975446717, + "z": -0.00022908040793182503 + } + }, + { + "id": "n1002", + "parent": "11", + "degrees_of_freedom": [ + 6012, + 6013, + 6014, + 6015, + 6016, + 6017 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 17.142857142857142, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001743266070607618, + "y": -0.0012168748681089018, + "z": 0.00031522431855671184 + }, + "angle": { + "x": -0.00002042880496253918, + "y": -0.00001783414210494072, + "z": -0.00006298297141843334 + } + }, + { + "id": "n1003", + "parent": "11", + "degrees_of_freedom": [ + 6018, + 6019, + 6020, + 6021, + 6022, + 6023 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 17.979694910895578, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014954598469448747, + "y": -0.0011918598433006127, + "z": 0.0003227755904936751 + }, + "angle": { + "x": 0.000024677094261617762, + "y": -0.0005720767298569839, + "z": -0.0002589374660260757 + } + }, + { + "id": "n1004", + "parent": "11", + "degrees_of_freedom": [ + 6024, + 6025, + 6026, + 6027, + 6028, + 6029 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0004933378299930655, + "y": -0.001278911595900053, + "z": 0.0003578881540021679 + }, + "angle": { + "x": 0.0000448628510803624, + "y": -0.00006915905290554318, + "z": -0.00006737197174734743 + } + }, + { + "id": "n1005", + "parent": "11", + "degrees_of_freedom": [ + 6030, + 6031, + 6032, + 6033, + 6034, + 6035 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": 0.00020532193038451288, + "y": -0.0012056318576777344, + "z": 0.00031122457802152146 + }, + "angle": { + "x": 0.00003337623514358655, + "y": -0.00003971790008348723, + "z": -0.000010196449353351031 + } + }, + { + "id": "n1006", + "parent": "11", + "degrees_of_freedom": [ + 6036, + 6037, + 6038, + 6039, + 6040, + 6041 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 25, + "z": -3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000320812656365901, + "y": -0.002330627717402058, + "z": 0.00045444672218236925 + }, + "angle": { + "x": -0.00002961582565334992, + "y": -0.00004778607314968228, + "z": -0.00009549446588968224 + } + }, + { + "id": "n1007", + "parent": "11", + "degrees_of_freedom": [ + 6042, + 6043, + 6044, + 6045, + 6046, + 6047 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 25, + "z": 2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00027124067734330597, + "y": -0.0017251110315480859, + "z": 0.00043115410295824333 + }, + "angle": { + "x": 0.0015091928565159546, + "y": -0.00005014061190823107, + "z": -0.000639545997906959 + } + }, + { + "id": "n1008", + "parent": "11", + "degrees_of_freedom": [ + 6048, + 6049, + 6050, + 6051, + 6052, + 6053 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002351957935889321, + "y": -0.0014742972344487354, + "z": 0.0003403633673019865 + }, + "angle": { + "x": 0.000109184497813627, + "y": -0.0000521086819634347, + "z": -0.00014456811960231864 + } + }, + { + "id": "n1009", + "parent": "11", + "degrees_of_freedom": [ + 6054, + 6055, + 6056, + 6057, + 6058, + 6059 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 25, + "z": 2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00027389562676084637, + "y": -0.0010407439503220546, + "z": 0.00024865929437308166 + }, + "angle": { + "x": -0.0014194055603172003, + "y": -0.000051656472401381056, + "z": -0.0006850065421266236 + } + }, + { + "id": "n1010", + "parent": "11", + "degrees_of_freedom": [ + 6060, + 6061, + 6062, + 6063, + 6064, + 6065 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 25, + "z": 3.140184917367551e-16 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0003141841241910477, + "y": 0.000005952654773679881, + "z": 0.00022271296691753597 + }, + "angle": { + "x": -0.000029614392693830688, + "y": -0.00004330436189055207, + "z": -0.00019364266444492592 + } + }, + { + "id": "n1011", + "parent": "11", + "degrees_of_freedom": [ + 6066, + 6067, + 6068, + 6069, + 6070, + 6071 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 25, + "z": -2.020305089104421 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0003646511994054501, + "y": -0.0011604095493549505, + "z": 0.00024311102313069065 + }, + "angle": { + "x": 0.0018400440973437239, + "y": -0.00005629643245135753, + "z": -0.0008546680779149181 + } + }, + { + "id": "n1012", + "parent": "11", + "degrees_of_freedom": [ + 6072, + 6073, + 6074, + 6075, + 6076, + 6077 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": -2.857142857142857 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0004091077920437817, + "y": -0.0016435346857283275, + "z": 0.0003377363355023386 + }, + "angle": { + "x": -0.00016841983706094711, + "y": -0.0000529789544492523, + "z": -0.0001445687537059029 + } + }, + { + "id": "n1013", + "parent": "11", + "degrees_of_freedom": [ + 6078, + 6079, + 6080, + 6081, + 6082, + 6083 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 25, + "z": -2.0203050891044216 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0003739957235096677, + "y": -0.0018447791751223038, + "z": 0.0004317787530504256 + }, + "angle": { + "x": 0.000028735358434881695, + "y": -0.00005371844820345355, + "z": -0.0000748636157645821 + } + }, + { + "id": "n1014", + "parent": "11", + "degrees_of_freedom": [ + 6084, + 6085, + 6086, + 6087, + 6088, + 6089 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 17.142857142857142, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00030613725666114026, + "y": -0.0010980588161134707, + "z": 0.0000954455684950788 + }, + "angle": { + "x": 0.000060085612816177, + "y": -0.000017608424949524145, + "z": -0.000002973463316994781 + } + }, + { + "id": "n1015", + "parent": "11", + "degrees_of_freedom": [ + 6090, + 6091, + 6092, + 6093, + 6094, + 6095 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 17.979694910895578, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0003224682497637402, + "y": -0.0011157116135989277, + "z": 0.0001813019103177336 + }, + "angle": { + "x": -0.000028860953182262383, + "y": -0.000054451311240351184, + "z": -0.000019513139728967177 + } + }, + { + "id": "n1016", + "parent": "11", + "degrees_of_freedom": [ + 6096, + 6097, + 6098, + 6099, + 6100, + 6101 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00034879935266455685, + "y": -0.0011461953272617572, + "z": 0.0001685608448962074 + }, + "angle": { + "x": 0.00005088018038567483, + "y": 0.00013806090768336287, + "z": -0.000010988026616400421 + } + }, + { + "id": "n1017", + "parent": "11", + "degrees_of_freedom": [ + 6102, + 6103, + 6104, + 6105, + 6106, + 6107 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 22.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00036771431176821205, + "y": -0.0011572797492739309, + "z": 0.00038688900294599015 + }, + "angle": { + "x": 0.00013950206895625068, + "y": -0.00007589123197246943, + "z": -0.000004067034284255661 + } + }, + { + "id": "n1018", + "parent": "11", + "degrees_of_freedom": [ + 6108, + 6109, + 6110, + 6111, + 6112, + 6113 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 22.857142857142858, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0003724109726826459, + "y": -0.0011573420347703773, + "z": 0.00035030613093068924 + }, + "angle": { + "x": 0.00013696543912182564, + "y": -0.00007484051644152073, + "z": -0.000002119449133968564 + } + }, + { + "id": "n1019", + "parent": "11", + "degrees_of_freedom": [ + 6114, + 6115, + 6116, + 6117, + 6118, + 6119 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 22.020305089104422, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0003566372553741407, + "y": -0.001134496529798325, + "z": 0.00008448751814333175 + }, + "angle": { + "x": 0.0000035384618878274944, + "y": -0.00013010777165874796, + "z": -0.000027078973841462478 + } + }, + { + "id": "n1020", + "parent": "11", + "degrees_of_freedom": [ + 6120, + 6121, + 6122, + 6123, + 6124, + 6125 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00032161305430348375, + "y": -0.0011030960403916857, + "z": -0.00003154039502726281 + }, + "angle": { + "x": -0.000006351894459380221, + "y": -0.00015398524616472897, + "z": -0.000012154164840323624 + } + }, + { + "id": "n1021", + "parent": "11", + "degrees_of_freedom": [ + 6126, + 6127, + 6128, + 6129, + 6130, + 6131 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 17.979694910895578, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0003048083220233131, + "y": -0.0010952732954903008, + "z": 0.00011015307810434854 + }, + "angle": { + "x": -0.00008829994407101771, + "y": 0.00004385485848164719, + "z": -0.0000023738722181963643 + } + }, + { + "id": "n1022", + "parent": "11", + "degrees_of_freedom": [ + 6132, + 6133, + 6134, + 6135, + 6136, + 6137 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 22.857142857142858, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001864773178296345, + "y": -0.0011542342631049465, + "z": 0.0001784069503053425 + }, + "angle": { + "x": -0.00004305726794816033, + "y": -0.00003079325186937479, + "z": -0.000012220033388576471 + } + }, + { + "id": "n1023", + "parent": "11", + "degrees_of_freedom": [ + 6138, + 6139, + 6140, + 6141, + 6142, + 6143 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 22.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000161825346492084, + "y": -0.001118680229878622, + "z": 0.0001529551078374333 + }, + "angle": { + "x": 0.00005487104255970338, + "y": 0.00001085098005082355, + "z": -0.000024794125297443983 + } + }, + { + "id": "n1024", + "parent": "11", + "degrees_of_freedom": [ + 6144, + 6145, + 6146, + 6147, + 6148, + 6149 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00013342253899752422, + "y": -0.0010798542651671665, + "z": 0.000052625625337149106 + }, + "angle": { + "x": 0.000011348165447096116, + "y": -0.00009163012661203718, + "z": -0.00000918909658885049 + } + }, + { + "id": "n1025", + "parent": "11", + "degrees_of_freedom": [ + 6150, + 6151, + 6152, + 6153, + 6154, + 6155 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 17.979694910895578, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012423896705306213, + "y": -0.0010569515332819817, + "z": 0.00010565527907445272 + }, + "angle": { + "x": -0.00003398704401616436, + "y": 0.000020411204024366105, + "z": 0.000005551516578686622 + } + }, + { + "id": "n1026", + "parent": "11", + "degrees_of_freedom": [ + 6156, + 6157, + 6158, + 6159, + 6160, + 6161 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 17.142857142857142, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001259015409256051, + "y": -0.0010646317595347755, + "z": 0.00009307025081283777 + }, + "angle": { + "x": 0.00007899234166209428, + "y": -0.000026542447473515562, + "z": -0.000011733880652610104 + } + }, + { + "id": "n1027", + "parent": "11", + "degrees_of_freedom": [ + 6162, + 6163, + 6164, + 6165, + 6166, + 6167 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 17.979694910895578, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014591146782985762, + "y": -0.001103278551527316, + "z": 0.0002126928059287449 + }, + "angle": { + "x": -0.000033448493501690395, + "y": -0.00007296089303925739, + "z": -0.00002696607775048788 + } + }, + { + "id": "n1028", + "parent": "11", + "degrees_of_freedom": [ + 6168, + 6169, + 6170, + 6171, + 6172, + 6173 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017716800253771958, + "y": -0.0011454817272184572, + "z": 0.00020603411934470864 + }, + "angle": { + "x": 0.000015614211393677817, + "y": 0.000045736016992219105, + "z": -0.000010830339753819335 + } + }, + { + "id": "n1029", + "parent": "11", + "degrees_of_freedom": [ + 6174, + 6175, + 6176, + 6177, + 6178, + 6179 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 22.020305089104422, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019155307803616023, + "y": -0.0011673204640226056, + "z": 0.00027592271426410647 + }, + "angle": { + "x": 0.00006561411783566672, + "y": -0.00007472540447468741, + "z": 0.0000017471119883766216 + } + }, + { + "id": "n1030", + "parent": "11", + "degrees_of_freedom": [ + 6180, + 6181, + 6182, + 6183, + 6184, + 6185 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 15, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007306317259432906, + "y": -0.000978942140428123, + "z": 0.00021000365968789353 + }, + "angle": { + "x": 0.00023026851938608348, + "y": -0.000024366053639269005, + "z": 0.00008937606804356333 + } + }, + { + "id": "n1031", + "parent": "11", + "degrees_of_freedom": [ + 6186, + 6187, + 6188, + 6189, + 6190, + 6191 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 15, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000693542987515957, + "y": -0.0009342791270964398, + "z": 0.00013132327038548316 + }, + "angle": { + "x": 0.00014310376221723066, + "y": -0.000022740032084069853, + "z": -0.00007943350561134856 + } + }, + { + "id": "n1032", + "parent": "11", + "degrees_of_freedom": [ + 6192, + 6193, + 6194, + 6195, + 6196, + 6197 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00013169527869172733, + "y": -0.0014034675563701397, + "z": 0.00048708423931870026 + }, + "angle": { + "x": 0.000071569836753442, + "y": -0.000054141672898708076, + "z": -0.00003942432461720276 + } + }, + { + "id": "n1033", + "parent": "11", + "degrees_of_freedom": [ + 6198, + 6199, + 6200, + 6201, + 6202, + 6203 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000007347840045658067, + "y": -0.001158955815599713, + "z": 0.00037533747672432153 + }, + "angle": { + "x": 0.000014884346674253456, + "y": -0.00003366931536010435, + "z": -0.000016677255606618844 + } + }, + { + "id": "n1034", + "parent": "11", + "degrees_of_freedom": [ + 6204, + 6205, + 6206, + 6207, + 6208, + 6209 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012634925067791735, + "y": -0.0011749553648910563, + "z": 0.0003782690868530539 + }, + "angle": { + "x": 0.000009089557158675506, + "y": -0.000007551739859508887, + "z": -0.00003185722670104423 + } + }, + { + "id": "n1035", + "parent": "11", + "degrees_of_freedom": [ + 6210, + 6211, + 6212, + 6213, + 6214, + 6215 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 22.020305089104422, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002078744892343538, + "y": -0.0011782444974582835, + "z": 0.0003818682172264393 + }, + "angle": { + "x": -0.000006445501912966808, + "y": 0.000031957248231122166, + "z": -0.000045574392194283676 + } + }, + { + "id": "n1036", + "parent": "11", + "degrees_of_freedom": [ + 6216, + 6217, + 6218, + 6219, + 6220, + 6221 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 22.857142857142858, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0004027788019107533, + "y": -0.0012364028887559499, + "z": 0.000378803169101722 + }, + "angle": { + "x": -0.000035883854393263274, + "y": 0.00003368539363896865, + "z": -0.000045934086094106885 + } + }, + { + "id": "n1037", + "parent": "11", + "degrees_of_freedom": [ + 6222, + 6223, + 6224, + 6225, + 6226, + 6227 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 22.020305089104422, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007272215487179723, + "y": -0.0012725866096502518, + "z": 0.0003761116382859379 + }, + "angle": { + "x": 0.000029066815599287637, + "y": -0.0004001621782387126, + "z": -0.00019907107604894567 + } + }, + { + "id": "n1038", + "parent": "11", + "degrees_of_freedom": [ + 6228, + 6229, + 6230, + 6231, + 6232, + 6233 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006319832920896006, + "y": -0.0012430058662951423, + "z": 0.00035028821102902865 + }, + "angle": { + "x": 0.00000678844193609058, + "y": 0.00007389305158330613, + "z": -0.00003121566525024036 + } + }, + { + "id": "n1039", + "parent": "11", + "degrees_of_freedom": [ + 6234, + 6235, + 6236, + 6237, + 6238, + 6239 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 17.979694910895578, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000754456265629062, + "y": -0.0012307199939159993, + "z": 0.0003457319905016021 + }, + "angle": { + "x": -0.0000020293234390691206, + "y": -0.0003202704948583552, + "z": 0.00010789075226160807 + } + }, + { + "id": "n1040", + "parent": "11", + "degrees_of_freedom": [ + 6240, + 6241, + 6242, + 6243, + 6244, + 6245 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 17.142857142857142, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001069279750525979, + "y": -0.00118835670672817, + "z": 0.0003478866166178498 + }, + "angle": { + "x": -0.00002681239525742933, + "y": 0.00003265643155406014, + "z": -0.000017138926066283144 + } + }, + { + "id": "n1041", + "parent": "11", + "degrees_of_freedom": [ + 6246, + 6247, + 6248, + 6249, + 6250, + 6251 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 17.979694910895578, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005746314307137981, + "y": -0.0011596437230429531, + "z": 0.0003509223924253614 + }, + "angle": { + "x": 0.000022351274290403124, + "y": -0.00022355669277718672, + "z": -0.00010797516017848098 + } + }, + { + "id": "n1042", + "parent": "11", + "degrees_of_freedom": [ + 6252, + 6253, + 6254, + 6255, + 6256, + 6257 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": -800, + "z": 0 + }, + "displacement": { + "x": -0.000005182982997616704, + "y": -0.0011862128975545616, + "z": 0.00029396888082733265 + }, + "angle": { + "x": 0.000018995133903168955, + "y": -0.00004539772241521136, + "z": -0.000001121557793409112 + } + }, + { + "id": "n1043", + "parent": "11", + "degrees_of_freedom": [ + 6258, + 6259, + 6260, + 6261, + 6262, + 6263 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009676545358960984, + "y": -0.0014739574738597424, + "z": 0.0003889868848392257 + }, + "angle": { + "x": -7.033544441806612e-7, + "y": -0.00003546932137311446, + "z": -0.000017254047826590562 + } + }, + { + "id": "n1044", + "parent": "11", + "degrees_of_freedom": [ + 6264, + 6265, + 6266, + 6267, + 6268, + 6269 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 25, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00005647314277955448, + "y": -0.0013734634005048356, + "z": 0.00037267007537711635 + }, + "angle": { + "x": 0.00009461967671674083, + "y": -0.000042818156912265844, + "z": -0.000051207073874438474 + } + }, + { + "id": "n1045", + "parent": "11", + "degrees_of_freedom": [ + 6270, + 6271, + 6272, + 6273, + 6274, + 6275 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 12.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002737282537597126, + "y": -0.0013310440418953637, + "z": 0.00030077724266774555 + }, + "angle": { + "x": 0.00009526199154357731, + "y": -0.0000395811803393014, + "z": -0.00005168568837916352 + } + }, + { + "id": "n1046", + "parent": "11", + "degrees_of_freedom": [ + 6276, + 6277, + 6278, + 6279, + 6280, + 6281 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 25, + "z": 12.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000058782014000752564, + "y": -0.001129186832331922, + "z": 0.0002307853436012278 + }, + "angle": { + "x": -0.0006918504030541445, + "y": -0.000041312588853551146, + "z": -0.00032972055402573065 + } + }, + { + "id": "n1047", + "parent": "11", + "degrees_of_freedom": [ + 6282, + 6283, + 6284, + 6285, + 6286, + 6287 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008817333615115345, + "y": -0.0006437718802977249, + "z": 0.00020974725300866508 + }, + "angle": { + "x": -0.0000017304481632289351, + "y": -0.00003260621865494873, + "z": -0.00008547603815025127 + } + }, + { + "id": "n1048", + "parent": "11", + "degrees_of_freedom": [ + 6288, + 6289, + 6290, + 6291, + 6292, + 6293 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 25, + "z": 7.979694910895579 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012644262071383118, + "y": -0.0011352258914303578, + "z": 0.000224944101395427 + }, + "angle": { + "x": 0.0008168536578731527, + "y": -0.000043919317432010775, + "z": -0.0003746390222999398 + } + }, + { + "id": "n1049", + "parent": "11", + "degrees_of_freedom": [ + 6294, + 6295, + 6296, + 6297, + 6298, + 6299 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 7.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001596924165283748, + "y": -0.0013380021267072654, + "z": 0.0002974029897429847 + }, + "angle": { + "x": -0.00009769856169586678, + "y": -0.00004004194840972599, + "z": -0.00005104506540937034 + } + }, + { + "id": "n1050", + "parent": "11", + "degrees_of_freedom": [ + 6300, + 6301, + 6302, + 6303, + 6304, + 6305 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 25, + "z": 7.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00013148646508510625, + "y": -0.001377262420717221, + "z": 0.0003686918956000174 + }, + "angle": { + "x": 0.0000949049524005426, + "y": -0.00004163163789263007, + "z": 0.000016799815914636906 + } + }, + { + "id": "n1051", + "parent": "11", + "degrees_of_freedom": [ + 6306, + 6307, + 6308, + 6309, + 6310, + 6311 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 22.857142857142858, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000003634139223471969, + "y": -0.001134975025188207, + "z": 0.00021475390533515996 + }, + "angle": { + "x": -0.000025973767772983797, + "y": -0.00003188590460477972, + "z": -0.000007323667376409855 + } + }, + { + "id": "n1052", + "parent": "11", + "degrees_of_freedom": [ + 6312, + 6313, + 6314, + 6315, + 6316, + 6317 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 22.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000023376961494083896, + "y": -0.0011094416842644989, + "z": 0.00017338279441360142 + }, + "angle": { + "x": 0.00002992592730484999, + "y": -0.000006782781363907075, + "z": -0.000019540132171511074 + } + }, + { + "id": "n1053", + "parent": "11", + "degrees_of_freedom": [ + 6318, + 6319, + 6320, + 6321, + 6322, + 6323 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004114768346247754, + "y": -0.0010747407422859005, + "z": 0.0001075582599421794 + }, + "angle": { + "x": 0.00000926870487691016, + "y": -0.00005609613509915275, + "z": -0.000004080759920899665 + } + }, + { + "id": "n1054", + "parent": "11", + "degrees_of_freedom": [ + 6324, + 6325, + 6326, + 6327, + 6328, + 6329 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 17.979694910895578, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004060447059720644, + "y": -0.0010477488796446011, + "z": 0.00013562047375883677 + }, + "angle": { + "x": -0.000014312029274512172, + "y": 0.000001390407913618993, + "z": 0.000009980696668638364 + } + }, + { + "id": "n1055", + "parent": "11", + "degrees_of_freedom": [ + 6330, + 6331, + 6332, + 6333, + 6334, + 6335 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 17.142857142857142, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000035196326992189686, + "y": -0.0010462325257125185, + "z": 0.00014482159362340087 + }, + "angle": { + "x": 0.0000531276484398205, + "y": -0.000026568755294131895, + "z": -0.000007052314529718978 + } + }, + { + "id": "n1056", + "parent": "11", + "degrees_of_freedom": [ + 6336, + 6337, + 6338, + 6339, + 6340, + 6341 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 17.979694910895578, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000019340755775707355, + "y": -0.0010751053088425438, + "z": 0.0002429411801445929 + }, + "angle": { + "x": -0.000014383407103855209, + "y": -0.00005450800615720495, + "z": -0.000021929565669200344 + } + }, + { + "id": "n1057", + "parent": "11", + "degrees_of_freedom": [ + 6342, + 6343, + 6344, + 6345, + 6346, + 6347 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000012891852751106754, + "y": -0.0011125415747531015, + "z": 0.0002596222628236186 + }, + "angle": { + "x": 0.000014052601669984224, + "y": 0.000013917471356119586, + "z": -0.000005436287249665793 + } + }, + { + "id": "n1058", + "parent": "11", + "degrees_of_freedom": [ + 6348, + 6349, + 6350, + 6351, + 6352, + 6353 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 22.020305089104422, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000004955157872805996, + "y": -0.0011381062340092452, + "z": 0.0002995966914459061 + }, + "angle": { + "x": 0.000044157094758880204, + "y": -0.00005898634051265407, + "z": 0.000006647980634767255 + } + }, + { + "id": "n1059", + "parent": "11", + "degrees_of_freedom": [ + 6354, + 6355, + 6356, + 6357, + 6358, + 6359 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00011825515690436409, + "y": -0.0013958970128376217, + "z": 0.000532365599862224 + }, + "angle": { + "x": 0.00007217801451431184, + "y": -0.00007554422718843639, + "z": -0.000043542650890427925 + } + }, + { + "id": "n1060", + "parent": "11", + "degrees_of_freedom": [ + 6360, + 6361, + 6362, + 6363, + 6364, + 6365 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018819642365411302, + "y": -0.0012229721949775082, + "z": 0.00041595658810101194 + }, + "angle": { + "x": 0.000010225346127704973, + "y": -0.000008033511235694245, + "z": -0.000016592691173630766 + } + }, + { + "id": "n1061", + "parent": "11", + "degrees_of_freedom": [ + 6366, + 6367, + 6368, + 6369, + 6370, + 6371 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005480095899972232, + "y": -0.0012025780682433738, + "z": 0.00040455580517051616 + }, + "angle": { + "x": 0.000016461802762006758, + "y": 0.00003045211234170423, + "z": -0.000009491902759459178 + } + }, + { + "id": "n1062", + "parent": "11", + "degrees_of_freedom": [ + 6372, + 6373, + 6374, + 6375, + 6376, + 6377 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 22.020305089104422, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00005781768923695531, + "y": -0.0012061355232424842, + "z": 0.0004244078534299613 + }, + "angle": { + "x": 0.0000037115541491807528, + "y": -0.0001946914238746072, + "z": 0.00007010829485877646 + } + }, + { + "id": "n1063", + "parent": "11", + "degrees_of_freedom": [ + 6378, + 6379, + 6380, + 6381, + 6382, + 6383 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 22.857142857142858, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00006510069401098431, + "y": -0.0012411427388668971, + "z": 0.0004253475108655781 + }, + "angle": { + "x": -0.000018197844086996915, + "y": 0.000024056976292232548, + "z": -0.000007230882175658933 + } + }, + { + "id": "n1064", + "parent": "11", + "degrees_of_freedom": [ + 6384, + 6385, + 6386, + 6387, + 6388, + 6389 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 22.020305089104422, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001550224255064069, + "y": -0.0012588052272312095, + "z": 0.0004168871945084543 + }, + "angle": { + "x": 0.00003602117125687787, + "y": -0.00006564973418420319, + "z": -0.00003894695095820216 + } + }, + { + "id": "n1065", + "parent": "11", + "degrees_of_freedom": [ + 6390, + 6391, + 6392, + 6393, + 6394, + 6395 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00019226913143107513, + "y": -0.0012212284540668193, + "z": 0.0003782560762462177 + }, + "angle": { + "x": 0.00001480156835674139, + "y": 0.000017661194439841495, + "z": -0.000009492073734838208 + } + }, + { + "id": "n1066", + "parent": "11", + "degrees_of_freedom": [ + 6396, + 6397, + 6398, + 6399, + 6400, + 6401 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 17.979694910895578, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00019995665193921496, + "y": -0.0012122577921664804, + "z": 0.00035860376687035783 + }, + "angle": { + "x": 0.000006337195745182943, + "y": -0.00026201713152237033, + "z": 0.00008938918388190704 + } + }, + { + "id": "n1067", + "parent": "11", + "degrees_of_freedom": [ + 6402, + 6403, + 6404, + 6405, + 6406, + 6407 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 17.142857142857142, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00021851491390393674, + "y": -0.001188295271500131, + "z": 0.0003576002991233509 + }, + "angle": { + "x": -0.000012469845915876087, + "y": 0.000024057300765934765, + "z": -0.000011753156653911459 + } + }, + { + "id": "n1068", + "parent": "11", + "degrees_of_freedom": [ + 6408, + 6409, + 6410, + 6411, + 6412, + 6413 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 17.979694910895578, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010275127431907316, + "y": -0.001174635483220472, + "z": 0.0003660804037116593 + }, + "angle": { + "x": 0.000029855230598580807, + "y": -0.0001548866948687565, + "z": -0.00007501919253600807 + } + }, + { + "id": "n1069", + "parent": "11", + "degrees_of_freedom": [ + 6414, + 6415, + 6416, + 6417, + 6418, + 6419 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.0003058409668547593, + "y": -0.0013259160224347113, + "z": 0.00025338161441357466 + }, + "angle": { + "x": 0.00015100695915326338, + "y": -0.000046769380176097965, + "z": 0.00005835177378850947 + } + }, + { + "id": "n1070", + "parent": "11", + "degrees_of_freedom": [ + 6420, + 6421, + 6422, + 6423, + 6424, + 6425 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015988955374675833, + "y": -0.001507971578773976, + "z": 0.00039433619153679734 + }, + "angle": { + "x": 0.00002532301824945261, + "y": -0.00005220504950239582, + "z": -0.00003619037770006164 + } + }, + { + "id": "n1071", + "parent": "11", + "degrees_of_freedom": [ + 6426, + 6427, + 6428, + 6429, + 6430, + 6431 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 25, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00022108454112262308, + "y": -0.0013523296114811428, + "z": 0.00037258023468650603 + }, + "angle": { + "x": 0.00015522909540471074, + "y": -0.00005787446072770498, + "z": -0.00008211908581482309 + } + }, + { + "id": "n1072", + "parent": "11", + "degrees_of_freedom": [ + 6432, + 6433, + 6434, + 6435, + 6436, + 6437 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 22.857142857142858 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00025958264753574693, + "y": -0.0012878605386190125, + "z": 0.00027978406010796027 + }, + "angle": { + "x": -0.000016070730382732356, + "y": -0.00004874508958836183, + "z": -0.000021555523707647852 + } + }, + { + "id": "n1073", + "parent": "11", + "degrees_of_freedom": [ + 6438, + 6439, + 6440, + 6441, + 6442, + 6443 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 25, + "z": 22.020305089104422 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00022321435784502733, + "y": -0.001250288688860186, + "z": 0.00019754227106399302 + }, + "angle": { + "x": -0.00003681705210564524, + "y": -0.000046368029268821586, + "z": -0.000028890359435160712 + } + }, + { + "id": "n1074", + "parent": "11", + "degrees_of_freedom": [ + 6444, + 6445, + 6446, + 6447, + 6448, + 6449 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016668121957522767, + "y": -0.0011595820243077192, + "z": 0.000177696929070329 + }, + "angle": { + "x": 0.000025323318179618444, + "y": -0.000049042012504439096, + "z": -0.000006920560169230072 + } + }, + { + "id": "n1075", + "parent": "11", + "degrees_of_freedom": [ + 6450, + 6451, + 6452, + 6453, + 6454, + 6455 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 25, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011480137963758108, + "y": -0.0011479675309253965, + "z": 0.00019914383215147684 + }, + "angle": { + "x": 0.00003699482509391297, + "y": -0.00004290278697889911, + "z": -0.000011047206913536256 + } + }, + { + "id": "n1076", + "parent": "11", + "degrees_of_freedom": [ + 6456, + 6457, + 6458, + 6459, + 6460, + 6461 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 17.142857142857142 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007646687401439174, + "y": -0.0011431571266346011, + "z": 0.000276418075325629 + }, + "angle": { + "x": 0.00006671670837729269, + "y": -0.000046868220640310485, + "z": -0.00002155564136284703 + } + }, + { + "id": "n1077", + "parent": "11", + "degrees_of_freedom": [ + 6462, + 6463, + 6464, + 6465, + 6466, + 6467 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 25, + "z": 17.979694910895578 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010867545361042003, + "y": -0.0012500089487977846, + "z": 0.00036618304429473787 + }, + "angle": { + "x": -0.00031728346635781507, + "y": -0.0000546999065659758, + "z": -0.0001573201172436843 + } + }, + { + "id": "n1078", + "parent": "11", + "degrees_of_freedom": [ + 6468, + 6469, + 6470, + 6471, + 6472, + 6473 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 22.857142857142858, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00020041017593365172, + "y": -0.0011891706210211093, + "z": 0.00020069371124019353 + }, + "angle": { + "x": 0.0001802564338249999, + "y": 0.00007520334786148528, + "z": -0.00002081476187288016 + } + }, + { + "id": "n1079", + "parent": "11", + "degrees_of_freedom": [ + 6474, + 6475, + 6476, + 6477, + 6478, + 6479 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 22.020305089104422, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002131763030814083, + "y": -0.001140473513015554, + "z": 0.00020178206495924972 + }, + "angle": { + "x": 0.00008848740953077295, + "y": 0.000037191389510816745, + "z": -0.000019556421131092052 + } + }, + { + "id": "n1080", + "parent": "11", + "degrees_of_freedom": [ + 6480, + 6481, + 6482, + 6483, + 6484, + 6485 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.142857142857142, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00023436957659727256, + "y": -0.0011165440599537869, + "z": 0.00005413361575902582 + }, + "angle": { + "x": 0.00002189036912355664, + "y": -0.00012358807859086306, + "z": -0.000005401079461671005 + } + }, + { + "id": "n1081", + "parent": "11", + "degrees_of_freedom": [ + 6486, + 6487, + 6488, + 6489, + 6490, + 6491 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 17.979694910895578, + "y": 17.979694910895578, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00023713143589208877, + "y": -0.0011041910194414333, + "z": 0.0001133315588187608 + }, + "angle": { + "x": -0.00003823646783461893, + "y": 0.000021571011578573262, + "z": 0.000004720908482960108 + } + }, + { + "id": "n1082", + "parent": "11", + "degrees_of_freedom": [ + 6492, + 6493, + 6494, + 6495, + 6496, + 6497 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 17.142857142857142, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00024002693026558422, + "y": -0.0011251903915436353, + "z": 0.00010174926213207451 + }, + "angle": { + "x": 0.00016800970294876552, + "y": -0.00006385895487743053, + "z": -0.00001961897841217516 + } + }, + { + "id": "n1083", + "parent": "11", + "degrees_of_freedom": [ + 6498, + 6499, + 6500, + 6501, + 6502, + 6503 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 17.979694910895578, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00022512437188914203, + "y": -0.0011708284869999422, + "z": 0.0003713607959741051 + }, + "angle": { + "x": -0.00044912549762279847, + "y": -0.00031948467329706516, + "z": -0.000020049415807003254 + } + }, + { + "id": "n1084", + "parent": "11", + "degrees_of_freedom": [ + 6504, + 6505, + 6506, + 6507, + 6508, + 6509 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.857142857142858, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002012934068336845, + "y": -0.001193570431551863, + "z": -0.0002686531474541267 + }, + "angle": { + "x": -0.00011717191118025567, + "y": 0.00048192221758632767, + "z": -0.000005896382422605335 + } + }, + { + "id": "n1085", + "parent": "11", + "degrees_of_freedom": [ + 6510, + 6511, + 6512, + 6513, + 6514, + 6515 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 22.020305089104422, + "y": 22.020305089104422, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00020226098395319757, + "y": -0.0012075881959603826, + "z": -0.00010208547983432956 + }, + "angle": { + "x": 0.000024588016784029877, + "y": 0.00013968330784955445, + "z": 0.000010076281237263326 + } + } + ], + "edges": [ + { + "id": "e0", + "source": 4, + "target": 5, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1", + "source": 5, + "target": 6, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e2", + "source": 6, + "target": 7, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e3", + "source": 7, + "target": 8, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e4", + "source": 8, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e5", + "source": 9, + "target": 10, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e6", + "source": 10, + "target": 11, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e7", + "source": 11, + "target": 4, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e8", + "source": 0, + "target": 5, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e9", + "source": 1, + "target": 7, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e10", + "source": 2, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e11", + "source": 3, + "target": 11, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e12", + "source": 15, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1001.3475341796875 + }, + { + "id": "e13", + "source": 16, + "target": 17, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 136.64244079589844 + }, + { + "id": "e14", + "source": 17, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.79733276367188 + }, + { + "id": "e15", + "source": 18, + "target": 19, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -939.5859985351562 + }, + { + "id": "e16", + "source": 19, + "target": 20, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -936.5052490234375 + }, + { + "id": "e17", + "source": 20, + "target": 21, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.92037963867188 + }, + { + "id": "e18", + "source": 21, + "target": 22, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 73.46440887451172 + }, + { + "id": "e19", + "source": 22, + "target": 15, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -998.0792846679688 + }, + { + "id": "e20", + "source": 14, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -263.42437744140625 + }, + { + "id": "e21", + "source": 12, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1304.521484375 + }, + { + "id": "e22", + "source": 13, + "target": 20, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -53.5609130859375 + }, + { + "id": "e23", + "source": 0, + "target": 22, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1466.6005859375 + }, + { + "id": "e24", + "source": 26, + "target": 27, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -2.8087847232818604 + }, + { + "id": "e25", + "source": 27, + "target": 28, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 74.30078125 + }, + { + "id": "e26", + "source": 28, + "target": 29, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 51.593204498291016 + }, + { + "id": "e27", + "source": 29, + "target": 30, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -8.40219783782959 + }, + { + "id": "e28", + "source": 30, + "target": 31, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 14.170991897583008 + }, + { + "id": "e29", + "source": 31, + "target": 32, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 23.749845504760742 + }, + { + "id": "e30", + "source": 32, + "target": 33, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 16.13898277282715 + }, + { + "id": "e31", + "source": 33, + "target": 26, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -18.704586029052734 + }, + { + "id": "e32", + "source": 23, + "target": 31, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 14.449507713317871 + }, + { + "id": "e33", + "source": 24, + "target": 33, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -33.3013916015625 + }, + { + "id": "e34", + "source": 12, + "target": 27, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 79.80635070800781 + }, + { + "id": "e35", + "source": 25, + "target": 29, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -59.42049789428711 + }, + { + "id": "e36", + "source": 36, + "target": 37, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -508.1236267089844 + }, + { + "id": "e37", + "source": 37, + "target": 38, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -466.51611328125 + }, + { + "id": "e38", + "source": 38, + "target": 39, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 499.35357666015625 + }, + { + "id": "e39", + "source": 39, + "target": 40, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -537.4116821289062 + }, + { + "id": "e40", + "source": 40, + "target": 41, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -443.8288879394531 + }, + { + "id": "e41", + "source": 41, + "target": 42, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.2995300292969 + }, + { + "id": "e42", + "source": 42, + "target": 43, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 462.1101379394531 + }, + { + "id": "e43", + "source": 43, + "target": 36, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -530.1146850585938 + }, + { + "id": "e44", + "source": 35, + "target": 41, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 211.11126708984375 + }, + { + "id": "e45", + "source": 2, + "target": 43, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -829.5181884765625 + }, + { + "id": "e46", + "source": 34, + "target": 37, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 219.197265625 + }, + { + "id": "e47", + "source": 23, + "target": 39, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -866.0997924804688 + }, + { + "id": "e48", + "source": 44, + "target": 45, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 208.8540802001953 + }, + { + "id": "e49", + "source": 45, + "target": 46, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -721.6866455078125 + }, + { + "id": "e50", + "source": 46, + "target": 47, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -708.22216796875 + }, + { + "id": "e51", + "source": 47, + "target": 48, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -139.37606811523438 + }, + { + "id": "e52", + "source": 48, + "target": 49, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 203.80503845214844 + }, + { + "id": "e53", + "source": 49, + "target": 50, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -584.123779296875 + }, + { + "id": "e54", + "source": 50, + "target": 51, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -537.8975830078125 + }, + { + "id": "e55", + "source": 51, + "target": 44, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -97.25558471679688 + }, + { + "id": "e56", + "source": 24, + "target": 49, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -927.1846313476562 + }, + { + "id": "e57", + "source": 34, + "target": 51, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 116.32402038574219 + }, + { + "id": "e58", + "source": 1, + "target": 45, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1015.3157348632812 + }, + { + "id": "e59", + "source": 13, + "target": 47, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 196.95199584960938 + }, + { + "id": "e60", + "source": 52, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 142.5419921875 + }, + { + "id": "e61", + "source": 53, + "target": 54, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -982.2471923828125 + }, + { + "id": "e62", + "source": 54, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -980.4102783203125 + }, + { + "id": "e63", + "source": 55, + "target": 56, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 175.5584716796875 + }, + { + "id": "e64", + "source": 56, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 126.92952728271484 + }, + { + "id": "e65", + "source": 57, + "target": 58, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1064.1241455078125 + }, + { + "id": "e66", + "source": 58, + "target": 59, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1072.7470703125 + }, + { + "id": "e67", + "source": 59, + "target": 52, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 116.0664291381836 + }, + { + "id": "e68", + "source": 14, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -388.406494140625 + }, + { + "id": "e69", + "source": 3, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1170.0252685546875 + }, + { + "id": "e70", + "source": 35, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -156.6512908935547 + }, + { + "id": "e71", + "source": 25, + "target": 59, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1466.4556884765625 + }, + { + "id": "e72", + "source": 63, + "target": 64, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e73", + "source": 64, + "target": 65, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e74", + "source": 65, + "target": 66, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e75", + "source": 66, + "target": 67, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e76", + "source": 67, + "target": 68, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e77", + "source": 68, + "target": 69, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e78", + "source": 69, + "target": 70, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e79", + "source": 70, + "target": 63, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e80", + "source": 60, + "target": 64, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e81", + "source": 3, + "target": 66, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e82", + "source": 61, + "target": 68, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e83", + "source": 62, + "target": 70, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e84", + "source": 73, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -968.1875 + }, + { + "id": "e85", + "source": 74, + "target": 75, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 67.04911041259766 + }, + { + "id": "e86", + "source": 75, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 48.36192321777344 + }, + { + "id": "e87", + "source": 76, + "target": 77, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -988.177490234375 + }, + { + "id": "e88", + "source": 77, + "target": 78, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -981.2072143554688 + }, + { + "id": "e89", + "source": 78, + "target": 79, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 71.08743286132812 + }, + { + "id": "e90", + "source": 79, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 40.52730178833008 + }, + { + "id": "e91", + "source": 80, + "target": 73, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -964.2051391601562 + }, + { + "id": "e92", + "source": 72, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -321.0314636230469 + }, + { + "id": "e93", + "source": 71, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1397.18701171875 + }, + { + "id": "e94", + "source": 14, + "target": 78, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -302.02044677734375 + }, + { + "id": "e95", + "source": 60, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1345.8375244140625 + }, + { + "id": "e96", + "source": 83, + "target": 84, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -5.754022121429443 + }, + { + "id": "e97", + "source": 84, + "target": 85, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 54.91940689086914 + }, + { + "id": "e98", + "source": 85, + "target": 86, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 30.01833152770996 + }, + { + "id": "e99", + "source": 86, + "target": 87, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 36.995933532714844 + }, + { + "id": "e100", + "source": 87, + "target": 88, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 6.050780296325684 + }, + { + "id": "e101", + "source": 88, + "target": 89, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 14.22030258178711 + }, + { + "id": "e102", + "source": 89, + "target": 90, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -0.34287557005882263 + }, + { + "id": "e103", + "source": 90, + "target": 83, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 72.36221313476562 + }, + { + "id": "e104", + "source": 81, + "target": 88, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 9.528212547302246 + }, + { + "id": "e105", + "source": 25, + "target": 90, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 66.99337005615234 + }, + { + "id": "e106", + "source": 71, + "target": 84, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 56.84755325317383 + }, + { + "id": "e107", + "source": 82, + "target": 86, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 4.715447902679443 + }, + { + "id": "e108", + "source": 92, + "target": 93, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -526.2236328125 + }, + { + "id": "e109", + "source": 93, + "target": 94, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -489.0600280761719 + }, + { + "id": "e110", + "source": 94, + "target": 95, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 471.6403503417969 + }, + { + "id": "e111", + "source": 95, + "target": 96, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -494.7138366699219 + }, + { + "id": "e112", + "source": 96, + "target": 97, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -430.42413330078125 + }, + { + "id": "e113", + "source": 97, + "target": 98, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -408.80877685546875 + }, + { + "id": "e114", + "source": 98, + "target": 99, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 472.7489318847656 + }, + { + "id": "e115", + "source": 99, + "target": 92, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -549.8567504882812 + }, + { + "id": "e116", + "source": 91, + "target": 97, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 171.6821746826172 + }, + { + "id": "e117", + "source": 61, + "target": 99, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -853.3726806640625 + }, + { + "id": "e118", + "source": 35, + "target": 93, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 216.357421875 + }, + { + "id": "e119", + "source": 81, + "target": 95, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -796.87451171875 + }, + { + "id": "e120", + "source": 25, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1184.8734130859375 + }, + { + "id": "e121", + "source": 35, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -87.55390930175781 + }, + { + "id": "e122", + "source": 3, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1376.4832763671875 + }, + { + "id": "e123", + "source": 14, + "target": 59, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -429.24786376953125 + }, + { + "id": "e124", + "source": 100, + "target": 101, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 151.55299377441406 + }, + { + "id": "e125", + "source": 101, + "target": 102, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1014.6629028320312 + }, + { + "id": "e126", + "source": 102, + "target": 103, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -990.71826171875 + }, + { + "id": "e127", + "source": 103, + "target": 104, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 164.93966674804688 + }, + { + "id": "e128", + "source": 104, + "target": 105, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 92.00184631347656 + }, + { + "id": "e129", + "source": 105, + "target": 106, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1053.05419921875 + }, + { + "id": "e130", + "source": 106, + "target": 107, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1038.16455078125 + }, + { + "id": "e131", + "source": 107, + "target": 100, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.06844329833984 + }, + { + "id": "e132", + "source": 72, + "target": 105, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -476.2062072753906 + }, + { + "id": "e133", + "source": 62, + "target": 103, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1168.2501220703125 + }, + { + "id": "e134", + "source": 91, + "target": 101, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -173.37371826171875 + }, + { + "id": "e135", + "source": 82, + "target": 107, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1346.488037109375 + }, + { + "id": "e136", + "source": 111, + "target": 112, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e137", + "source": 112, + "target": 113, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e138", + "source": 113, + "target": 114, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e139", + "source": 114, + "target": 115, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e140", + "source": 115, + "target": 116, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e141", + "source": 116, + "target": 117, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e142", + "source": 117, + "target": 118, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e143", + "source": 118, + "target": 111, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e144", + "source": 108, + "target": 112, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e145", + "source": 62, + "target": 114, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e146", + "source": 109, + "target": 116, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e147", + "source": 110, + "target": 118, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e148", + "source": 121, + "target": 122, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -916.7168579101562 + }, + { + "id": "e149", + "source": 122, + "target": 123, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 151.8472137451172 + }, + { + "id": "e150", + "source": 123, + "target": 124, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 110.53646087646484 + }, + { + "id": "e151", + "source": 124, + "target": 125, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1007.824951171875 + }, + { + "id": "e152", + "source": 125, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1001.494140625 + }, + { + "id": "e153", + "source": 126, + "target": 127, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 101.29829406738281 + }, + { + "id": "e154", + "source": 127, + "target": 128, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 172.34918212890625 + }, + { + "id": "e155", + "source": 128, + "target": 121, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -910.963134765625 + }, + { + "id": "e156", + "source": 120, + "target": 122, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -204.44886779785156 + }, + { + "id": "e157", + "source": 119, + "target": 124, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1425.2041015625 + }, + { + "id": "e158", + "source": 72, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.510498046875 + }, + { + "id": "e159", + "source": 108, + "target": 128, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1156.9849853515625 + }, + { + "id": "e160", + "source": 131, + "target": 132, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 19.166807174682617 + }, + { + "id": "e161", + "source": 132, + "target": 133, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -10.035323143005371 + }, + { + "id": "e162", + "source": 133, + "target": 134, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -18.59193992614746 + }, + { + "id": "e163", + "source": 134, + "target": 135, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 33.90653991699219 + }, + { + "id": "e164", + "source": 135, + "target": 136, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 8.36910629272461 + }, + { + "id": "e165", + "source": 136, + "target": 137, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -27.074792861938477 + }, + { + "id": "e166", + "source": 137, + "target": 138, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -30.61324691772461 + }, + { + "id": "e167", + "source": 138, + "target": 131, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 104.80630493164062 + }, + { + "id": "e168", + "source": 129, + "target": 136, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -33.99329376220703 + }, + { + "id": "e169", + "source": 82, + "target": 138, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 127.68522644042969 + }, + { + "id": "e170", + "source": 119, + "target": 132, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -30.66581153869629 + }, + { + "id": "e171", + "source": 130, + "target": 134, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 51.8364143371582 + }, + { + "id": "e172", + "source": 140, + "target": 141, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -565.8873901367188 + }, + { + "id": "e173", + "source": 141, + "target": 142, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -444.44097900390625 + }, + { + "id": "e174", + "source": 142, + "target": 143, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 482.25579833984375 + }, + { + "id": "e175", + "source": 143, + "target": 144, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -541.248291015625 + }, + { + "id": "e176", + "source": 144, + "target": 145, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -467.4187316894531 + }, + { + "id": "e177", + "source": 145, + "target": 146, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.072509765625 + }, + { + "id": "e178", + "source": 146, + "target": 147, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 495.3196716308594 + }, + { + "id": "e179", + "source": 147, + "target": 140, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -587.996337890625 + }, + { + "id": "e180", + "source": 139, + "target": 145, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 234.69598388671875 + }, + { + "id": "e181", + "source": 109, + "target": 147, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -909.7021484375 + }, + { + "id": "e182", + "source": 91, + "target": 141, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 301.0194396972656 + }, + { + "id": "e183", + "source": 129, + "target": 143, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -856.183349609375 + }, + { + "id": "e184", + "source": 82, + "target": 101, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1266.0977783203125 + }, + { + "id": "e185", + "source": 91, + "target": 103, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -86.05962371826172 + }, + { + "id": "e186", + "source": 62, + "target": 105, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1425.689453125 + }, + { + "id": "e187", + "source": 72, + "target": 107, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.8281555175781 + }, + { + "id": "e188", + "source": 148, + "target": 149, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -194.71359252929688 + }, + { + "id": "e189", + "source": 149, + "target": 150, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -648.4422607421875 + }, + { + "id": "e190", + "source": 150, + "target": 151, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -637.3865966796875 + }, + { + "id": "e191", + "source": 151, + "target": 152, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 143.58091735839844 + }, + { + "id": "e192", + "source": 152, + "target": 153, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -193.63475036621094 + }, + { + "id": "e193", + "source": 153, + "target": 154, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -575.30859375 + }, + { + "id": "e194", + "source": 154, + "target": 155, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -607.5311279296875 + }, + { + "id": "e195", + "source": 155, + "target": 148, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 168.0299835205078 + }, + { + "id": "e196", + "source": 120, + "target": 153, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 54.72142028808594 + }, + { + "id": "e197", + "source": 110, + "target": 151, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -917.3399047851562 + }, + { + "id": "e198", + "source": 139, + "target": 149, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.55244445800781 + }, + { + "id": "e199", + "source": 130, + "target": 155, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -937.6427001953125 + }, + { + "id": "e200", + "source": 156, + "target": 157, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -9.630111694335938 + }, + { + "id": "e201", + "source": 157, + "target": 158, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 10.662007331848145 + }, + { + "id": "e202", + "source": 158, + "target": 159, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 9.384209632873535 + }, + { + "id": "e203", + "source": 159, + "target": 160, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.217432022094727 + }, + { + "id": "e204", + "source": 160, + "target": 161, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -18.97564125061035 + }, + { + "id": "e205", + "source": 161, + "target": 162, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -31.861225128173828 + }, + { + "id": "e206", + "source": 162, + "target": 163, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -23.840681076049805 + }, + { + "id": "e207", + "source": 163, + "target": 156, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 77.00715637207031 + }, + { + "id": "e208", + "source": 12, + "target": 157, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 9.958255767822266 + }, + { + "id": "e209", + "source": 24, + "target": 159, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 11.098714828491211 + }, + { + "id": "e210", + "source": 23, + "target": 161, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -20.7071590423584 + }, + { + "id": "e211", + "source": 25, + "target": 163, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 90.98582458496094 + }, + { + "id": "e212", + "source": 167, + "target": 168, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -698.0209350585938 + }, + { + "id": "e213", + "source": 168, + "target": 169, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 112.02079010009766 + }, + { + "id": "e214", + "source": 169, + "target": 170, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 126.9244384765625 + }, + { + "id": "e215", + "source": 170, + "target": 171, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -660.4613647460938 + }, + { + "id": "e216", + "source": 171, + "target": 172, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -666.2570190429688 + }, + { + "id": "e217", + "source": 172, + "target": 173, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 120.3829574584961 + }, + { + "id": "e218", + "source": 173, + "target": 174, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 72.35502624511719 + }, + { + "id": "e219", + "source": 174, + "target": 167, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -703.7151489257812 + }, + { + "id": "e220", + "source": 166, + "target": 168, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -156.3787078857422 + }, + { + "id": "e221", + "source": 164, + "target": 170, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -846.7634887695312 + }, + { + "id": "e222", + "source": 165, + "target": 172, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -151.9512939453125 + }, + { + "id": "e223", + "source": 12, + "target": 174, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1021.0897827148438 + }, + { + "id": "e224", + "source": 178, + "target": 179, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.423656463623047 + }, + { + "id": "e225", + "source": 179, + "target": 180, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 50.07740020751953 + }, + { + "id": "e226", + "source": 180, + "target": 181, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 20.983522415161133 + }, + { + "id": "e227", + "source": 181, + "target": 182, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.39874267578125 + }, + { + "id": "e228", + "source": 182, + "target": 183, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 62.62155532836914 + }, + { + "id": "e229", + "source": 183, + "target": 184, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.141488075256348 + }, + { + "id": "e230", + "source": 184, + "target": 185, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -37.359561920166016 + }, + { + "id": "e231", + "source": 185, + "target": 178, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -8.053632736206055 + }, + { + "id": "e232", + "source": 175, + "target": 183, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -59.72105407714844 + }, + { + "id": "e233", + "source": 176, + "target": 185, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 42.514007568359375 + }, + { + "id": "e234", + "source": 164, + "target": 179, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 33.32312774658203 + }, + { + "id": "e235", + "source": 177, + "target": 181, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.508350372314453 + }, + { + "id": "e236", + "source": 188, + "target": 189, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -242.2109375 + }, + { + "id": "e237", + "source": 189, + "target": 190, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -225.10284423828125 + }, + { + "id": "e238", + "source": 190, + "target": 191, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 309.7926025390625 + }, + { + "id": "e239", + "source": 191, + "target": 192, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -455.3436279296875 + }, + { + "id": "e240", + "source": 192, + "target": 193, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -380.8951110839844 + }, + { + "id": "e241", + "source": 193, + "target": 194, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -190.75180053710938 + }, + { + "id": "e242", + "source": 194, + "target": 195, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 304.4538269042969 + }, + { + "id": "e243", + "source": 195, + "target": 188, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -298.9275817871094 + }, + { + "id": "e244", + "source": 187, + "target": 193, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 283.84197998046875 + }, + { + "id": "e245", + "source": 23, + "target": 195, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -509.6252136230469 + }, + { + "id": "e246", + "source": 186, + "target": 189, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.44270324707031 + }, + { + "id": "e247", + "source": 175, + "target": 191, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -665.0703125 + }, + { + "id": "e248", + "source": 196, + "target": 197, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 126.83689880371094 + }, + { + "id": "e249", + "source": 197, + "target": 198, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.0708923339844 + }, + { + "id": "e250", + "source": 198, + "target": 199, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -310.2270812988281 + }, + { + "id": "e251", + "source": 199, + "target": 200, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -116.37885284423828 + }, + { + "id": "e252", + "source": 200, + "target": 201, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 117.88990020751953 + }, + { + "id": "e253", + "source": 201, + "target": 202, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -371.14337158203125 + }, + { + "id": "e254", + "source": 202, + "target": 203, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -360.9705810546875 + }, + { + "id": "e255", + "source": 203, + "target": 196, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -102.27294158935547 + }, + { + "id": "e256", + "source": 176, + "target": 201, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -589.2064819335938 + }, + { + "id": "e257", + "source": 186, + "target": 203, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 54.36453628540039 + }, + { + "id": "e258", + "source": 24, + "target": 197, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -577.8534545898438 + }, + { + "id": "e259", + "source": 165, + "target": 199, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.085752487182617 + }, + { + "id": "e260", + "source": 204, + "target": 205, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 148.88565063476562 + }, + { + "id": "e261", + "source": 205, + "target": 206, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -688.1940307617188 + }, + { + "id": "e262", + "source": 206, + "target": 207, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -712.9887084960938 + }, + { + "id": "e263", + "source": 207, + "target": 208, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 104.4649429321289 + }, + { + "id": "e264", + "source": 208, + "target": 209, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 97.50242614746094 + }, + { + "id": "e265", + "source": 209, + "target": 210, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -710.5076293945312 + }, + { + "id": "e266", + "source": 210, + "target": 211, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -736.0828247070312 + }, + { + "id": "e267", + "source": 211, + "target": 204, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 107.19397735595703 + }, + { + "id": "e268", + "source": 166, + "target": 209, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -142.66119384765625 + }, + { + "id": "e269", + "source": 25, + "target": 207, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1001.5975952148438 + }, + { + "id": "e270", + "source": 187, + "target": 205, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 57.46455764770508 + }, + { + "id": "e271", + "source": 177, + "target": 211, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1054.9307861328125 + }, + { + "id": "e272", + "source": 83, + "target": 212, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -45.15087127685547 + }, + { + "id": "e273", + "source": 212, + "target": 213, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 48.02633285522461 + }, + { + "id": "e274", + "source": 213, + "target": 214, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 37.44637680053711 + }, + { + "id": "e275", + "source": 214, + "target": 87, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 41.0735969543457 + }, + { + "id": "e276", + "source": 87, + "target": 215, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -27.41108512878418 + }, + { + "id": "e277", + "source": 215, + "target": 216, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 3.537058115005493 + }, + { + "id": "e278", + "source": 216, + "target": 217, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 3.8306736946105957 + }, + { + "id": "e279", + "source": 217, + "target": 83, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 63.8839225769043 + }, + { + "id": "e280", + "source": 71, + "target": 212, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 77.54525756835938 + }, + { + "id": "e281", + "source": 25, + "target": 214, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -5.582492828369141 + }, + { + "id": "e282", + "source": 81, + "target": 215, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 20.861818313598633 + }, + { + "id": "e283", + "source": 82, + "target": 217, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 48.84150314331055 + }, + { + "id": "e284", + "source": 220, + "target": 221, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -662.8433837890625 + }, + { + "id": "e285", + "source": 221, + "target": 222, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 78.88994598388672 + }, + { + "id": "e286", + "source": 222, + "target": 223, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 57.62065887451172 + }, + { + "id": "e287", + "source": 223, + "target": 224, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -665.1240234375 + }, + { + "id": "e288", + "source": 224, + "target": 225, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -669.4240112304688 + }, + { + "id": "e289", + "source": 225, + "target": 226, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 72.45903778076172 + }, + { + "id": "e290", + "source": 226, + "target": 227, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 53.93299102783203 + }, + { + "id": "e291", + "source": 227, + "target": 220, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -668.12158203125 + }, + { + "id": "e292", + "source": 219, + "target": 221, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -125.32903289794922 + }, + { + "id": "e293", + "source": 218, + "target": 223, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -946.1304321289062 + }, + { + "id": "e294", + "source": 166, + "target": 225, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -168.3181915283203 + }, + { + "id": "e295", + "source": 71, + "target": 227, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -976.5812377929688 + }, + { + "id": "e296", + "source": 230, + "target": 231, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 22.291606903076172 + }, + { + "id": "e297", + "source": 231, + "target": 232, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 36.54357147216797 + }, + { + "id": "e298", + "source": 232, + "target": 233, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 3.9735634326934814 + }, + { + "id": "e299", + "source": 233, + "target": 234, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 92.15438842773438 + }, + { + "id": "e300", + "source": 234, + "target": 235, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 64.84071350097656 + }, + { + "id": "e301", + "source": 235, + "target": 236, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -28.340087890625 + }, + { + "id": "e302", + "source": 236, + "target": 237, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -52.28632736206055 + }, + { + "id": "e303", + "source": 237, + "target": 230, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 85.80773162841797 + }, + { + "id": "e304", + "source": 228, + "target": 235, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -76.51551818847656 + }, + { + "id": "e305", + "source": 177, + "target": 237, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 141.69894409179688 + }, + { + "id": "e306", + "source": 218, + "target": 231, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 17.32894515991211 + }, + { + "id": "e307", + "source": 229, + "target": 233, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 86.46990966796875 + }, + { + "id": "e308", + "source": 239, + "target": 240, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -206.17495727539062 + }, + { + "id": "e309", + "source": 240, + "target": 241, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -295.96099853515625 + }, + { + "id": "e310", + "source": 241, + "target": 242, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 332.73687744140625 + }, + { + "id": "e311", + "source": 242, + "target": 243, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -363.1051940917969 + }, + { + "id": "e312", + "source": 243, + "target": 244, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -321.70849609375 + }, + { + "id": "e313", + "source": 244, + "target": 245, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -272.78564453125 + }, + { + "id": "e314", + "source": 245, + "target": 246, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 317.3236083984375 + }, + { + "id": "e315", + "source": 246, + "target": 239, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -229.48684692382812 + }, + { + "id": "e316", + "source": 238, + "target": 244, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 153.6824493408203 + }, + { + "id": "e317", + "source": 81, + "target": 246, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -438.2615051269531 + }, + { + "id": "e318", + "source": 187, + "target": 240, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 9.161810874938965 + }, + { + "id": "e319", + "source": 228, + "target": 242, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -580.3115234375 + }, + { + "id": "e320", + "source": 177, + "target": 205, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -702.7929077148438 + }, + { + "id": "e321", + "source": 187, + "target": 207, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -238.0967254638672 + }, + { + "id": "e322", + "source": 25, + "target": 209, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -821.3101196289062 + }, + { + "id": "e323", + "source": 166, + "target": 211, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -323.648681640625 + }, + { + "id": "e324", + "source": 247, + "target": 248, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 155.28958129882812 + }, + { + "id": "e325", + "source": 248, + "target": 249, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -684.8584594726562 + }, + { + "id": "e326", + "source": 249, + "target": 250, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -698.1493530273438 + }, + { + "id": "e327", + "source": 250, + "target": 251, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 99.84855651855469 + }, + { + "id": "e328", + "source": 251, + "target": 252, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 97.63618469238281 + }, + { + "id": "e329", + "source": 252, + "target": 253, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -723.19970703125 + }, + { + "id": "e330", + "source": 253, + "target": 254, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -730.8602905273438 + }, + { + "id": "e331", + "source": 254, + "target": 247, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 118.34686279296875 + }, + { + "id": "e332", + "source": 219, + "target": 252, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.5779571533203 + }, + { + "id": "e333", + "source": 82, + "target": 250, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -910.6188354492188 + }, + { + "id": "e334", + "source": 238, + "target": 248, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 10.110588073730469 + }, + { + "id": "e335", + "source": 229, + "target": 254, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -955.0569458007812 + }, + { + "id": "e336", + "source": 131, + "target": 255, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -44.91609191894531 + }, + { + "id": "e337", + "source": 255, + "target": 256, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 67.01385498046875 + }, + { + "id": "e338", + "source": 256, + "target": 257, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 56.78757858276367 + }, + { + "id": "e339", + "source": 257, + "target": 135, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -8.96033000946045 + }, + { + "id": "e340", + "source": 135, + "target": 258, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.104752540588379 + }, + { + "id": "e341", + "source": 258, + "target": 259, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 22.278026580810547 + }, + { + "id": "e342", + "source": 259, + "target": 260, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 21.546558380126953 + }, + { + "id": "e343", + "source": 260, + "target": 131, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -32.556739807128906 + }, + { + "id": "e344", + "source": 119, + "target": 255, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 103.6007080078125 + }, + { + "id": "e345", + "source": 82, + "target": 257, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -69.17549896240234 + }, + { + "id": "e346", + "source": 129, + "target": 258, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 31.054014205932617 + }, + { + "id": "e347", + "source": 130, + "target": 260, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -54.1338005065918 + }, + { + "id": "e348", + "source": 263, + "target": 264, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -635.0196533203125 + }, + { + "id": "e349", + "source": 264, + "target": 265, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 131.36831665039062 + }, + { + "id": "e350", + "source": 265, + "target": 266, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 89.24624633789062 + }, + { + "id": "e351", + "source": 266, + "target": 267, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -670.0047607421875 + }, + { + "id": "e352", + "source": 267, + "target": 268, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -677.1100463867188 + }, + { + "id": "e353", + "source": 268, + "target": 269, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 90.12943267822266 + }, + { + "id": "e354", + "source": 269, + "target": 270, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 104.84463500976562 + }, + { + "id": "e355", + "source": 270, + "target": 263, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -630.3958740234375 + }, + { + "id": "e356", + "source": 262, + "target": 264, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -11.823577880859375 + }, + { + "id": "e357", + "source": 261, + "target": 266, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -985.9140625 + }, + { + "id": "e358", + "source": 219, + "target": 268, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -152.10824584960938 + }, + { + "id": "e359", + "source": 119, + "target": 270, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -909.310302734375 + }, + { + "id": "e360", + "source": 273, + "target": 274, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.89154052734375 + }, + { + "id": "e361", + "source": 274, + "target": 275, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 7.930356979370117 + }, + { + "id": "e362", + "source": 275, + "target": 276, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -8.657832145690918 + }, + { + "id": "e363", + "source": 276, + "target": 277, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 31.41438102722168 + }, + { + "id": "e364", + "source": 277, + "target": 278, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 36.530662536621094 + }, + { + "id": "e365", + "source": 278, + "target": 279, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -23.897727966308594 + }, + { + "id": "e366", + "source": 279, + "target": 280, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -36.19428253173828 + }, + { + "id": "e367", + "source": 280, + "target": 273, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 105.98435974121094 + }, + { + "id": "e368", + "source": 271, + "target": 278, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -50.36922836303711 + }, + { + "id": "e369", + "source": 229, + "target": 280, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 138.29458618164062 + }, + { + "id": "e370", + "source": 261, + "target": 274, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -21.063962936401367 + }, + { + "id": "e371", + "source": 272, + "target": 276, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 40.18988037109375 + }, + { + "id": "e372", + "source": 282, + "target": 283, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -221.41281127929688 + }, + { + "id": "e373", + "source": 283, + "target": 284, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -286.8559265136719 + }, + { + "id": "e374", + "source": 284, + "target": 285, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 331.5219421386719 + }, + { + "id": "e375", + "source": 285, + "target": 286, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.8895568847656 + }, + { + "id": "e376", + "source": 286, + "target": 287, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -325.5614929199219 + }, + { + "id": "e377", + "source": 287, + "target": 288, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -265.7839050292969 + }, + { + "id": "e378", + "source": 288, + "target": 289, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 337.95123291015625 + }, + { + "id": "e379", + "source": 289, + "target": 282, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -248.1752166748047 + }, + { + "id": "e380", + "source": 281, + "target": 287, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 165.28416442871094 + }, + { + "id": "e381", + "source": 129, + "target": 289, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -473.2442321777344 + }, + { + "id": "e382", + "source": 238, + "target": 283, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 33.38037109375 + }, + { + "id": "e383", + "source": 271, + "target": 285, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -591.8800659179688 + }, + { + "id": "e384", + "source": 229, + "target": 248, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -763.6397705078125 + }, + { + "id": "e385", + "source": 238, + "target": 250, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -185.6362762451172 + }, + { + "id": "e386", + "source": 82, + "target": 252, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -931.3328247070312 + }, + { + "id": "e387", + "source": 219, + "target": 254, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -236.75433349609375 + }, + { + "id": "e388", + "source": 290, + "target": 291, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -59.96040344238281 + }, + { + "id": "e389", + "source": 291, + "target": 292, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -380.57977294921875 + }, + { + "id": "e390", + "source": 292, + "target": 293, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -418.4499206542969 + }, + { + "id": "e391", + "source": 293, + "target": 294, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 139.3925323486328 + }, + { + "id": "e392", + "source": 294, + "target": 295, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -76.1832504272461 + }, + { + "id": "e393", + "source": 295, + "target": 296, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -436.6231994628906 + }, + { + "id": "e394", + "source": 296, + "target": 297, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -462.9992980957031 + }, + { + "id": "e395", + "source": 297, + "target": 290, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 151.3819122314453 + }, + { + "id": "e396", + "source": 262, + "target": 295, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 114.95191192626953 + }, + { + "id": "e397", + "source": 130, + "target": 293, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -638.0137939453125 + }, + { + "id": "e398", + "source": 281, + "target": 291, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 87.71337890625 + }, + { + "id": "e399", + "source": 272, + "target": 297, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -678.633056640625 + }, + { + "id": "e400", + "source": 298, + "target": 299, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -38.34885787963867 + }, + { + "id": "e401", + "source": 299, + "target": 300, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 12.406405448913574 + }, + { + "id": "e402", + "source": 300, + "target": 301, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 21.198192596435547 + }, + { + "id": "e403", + "source": 301, + "target": 302, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -2.8512074947357178 + }, + { + "id": "e404", + "source": 302, + "target": 303, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -41.042057037353516 + }, + { + "id": "e405", + "source": 303, + "target": 304, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 10.555962562561035 + }, + { + "id": "e406", + "source": 304, + "target": 305, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 25.538288116455078 + }, + { + "id": "e407", + "source": 305, + "target": 298, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.20269775390625 + }, + { + "id": "e408", + "source": 164, + "target": 299, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.12639617919922 + }, + { + "id": "e409", + "source": 176, + "target": 301, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -32.59359359741211 + }, + { + "id": "e410", + "source": 175, + "target": 303, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 39.2224235534668 + }, + { + "id": "e411", + "source": 177, + "target": 305, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 2.608288049697876 + }, + { + "id": "e412", + "source": 309, + "target": 310, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.64385986328125 + }, + { + "id": "e413", + "source": 310, + "target": 311, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 56.327415466308594 + }, + { + "id": "e414", + "source": 311, + "target": 312, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 82.47460174560547 + }, + { + "id": "e415", + "source": 312, + "target": 313, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -329.6252136230469 + }, + { + "id": "e416", + "source": 313, + "target": 314, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.2942199707031 + }, + { + "id": "e417", + "source": 314, + "target": 315, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 41.377445220947266 + }, + { + "id": "e418", + "source": 315, + "target": 316, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 34.678443908691406 + }, + { + "id": "e419", + "source": 316, + "target": 309, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -354.4615783691406 + }, + { + "id": "e420", + "source": 308, + "target": 310, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -88.03398132324219 + }, + { + "id": "e421", + "source": 306, + "target": 312, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.0622863769531 + }, + { + "id": "e422", + "source": 307, + "target": 314, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -150.4854278564453 + }, + { + "id": "e423", + "source": 164, + "target": 316, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -506.2691345214844 + }, + { + "id": "e424", + "source": 320, + "target": 321, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -0.509472131729126 + }, + { + "id": "e425", + "source": 321, + "target": 322, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 71.69882202148438 + }, + { + "id": "e426", + "source": 322, + "target": 323, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 59.0772590637207 + }, + { + "id": "e427", + "source": 323, + "target": 324, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 113.88978576660156 + }, + { + "id": "e428", + "source": 324, + "target": 325, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 46.96805953979492 + }, + { + "id": "e429", + "source": 325, + "target": 326, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -5.618168354034424 + }, + { + "id": "e430", + "source": 326, + "target": 327, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -39.18044662475586 + }, + { + "id": "e431", + "source": 327, + "target": 320, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -49.590087890625 + }, + { + "id": "e432", + "source": 317, + "target": 325, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -47.40222930908203 + }, + { + "id": "e433", + "source": 318, + "target": 327, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 6.687641143798828 + }, + { + "id": "e434", + "source": 306, + "target": 321, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 77.1582260131836 + }, + { + "id": "e435", + "source": 319, + "target": 323, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 40.40790939331055 + }, + { + "id": "e436", + "source": 330, + "target": 331, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -126.50398254394531 + }, + { + "id": "e437", + "source": 331, + "target": 332, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -154.95779418945312 + }, + { + "id": "e438", + "source": 332, + "target": 333, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 179.3357391357422 + }, + { + "id": "e439", + "source": 333, + "target": 334, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -294.64251708984375 + }, + { + "id": "e440", + "source": 334, + "target": 335, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -236.80868530273438 + }, + { + "id": "e441", + "source": 335, + "target": 336, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -86.51045227050781 + }, + { + "id": "e442", + "source": 336, + "target": 337, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 167.0966796875 + }, + { + "id": "e443", + "source": 337, + "target": 330, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -142.83584594726562 + }, + { + "id": "e444", + "source": 329, + "target": 335, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.66806030273438 + }, + { + "id": "e445", + "source": 175, + "target": 337, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -258.6436462402344 + }, + { + "id": "e446", + "source": 328, + "target": 331, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 25.456907272338867 + }, + { + "id": "e447", + "source": 317, + "target": 333, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -414.9522705078125 + }, + { + "id": "e448", + "source": 338, + "target": 339, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 81.77027893066406 + }, + { + "id": "e449", + "source": 339, + "target": 340, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -135.5938262939453 + }, + { + "id": "e450", + "source": 340, + "target": 341, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -128.2847442626953 + }, + { + "id": "e451", + "source": 341, + "target": 342, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -109.390380859375 + }, + { + "id": "e452", + "source": 342, + "target": 343, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 56.24596405029297 + }, + { + "id": "e453", + "source": 343, + "target": 344, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -178.1874542236328 + }, + { + "id": "e454", + "source": 344, + "target": 345, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -161.00753784179688 + }, + { + "id": "e455", + "source": 345, + "target": 338, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -40.29701232910156 + }, + { + "id": "e456", + "source": 318, + "target": 343, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -327.5168151855469 + }, + { + "id": "e457", + "source": 328, + "target": 345, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 13.513280868530273 + }, + { + "id": "e458", + "source": 176, + "target": 339, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -268.1639099121094 + }, + { + "id": "e459", + "source": 307, + "target": 341, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -73.01216888427734 + }, + { + "id": "e460", + "source": 346, + "target": 347, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 130.9008026123047 + }, + { + "id": "e461", + "source": 347, + "target": 348, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -355.7137145996094 + }, + { + "id": "e462", + "source": 348, + "target": 349, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.32073974609375 + }, + { + "id": "e463", + "source": 349, + "target": 350, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 49.3145866394043 + }, + { + "id": "e464", + "source": 350, + "target": 351, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 51.447105407714844 + }, + { + "id": "e465", + "source": 351, + "target": 352, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.4948425292969 + }, + { + "id": "e466", + "source": 352, + "target": 353, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.42999267578125 + }, + { + "id": "e467", + "source": 353, + "target": 346, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 122.73527526855469 + }, + { + "id": "e468", + "source": 308, + "target": 351, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.08332347869873 + }, + { + "id": "e469", + "source": 177, + "target": 349, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -638.703125 + }, + { + "id": "e470", + "source": 329, + "target": 347, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 135.2977294921875 + }, + { + "id": "e471", + "source": 319, + "target": 353, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -445.4853210449219 + }, + { + "id": "e472", + "source": 230, + "target": 354, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -63.47639465332031 + }, + { + "id": "e473", + "source": 354, + "target": 355, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 59.98800277709961 + }, + { + "id": "e474", + "source": 355, + "target": 356, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 55.42256546020508 + }, + { + "id": "e475", + "source": 356, + "target": 234, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -16.569822311401367 + }, + { + "id": "e476", + "source": 234, + "target": 357, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -75.44381713867188 + }, + { + "id": "e477", + "source": 357, + "target": 358, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 33.364437103271484 + }, + { + "id": "e478", + "source": 358, + "target": 359, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.66160202026367 + }, + { + "id": "e479", + "source": 359, + "target": 230, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 42.24626922607422 + }, + { + "id": "e480", + "source": 218, + "target": 354, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 104.21843719482422 + }, + { + "id": "e481", + "source": 177, + "target": 356, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -77.9478988647461 + }, + { + "id": "e482", + "source": 228, + "target": 357, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 87.23704528808594 + }, + { + "id": "e483", + "source": 229, + "target": 359, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -20.087356567382812 + }, + { + "id": "e484", + "source": 362, + "target": 363, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -316.9059753417969 + }, + { + "id": "e485", + "source": 363, + "target": 364, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 40.514225006103516 + }, + { + "id": "e486", + "source": 364, + "target": 365, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 24.461851119995117 + }, + { + "id": "e487", + "source": 365, + "target": 366, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.5523986816406 + }, + { + "id": "e488", + "source": 366, + "target": 367, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.5760498046875 + }, + { + "id": "e489", + "source": 367, + "target": 368, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.97993850708008 + }, + { + "id": "e490", + "source": 368, + "target": 369, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 20.27507972717285 + }, + { + "id": "e491", + "source": 369, + "target": 362, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.2199401855469 + }, + { + "id": "e492", + "source": 361, + "target": 363, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -10.146479606628418 + }, + { + "id": "e493", + "source": 360, + "target": 365, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -492.4813537597656 + }, + { + "id": "e494", + "source": 308, + "target": 367, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -60.38920974731445 + }, + { + "id": "e495", + "source": 218, + "target": 369, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -505.6318054199219 + }, + { + "id": "e496", + "source": 372, + "target": 373, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 2.25130033493042 + }, + { + "id": "e497", + "source": 373, + "target": 374, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 28.596776962280273 + }, + { + "id": "e498", + "source": 374, + "target": 375, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 7.575403213500977 + }, + { + "id": "e499", + "source": 375, + "target": 376, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 105.37211608886719 + }, + { + "id": "e500", + "source": 376, + "target": 377, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1.2872556447982788 + }, + { + "id": "e501", + "source": 377, + "target": 378, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -20.990571975708008 + }, + { + "id": "e502", + "source": 378, + "target": 379, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -45.0254020690918 + }, + { + "id": "e503", + "source": 379, + "target": 372, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 136.5085906982422 + }, + { + "id": "e504", + "source": 370, + "target": 377, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -26.561634063720703 + }, + { + "id": "e505", + "source": 319, + "target": 379, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 173.3778533935547 + }, + { + "id": "e506", + "source": 360, + "target": 373, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 15.385311126708984 + }, + { + "id": "e507", + "source": 371, + "target": 375, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 86.49537658691406 + }, + { + "id": "e508", + "source": 381, + "target": 382, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -61.33308792114258 + }, + { + "id": "e509", + "source": 382, + "target": 383, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -242.26039123535156 + }, + { + "id": "e510", + "source": 383, + "target": 384, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 233.4112548828125 + }, + { + "id": "e511", + "source": 384, + "target": 385, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -241.468994140625 + }, + { + "id": "e512", + "source": 385, + "target": 386, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -189.87176513671875 + }, + { + "id": "e513", + "source": 386, + "target": 387, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -196.15560913085938 + }, + { + "id": "e514", + "source": 387, + "target": 388, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 192.88182067871094 + }, + { + "id": "e515", + "source": 388, + "target": 381, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -49.17443084716797 + }, + { + "id": "e516", + "source": 380, + "target": 386, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 56.080665588378906 + }, + { + "id": "e517", + "source": 228, + "target": 388, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -171.37310791015625 + }, + { + "id": "e518", + "source": 329, + "target": 382, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -111.92754364013672 + }, + { + "id": "e519", + "source": 370, + "target": 384, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -394.0908203125 + }, + { + "id": "e520", + "source": 319, + "target": 347, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -278.2104797363281 + }, + { + "id": "e521", + "source": 329, + "target": 349, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -235.59014892578125 + }, + { + "id": "e522", + "source": 177, + "target": 351, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.5262145996094 + }, + { + "id": "e523", + "source": 308, + "target": 353, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -34.90199279785156 + }, + { + "id": "e524", + "source": 389, + "target": 390, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 139.71434020996094 + }, + { + "id": "e525", + "source": 390, + "target": 391, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -360.6007995605469 + }, + { + "id": "e526", + "source": 391, + "target": 392, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -379.84576416015625 + }, + { + "id": "e527", + "source": 392, + "target": 393, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 52.71599578857422 + }, + { + "id": "e528", + "source": 393, + "target": 394, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 61.72279357910156 + }, + { + "id": "e529", + "source": 394, + "target": 395, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.3017883300781 + }, + { + "id": "e530", + "source": 395, + "target": 396, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.2579650878906 + }, + { + "id": "e531", + "source": 396, + "target": 389, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 134.2686767578125 + }, + { + "id": "e532", + "source": 361, + "target": 394, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -44.06476974487305 + }, + { + "id": "e533", + "source": 229, + "target": 392, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -591.8031616210938 + }, + { + "id": "e534", + "source": 380, + "target": 390, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 94.5886001586914 + }, + { + "id": "e535", + "source": 371, + "target": 396, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -388.57275390625 + }, + { + "id": "e536", + "source": 273, + "target": 397, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -70.93859100341797 + }, + { + "id": "e537", + "source": 397, + "target": 398, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 62.546485900878906 + }, + { + "id": "e538", + "source": 398, + "target": 399, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 62.579933166503906 + }, + { + "id": "e539", + "source": 399, + "target": 277, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -28.55299186706543 + }, + { + "id": "e540", + "source": 277, + "target": 400, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -43.66966247558594 + }, + { + "id": "e541", + "source": 400, + "target": 401, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 16.464414596557617 + }, + { + "id": "e542", + "source": 401, + "target": 402, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 25.87407875061035 + }, + { + "id": "e543", + "source": 402, + "target": 273, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -16.162311553955078 + }, + { + "id": "e544", + "source": 261, + "target": 397, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 115.78897857666016 + }, + { + "id": "e545", + "source": 229, + "target": 399, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -97.98233795166016 + }, + { + "id": "e546", + "source": 271, + "target": 400, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 46.97246170043945 + }, + { + "id": "e547", + "source": 272, + "target": 402, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -48.03305435180664 + }, + { + "id": "e548", + "source": 405, + "target": 406, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -307.0511169433594 + }, + { + "id": "e549", + "source": 406, + "target": 407, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 61.21969223022461 + }, + { + "id": "e550", + "source": 407, + "target": 408, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.14302062988281 + }, + { + "id": "e551", + "source": 408, + "target": 409, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -335.7181091308594 + }, + { + "id": "e552", + "source": 409, + "target": 410, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -345.97064208984375 + }, + { + "id": "e553", + "source": 410, + "target": 411, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 38.20002365112305 + }, + { + "id": "e554", + "source": 411, + "target": 412, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 48.0113525390625 + }, + { + "id": "e555", + "source": 412, + "target": 405, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -297.3272399902344 + }, + { + "id": "e556", + "source": 404, + "target": 406, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 64.66478729248047 + }, + { + "id": "e557", + "source": 403, + "target": 408, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -551.896240234375 + }, + { + "id": "e558", + "source": 361, + "target": 410, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -26.23446273803711 + }, + { + "id": "e559", + "source": 261, + "target": 412, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -485.4057312011719 + }, + { + "id": "e560", + "source": 415, + "target": 416, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 3.3848347663879395 + }, + { + "id": "e561", + "source": 416, + "target": 417, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 64.22064208984375 + }, + { + "id": "e562", + "source": 417, + "target": 418, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 47.91273880004883 + }, + { + "id": "e563", + "source": 418, + "target": 419, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 16.491561889648438 + }, + { + "id": "e564", + "source": 419, + "target": 420, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -40.83681869506836 + }, + { + "id": "e565", + "source": 420, + "target": 421, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -25.039447784423828 + }, + { + "id": "e566", + "source": 421, + "target": 422, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -13.337310791015625 + }, + { + "id": "e567", + "source": 422, + "target": 415, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 138.78919982910156 + }, + { + "id": "e568", + "source": 413, + "target": 420, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 2.949678897857666 + }, + { + "id": "e569", + "source": 371, + "target": 422, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.71913146972656 + }, + { + "id": "e570", + "source": 403, + "target": 416, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 48.24574279785156 + }, + { + "id": "e571", + "source": 414, + "target": 418, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -41.29557800292969 + }, + { + "id": "e572", + "source": 424, + "target": 425, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -72.43766021728516 + }, + { + "id": "e573", + "source": 425, + "target": 426, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -327.596923828125 + }, + { + "id": "e574", + "source": 426, + "target": 427, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 221.0410919189453 + }, + { + "id": "e575", + "source": 427, + "target": 428, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -227.31875610351562 + }, + { + "id": "e576", + "source": 428, + "target": 429, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -160.55874633789062 + }, + { + "id": "e577", + "source": 429, + "target": 430, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -129.2174530029297 + }, + { + "id": "e578", + "source": 430, + "target": 431, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 228.89918518066406 + }, + { + "id": "e579", + "source": 431, + "target": 424, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -45.98583984375 + }, + { + "id": "e580", + "source": 423, + "target": 429, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 82.91128540039062 + }, + { + "id": "e581", + "source": 271, + "target": 431, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -200.0867156982422 + }, + { + "id": "e582", + "source": 380, + "target": 425, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -172.48825073242188 + }, + { + "id": "e583", + "source": 413, + "target": 427, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -364.5831298828125 + }, + { + "id": "e584", + "source": 371, + "target": 390, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.8896179199219 + }, + { + "id": "e585", + "source": 380, + "target": 392, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -195.01683044433594 + }, + { + "id": "e586", + "source": 229, + "target": 394, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -407.9436340332031 + }, + { + "id": "e587", + "source": 361, + "target": 396, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.68914794921875 + }, + { + "id": "e588", + "source": 432, + "target": 433, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -63.381370544433594 + }, + { + "id": "e589", + "source": 433, + "target": 434, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -241.1527557373047 + }, + { + "id": "e590", + "source": 434, + "target": 435, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -247.66250610351562 + }, + { + "id": "e591", + "source": 435, + "target": 436, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.75579833984375 + }, + { + "id": "e592", + "source": 436, + "target": 437, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 58.392852783203125 + }, + { + "id": "e593", + "source": 437, + "target": 438, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -185.88064575195312 + }, + { + "id": "e594", + "source": 438, + "target": 439, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -209.2644500732422 + }, + { + "id": "e595", + "source": 439, + "target": 432, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 79.08517456054688 + }, + { + "id": "e596", + "source": 404, + "target": 437, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 125.5329818725586 + }, + { + "id": "e597", + "source": 272, + "target": 435, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -363.5902404785156 + }, + { + "id": "e598", + "source": 423, + "target": 433, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.996376037597656 + }, + { + "id": "e599", + "source": 414, + "target": 439, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -352.98583984375 + }, + { + "id": "e600", + "source": 443, + "target": 444, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e601", + "source": 444, + "target": 445, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e602", + "source": 445, + "target": 446, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e603", + "source": 446, + "target": 447, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e604", + "source": 447, + "target": 448, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e605", + "source": 448, + "target": 449, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e606", + "source": 449, + "target": 450, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e607", + "source": 450, + "target": 443, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e608", + "source": 440, + "target": 444, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e609", + "source": 441, + "target": 446, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e610", + "source": 0, + "target": 448, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e611", + "source": 442, + "target": 450, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e612", + "source": 454, + "target": 455, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1015.9585571289062 + }, + { + "id": "e613", + "source": 455, + "target": 456, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 117.57028198242188 + }, + { + "id": "e614", + "source": 456, + "target": 457, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 150.34458923339844 + }, + { + "id": "e615", + "source": 457, + "target": 458, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -923.1016235351562 + }, + { + "id": "e616", + "source": 458, + "target": 459, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -916.8735961914062 + }, + { + "id": "e617", + "source": 459, + "target": 460, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 176.95468139648438 + }, + { + "id": "e618", + "source": 460, + "target": 461, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 99.76750183105469 + }, + { + "id": "e619", + "source": 461, + "target": 454, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1010.0718383789062 + }, + { + "id": "e620", + "source": 453, + "target": 455, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -387.0080261230469 + }, + { + "id": "e621", + "source": 451, + "target": 457, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1208.9002685546875 + }, + { + "id": "e622", + "source": 452, + "target": 459, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -145.53468322753906 + }, + { + "id": "e623", + "source": 440, + "target": 461, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1394.9998779296875 + }, + { + "id": "e624", + "source": 464, + "target": 465, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0.5333786010742188 + }, + { + "id": "e625", + "source": 465, + "target": 466, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 59.26866912841797 + }, + { + "id": "e626", + "source": 466, + "target": 467, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -22.517940521240234 + }, + { + "id": "e627", + "source": 467, + "target": 468, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 50.09671401977539 + }, + { + "id": "e628", + "source": 468, + "target": 469, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 29.530519485473633 + }, + { + "id": "e629", + "source": 469, + "target": 470, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 19.816410064697266 + }, + { + "id": "e630", + "source": 470, + "target": 471, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -16.495561599731445 + }, + { + "id": "e631", + "source": 471, + "target": 464, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.033085823059082 + }, + { + "id": "e632", + "source": 12, + "target": 469, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -6.631434917449951 + }, + { + "id": "e633", + "source": 462, + "target": 471, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 12.185128211975098 + }, + { + "id": "e634", + "source": 451, + "target": 465, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 62.40166473388672 + }, + { + "id": "e635", + "source": 463, + "target": 467, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 80.74712371826172 + }, + { + "id": "e636", + "source": 14, + "target": 22, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -483.20001220703125 + }, + { + "id": "e637", + "source": 0, + "target": 20, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1116.471435546875 + }, + { + "id": "e638", + "source": 13, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -316.2699279785156 + }, + { + "id": "e639", + "source": 12, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1320.59423828125 + }, + { + "id": "e640", + "source": 472, + "target": 473, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 170.01535034179688 + }, + { + "id": "e641", + "source": 473, + "target": 474, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -659.2994995117188 + }, + { + "id": "e642", + "source": 474, + "target": 475, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -670.4940795898438 + }, + { + "id": "e643", + "source": 475, + "target": 476, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -235.76097106933594 + }, + { + "id": "e644", + "source": 476, + "target": 477, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 136.35467529296875 + }, + { + "id": "e645", + "source": 477, + "target": 478, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -562.6920166015625 + }, + { + "id": "e646", + "source": 478, + "target": 479, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -562.5474853515625 + }, + { + "id": "e647", + "source": 479, + "target": 472, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.64305114746094 + }, + { + "id": "e648", + "source": 462, + "target": 477, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -876.3690185546875 + }, + { + "id": "e649", + "source": 13, + "target": 479, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 98.62018585205078 + }, + { + "id": "e650", + "source": 441, + "target": 473, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -950.9993896484375 + }, + { + "id": "e651", + "source": 452, + "target": 475, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 98.60926055908203 + }, + { + "id": "e652", + "source": 480, + "target": 481, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 33.15401840209961 + }, + { + "id": "e653", + "source": 481, + "target": 482, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -972.3196411132812 + }, + { + "id": "e654", + "source": 482, + "target": 483, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -985.283203125 + }, + { + "id": "e655", + "source": 483, + "target": 484, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 11.813285827636719 + }, + { + "id": "e656", + "source": 484, + "target": 485, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.7082405090332 + }, + { + "id": "e657", + "source": 485, + "target": 486, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -982.9430541992188 + }, + { + "id": "e658", + "source": 486, + "target": 487, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1006.0709838867188 + }, + { + "id": "e659", + "source": 487, + "target": 480, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 18.42105484008789 + }, + { + "id": "e660", + "source": 453, + "target": 485, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -354.20428466796875 + }, + { + "id": "e661", + "source": 442, + "target": 483, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1327.7119140625 + }, + { + "id": "e662", + "source": 14, + "target": 481, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.91143798828125 + }, + { + "id": "e663", + "source": 463, + "target": 487, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1375.9012451171875 + }, + { + "id": "e664", + "source": 490, + "target": 491, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e665", + "source": 491, + "target": 492, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e666", + "source": 492, + "target": 493, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e667", + "source": 493, + "target": 494, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e668", + "source": 494, + "target": 495, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e669", + "source": 495, + "target": 496, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e670", + "source": 496, + "target": 497, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e671", + "source": 497, + "target": 490, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e672", + "source": 488, + "target": 491, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e673", + "source": 442, + "target": 493, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e674", + "source": 60, + "target": 495, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e675", + "source": 489, + "target": 497, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e676", + "source": 500, + "target": 501, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -984.4351196289062 + }, + { + "id": "e677", + "source": 501, + "target": 502, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 47.80075454711914 + }, + { + "id": "e678", + "source": 502, + "target": 503, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 65.23918914794922 + }, + { + "id": "e679", + "source": 503, + "target": 504, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -964.1812133789062 + }, + { + "id": "e680", + "source": 504, + "target": 505, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -961.0032348632812 + }, + { + "id": "e681", + "source": 505, + "target": 506, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 39.94345474243164 + }, + { + "id": "e682", + "source": 506, + "target": 507, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 65.77891540527344 + }, + { + "id": "e683", + "source": 507, + "target": 500, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -977.280029296875 + }, + { + "id": "e684", + "source": 499, + "target": 501, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -442.2394104003906 + }, + { + "id": "e685", + "source": 498, + "target": 503, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1274.1546630859375 + }, + { + "id": "e686", + "source": 453, + "target": 505, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -421.3080749511719 + }, + { + "id": "e687", + "source": 488, + "target": 507, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1277.3648681640625 + }, + { + "id": "e688", + "source": 509, + "target": 510, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 58.12052536010742 + }, + { + "id": "e689", + "source": 510, + "target": 511, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 62.51934051513672 + }, + { + "id": "e690", + "source": 511, + "target": 512, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -23.704679489135742 + }, + { + "id": "e691", + "source": 512, + "target": 513, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 53.32504653930664 + }, + { + "id": "e692", + "source": 513, + "target": 514, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 17.042287826538086 + }, + { + "id": "e693", + "source": 514, + "target": 515, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 70.06999206542969 + }, + { + "id": "e694", + "source": 515, + "target": 516, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -19.416519165039062 + }, + { + "id": "e695", + "source": 516, + "target": 509, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 59.2597770690918 + }, + { + "id": "e696", + "source": 71, + "target": 514, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 56.781253814697266 + }, + { + "id": "e697", + "source": 463, + "target": 516, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 85.11102294921875 + }, + { + "id": "e698", + "source": 498, + "target": 510, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 70.76033020019531 + }, + { + "id": "e699", + "source": 508, + "target": 512, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 85.20814514160156 + }, + { + "id": "e700", + "source": 72, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -426.1395568847656 + }, + { + "id": "e701", + "source": 60, + "target": 78, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1274.0006103515625 + }, + { + "id": "e702", + "source": 14, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -450.1400146484375 + }, + { + "id": "e703", + "source": 71, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1277.277587890625 + }, + { + "id": "e704", + "source": 463, + "target": 481, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1243.2725830078125 + }, + { + "id": "e705", + "source": 14, + "target": 483, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -451.58203125 + }, + { + "id": "e706", + "source": 442, + "target": 485, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1252.8265380859375 + }, + { + "id": "e707", + "source": 453, + "target": 487, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -457.3887939453125 + }, + { + "id": "e708", + "source": 517, + "target": 518, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 18.892593383789062 + }, + { + "id": "e709", + "source": 518, + "target": 519, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -995.4578247070312 + }, + { + "id": "e710", + "source": 519, + "target": 520, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -978.8065795898438 + }, + { + "id": "e711", + "source": 520, + "target": 521, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.26205062866211 + }, + { + "id": "e712", + "source": 521, + "target": 522, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 12.951315879821777 + }, + { + "id": "e713", + "source": 522, + "target": 523, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -980.7101440429688 + }, + { + "id": "e714", + "source": 523, + "target": 524, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -972.5144653320312 + }, + { + "id": "e715", + "source": 524, + "target": 517, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 26.736114501953125 + }, + { + "id": "e716", + "source": 499, + "target": 522, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -437.10003662109375 + }, + { + "id": "e717", + "source": 489, + "target": 520, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1260.6466064453125 + }, + { + "id": "e718", + "source": 72, + "target": 518, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -436.03558349609375 + }, + { + "id": "e719", + "source": 508, + "target": 524, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1259.46142578125 + }, + { + "id": "e720", + "source": 527, + "target": 528, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e721", + "source": 528, + "target": 529, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e722", + "source": 529, + "target": 530, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e723", + "source": 530, + "target": 531, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e724", + "source": 531, + "target": 532, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e725", + "source": 532, + "target": 533, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e726", + "source": 533, + "target": 534, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e727", + "source": 534, + "target": 527, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e728", + "source": 525, + "target": 528, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e729", + "source": 489, + "target": 530, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e730", + "source": 108, + "target": 532, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e731", + "source": 526, + "target": 534, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e732", + "source": 537, + "target": 538, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -953.4304809570312 + }, + { + "id": "e733", + "source": 538, + "target": 539, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 145.7263641357422 + }, + { + "id": "e734", + "source": 539, + "target": 540, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 121.56039428710938 + }, + { + "id": "e735", + "source": 540, + "target": 541, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1012.0900268554688 + }, + { + "id": "e736", + "source": 541, + "target": 542, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1005.2642211914062 + }, + { + "id": "e737", + "source": 542, + "target": 543, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 82.02579498291016 + }, + { + "id": "e738", + "source": 543, + "target": 544, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 192.48582458496094 + }, + { + "id": "e739", + "source": 544, + "target": 537, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -952.5681762695312 + }, + { + "id": "e740", + "source": 536, + "target": 538, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -296.890625 + }, + { + "id": "e741", + "source": 535, + "target": 540, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1356.2562255859375 + }, + { + "id": "e742", + "source": 499, + "target": 542, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -461.6692199707031 + }, + { + "id": "e743", + "source": 525, + "target": 544, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1149.551025390625 + }, + { + "id": "e744", + "source": 546, + "target": 547, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 19.923860549926758 + }, + { + "id": "e745", + "source": 547, + "target": 548, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 26.328256607055664 + }, + { + "id": "e746", + "source": 548, + "target": 549, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -9.473048210144043 + }, + { + "id": "e747", + "source": 549, + "target": 550, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1.3221169710159302 + }, + { + "id": "e748", + "source": 550, + "target": 551, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 4.6235785484313965 + }, + { + "id": "e749", + "source": 551, + "target": 552, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 62.76958084106445 + }, + { + "id": "e750", + "source": 552, + "target": 553, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 50.606544494628906 + }, + { + "id": "e751", + "source": 553, + "target": 546, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.97015380859375 + }, + { + "id": "e752", + "source": 119, + "target": 551, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 63.21938705444336 + }, + { + "id": "e753", + "source": 508, + "target": 553, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 103.56665802001953 + }, + { + "id": "e754", + "source": 535, + "target": 547, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -3.998650550842285 + }, + { + "id": "e755", + "source": 545, + "target": 549, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 11.93441390991211 + }, + { + "id": "e756", + "source": 120, + "target": 128, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -150.78414916992188 + }, + { + "id": "e757", + "source": 108, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1378.3135986328125 + }, + { + "id": "e758", + "source": 72, + "target": 124, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -396.5589294433594 + }, + { + "id": "e759", + "source": 119, + "target": 122, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1196.4544677734375 + }, + { + "id": "e760", + "source": 508, + "target": 518, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1346.30859375 + }, + { + "id": "e761", + "source": 72, + "target": 520, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -370.8406066894531 + }, + { + "id": "e762", + "source": 489, + "target": 522, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1312.409423828125 + }, + { + "id": "e763", + "source": 499, + "target": 524, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.2998046875 + }, + { + "id": "e764", + "source": 554, + "target": 555, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -231.92562866210938 + }, + { + "id": "e765", + "source": 555, + "target": 556, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -656.5640869140625 + }, + { + "id": "e766", + "source": 556, + "target": 557, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -652.9149169921875 + }, + { + "id": "e767", + "source": 557, + "target": 558, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 136.92877197265625 + }, + { + "id": "e768", + "source": 558, + "target": 559, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.07920837402344 + }, + { + "id": "e769", + "source": 559, + "target": 560, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -555.12060546875 + }, + { + "id": "e770", + "source": 560, + "target": 561, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -563.1851196289062 + }, + { + "id": "e771", + "source": 561, + "target": 554, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 131.6265106201172 + }, + { + "id": "e772", + "source": 536, + "target": 559, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 51.987491607666016 + }, + { + "id": "e773", + "source": 526, + "target": 557, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -931.4951782226562 + }, + { + "id": "e774", + "source": 120, + "target": 555, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 90.15770721435547 + }, + { + "id": "e775", + "source": 545, + "target": 561, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -869.5411376953125 + }, + { + "id": "e776", + "source": 562, + "target": 563, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 3.3429367542266846 + }, + { + "id": "e777", + "source": 563, + "target": 470, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 34.4796142578125 + }, + { + "id": "e778", + "source": 470, + "target": 564, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 10.490494728088379 + }, + { + "id": "e779", + "source": 564, + "target": 565, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -4.613897323608398 + }, + { + "id": "e780", + "source": 565, + "target": 566, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -14.61852741241455 + }, + { + "id": "e781", + "source": 566, + "target": 466, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 72.27417755126953 + }, + { + "id": "e782", + "source": 466, + "target": 567, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 5.895713806152344 + }, + { + "id": "e783", + "source": 567, + "target": 562, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 51.97319412231445 + }, + { + "id": "e784", + "source": 451, + "target": 563, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.391324996948242 + }, + { + "id": "e785", + "source": 462, + "target": 564, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -17.946001052856445 + }, + { + "id": "e786", + "source": 12, + "target": 566, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 86.93098449707031 + }, + { + "id": "e787", + "source": 463, + "target": 567, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 40.66442108154297 + }, + { + "id": "e788", + "source": 571, + "target": 572, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -673.0655517578125 + }, + { + "id": "e789", + "source": 572, + "target": 573, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 95.286865234375 + }, + { + "id": "e790", + "source": 573, + "target": 574, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 129.9617156982422 + }, + { + "id": "e791", + "source": 574, + "target": 575, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -642.5675048828125 + }, + { + "id": "e792", + "source": 575, + "target": 576, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -638.2272338867188 + }, + { + "id": "e793", + "source": 576, + "target": 577, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 109.18315887451172 + }, + { + "id": "e794", + "source": 577, + "target": 578, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 84.15872955322266 + }, + { + "id": "e795", + "source": 578, + "target": 571, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -680.174072265625 + }, + { + "id": "e796", + "source": 570, + "target": 572, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -277.0851135253906 + }, + { + "id": "e797", + "source": 568, + "target": 574, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -751.6083374023438 + }, + { + "id": "e798", + "source": 569, + "target": 576, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -234.78933715820312 + }, + { + "id": "e799", + "source": 451, + "target": 578, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -885.3455200195312 + }, + { + "id": "e800", + "source": 581, + "target": 582, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 8.51878547668457 + }, + { + "id": "e801", + "source": 582, + "target": 583, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 53.66038513183594 + }, + { + "id": "e802", + "source": 583, + "target": 584, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -29.27328872680664 + }, + { + "id": "e803", + "source": 584, + "target": 585, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 21.59441566467285 + }, + { + "id": "e804", + "source": 585, + "target": 586, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 40.855194091796875 + }, + { + "id": "e805", + "source": 586, + "target": 587, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 19.80672836303711 + }, + { + "id": "e806", + "source": 587, + "target": 588, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -22.987939834594727 + }, + { + "id": "e807", + "source": 588, + "target": 581, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -27.83880043029785 + }, + { + "id": "e808", + "source": 164, + "target": 586, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.278562545776367 + }, + { + "id": "e809", + "source": 579, + "target": 588, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 9.40579605102539 + }, + { + "id": "e810", + "source": 568, + "target": 582, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 50.6556396484375 + }, + { + "id": "e811", + "source": 580, + "target": 584, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 68.50833129882812 + }, + { + "id": "e812", + "source": 166, + "target": 174, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.0265197753906 + }, + { + "id": "e813", + "source": 12, + "target": 172, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -879.473876953125 + }, + { + "id": "e814", + "source": 165, + "target": 170, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -112.48392486572266 + }, + { + "id": "e815", + "source": 164, + "target": 168, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -911.7528076171875 + }, + { + "id": "e816", + "source": 589, + "target": 590, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 75.32772827148438 + }, + { + "id": "e817", + "source": 590, + "target": 591, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.94482421875 + }, + { + "id": "e818", + "source": 591, + "target": 592, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.9228210449219 + }, + { + "id": "e819", + "source": 592, + "target": 593, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -134.76499938964844 + }, + { + "id": "e820", + "source": 593, + "target": 594, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.54505157470703 + }, + { + "id": "e821", + "source": 594, + "target": 595, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.3033447265625 + }, + { + "id": "e822", + "source": 595, + "target": 596, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -382.8587341308594 + }, + { + "id": "e823", + "source": 596, + "target": 589, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -173.8781280517578 + }, + { + "id": "e824", + "source": 579, + "target": 594, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -583.281494140625 + }, + { + "id": "e825", + "source": 165, + "target": 596, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 10.008724212646484 + }, + { + "id": "e826", + "source": 462, + "target": 590, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -549.1299438476562 + }, + { + "id": "e827", + "source": 569, + "target": 592, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 13.530744552612305 + }, + { + "id": "e828", + "source": 597, + "target": 598, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 74.60453033447266 + }, + { + "id": "e829", + "source": 598, + "target": 599, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -663.9413452148438 + }, + { + "id": "e830", + "source": 599, + "target": 600, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -691.2515258789062 + }, + { + "id": "e831", + "source": 600, + "target": 601, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 26.87545394897461 + }, + { + "id": "e832", + "source": 601, + "target": 602, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 41.2401008605957 + }, + { + "id": "e833", + "source": 602, + "target": 603, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -665.8873291015625 + }, + { + "id": "e834", + "source": 603, + "target": 604, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -676.7037353515625 + }, + { + "id": "e835", + "source": 604, + "target": 597, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 56.93791580200195 + }, + { + "id": "e836", + "source": 570, + "target": 602, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -214.5448455810547 + }, + { + "id": "e837", + "source": 463, + "target": 600, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -980.8035888671875 + }, + { + "id": "e838", + "source": 166, + "target": 598, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -134.31744384765625 + }, + { + "id": "e839", + "source": 580, + "target": 604, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -890.8817749023438 + }, + { + "id": "e840", + "source": 509, + "target": 605, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -11.321455955505371 + }, + { + "id": "e841", + "source": 605, + "target": 515, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 76.40703582763672 + }, + { + "id": "e842", + "source": 515, + "target": 606, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 4.562790393829346 + }, + { + "id": "e843", + "source": 606, + "target": 513, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 59.00786209106445 + }, + { + "id": "e844", + "source": 513, + "target": 607, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -14.944360733032227 + }, + { + "id": "e845", + "source": 607, + "target": 511, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 70.80900573730469 + }, + { + "id": "e846", + "source": 498, + "target": 605, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 84.63204193115234 + }, + { + "id": "e847", + "source": 463, + "target": 606, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 49.168212890625 + }, + { + "id": "e848", + "source": 71, + "target": 607, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 80.80851745605469 + }, + { + "id": "e849", + "source": 508, + "target": 510, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 64.7818832397461 + }, + { + "id": "e850", + "source": 610, + "target": 611, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -661.9090576171875 + }, + { + "id": "e851", + "source": 611, + "target": 612, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 59.678924560546875 + }, + { + "id": "e852", + "source": 612, + "target": 613, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 78.21116638183594 + }, + { + "id": "e853", + "source": 613, + "target": 614, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -660.8453979492188 + }, + { + "id": "e854", + "source": 614, + "target": 615, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -667.923583984375 + }, + { + "id": "e855", + "source": 615, + "target": 616, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 54.39613342285156 + }, + { + "id": "e856", + "source": 616, + "target": 617, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 69.05924224853516 + }, + { + "id": "e857", + "source": 617, + "target": 610, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -664.5753173828125 + }, + { + "id": "e858", + "source": 609, + "target": 611, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -268.1890869140625 + }, + { + "id": "e859", + "source": 608, + "target": 613, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -823.8968505859375 + }, + { + "id": "e860", + "source": 570, + "target": 615, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -310.117431640625 + }, + { + "id": "e861", + "source": 498, + "target": 617, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -863.711669921875 + }, + { + "id": "e862", + "source": 619, + "target": 620, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 55.148399353027344 + }, + { + "id": "e863", + "source": 620, + "target": 621, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 73.6313247680664 + }, + { + "id": "e864", + "source": 621, + "target": 622, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -36.19902420043945 + }, + { + "id": "e865", + "source": 622, + "target": 623, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 37.82192611694336 + }, + { + "id": "e866", + "source": 623, + "target": 624, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.864845275878906 + }, + { + "id": "e867", + "source": 624, + "target": 625, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 59.56776809692383 + }, + { + "id": "e868", + "source": 625, + "target": 626, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -30.551515579223633 + }, + { + "id": "e869", + "source": 626, + "target": 619, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.01533889770508 + }, + { + "id": "e870", + "source": 218, + "target": 624, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.00400924682617 + }, + { + "id": "e871", + "source": 580, + "target": 626, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 86.22929382324219 + }, + { + "id": "e872", + "source": 608, + "target": 620, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 48.46913528442383 + }, + { + "id": "e873", + "source": 618, + "target": 622, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 88.13224029541016 + }, + { + "id": "e874", + "source": 219, + "target": 227, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -319.36822509765625 + }, + { + "id": "e875", + "source": 71, + "target": 225, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -858.5307006835938 + }, + { + "id": "e876", + "source": 166, + "target": 223, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -285.4005126953125 + }, + { + "id": "e877", + "source": 218, + "target": 221, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -818.5379638671875 + }, + { + "id": "e878", + "source": 580, + "target": 598, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -777.7972412109375 + }, + { + "id": "e879", + "source": 166, + "target": 600, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -327.9809875488281 + }, + { + "id": "e880", + "source": 463, + "target": 602, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -845.8214721679688 + }, + { + "id": "e881", + "source": 570, + "target": 604, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -247.18551635742188 + }, + { + "id": "e882", + "source": 627, + "target": 628, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 58.406429290771484 + }, + { + "id": "e883", + "source": 628, + "target": 629, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -672.5488891601562 + }, + { + "id": "e884", + "source": 629, + "target": 630, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -665.23486328125 + }, + { + "id": "e885", + "source": 630, + "target": 631, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.00547790527344 + }, + { + "id": "e886", + "source": 631, + "target": 632, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 29.598901748657227 + }, + { + "id": "e887", + "source": 632, + "target": 633, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -685.9227905273438 + }, + { + "id": "e888", + "source": 633, + "target": 634, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -660.4996337890625 + }, + { + "id": "e889", + "source": 634, + "target": 627, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 72.09791564941406 + }, + { + "id": "e890", + "source": 609, + "target": 632, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -312.1478576660156 + }, + { + "id": "e891", + "source": 508, + "target": 630, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -855.5616455078125 + }, + { + "id": "e892", + "source": 219, + "target": 628, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -231.48074340820312 + }, + { + "id": "e893", + "source": 618, + "target": 634, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -785.3433837890625 + }, + { + "id": "e894", + "source": 552, + "target": 635, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 3.0282349586486816 + }, + { + "id": "e895", + "source": 635, + "target": 550, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 51.77951431274414 + }, + { + "id": "e896", + "source": 550, + "target": 636, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -14.215907096862793 + }, + { + "id": "e897", + "source": 636, + "target": 548, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 26.145984649658203 + }, + { + "id": "e898", + "source": 535, + "target": 553, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 113.79048919677734 + }, + { + "id": "e899", + "source": 508, + "target": 635, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.509857177734375 + }, + { + "id": "e900", + "source": 119, + "target": 636, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 31.069442749023438 + }, + { + "id": "e901", + "source": 545, + "target": 547, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -15.206932067871094 + }, + { + "id": "e902", + "source": 639, + "target": 640, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -641.0830078125 + }, + { + "id": "e903", + "source": 640, + "target": 641, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 128.00843811035156 + }, + { + "id": "e904", + "source": 641, + "target": 642, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 89.76689147949219 + }, + { + "id": "e905", + "source": 642, + "target": 643, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -686.7191162109375 + }, + { + "id": "e906", + "source": 643, + "target": 644, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -684.2514038085938 + }, + { + "id": "e907", + "source": 644, + "target": 645, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 90.14380645751953 + }, + { + "id": "e908", + "source": 645, + "target": 646, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 111.68836975097656 + }, + { + "id": "e909", + "source": 646, + "target": 639, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -646.8746948242188 + }, + { + "id": "e910", + "source": 638, + "target": 640, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -119.26022338867188 + }, + { + "id": "e911", + "source": 637, + "target": 642, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -927.9595336914062 + }, + { + "id": "e912", + "source": 609, + "target": 644, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -251.20208740234375 + }, + { + "id": "e913", + "source": 535, + "target": 646, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -842.5357666015625 + }, + { + "id": "e914", + "source": 648, + "target": 649, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 34.102882385253906 + }, + { + "id": "e915", + "source": 649, + "target": 650, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.06977081298828 + }, + { + "id": "e916", + "source": 650, + "target": 651, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -22.528371810913086 + }, + { + "id": "e917", + "source": 651, + "target": 652, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -10.519939422607422 + }, + { + "id": "e918", + "source": 652, + "target": 653, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 19.47096061706543 + }, + { + "id": "e919", + "source": 653, + "target": 654, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 64.89511108398438 + }, + { + "id": "e920", + "source": 654, + "target": 655, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 47.44050979614258 + }, + { + "id": "e921", + "source": 655, + "target": 648, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 1.5870312452316284 + }, + { + "id": "e922", + "source": 261, + "target": 653, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 53.75274658203125 + }, + { + "id": "e923", + "source": 618, + "target": 655, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 99.11125183105469 + }, + { + "id": "e924", + "source": 637, + "target": 649, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -0.5675199031829834 + }, + { + "id": "e925", + "source": 647, + "target": 651, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 22.363262176513672 + }, + { + "id": "e926", + "source": 262, + "target": 270, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -239.67828369140625 + }, + { + "id": "e927", + "source": 119, + "target": 268, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -870.885498046875 + }, + { + "id": "e928", + "source": 219, + "target": 266, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.59979248046875 + }, + { + "id": "e929", + "source": 261, + "target": 264, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -737.151611328125 + }, + { + "id": "e930", + "source": 618, + "target": 628, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -873.2919311523438 + }, + { + "id": "e931", + "source": 219, + "target": 630, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.419677734375 + }, + { + "id": "e932", + "source": 508, + "target": 632, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -961.5528564453125 + }, + { + "id": "e933", + "source": 609, + "target": 634, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -149.41104125976562 + }, + { + "id": "e934", + "source": 656, + "target": 657, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -121.28671264648438 + }, + { + "id": "e935", + "source": 657, + "target": 658, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -342.06829833984375 + }, + { + "id": "e936", + "source": 658, + "target": 659, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -341.5244140625 + }, + { + "id": "e937", + "source": 659, + "target": 660, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 88.68269348144531 + }, + { + "id": "e938", + "source": 660, + "target": 661, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -154.65318298339844 + }, + { + "id": "e939", + "source": 661, + "target": 662, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.742431640625 + }, + { + "id": "e940", + "source": 662, + "target": 663, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -365.92962646484375 + }, + { + "id": "e941", + "source": 663, + "target": 656, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 111.43268585205078 + }, + { + "id": "e942", + "source": 638, + "target": 661, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 30.66305160522461 + }, + { + "id": "e943", + "source": 545, + "target": 659, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -548.9235229492188 + }, + { + "id": "e944", + "source": 262, + "target": 657, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 33.15578079223633 + }, + { + "id": "e945", + "source": 647, + "target": 663, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -573.1370239257812 + }, + { + "id": "e946", + "source": 664, + "target": 665, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -21.8555965423584 + }, + { + "id": "e947", + "source": 665, + "target": 587, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 31.55953025817871 + }, + { + "id": "e948", + "source": 587, + "target": 666, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 20.367307662963867 + }, + { + "id": "e949", + "source": 666, + "target": 667, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 18.072486877441406 + }, + { + "id": "e950", + "source": 667, + "target": 668, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -23.720937728881836 + }, + { + "id": "e951", + "source": 668, + "target": 583, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 62.125755310058594 + }, + { + "id": "e952", + "source": 583, + "target": 669, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 19.02994728088379 + }, + { + "id": "e953", + "source": 669, + "target": 664, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 51.63071823120117 + }, + { + "id": "e954", + "source": 568, + "target": 665, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.00843048095703 + }, + { + "id": "e955", + "source": 579, + "target": 666, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -13.79619312286377 + }, + { + "id": "e956", + "source": 164, + "target": 668, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 80.99256134033203 + }, + { + "id": "e957", + "source": 580, + "target": 669, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 16.23046875 + }, + { + "id": "e958", + "source": 673, + "target": 674, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -334.7183532714844 + }, + { + "id": "e959", + "source": 674, + "target": 675, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.63790512084961 + }, + { + "id": "e960", + "source": 675, + "target": 676, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 63.84532928466797 + }, + { + "id": "e961", + "source": 676, + "target": 677, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -311.6012268066406 + }, + { + "id": "e962", + "source": 677, + "target": 678, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -304.4822082519531 + }, + { + "id": "e963", + "source": 678, + "target": 679, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 48.04290771484375 + }, + { + "id": "e964", + "source": 679, + "target": 680, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 36.19967269897461 + }, + { + "id": "e965", + "source": 680, + "target": 673, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -342.3763732910156 + }, + { + "id": "e966", + "source": 672, + "target": 674, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -197.02157592773438 + }, + { + "id": "e967", + "source": 670, + "target": 676, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -310.15167236328125 + }, + { + "id": "e968", + "source": 671, + "target": 678, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -174.20388793945312 + }, + { + "id": "e969", + "source": 568, + "target": 680, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -403.5121154785156 + }, + { + "id": "e970", + "source": 683, + "target": 684, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -28.965099334716797 + }, + { + "id": "e971", + "source": 684, + "target": 685, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 97.9033203125 + }, + { + "id": "e972", + "source": 685, + "target": 686, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 65.42445373535156 + }, + { + "id": "e973", + "source": 686, + "target": 687, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.7839469909668 + }, + { + "id": "e974", + "source": 687, + "target": 688, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 7.371175289154053 + }, + { + "id": "e975", + "source": 688, + "target": 689, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 64.26177215576172 + }, + { + "id": "e976", + "source": 689, + "target": 690, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 42.71900939941406 + }, + { + "id": "e977", + "source": 690, + "target": 683, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -3.199972152709961 + }, + { + "id": "e978", + "source": 306, + "target": 688, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 55.6914176940918 + }, + { + "id": "e979", + "source": 681, + "target": 690, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -50.24808120727539 + }, + { + "id": "e980", + "source": 670, + "target": 684, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 122.40458679199219 + }, + { + "id": "e981", + "source": 682, + "target": 686, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -27.841859817504883 + }, + { + "id": "e982", + "source": 308, + "target": 316, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -150.5460662841797 + }, + { + "id": "e983", + "source": 164, + "target": 314, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -496.0460510253906 + }, + { + "id": "e984", + "source": 307, + "target": 312, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 17.66151237487793 + }, + { + "id": "e985", + "source": 306, + "target": 310, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -471.4316711425781 + }, + { + "id": "e986", + "source": 691, + "target": 692, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 55.097469329833984 + }, + { + "id": "e987", + "source": 692, + "target": 693, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -131.5571746826172 + }, + { + "id": "e988", + "source": 693, + "target": 694, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -153.89248657226562 + }, + { + "id": "e989", + "source": 694, + "target": 695, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -55.569210052490234 + }, + { + "id": "e990", + "source": 695, + "target": 696, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 88.57049560546875 + }, + { + "id": "e991", + "source": 696, + "target": 697, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -206.90234375 + }, + { + "id": "e992", + "source": 697, + "target": 698, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -184.2036895751953 + }, + { + "id": "e993", + "source": 698, + "target": 691, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -72.69800567626953 + }, + { + "id": "e994", + "source": 681, + "target": 696, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.7384948730469 + }, + { + "id": "e995", + "source": 307, + "target": 698, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -7.352051258087158 + }, + { + "id": "e996", + "source": 579, + "target": 692, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -244.34506225585938 + }, + { + "id": "e997", + "source": 671, + "target": 694, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 19.941776275634766 + }, + { + "id": "e998", + "source": 699, + "target": 700, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 113.47853088378906 + }, + { + "id": "e999", + "source": 700, + "target": 701, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -327.58013916015625 + }, + { + "id": "e1000", + "source": 701, + "target": 702, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.6907958984375 + }, + { + "id": "e1001", + "source": 702, + "target": 703, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 66.58513641357422 + }, + { + "id": "e1002", + "source": 703, + "target": 704, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 75.72689819335938 + }, + { + "id": "e1003", + "source": 704, + "target": 705, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.9336853027344 + }, + { + "id": "e1004", + "source": 705, + "target": 706, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -335.1783142089844 + }, + { + "id": "e1005", + "source": 706, + "target": 699, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 106.4405746459961 + }, + { + "id": "e1006", + "source": 672, + "target": 704, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -32.50822067260742 + }, + { + "id": "e1007", + "source": 580, + "target": 702, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -484.8314208984375 + }, + { + "id": "e1008", + "source": 308, + "target": 700, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 48.60541534423828 + }, + { + "id": "e1009", + "source": 682, + "target": 706, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -403.0789794921875 + }, + { + "id": "e1010", + "source": 619, + "target": 707, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -36.92075729370117 + }, + { + "id": "e1011", + "source": 707, + "target": 625, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 80.88141632080078 + }, + { + "id": "e1012", + "source": 625, + "target": 708, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 28.348472595214844 + }, + { + "id": "e1013", + "source": 708, + "target": 623, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 46.23599624633789 + }, + { + "id": "e1014", + "source": 623, + "target": 709, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -43.22893142700195 + }, + { + "id": "e1015", + "source": 709, + "target": 621, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 76.12380981445312 + }, + { + "id": "e1016", + "source": 608, + "target": 707, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 107.1761703491211 + }, + { + "id": "e1017", + "source": 580, + "target": 708, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 3.2157649993896484 + }, + { + "id": "e1018", + "source": 218, + "target": 709, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 106.27325439453125 + }, + { + "id": "e1019", + "source": 618, + "target": 620, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 16.08055305480957 + }, + { + "id": "e1020", + "source": 712, + "target": 713, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -324.9808654785156 + }, + { + "id": "e1021", + "source": 713, + "target": 714, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 26.940542221069336 + }, + { + "id": "e1022", + "source": 714, + "target": 715, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.72077560424805 + }, + { + "id": "e1023", + "source": 715, + "target": 716, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -318.1197814941406 + }, + { + "id": "e1024", + "source": 716, + "target": 717, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -323.95233154296875 + }, + { + "id": "e1025", + "source": 717, + "target": 718, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 22.268245697021484 + }, + { + "id": "e1026", + "source": 718, + "target": 719, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.108070373535156 + }, + { + "id": "e1027", + "source": 719, + "target": 712, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.8837890625 + }, + { + "id": "e1028", + "source": 711, + "target": 713, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -155.4698944091797 + }, + { + "id": "e1029", + "source": 710, + "target": 715, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -365.085205078125 + }, + { + "id": "e1030", + "source": 672, + "target": 717, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -185.60667419433594 + }, + { + "id": "e1031", + "source": 608, + "target": 719, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -408.65863037109375 + }, + { + "id": "e1032", + "source": 721, + "target": 722, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -9.790022850036621 + }, + { + "id": "e1033", + "source": 722, + "target": 723, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 59.45014190673828 + }, + { + "id": "e1034", + "source": 723, + "target": 724, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 28.912395477294922 + }, + { + "id": "e1035", + "source": 724, + "target": 725, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 66.72978210449219 + }, + { + "id": "e1036", + "source": 725, + "target": 726, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -10.49438762664795 + }, + { + "id": "e1037", + "source": 726, + "target": 727, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 60.50730514526367 + }, + { + "id": "e1038", + "source": 727, + "target": 728, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.69147300720215 + }, + { + "id": "e1039", + "source": 728, + "target": 721, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 63.60791015625 + }, + { + "id": "e1040", + "source": 360, + "target": 726, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 64.98506927490234 + }, + { + "id": "e1041", + "source": 682, + "target": 728, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 28.795820236206055 + }, + { + "id": "e1042", + "source": 710, + "target": 722, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 63.39677810668945 + }, + { + "id": "e1043", + "source": 720, + "target": 724, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 29.653945922851562 + }, + { + "id": "e1044", + "source": 361, + "target": 369, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -201.21441650390625 + }, + { + "id": "e1045", + "source": 218, + "target": 367, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.86505126953125 + }, + { + "id": "e1046", + "source": 308, + "target": 365, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -175.93312072753906 + }, + { + "id": "e1047", + "source": 360, + "target": 363, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -349.7699279785156 + }, + { + "id": "e1048", + "source": 682, + "target": 700, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.4627685546875 + }, + { + "id": "e1049", + "source": 308, + "target": 702, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -111.84799194335938 + }, + { + "id": "e1050", + "source": 580, + "target": 704, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -394.6661071777344 + }, + { + "id": "e1051", + "source": 672, + "target": 706, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -11.770944595336914 + }, + { + "id": "e1052", + "source": 729, + "target": 730, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 108.65411376953125 + }, + { + "id": "e1053", + "source": 730, + "target": 731, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -337.0229187011719 + }, + { + "id": "e1054", + "source": 731, + "target": 732, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.8171081542969 + }, + { + "id": "e1055", + "source": 732, + "target": 733, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 83.6025390625 + }, + { + "id": "e1056", + "source": 733, + "target": 734, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 70.5746841430664 + }, + { + "id": "e1057", + "source": 734, + "target": 735, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.6612548828125 + }, + { + "id": "e1058", + "source": 735, + "target": 736, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -325.6085205078125 + }, + { + "id": "e1059", + "source": 736, + "target": 729, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 116.83563995361328 + }, + { + "id": "e1060", + "source": 711, + "target": 734, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -106.29259490966797 + }, + { + "id": "e1061", + "source": 618, + "target": 732, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.9602355957031 + }, + { + "id": "e1062", + "source": 361, + "target": 730, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -8.91394329071045 + }, + { + "id": "e1063", + "source": 720, + "target": 736, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -329.9280700683594 + }, + { + "id": "e1064", + "source": 654, + "target": 737, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 20.76358413696289 + }, + { + "id": "e1065", + "source": 737, + "target": 652, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 47.42334747314453 + }, + { + "id": "e1066", + "source": 652, + "target": 738, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -43.06765365600586 + }, + { + "id": "e1067", + "source": 738, + "target": 650, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 39.40184020996094 + }, + { + "id": "e1068", + "source": 637, + "target": 655, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 121.76518249511719 + }, + { + "id": "e1069", + "source": 618, + "target": 737, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 10.94950008392334 + }, + { + "id": "e1070", + "source": 261, + "target": 738, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 65.41686248779297 + }, + { + "id": "e1071", + "source": 647, + "target": 649, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -23.717126846313477 + }, + { + "id": "e1072", + "source": 741, + "target": 742, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.8069152832031 + }, + { + "id": "e1073", + "source": 742, + "target": 743, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 71.97689819335938 + }, + { + "id": "e1074", + "source": 743, + "target": 744, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 47.23636245727539 + }, + { + "id": "e1075", + "source": 744, + "target": 745, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -342.0753479003906 + }, + { + "id": "e1076", + "source": 745, + "target": 746, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -339.6709289550781 + }, + { + "id": "e1077", + "source": 746, + "target": 747, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 46.75324249267578 + }, + { + "id": "e1078", + "source": 747, + "target": 748, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.96529769897461 + }, + { + "id": "e1079", + "source": 748, + "target": 741, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -314.3450622558594 + }, + { + "id": "e1080", + "source": 740, + "target": 742, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -9.66675853729248 + }, + { + "id": "e1081", + "source": 739, + "target": 744, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -477.8509216308594 + }, + { + "id": "e1082", + "source": 711, + "target": 746, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -104.53768157958984 + }, + { + "id": "e1083", + "source": 637, + "target": 748, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -443.5974426269531 + }, + { + "id": "e1084", + "source": 750, + "target": 751, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 2.9238743782043457 + }, + { + "id": "e1085", + "source": 751, + "target": 752, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 66.754638671875 + }, + { + "id": "e1086", + "source": 752, + "target": 753, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 47.19404983520508 + }, + { + "id": "e1087", + "source": 753, + "target": 754, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 4.565484046936035 + }, + { + "id": "e1088", + "source": 754, + "target": 755, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -33.769569396972656 + }, + { + "id": "e1089", + "source": 755, + "target": 756, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 101.4224853515625 + }, + { + "id": "e1090", + "source": 756, + "target": 757, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 66.67538452148438 + }, + { + "id": "e1091", + "source": 757, + "target": 750, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 46.309600830078125 + }, + { + "id": "e1092", + "source": 403, + "target": 755, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 129.00405883789062 + }, + { + "id": "e1093", + "source": 720, + "target": 757, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -28.044164657592773 + }, + { + "id": "e1094", + "source": 739, + "target": 751, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 61.01142120361328 + }, + { + "id": "e1095", + "source": 749, + "target": 753, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -49.435245513916016 + }, + { + "id": "e1096", + "source": 404, + "target": 412, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -181.18927001953125 + }, + { + "id": "e1097", + "source": 261, + "target": 410, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -394.7684020996094 + }, + { + "id": "e1098", + "source": 361, + "target": 408, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.31536865234375 + }, + { + "id": "e1099", + "source": 403, + "target": 406, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -294.68988037109375 + }, + { + "id": "e1100", + "source": 720, + "target": 730, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -404.6457214355469 + }, + { + "id": "e1101", + "source": 361, + "target": 732, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -19.67499542236328 + }, + { + "id": "e1102", + "source": 618, + "target": 734, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -480.4571838378906 + }, + { + "id": "e1103", + "source": 711, + "target": 736, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 50.63441848754883 + }, + { + "id": "e1104", + "source": 758, + "target": 759, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -44.49257278442383 + }, + { + "id": "e1105", + "source": 759, + "target": 760, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -163.0102996826172 + }, + { + "id": "e1106", + "source": 760, + "target": 761, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -126.23248291015625 + }, + { + "id": "e1107", + "source": 761, + "target": 762, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 89.34029388427734 + }, + { + "id": "e1108", + "source": 762, + "target": 763, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -31.874757766723633 + }, + { + "id": "e1109", + "source": 763, + "target": 764, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -186.6184844970703 + }, + { + "id": "e1110", + "source": 764, + "target": 765, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -198.5343780517578 + }, + { + "id": "e1111", + "source": 765, + "target": 758, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.11245727539062 + }, + { + "id": "e1112", + "source": 740, + "target": 763, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 40.95456314086914 + }, + { + "id": "e1113", + "source": 647, + "target": 761, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -251.1324920654297 + }, + { + "id": "e1114", + "source": 404, + "target": 759, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 45.93418884277344 + }, + { + "id": "e1115", + "source": 749, + "target": 765, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.3053283691406 + }, + { + "id": "e1116", + "source": 769, + "target": 770, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1117", + "source": 770, + "target": 771, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1118", + "source": 771, + "target": 772, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1119", + "source": 772, + "target": 773, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1120", + "source": 773, + "target": 774, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1121", + "source": 774, + "target": 775, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1122", + "source": 775, + "target": 776, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1123", + "source": 776, + "target": 769, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1124", + "source": 766, + "target": 770, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1125", + "source": 767, + "target": 772, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1126", + "source": 440, + "target": 774, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1127", + "source": 768, + "target": 776, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1128", + "source": 780, + "target": 781, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -574.6302490234375 + }, + { + "id": "e1129", + "source": 781, + "target": 782, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -451.9010925292969 + }, + { + "id": "e1130", + "source": 782, + "target": 783, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 492.1423034667969 + }, + { + "id": "e1131", + "source": 783, + "target": 784, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -547.9049682617188 + }, + { + "id": "e1132", + "source": 784, + "target": 785, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -481.1868896484375 + }, + { + "id": "e1133", + "source": 785, + "target": 786, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -406.22540283203125 + }, + { + "id": "e1134", + "source": 786, + "target": 787, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 505.8546142578125 + }, + { + "id": "e1135", + "source": 787, + "target": 780, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -596.3832397460938 + }, + { + "id": "e1136", + "source": 779, + "target": 781, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 305.5643005371094 + }, + { + "id": "e1137", + "source": 777, + "target": 783, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -868.2677612304688 + }, + { + "id": "e1138", + "source": 778, + "target": 785, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 234.2503204345703 + }, + { + "id": "e1139", + "source": 766, + "target": 787, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -923.5907592773438 + }, + { + "id": "e1140", + "source": 790, + "target": 791, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 6.902329444885254 + }, + { + "id": "e1141", + "source": 791, + "target": 792, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -23.042980194091797 + }, + { + "id": "e1142", + "source": 792, + "target": 793, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -62.04189682006836 + }, + { + "id": "e1143", + "source": 793, + "target": 794, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 72.02832794189453 + }, + { + "id": "e1144", + "source": 794, + "target": 795, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 23.583280563354492 + }, + { + "id": "e1145", + "source": 795, + "target": 796, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.764949798583984 + }, + { + "id": "e1146", + "source": 796, + "target": 797, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -29.025333404541016 + }, + { + "id": "e1147", + "source": 797, + "target": 790, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 16.517419815063477 + }, + { + "id": "e1148", + "source": 451, + "target": 795, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -36.735557556152344 + }, + { + "id": "e1149", + "source": 788, + "target": 797, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 50.803340911865234 + }, + { + "id": "e1150", + "source": 777, + "target": 791, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -28.664857864379883 + }, + { + "id": "e1151", + "source": 789, + "target": 793, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 139.60238647460938 + }, + { + "id": "e1152", + "source": 453, + "target": 461, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -367.8162841796875 + }, + { + "id": "e1153", + "source": 440, + "target": 459, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1161.4188232421875 + }, + { + "id": "e1154", + "source": 452, + "target": 457, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.01394653320312 + }, + { + "id": "e1155", + "source": 451, + "target": 455, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1429.903564453125 + }, + { + "id": "e1156", + "source": 798, + "target": 799, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 144.8607940673828 + }, + { + "id": "e1157", + "source": 799, + "target": 800, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -647.3428344726562 + }, + { + "id": "e1158", + "source": 800, + "target": 801, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -664.2402954101562 + }, + { + "id": "e1159", + "source": 801, + "target": 802, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -207.26058959960938 + }, + { + "id": "e1160", + "source": 802, + "target": 803, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 166.47378540039062 + }, + { + "id": "e1161", + "source": 803, + "target": 804, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -609.9439697265625 + }, + { + "id": "e1162", + "source": 804, + "target": 805, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -588.5996704101562 + }, + { + "id": "e1163", + "source": 805, + "target": 798, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.7540740966797 + }, + { + "id": "e1164", + "source": 788, + "target": 803, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -944.3058471679688 + }, + { + "id": "e1165", + "source": 452, + "target": 805, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 58.93623352050781 + }, + { + "id": "e1166", + "source": 767, + "target": 799, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -934.2350463867188 + }, + { + "id": "e1167", + "source": 778, + "target": 801, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.31576538085938 + }, + { + "id": "e1168", + "source": 806, + "target": 807, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 127.30692291259766 + }, + { + "id": "e1169", + "source": 807, + "target": 808, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1039.238525390625 + }, + { + "id": "e1170", + "source": 808, + "target": 809, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1059.36572265625 + }, + { + "id": "e1171", + "source": 809, + "target": 810, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 87.44322967529297 + }, + { + "id": "e1172", + "source": 810, + "target": 811, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 166.40867614746094 + }, + { + "id": "e1173", + "source": 811, + "target": 812, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -995.8287963867188 + }, + { + "id": "e1174", + "source": 812, + "target": 813, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1021.7332763671875 + }, + { + "id": "e1175", + "source": 813, + "target": 806, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 151.4491424560547 + }, + { + "id": "e1176", + "source": 779, + "target": 811, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -79.76828002929688 + }, + { + "id": "e1177", + "source": 768, + "target": 809, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1445.926025390625 + }, + { + "id": "e1178", + "source": 453, + "target": 807, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.6004333496094 + }, + { + "id": "e1179", + "source": 789, + "target": 813, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1277.7659912109375 + }, + { + "id": "e1180", + "source": 816, + "target": 817, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1181", + "source": 817, + "target": 818, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1182", + "source": 818, + "target": 819, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1183", + "source": 819, + "target": 820, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1184", + "source": 820, + "target": 821, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1185", + "source": 821, + "target": 822, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1186", + "source": 822, + "target": 823, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1187", + "source": 823, + "target": 816, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1188", + "source": 814, + "target": 817, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1189", + "source": 768, + "target": 819, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1190", + "source": 488, + "target": 821, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1191", + "source": 815, + "target": 823, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1192", + "source": 826, + "target": 827, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -521.6185913085938 + }, + { + "id": "e1193", + "source": 827, + "target": 828, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -481.8138427734375 + }, + { + "id": "e1194", + "source": 828, + "target": 829, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 482.8973083496094 + }, + { + "id": "e1195", + "source": 829, + "target": 830, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -492.8396301269531 + }, + { + "id": "e1196", + "source": 830, + "target": 831, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -440.8075866699219 + }, + { + "id": "e1197", + "source": 831, + "target": 832, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -428.3905029296875 + }, + { + "id": "e1198", + "source": 832, + "target": 833, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 479.1604919433594 + }, + { + "id": "e1199", + "source": 833, + "target": 826, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -538.484130859375 + }, + { + "id": "e1200", + "source": 825, + "target": 827, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 220.00201416015625 + }, + { + "id": "e1201", + "source": 824, + "target": 829, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -802.4065551757812 + }, + { + "id": "e1202", + "source": 779, + "target": 831, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 169.22853088378906 + }, + { + "id": "e1203", + "source": 814, + "target": 833, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -844.1033935546875 + }, + { + "id": "e1204", + "source": 835, + "target": 836, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 40.85280990600586 + }, + { + "id": "e1205", + "source": 836, + "target": 837, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.88749694824219 + }, + { + "id": "e1206", + "source": 837, + "target": 838, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 29.750612258911133 + }, + { + "id": "e1207", + "source": 838, + "target": 839, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 19.98900032043457 + }, + { + "id": "e1208", + "source": 839, + "target": 840, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 11.176944732666016 + }, + { + "id": "e1209", + "source": 840, + "target": 841, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 66.03327941894531 + }, + { + "id": "e1210", + "source": 841, + "target": 842, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 3.2550711631774902 + }, + { + "id": "e1211", + "source": 842, + "target": 835, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 13.65652847290039 + }, + { + "id": "e1212", + "source": 498, + "target": 840, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 57.2254638671875 + }, + { + "id": "e1213", + "source": 789, + "target": 842, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 18.373517990112305 + }, + { + "id": "e1214", + "source": 824, + "target": 836, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 8.749662399291992 + }, + { + "id": "e1215", + "source": 834, + "target": 838, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 108.16893005371094 + }, + { + "id": "e1216", + "source": 499, + "target": 507, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -314.99884033203125 + }, + { + "id": "e1217", + "source": 488, + "target": 505, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1337.6630859375 + }, + { + "id": "e1218", + "source": 453, + "target": 503, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -323.7039489746094 + }, + { + "id": "e1219", + "source": 498, + "target": 501, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1386.101806640625 + }, + { + "id": "e1220", + "source": 789, + "target": 807, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1336.168701171875 + }, + { + "id": "e1221", + "source": 453, + "target": 809, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -495.9552917480469 + }, + { + "id": "e1222", + "source": 768, + "target": 811, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1172.6346435546875 + }, + { + "id": "e1223", + "source": 779, + "target": 813, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -180.7095489501953 + }, + { + "id": "e1224", + "source": 843, + "target": 844, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 107.4990005493164 + }, + { + "id": "e1225", + "source": 844, + "target": 845, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1038.964599609375 + }, + { + "id": "e1226", + "source": 845, + "target": 846, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1035.255615234375 + }, + { + "id": "e1227", + "source": 846, + "target": 847, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 115.16912078857422 + }, + { + "id": "e1228", + "source": 847, + "target": 848, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 164.7960662841797 + }, + { + "id": "e1229", + "source": 848, + "target": 849, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -967.403564453125 + }, + { + "id": "e1230", + "source": 849, + "target": 850, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -966.0250244140625 + }, + { + "id": "e1231", + "source": 850, + "target": 843, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 142.5643310546875 + }, + { + "id": "e1232", + "source": 825, + "target": 848, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -87.91667938232422 + }, + { + "id": "e1233", + "source": 815, + "target": 846, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1367.291259765625 + }, + { + "id": "e1234", + "source": 499, + "target": 844, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -409.6125793457031 + }, + { + "id": "e1235", + "source": 834, + "target": 850, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1176.145263671875 + }, + { + "id": "e1236", + "source": 853, + "target": 854, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1237", + "source": 854, + "target": 855, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1238", + "source": 855, + "target": 856, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1239", + "source": 856, + "target": 857, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1240", + "source": 857, + "target": 858, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1241", + "source": 858, + "target": 859, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1242", + "source": 859, + "target": 860, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1243", + "source": 860, + "target": 853, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1244", + "source": 851, + "target": 854, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1245", + "source": 815, + "target": 856, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1246", + "source": 525, + "target": 858, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1247", + "source": 852, + "target": 860, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1248", + "source": 863, + "target": 864, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -506.8996276855469 + }, + { + "id": "e1249", + "source": 864, + "target": 865, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -465.343994140625 + }, + { + "id": "e1250", + "source": 865, + "target": 866, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 493.62249755859375 + }, + { + "id": "e1251", + "source": 866, + "target": 867, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -515.196533203125 + }, + { + "id": "e1252", + "source": 867, + "target": 868, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -461.30267333984375 + }, + { + "id": "e1253", + "source": 868, + "target": 869, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.6900329589844 + }, + { + "id": "e1254", + "source": 869, + "target": 870, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 463.7381896972656 + }, + { + "id": "e1255", + "source": 870, + "target": 863, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -525.8374633789062 + }, + { + "id": "e1256", + "source": 862, + "target": 864, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 218.70538330078125 + }, + { + "id": "e1257", + "source": 861, + "target": 866, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -834.2200927734375 + }, + { + "id": "e1258", + "source": 825, + "target": 868, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 212.34466552734375 + }, + { + "id": "e1259", + "source": 851, + "target": 870, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -823.1117553710938 + }, + { + "id": "e1260", + "source": 872, + "target": 873, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 26.46579360961914 + }, + { + "id": "e1261", + "source": 873, + "target": 874, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 19.42591667175293 + }, + { + "id": "e1262", + "source": 874, + "target": 875, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 10.211326599121094 + }, + { + "id": "e1263", + "source": 875, + "target": 876, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -19.193689346313477 + }, + { + "id": "e1264", + "source": 876, + "target": 877, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 52.51225662231445 + }, + { + "id": "e1265", + "source": 877, + "target": 878, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.333621978759766 + }, + { + "id": "e1266", + "source": 878, + "target": 879, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 17.2021427154541 + }, + { + "id": "e1267", + "source": 879, + "target": 872, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -16.740808486938477 + }, + { + "id": "e1268", + "source": 535, + "target": 877, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 117.69075012207031 + }, + { + "id": "e1269", + "source": 834, + "target": 879, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -35.9047966003418 + }, + { + "id": "e1270", + "source": 861, + "target": 873, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 6.466575622558594 + }, + { + "id": "e1271", + "source": 871, + "target": 875, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -3.7654590606689453 + }, + { + "id": "e1272", + "source": 536, + "target": 544, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -79.56261444091797 + }, + { + "id": "e1273", + "source": 525, + "target": 542, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1459.935791015625 + }, + { + "id": "e1274", + "source": 499, + "target": 540, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -303.49627685546875 + }, + { + "id": "e1275", + "source": 535, + "target": 538, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1308.269287109375 + }, + { + "id": "e1276", + "source": 834, + "target": 844, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1393.08447265625 + }, + { + "id": "e1277", + "source": 499, + "target": 846, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -409.61859130859375 + }, + { + "id": "e1278", + "source": 815, + "target": 848, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1152.9754638671875 + }, + { + "id": "e1279", + "source": 825, + "target": 850, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -155.47540283203125 + }, + { + "id": "e1280", + "source": 880, + "target": 881, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -215.5977020263672 + }, + { + "id": "e1281", + "source": 881, + "target": 882, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -717.4212036132812 + }, + { + "id": "e1282", + "source": 882, + "target": 883, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -719.293212890625 + }, + { + "id": "e1283", + "source": 883, + "target": 884, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 182.94044494628906 + }, + { + "id": "e1284", + "source": 884, + "target": 885, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -165.1780548095703 + }, + { + "id": "e1285", + "source": 885, + "target": 886, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -607.6126098632812 + }, + { + "id": "e1286", + "source": 886, + "target": 887, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -614.96923828125 + }, + { + "id": "e1287", + "source": 887, + "target": 880, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 158.8480682373047 + }, + { + "id": "e1288", + "source": 862, + "target": 885, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 116.06452941894531 + }, + { + "id": "e1289", + "source": 852, + "target": 883, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1026.793701171875 + }, + { + "id": "e1290", + "source": 536, + "target": 881, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 134.35043334960938 + }, + { + "id": "e1291", + "source": 871, + "target": 887, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -940.738525390625 + }, + { + "id": "e1292", + "source": 888, + "target": 889, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 2.1096580028533936 + }, + { + "id": "e1293", + "source": 889, + "target": 796, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 28.50617790222168 + }, + { + "id": "e1294", + "source": 796, + "target": 890, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 23.86722755432129 + }, + { + "id": "e1295", + "source": 890, + "target": 891, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -28.91972541809082 + }, + { + "id": "e1296", + "source": 891, + "target": 892, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -12.047060012817383 + }, + { + "id": "e1297", + "source": 892, + "target": 792, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 93.1879653930664 + }, + { + "id": "e1298", + "source": 792, + "target": 893, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 49.96150207519531 + }, + { + "id": "e1299", + "source": 893, + "target": 888, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -8.03536605834961 + }, + { + "id": "e1300", + "source": 777, + "target": 889, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 27.933143615722656 + }, + { + "id": "e1301", + "source": 788, + "target": 890, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -54.328392028808594 + }, + { + "id": "e1302", + "source": 451, + "target": 892, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 107.57416534423828 + }, + { + "id": "e1303", + "source": 789, + "target": 893, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -61.18993377685547 + }, + { + "id": "e1304", + "source": 897, + "target": 898, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -234.7389373779297 + }, + { + "id": "e1305", + "source": 898, + "target": 899, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.9488830566406 + }, + { + "id": "e1306", + "source": 899, + "target": 900, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 331.9979553222656 + }, + { + "id": "e1307", + "source": 900, + "target": 901, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -378.00128173828125 + }, + { + "id": "e1308", + "source": 901, + "target": 902, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -332.07763671875 + }, + { + "id": "e1309", + "source": 902, + "target": 903, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -272.1475830078125 + }, + { + "id": "e1310", + "source": 903, + "target": 904, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 340.72198486328125 + }, + { + "id": "e1311", + "source": 904, + "target": 897, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -260.8210144042969 + }, + { + "id": "e1312", + "source": 896, + "target": 898, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.19361114501953 + }, + { + "id": "e1313", + "source": 894, + "target": 900, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -595.2507934570312 + }, + { + "id": "e1314", + "source": 895, + "target": 902, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 167.81082153320312 + }, + { + "id": "e1315", + "source": 777, + "target": 904, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -486.8863220214844 + }, + { + "id": "e1316", + "source": 907, + "target": 908, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 13.045841217041016 + }, + { + "id": "e1317", + "source": 908, + "target": 909, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -26.94277572631836 + }, + { + "id": "e1318", + "source": 909, + "target": 910, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -67.24591827392578 + }, + { + "id": "e1319", + "source": 910, + "target": 911, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.50215148925781 + }, + { + "id": "e1320", + "source": 911, + "target": 912, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.22170639038086 + }, + { + "id": "e1321", + "source": 912, + "target": 913, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 1.9949662685394287 + }, + { + "id": "e1322", + "source": 913, + "target": 914, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -28.562776565551758 + }, + { + "id": "e1323", + "source": 914, + "target": 907, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -7.080305576324463 + }, + { + "id": "e1324", + "source": 568, + "target": 912, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -28.09424591064453 + }, + { + "id": "e1325", + "source": 905, + "target": 914, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 33.35392379760742 + }, + { + "id": "e1326", + "source": 894, + "target": 908, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -36.370304107666016 + }, + { + "id": "e1327", + "source": 906, + "target": 910, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 127.23869323730469 + }, + { + "id": "e1328", + "source": 570, + "target": 578, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -169.9901885986328 + }, + { + "id": "e1329", + "source": 451, + "target": 576, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -915.38671875 + }, + { + "id": "e1330", + "source": 569, + "target": 574, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -20.564355850219727 + }, + { + "id": "e1331", + "source": 568, + "target": 572, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -979.8231811523438 + }, + { + "id": "e1332", + "source": 915, + "target": 916, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.60205078125 + }, + { + "id": "e1333", + "source": 916, + "target": 917, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -425.15130615234375 + }, + { + "id": "e1334", + "source": 917, + "target": 918, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -389.8005676269531 + }, + { + "id": "e1335", + "source": 918, + "target": 919, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -65.3849105834961 + }, + { + "id": "e1336", + "source": 919, + "target": 920, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 150.72406005859375 + }, + { + "id": "e1337", + "source": 920, + "target": 921, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -464.5380554199219 + }, + { + "id": "e1338", + "source": 921, + "target": 922, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -440.7620849609375 + }, + { + "id": "e1339", + "source": 922, + "target": 915, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -101.87803649902344 + }, + { + "id": "e1340", + "source": 905, + "target": 920, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -682.5804443359375 + }, + { + "id": "e1341", + "source": 569, + "target": 922, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 93.35608673095703 + }, + { + "id": "e1342", + "source": 788, + "target": 916, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -642.79052734375 + }, + { + "id": "e1343", + "source": 895, + "target": 918, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 89.05506134033203 + }, + { + "id": "e1344", + "source": 923, + "target": 924, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 114.2127685546875 + }, + { + "id": "e1345", + "source": 924, + "target": 925, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -726.4052734375 + }, + { + "id": "e1346", + "source": 925, + "target": 926, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -720.7330322265625 + }, + { + "id": "e1347", + "source": 926, + "target": 927, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 95.40742492675781 + }, + { + "id": "e1348", + "source": 927, + "target": 928, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 98.97991180419922 + }, + { + "id": "e1349", + "source": 928, + "target": 929, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -691.1205444335938 + }, + { + "id": "e1350", + "source": 929, + "target": 930, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -678.0692138671875 + }, + { + "id": "e1351", + "source": 930, + "target": 923, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 151.0904083251953 + }, + { + "id": "e1352", + "source": 896, + "target": 928, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -172.40750122070312 + }, + { + "id": "e1353", + "source": 789, + "target": 926, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -939.8857421875 + }, + { + "id": "e1354", + "source": 570, + "target": 924, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -235.20675659179688 + }, + { + "id": "e1355", + "source": 906, + "target": 930, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -763.0610961914062 + }, + { + "id": "e1356", + "source": 835, + "target": 931, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -5.279984474182129 + }, + { + "id": "e1357", + "source": 931, + "target": 841, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 21.236818313598633 + }, + { + "id": "e1358", + "source": 841, + "target": 932, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -11.41021728515625 + }, + { + "id": "e1359", + "source": 932, + "target": 839, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 57.810665130615234 + }, + { + "id": "e1360", + "source": 824, + "target": 931, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 24.706100463867188 + }, + { + "id": "e1361", + "source": 789, + "target": 932, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 61.60435485839844 + }, + { + "id": "e1362", + "source": 498, + "target": 838, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 99.87590026855469 + }, + { + "id": "e1363", + "source": 834, + "target": 836, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 5.232339382171631 + }, + { + "id": "e1364", + "source": 935, + "target": 936, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -205.86273193359375 + }, + { + "id": "e1365", + "source": 936, + "target": 937, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -310.1991271972656 + }, + { + "id": "e1366", + "source": 937, + "target": 938, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 324.44891357421875 + }, + { + "id": "e1367", + "source": 938, + "target": 939, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -359.66424560546875 + }, + { + "id": "e1368", + "source": 939, + "target": 940, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -318.38177490234375 + }, + { + "id": "e1369", + "source": 940, + "target": 941, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -273.33819580078125 + }, + { + "id": "e1370", + "source": 941, + "target": 942, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 314.1282043457031 + }, + { + "id": "e1371", + "source": 942, + "target": 935, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -227.2716827392578 + }, + { + "id": "e1372", + "source": 934, + "target": 936, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -4.186066150665283 + }, + { + "id": "e1373", + "source": 933, + "target": 938, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -569.2413940429688 + }, + { + "id": "e1374", + "source": 896, + "target": 940, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 149.1224365234375 + }, + { + "id": "e1375", + "source": 824, + "target": 942, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -433.3476257324219 + }, + { + "id": "e1376", + "source": 944, + "target": 945, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 49.524017333984375 + }, + { + "id": "e1377", + "source": 945, + "target": 946, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 28.956357955932617 + }, + { + "id": "e1378", + "source": 946, + "target": 947, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 5.468489646911621 + }, + { + "id": "e1379", + "source": 947, + "target": 948, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 4.500604629516602 + }, + { + "id": "e1380", + "source": 948, + "target": 949, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.88850402832031 + }, + { + "id": "e1381", + "source": 949, + "target": 950, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 53.8199348449707 + }, + { + "id": "e1382", + "source": 950, + "target": 951, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -27.70573616027832 + }, + { + "id": "e1383", + "source": 951, + "target": 944, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 29.94845962524414 + }, + { + "id": "e1384", + "source": 608, + "target": 949, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 29.082571029663086 + }, + { + "id": "e1385", + "source": 906, + "target": 951, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 73.13282775878906 + }, + { + "id": "e1386", + "source": 933, + "target": 945, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -62.29170227050781 + }, + { + "id": "e1387", + "source": 943, + "target": 947, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 145.23028564453125 + }, + { + "id": "e1388", + "source": 609, + "target": 617, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -182.8934783935547 + }, + { + "id": "e1389", + "source": 498, + "target": 615, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -968.6295166015625 + }, + { + "id": "e1390", + "source": 570, + "target": 613, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -134.3938446044922 + }, + { + "id": "e1391", + "source": 608, + "target": 611, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -929.7752685546875 + }, + { + "id": "e1392", + "source": 906, + "target": 924, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -943.6211547851562 + }, + { + "id": "e1393", + "source": 570, + "target": 926, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -224.5667266845703 + }, + { + "id": "e1394", + "source": 789, + "target": 928, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -891.5692138671875 + }, + { + "id": "e1395", + "source": 896, + "target": 930, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 1.2824984788894653 + }, + { + "id": "e1396", + "source": 952, + "target": 953, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 98.23347473144531 + }, + { + "id": "e1397", + "source": 953, + "target": 954, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -725.3160400390625 + }, + { + "id": "e1398", + "source": 954, + "target": 955, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -702.929443359375 + }, + { + "id": "e1399", + "source": 955, + "target": 956, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 100.60515594482422 + }, + { + "id": "e1400", + "source": 956, + "target": 957, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 97.37583923339844 + }, + { + "id": "e1401", + "source": 957, + "target": 958, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -700.5425415039062 + }, + { + "id": "e1402", + "source": 958, + "target": 959, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -671.5658569335938 + }, + { + "id": "e1403", + "source": 959, + "target": 952, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 149.1842803955078 + }, + { + "id": "e1404", + "source": 934, + "target": 957, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -213.35989379882812 + }, + { + "id": "e1405", + "source": 834, + "target": 955, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -857.6858520507812 + }, + { + "id": "e1406", + "source": 609, + "target": 953, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -302.89569091796875 + }, + { + "id": "e1407", + "source": 943, + "target": 959, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -714.1204833984375 + }, + { + "id": "e1408", + "source": 861, + "target": 879, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -8.529414176940918 + }, + { + "id": "e1409", + "source": 834, + "target": 877, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 125.63401794433594 + }, + { + "id": "e1410", + "source": 535, + "target": 875, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 14.36156177520752 + }, + { + "id": "e1411", + "source": 871, + "target": 873, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 5.0615997314453125 + }, + { + "id": "e1412", + "source": 962, + "target": 963, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -277.6959228515625 + }, + { + "id": "e1413", + "source": 963, + "target": 964, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -266.2190856933594 + }, + { + "id": "e1414", + "source": 964, + "target": 965, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 322.4071350097656 + }, + { + "id": "e1415", + "source": 965, + "target": 966, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -420.3042297363281 + }, + { + "id": "e1416", + "source": 966, + "target": 967, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.7561950683594 + }, + { + "id": "e1417", + "source": 967, + "target": 968, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -251.48672485351562 + }, + { + "id": "e1418", + "source": 968, + "target": 969, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 308.2652282714844 + }, + { + "id": "e1419", + "source": 969, + "target": 962, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -315.3257141113281 + }, + { + "id": "e1420", + "source": 961, + "target": 963, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 111.34696197509766 + }, + { + "id": "e1421", + "source": 960, + "target": 965, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -632.6265258789062 + }, + { + "id": "e1422", + "source": 934, + "target": 967, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 223.3099365234375 + }, + { + "id": "e1423", + "source": 861, + "target": 969, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -519.3328857421875 + }, + { + "id": "e1424", + "source": 971, + "target": 972, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.652889251708984 + }, + { + "id": "e1425", + "source": 972, + "target": 973, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 16.269765853881836 + }, + { + "id": "e1426", + "source": 973, + "target": 974, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -10.438786506652832 + }, + { + "id": "e1427", + "source": 974, + "target": 975, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -30.3612003326416 + }, + { + "id": "e1428", + "source": 975, + "target": 976, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 57.449161529541016 + }, + { + "id": "e1429", + "source": 976, + "target": 977, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 60.74336242675781 + }, + { + "id": "e1430", + "source": 977, + "target": 978, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 14.189180374145508 + }, + { + "id": "e1431", + "source": 978, + "target": 971, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -21.61602783203125 + }, + { + "id": "e1432", + "source": 637, + "target": 976, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 74.26739501953125 + }, + { + "id": "e1433", + "source": 943, + "target": 978, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 45.10256576538086 + }, + { + "id": "e1434", + "source": 960, + "target": 972, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -58.23773956298828 + }, + { + "id": "e1435", + "source": 970, + "target": 974, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 47.83390808105469 + }, + { + "id": "e1436", + "source": 638, + "target": 646, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -136.5994110107422 + }, + { + "id": "e1437", + "source": 535, + "target": 644, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -963.1837158203125 + }, + { + "id": "e1438", + "source": 609, + "target": 642, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -205.43646240234375 + }, + { + "id": "e1439", + "source": 637, + "target": 640, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -832.3329467773438 + }, + { + "id": "e1440", + "source": 943, + "target": 953, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1000.60986328125 + }, + { + "id": "e1441", + "source": 609, + "target": 955, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -166.00302124023438 + }, + { + "id": "e1442", + "source": 834, + "target": 957, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -950.802490234375 + }, + { + "id": "e1443", + "source": 934, + "target": 959, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 39.417911529541016 + }, + { + "id": "e1444", + "source": 979, + "target": 980, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -154.39796447753906 + }, + { + "id": "e1445", + "source": 980, + "target": 981, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.93048095703125 + }, + { + "id": "e1446", + "source": 981, + "target": 982, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -366.0461730957031 + }, + { + "id": "e1447", + "source": 982, + "target": 983, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 103.66897583007812 + }, + { + "id": "e1448", + "source": 983, + "target": 984, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -148.94190979003906 + }, + { + "id": "e1449", + "source": 984, + "target": 985, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -411.5848083496094 + }, + { + "id": "e1450", + "source": 985, + "target": 986, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.83026123046875 + }, + { + "id": "e1451", + "source": 986, + "target": 979, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 99.33586883544922 + }, + { + "id": "e1452", + "source": 961, + "target": 984, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 59.090965270996094 + }, + { + "id": "e1453", + "source": 871, + "target": 982, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -585.3977661132812 + }, + { + "id": "e1454", + "source": 638, + "target": 980, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 21.173351287841797 + }, + { + "id": "e1455", + "source": 970, + "target": 986, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -604.2525024414062 + }, + { + "id": "e1456", + "source": 987, + "target": 988, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -21.410207748413086 + }, + { + "id": "e1457", + "source": 988, + "target": 913, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 24.09331703186035 + }, + { + "id": "e1458", + "source": 913, + "target": 989, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 25.916994094848633 + }, + { + "id": "e1459", + "source": 989, + "target": 990, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -0.10059180110692978 + }, + { + "id": "e1460", + "source": 990, + "target": 991, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -18.725696563720703 + }, + { + "id": "e1461", + "source": 991, + "target": 909, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 80.72935485839844 + }, + { + "id": "e1462", + "source": 909, + "target": 992, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 60.13447189331055 + }, + { + "id": "e1463", + "source": 992, + "target": 987, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -0.548800528049469 + }, + { + "id": "e1464", + "source": 894, + "target": 988, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 39.88938903808594 + }, + { + "id": "e1465", + "source": 905, + "target": 989, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -35.77510070800781 + }, + { + "id": "e1466", + "source": 568, + "target": 991, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 97.64170837402344 + }, + { + "id": "e1467", + "source": 906, + "target": 992, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -75.00836944580078 + }, + { + "id": "e1468", + "source": 996, + "target": 997, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -81.57621765136719 + }, + { + "id": "e1469", + "source": 997, + "target": 998, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.3373718261719 + }, + { + "id": "e1470", + "source": 998, + "target": 999, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 216.76461791992188 + }, + { + "id": "e1471", + "source": 999, + "target": 1000, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -228.8535614013672 + }, + { + "id": "e1472", + "source": 1000, + "target": 1001, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -159.38648986816406 + }, + { + "id": "e1473", + "source": 1001, + "target": 1002, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -123.31301879882812 + }, + { + "id": "e1474", + "source": 1002, + "target": 1003, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 227.03871154785156 + }, + { + "id": "e1475", + "source": 1003, + "target": 996, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -57.10079574584961 + }, + { + "id": "e1476", + "source": 995, + "target": 997, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -166.34494018554688 + }, + { + "id": "e1477", + "source": 993, + "target": 999, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.8835144042969 + }, + { + "id": "e1478", + "source": 994, + "target": 1001, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 86.02535247802734 + }, + { + "id": "e1479", + "source": 894, + "target": 1003, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -210.40589904785156 + }, + { + "id": "e1480", + "source": 1006, + "target": 1007, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -34.97190856933594 + }, + { + "id": "e1481", + "source": 1007, + "target": 1008, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -19.795944213867188 + }, + { + "id": "e1482", + "source": 1008, + "target": 1009, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -9.05949878692627 + }, + { + "id": "e1483", + "source": 1009, + "target": 1010, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 117.3450927734375 + }, + { + "id": "e1484", + "source": 1010, + "target": 1011, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 6.414717674255371 + }, + { + "id": "e1485", + "source": 1011, + "target": 1012, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 66.68753814697266 + }, + { + "id": "e1486", + "source": 1012, + "target": 1013, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 48.68971633911133 + }, + { + "id": "e1487", + "source": 1013, + "target": 1006, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 8.096455574035645 + }, + { + "id": "e1488", + "source": 670, + "target": 1011, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 50.81196594238281 + }, + { + "id": "e1489", + "source": 1004, + "target": 1013, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -48.46183776855469 + }, + { + "id": "e1490", + "source": 993, + "target": 1007, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 4.637005805969238 + }, + { + "id": "e1491", + "source": 1005, + "target": 1009, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 110.84464263916016 + }, + { + "id": "e1492", + "source": 672, + "target": 680, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -42.51258087158203 + }, + { + "id": "e1493", + "source": 568, + "target": 678, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -486.5194396972656 + }, + { + "id": "e1494", + "source": 671, + "target": 676, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 53.960472106933594 + }, + { + "id": "e1495", + "source": 670, + "target": 674, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -535.951416015625 + }, + { + "id": "e1496", + "source": 1014, + "target": 1015, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 114.3117904663086 + }, + { + "id": "e1497", + "source": 1015, + "target": 1016, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -248.13124084472656 + }, + { + "id": "e1498", + "source": 1016, + "target": 1017, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -239.79364013671875 + }, + { + "id": "e1499", + "source": 1017, + "target": 1018, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -59.85498046875 + }, + { + "id": "e1500", + "source": 1018, + "target": 1019, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 79.98731231689453 + }, + { + "id": "e1501", + "source": 1019, + "target": 1020, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -214.11241149902344 + }, + { + "id": "e1502", + "source": 1020, + "target": 1021, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -187.37391662597656 + }, + { + "id": "e1503", + "source": 1021, + "target": 1014, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 31.467483520507812 + }, + { + "id": "e1504", + "source": 1004, + "target": 1019, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -356.7901306152344 + }, + { + "id": "e1505", + "source": 671, + "target": 1021, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 97.58094787597656 + }, + { + "id": "e1506", + "source": 905, + "target": 1015, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -358.539306640625 + }, + { + "id": "e1507", + "source": 994, + "target": 1017, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 45.65480422973633 + }, + { + "id": "e1508", + "source": 1022, + "target": 1023, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 125.79566955566406 + }, + { + "id": "e1509", + "source": 1023, + "target": 1024, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -342.9896545410156 + }, + { + "id": "e1510", + "source": 1024, + "target": 1025, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.4970397949219 + }, + { + "id": "e1511", + "source": 1025, + "target": 1026, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 61.39297866821289 + }, + { + "id": "e1512", + "source": 1026, + "target": 1027, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 50.722015380859375 + }, + { + "id": "e1513", + "source": 1027, + "target": 1028, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -370.8110046386719 + }, + { + "id": "e1514", + "source": 1028, + "target": 1029, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -352.31988525390625 + }, + { + "id": "e1515", + "source": 1029, + "target": 1022, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.03529357910156 + }, + { + "id": "e1516", + "source": 995, + "target": 1027, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -185.62950134277344 + }, + { + "id": "e1517", + "source": 906, + "target": 1025, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -407.5763854980469 + }, + { + "id": "e1518", + "source": 672, + "target": 1023, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 16.594383239746094 + }, + { + "id": "e1519", + "source": 1005, + "target": 1029, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.63775634765625 + }, + { + "id": "e1520", + "source": 944, + "target": 1030, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -35.387752532958984 + }, + { + "id": "e1521", + "source": 1030, + "target": 950, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 49.247901916503906 + }, + { + "id": "e1522", + "source": 950, + "target": 1031, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 18.337112426757812 + }, + { + "id": "e1523", + "source": 1031, + "target": 948, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 48.040409088134766 + }, + { + "id": "e1524", + "source": 933, + "target": 1030, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 75.81644439697266 + }, + { + "id": "e1525", + "source": 906, + "target": 1031, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 14.515959739685059 + }, + { + "id": "e1526", + "source": 608, + "target": 947, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 116.25437927246094 + }, + { + "id": "e1527", + "source": 943, + "target": 945, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -65.91694641113281 + }, + { + "id": "e1528", + "source": 1034, + "target": 1035, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -60.582454681396484 + }, + { + "id": "e1529", + "source": 1035, + "target": 1036, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -266.4835510253906 + }, + { + "id": "e1530", + "source": 1036, + "target": 1037, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 224.0791015625 + }, + { + "id": "e1531", + "source": 1037, + "target": 1038, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -239.3528289794922 + }, + { + "id": "e1532", + "source": 1038, + "target": 1039, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -179.6392059326172 + }, + { + "id": "e1533", + "source": 1039, + "target": 1040, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -195.09829711914062 + }, + { + "id": "e1534", + "source": 1040, + "target": 1041, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.22042846679688 + }, + { + "id": "e1535", + "source": 1041, + "target": 1034, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -50.49922180175781 + }, + { + "id": "e1536", + "source": 1033, + "target": 1035, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -135.24920654296875 + }, + { + "id": "e1537", + "source": 1032, + "target": 1037, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.759521484375 + }, + { + "id": "e1538", + "source": 995, + "target": 1039, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 43.67817687988281 + }, + { + "id": "e1539", + "source": 933, + "target": 1041, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -170.32879638671875 + }, + { + "id": "e1540", + "source": 1043, + "target": 1044, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 4.724996089935303 + }, + { + "id": "e1541", + "source": 1044, + "target": 1045, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -8.601733207702637 + }, + { + "id": "e1542", + "source": 1045, + "target": 1046, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -30.64238739013672 + }, + { + "id": "e1543", + "source": 1046, + "target": 1047, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 112.34542083740234 + }, + { + "id": "e1544", + "source": 1047, + "target": 1048, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 8.299285888671875 + }, + { + "id": "e1545", + "source": 1048, + "target": 1049, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 41.019386291503906 + }, + { + "id": "e1546", + "source": 1049, + "target": 1050, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 16.767059326171875 + }, + { + "id": "e1547", + "source": 1050, + "target": 1043, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 74.9463119506836 + }, + { + "id": "e1548", + "source": 710, + "target": 1048, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 25.87721824645996 + }, + { + "id": "e1549", + "source": 1005, + "target": 1050, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 51.075096130371094 + }, + { + "id": "e1550", + "source": 1032, + "target": 1044, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -16.232410430908203 + }, + { + "id": "e1551", + "source": 1042, + "target": 1046, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 136.66171264648438 + }, + { + "id": "e1552", + "source": 711, + "target": 719, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -70.77894592285156 + }, + { + "id": "e1553", + "source": 608, + "target": 717, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -497.8092041015625 + }, + { + "id": "e1554", + "source": 672, + "target": 715, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -23.782480239868164 + }, + { + "id": "e1555", + "source": 710, + "target": 713, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -475.8462219238281 + }, + { + "id": "e1556", + "source": 1005, + "target": 1023, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -396.31964111328125 + }, + { + "id": "e1557", + "source": 672, + "target": 1025, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -45.29925537109375 + }, + { + "id": "e1558", + "source": 906, + "target": 1027, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -569.6256713867188 + }, + { + "id": "e1559", + "source": 995, + "target": 1029, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 87.86811065673828 + }, + { + "id": "e1560", + "source": 1051, + "target": 1052, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 116.18317413330078 + }, + { + "id": "e1561", + "source": 1052, + "target": 1053, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -346.525634765625 + }, + { + "id": "e1562", + "source": 1053, + "target": 1054, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -339.2604675292969 + }, + { + "id": "e1563", + "source": 1054, + "target": 1055, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 60.58564758300781 + }, + { + "id": "e1564", + "source": 1055, + "target": 1056, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 49.38165283203125 + }, + { + "id": "e1565", + "source": 1056, + "target": 1057, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -366.1826171875 + }, + { + "id": "e1566", + "source": 1057, + "target": 1058, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.2691650390625 + }, + { + "id": "e1567", + "source": 1058, + "target": 1051, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 125.30496215820312 + }, + { + "id": "e1568", + "source": 1033, + "target": 1056, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -208.0518798828125 + }, + { + "id": "e1569", + "source": 943, + "target": 1054, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.797119140625 + }, + { + "id": "e1570", + "source": 711, + "target": 1052, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -35.41179656982422 + }, + { + "id": "e1571", + "source": 1042, + "target": 1058, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -284.3954772949219 + }, + { + "id": "e1572", + "source": 960, + "target": 978, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 57.72400665283203 + }, + { + "id": "e1573", + "source": 943, + "target": 976, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 55.53899002075195 + }, + { + "id": "e1574", + "source": 637, + "target": 974, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.34241485595703 + }, + { + "id": "e1575", + "source": 970, + "target": 972, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -54.60561752319336 + }, + { + "id": "e1576", + "source": 1061, + "target": 1062, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -149.31204223632812 + }, + { + "id": "e1577", + "source": 1062, + "target": 1063, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -195.69715881347656 + }, + { + "id": "e1578", + "source": 1063, + "target": 1064, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.95938110351562 + }, + { + "id": "e1579", + "source": 1064, + "target": 1065, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -273.4587097167969 + }, + { + "id": "e1580", + "source": 1065, + "target": 1066, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.8753662109375 + }, + { + "id": "e1581", + "source": 1066, + "target": 1067, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -138.5220947265625 + }, + { + "id": "e1582", + "source": 1067, + "target": 1068, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 179.1962127685547 + }, + { + "id": "e1583", + "source": 1068, + "target": 1061, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -152.16604614257812 + }, + { + "id": "e1584", + "source": 1060, + "target": 1062, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 20.447214126586914 + }, + { + "id": "e1585", + "source": 1059, + "target": 1064, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -405.52557373046875 + }, + { + "id": "e1586", + "source": 1033, + "target": 1066, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.85130310058594 + }, + { + "id": "e1587", + "source": 960, + "target": 1068, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -269.46917724609375 + }, + { + "id": "e1588", + "source": 1070, + "target": 1071, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 45.525081634521484 + }, + { + "id": "e1589", + "source": 1071, + "target": 1072, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0.7693986296653748 + }, + { + "id": "e1590", + "source": 1072, + "target": 1073, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -29.185239791870117 + }, + { + "id": "e1591", + "source": 1073, + "target": 1074, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -45.26665115356445 + }, + { + "id": "e1592", + "source": 1074, + "target": 1075, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0.5376207828521729 + }, + { + "id": "e1593", + "source": 1075, + "target": 1076, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 80.185546875 + }, + { + "id": "e1594", + "source": 1076, + "target": 1077, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 63.034339904785156 + }, + { + "id": "e1595", + "source": 1077, + "target": 1070, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 87.9561996459961 + }, + { + "id": "e1596", + "source": 739, + "target": 1075, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 84.87808227539062 + }, + { + "id": "e1597", + "source": 1042, + "target": 1077, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 14.096324920654297 + }, + { + "id": "e1598", + "source": 1059, + "target": 1071, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -37.99740982055664 + }, + { + "id": "e1599", + "source": 1069, + "target": 1073, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -1.2658849954605103 + }, + { + "id": "e1600", + "source": 740, + "target": 748, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -113.13973236083984 + }, + { + "id": "e1601", + "source": 637, + "target": 746, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -460.8801574707031 + }, + { + "id": "e1602", + "source": 711, + "target": 744, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -116.93046569824219 + }, + { + "id": "e1603", + "source": 739, + "target": 742, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -368.30694580078125 + }, + { + "id": "e1604", + "source": 1042, + "target": 1052, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -444.4302673339844 + }, + { + "id": "e1605", + "source": 711, + "target": 1054, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -18.76793670654297 + }, + { + "id": "e1606", + "source": 943, + "target": 1056, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -591.6648559570312 + }, + { + "id": "e1607", + "source": 1033, + "target": 1058, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 114.00750732421875 + }, + { + "id": "e1608", + "source": 1078, + "target": 1079, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -93.85385131835938 + }, + { + "id": "e1609", + "source": 1079, + "target": 1080, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -192.0342254638672 + }, + { + "id": "e1610", + "source": 1080, + "target": 1081, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -171.0692138671875 + }, + { + "id": "e1611", + "source": 1081, + "target": 1082, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 73.54723358154297 + }, + { + "id": "e1612", + "source": 1082, + "target": 1083, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -50.71562576293945 + }, + { + "id": "e1613", + "source": 1083, + "target": 1084, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -163.13327026367188 + }, + { + "id": "e1614", + "source": 1084, + "target": 1085, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -172.5896453857422 + }, + { + "id": "e1615", + "source": 1085, + "target": 1078, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 73.23421478271484 + }, + { + "id": "e1616", + "source": 1060, + "target": 1083, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 10.851274490356445 + }, + { + "id": "e1617", + "source": 970, + "target": 1081, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -288.5936584472656 + }, + { + "id": "e1618", + "source": 740, + "target": 1079, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 1.1971276998519897 + }, + { + "id": "e1619", + "source": 1069, + "target": 1085, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.74798583984375 + } + ], + "ndofs": 6516, + "animation": { + "showDisplacement": true, + "exageration": 2000, + "speed": 3 + }, + "viz": { + "minStress": -1613.2606445312501, + "maxStress": 556.4400756835938, + "colorMaps": [ + [ + [ + 0, + [ + 0.23, + 0.299, + 0.754 + ] + ], + [ + 0.002, + [ + 0.23, + 0.299, + 0.754 + ] + ], + [ + 0.004, + [ + 0.234, + 0.306, + 0.76 + ] + ], + [ + 0.006, + [ + 0.234, + 0.306, + 0.76 + ] + ], + [ + 0.008, + [ + 0.239, + 0.312, + 0.766 + ] + ], + [ + 0.01, + [ + 0.239, + 0.312, + 0.766 + ] + ], + [ + 0.012, + [ + 0.244, + 0.319, + 0.772 + ] + ], + [ + 0.014, + [ + 0.244, + 0.319, + 0.772 + ] + ], + [ + 0.016, + [ + 0.248, + 0.326, + 0.778 + ] + ], + [ + 0.018, + [ + 0.248, + 0.326, + 0.778 + ] + ], + [ + 0.02, + [ + 0.253, + 0.333, + 0.784 + ] + ], + [ + 0.022, + [ + 0.253, + 0.333, + 0.784 + ] + ], + [ + 0.023, + [ + 0.257, + 0.34, + 0.79 + ] + ], + [ + 0.025, + [ + 0.257, + 0.34, + 0.79 + ] + ], + [ + 0.027, + [ + 0.262, + 0.346, + 0.796 + ] + ], + [ + 0.029, + [ + 0.262, + 0.346, + 0.796 + ] + ], + [ + 0.031, + [ + 0.266, + 0.353, + 0.802 + ] + ], + [ + 0.033, + [ + 0.266, + 0.353, + 0.802 + ] + ], + [ + 0.035, + [ + 0.271, + 0.36, + 0.807 + ] + ], + [ + 0.037, + [ + 0.271, + 0.36, + 0.807 + ] + ], + [ + 0.039, + [ + 0.276, + 0.367, + 0.813 + ] + ], + [ + 0.041, + [ + 0.276, + 0.367, + 0.813 + ] + ], + [ + 0.043, + [ + 0.281, + 0.373, + 0.818 + ] + ], + [ + 0.045, + [ + 0.281, + 0.373, + 0.818 + ] + ], + [ + 0.047, + [ + 0.285, + 0.38, + 0.823 + ] + ], + [ + 0.049, + [ + 0.285, + 0.38, + 0.823 + ] + ], + [ + 0.051, + [ + 0.29, + 0.387, + 0.829 + ] + ], + [ + 0.053, + [ + 0.29, + 0.387, + 0.829 + ] + ], + [ + 0.055, + [ + 0.295, + 0.394, + 0.834 + ] + ], + [ + 0.057, + [ + 0.295, + 0.394, + 0.834 + ] + ], + [ + 0.059, + [ + 0.299, + 0.4, + 0.84 + ] + ], + [ + 0.061, + [ + 0.299, + 0.4, + 0.84 + ] + ], + [ + 0.063, + [ + 0.304, + 0.407, + 0.845 + ] + ], + [ + 0.065, + [ + 0.304, + 0.407, + 0.845 + ] + ], + [ + 0.067, + [ + 0.309, + 0.413, + 0.85 + ] + ], + [ + 0.068, + [ + 0.309, + 0.413, + 0.85 + ] + ], + [ + 0.07, + [ + 0.314, + 0.42, + 0.855 + ] + ], + [ + 0.072, + [ + 0.314, + 0.42, + 0.855 + ] + ], + [ + 0.074, + [ + 0.319, + 0.427, + 0.86 + ] + ], + [ + 0.076, + [ + 0.319, + 0.427, + 0.86 + ] + ], + [ + 0.078, + [ + 0.324, + 0.433, + 0.865 + ] + ], + [ + 0.08, + [ + 0.324, + 0.433, + 0.865 + ] + ], + [ + 0.082, + [ + 0.329, + 0.44, + 0.87 + ] + ], + [ + 0.084, + [ + 0.329, + 0.44, + 0.87 + ] + ], + [ + 0.086, + [ + 0.333, + 0.446, + 0.874 + ] + ], + [ + 0.088, + [ + 0.333, + 0.446, + 0.874 + ] + ], + [ + 0.09, + [ + 0.338, + 0.453, + 0.879 + ] + ], + [ + 0.092, + [ + 0.338, + 0.453, + 0.879 + ] + ], + [ + 0.094, + [ + 0.343, + 0.459, + 0.884 + ] + ], + [ + 0.096, + [ + 0.343, + 0.459, + 0.884 + ] + ], + [ + 0.098, + [ + 0.348, + 0.466, + 0.888 + ] + ], + [ + 0.1, + [ + 0.348, + 0.466, + 0.888 + ] + ], + [ + 0.102, + [ + 0.353, + 0.472, + 0.893 + ] + ], + [ + 0.104, + [ + 0.353, + 0.472, + 0.893 + ] + ], + [ + 0.106, + [ + 0.358, + 0.478, + 0.897 + ] + ], + [ + 0.108, + [ + 0.358, + 0.478, + 0.897 + ] + ], + [ + 0.11, + [ + 0.363, + 0.485, + 0.901 + ] + ], + [ + 0.112, + [ + 0.363, + 0.485, + 0.901 + ] + ], + [ + 0.114, + [ + 0.369, + 0.491, + 0.905 + ] + ], + [ + 0.115, + [ + 0.369, + 0.491, + 0.905 + ] + ], + [ + 0.117, + [ + 0.374, + 0.497, + 0.909 + ] + ], + [ + 0.119, + [ + 0.374, + 0.497, + 0.909 + ] + ], + [ + 0.121, + [ + 0.379, + 0.504, + 0.914 + ] + ], + [ + 0.123, + [ + 0.379, + 0.504, + 0.914 + ] + ], + [ + 0.125, + [ + 0.384, + 0.51, + 0.918 + ] + ], + [ + 0.127, + [ + 0.384, + 0.51, + 0.918 + ] + ], + [ + 0.129, + [ + 0.389, + 0.516, + 0.921 + ] + ], + [ + 0.131, + [ + 0.389, + 0.516, + 0.921 + ] + ], + [ + 0.133, + [ + 0.394, + 0.522, + 0.925 + ] + ], + [ + 0.135, + [ + 0.394, + 0.522, + 0.925 + ] + ], + [ + 0.137, + [ + 0.399, + 0.529, + 0.928 + ] + ], + [ + 0.139, + [ + 0.399, + 0.529, + 0.928 + ] + ], + [ + 0.141, + [ + 0.404, + 0.535, + 0.932 + ] + ], + [ + 0.143, + [ + 0.404, + 0.535, + 0.932 + ] + ], + [ + 0.145, + [ + 0.41, + 0.541, + 0.936 + ] + ], + [ + 0.147, + [ + 0.41, + 0.541, + 0.936 + ] + ], + [ + 0.149, + [ + 0.415, + 0.547, + 0.939 + ] + ], + [ + 0.151, + [ + 0.415, + 0.547, + 0.939 + ] + ], + [ + 0.153, + [ + 0.42, + 0.553, + 0.943 + ] + ], + [ + 0.155, + [ + 0.42, + 0.553, + 0.943 + ] + ], + [ + 0.157, + [ + 0.425, + 0.559, + 0.946 + ] + ], + [ + 0.159, + [ + 0.425, + 0.559, + 0.946 + ] + ], + [ + 0.16, + [ + 0.431, + 0.565, + 0.949 + ] + ], + [ + 0.162, + [ + 0.431, + 0.565, + 0.949 + ] + ], + [ + 0.164, + [ + 0.436, + 0.571, + 0.952 + ] + ], + [ + 0.166, + [ + 0.436, + 0.571, + 0.952 + ] + ], + [ + 0.168, + [ + 0.441, + 0.577, + 0.955 + ] + ], + [ + 0.17, + [ + 0.441, + 0.577, + 0.955 + ] + ], + [ + 0.172, + [ + 0.446, + 0.582, + 0.957 + ] + ], + [ + 0.174, + [ + 0.446, + 0.582, + 0.957 + ] + ], + [ + 0.176, + [ + 0.452, + 0.588, + 0.96 + ] + ], + [ + 0.178, + [ + 0.452, + 0.588, + 0.96 + ] + ], + [ + 0.18, + [ + 0.457, + 0.594, + 0.963 + ] + ], + [ + 0.182, + [ + 0.457, + 0.594, + 0.963 + ] + ], + [ + 0.184, + [ + 0.462, + 0.6, + 0.966 + ] + ], + [ + 0.186, + [ + 0.462, + 0.6, + 0.966 + ] + ], + [ + 0.188, + [ + 0.468, + 0.606, + 0.969 + ] + ], + [ + 0.19, + [ + 0.468, + 0.606, + 0.969 + ] + ], + [ + 0.192, + [ + 0.473, + 0.611, + 0.971 + ] + ], + [ + 0.194, + [ + 0.473, + 0.611, + 0.971 + ] + ], + [ + 0.196, + [ + 0.478, + 0.617, + 0.973 + ] + ], + [ + 0.198, + [ + 0.478, + 0.617, + 0.973 + ] + ], + [ + 0.2, + [ + 0.484, + 0.622, + 0.975 + ] + ], + [ + 0.202, + [ + 0.484, + 0.622, + 0.975 + ] + ], + [ + 0.204, + [ + 0.489, + 0.628, + 0.977 + ] + ], + [ + 0.205, + [ + 0.489, + 0.628, + 0.977 + ] + ], + [ + 0.207, + [ + 0.495, + 0.633, + 0.979 + ] + ], + [ + 0.209, + [ + 0.495, + 0.633, + 0.979 + ] + ], + [ + 0.211, + [ + 0.5, + 0.639, + 0.981 + ] + ], + [ + 0.213, + [ + 0.5, + 0.639, + 0.981 + ] + ], + [ + 0.215, + [ + 0.505, + 0.644, + 0.983 + ] + ], + [ + 0.217, + [ + 0.505, + 0.644, + 0.983 + ] + ], + [ + 0.219, + [ + 0.511, + 0.649, + 0.985 + ] + ], + [ + 0.221, + [ + 0.511, + 0.649, + 0.985 + ] + ], + [ + 0.223, + [ + 0.516, + 0.654, + 0.986 + ] + ], + [ + 0.225, + [ + 0.516, + 0.654, + 0.986 + ] + ], + [ + 0.227, + [ + 0.522, + 0.66, + 0.988 + ] + ], + [ + 0.229, + [ + 0.522, + 0.66, + 0.988 + ] + ], + [ + 0.231, + [ + 0.527, + 0.665, + 0.989 + ] + ], + [ + 0.233, + [ + 0.527, + 0.665, + 0.989 + ] + ], + [ + 0.235, + [ + 0.533, + 0.67, + 0.99 + ] + ], + [ + 0.237, + [ + 0.533, + 0.67, + 0.99 + ] + ], + [ + 0.239, + [ + 0.538, + 0.675, + 0.992 + ] + ], + [ + 0.241, + [ + 0.538, + 0.675, + 0.992 + ] + ], + [ + 0.243, + [ + 0.543, + 0.68, + 0.993 + ] + ], + [ + 0.245, + [ + 0.543, + 0.68, + 0.993 + ] + ], + [ + 0.247, + [ + 0.549, + 0.685, + 0.994 + ] + ], + [ + 0.249, + [ + 0.549, + 0.685, + 0.994 + ] + ], + [ + 0.25, + [ + 0.554, + 0.69, + 0.996 + ] + ], + [ + 0.252, + [ + 0.554, + 0.69, + 0.996 + ] + ], + [ + 0.254, + [ + 0.56, + 0.695, + 0.996 + ] + ], + [ + 0.256, + [ + 0.56, + 0.695, + 0.996 + ] + ], + [ + 0.258, + [ + 0.565, + 0.699, + 0.997 + ] + ], + [ + 0.26, + [ + 0.565, + 0.699, + 0.997 + ] + ], + [ + 0.262, + [ + 0.571, + 0.704, + 0.997 + ] + ], + [ + 0.264, + [ + 0.571, + 0.704, + 0.997 + ] + ], + [ + 0.266, + [ + 0.576, + 0.709, + 0.998 + ] + ], + [ + 0.268, + [ + 0.576, + 0.709, + 0.998 + ] + ], + [ + 0.27, + [ + 0.581, + 0.713, + 0.998 + ] + ], + [ + 0.272, + [ + 0.581, + 0.713, + 0.998 + ] + ], + [ + 0.274, + [ + 0.587, + 0.718, + 0.999 + ] + ], + [ + 0.276, + [ + 0.587, + 0.718, + 0.999 + ] + ], + [ + 0.278, + [ + 0.592, + 0.723, + 0.999 + ] + ], + [ + 0.28, + [ + 0.592, + 0.723, + 0.999 + ] + ], + [ + 0.282, + [ + 0.598, + 0.727, + 1 + ] + ], + [ + 0.284, + [ + 0.598, + 0.727, + 1 + ] + ], + [ + 0.286, + [ + 0.603, + 0.732, + 1 + ] + ], + [ + 0.288, + [ + 0.603, + 0.732, + 1 + ] + ], + [ + 0.29, + [ + 0.609, + 0.736, + 0.999 + ] + ], + [ + 0.292, + [ + 0.609, + 0.736, + 0.999 + ] + ], + [ + 0.294, + [ + 0.614, + 0.74, + 0.999 + ] + ], + [ + 0.295, + [ + 0.614, + 0.74, + 0.999 + ] + ], + [ + 0.297, + [ + 0.619, + 0.744, + 0.999 + ] + ], + [ + 0.299, + [ + 0.619, + 0.744, + 0.999 + ] + ], + [ + 0.301, + [ + 0.625, + 0.748, + 0.999 + ] + ], + [ + 0.303, + [ + 0.625, + 0.748, + 0.999 + ] + ], + [ + 0.305, + [ + 0.63, + 0.753, + 0.999 + ] + ], + [ + 0.307, + [ + 0.63, + 0.753, + 0.999 + ] + ], + [ + 0.309, + [ + 0.635, + 0.757, + 0.998 + ] + ], + [ + 0.311, + [ + 0.635, + 0.757, + 0.998 + ] + ], + [ + 0.313, + [ + 0.641, + 0.761, + 0.998 + ] + ], + [ + 0.315, + [ + 0.641, + 0.761, + 0.998 + ] + ], + [ + 0.317, + [ + 0.646, + 0.764, + 0.997 + ] + ], + [ + 0.319, + [ + 0.646, + 0.764, + 0.997 + ] + ], + [ + 0.321, + [ + 0.651, + 0.768, + 0.996 + ] + ], + [ + 0.323, + [ + 0.651, + 0.768, + 0.996 + ] + ], + [ + 0.325, + [ + 0.657, + 0.772, + 0.995 + ] + ], + [ + 0.327, + [ + 0.657, + 0.772, + 0.995 + ] + ], + [ + 0.329, + [ + 0.662, + 0.775, + 0.994 + ] + ], + [ + 0.331, + [ + 0.662, + 0.775, + 0.994 + ] + ], + [ + 0.333, + [ + 0.667, + 0.779, + 0.993 + ] + ], + [ + 0.335, + [ + 0.667, + 0.779, + 0.993 + ] + ], + [ + 0.337, + [ + 0.673, + 0.783, + 0.992 + ] + ], + [ + 0.339, + [ + 0.673, + 0.783, + 0.992 + ] + ], + [ + 0.341, + [ + 0.678, + 0.787, + 0.991 + ] + ], + [ + 0.342, + [ + 0.678, + 0.787, + 0.991 + ] + ], + [ + 0.344, + [ + 0.683, + 0.79, + 0.99 + ] + ], + [ + 0.346, + [ + 0.683, + 0.79, + 0.99 + ] + ], + [ + 0.348, + [ + 0.688, + 0.793, + 0.988 + ] + ], + [ + 0.35, + [ + 0.688, + 0.793, + 0.988 + ] + ], + [ + 0.352, + [ + 0.693, + 0.796, + 0.986 + ] + ], + [ + 0.354, + [ + 0.693, + 0.796, + 0.986 + ] + ], + [ + 0.356, + [ + 0.698, + 0.799, + 0.985 + ] + ], + [ + 0.358, + [ + 0.698, + 0.799, + 0.985 + ] + ], + [ + 0.36, + [ + 0.704, + 0.803, + 0.983 + ] + ], + [ + 0.362, + [ + 0.704, + 0.803, + 0.983 + ] + ], + [ + 0.364, + [ + 0.709, + 0.806, + 0.981 + ] + ], + [ + 0.366, + [ + 0.709, + 0.806, + 0.981 + ] + ], + [ + 0.368, + [ + 0.714, + 0.809, + 0.979 + ] + ], + [ + 0.37, + [ + 0.714, + 0.809, + 0.979 + ] + ], + [ + 0.372, + [ + 0.719, + 0.812, + 0.978 + ] + ], + [ + 0.374, + [ + 0.719, + 0.812, + 0.978 + ] + ], + [ + 0.376, + [ + 0.724, + 0.815, + 0.976 + ] + ], + [ + 0.378, + [ + 0.724, + 0.815, + 0.976 + ] + ], + [ + 0.38, + [ + 0.729, + 0.817, + 0.973 + ] + ], + [ + 0.382, + [ + 0.729, + 0.817, + 0.973 + ] + ], + [ + 0.384, + [ + 0.734, + 0.82, + 0.971 + ] + ], + [ + 0.386, + [ + 0.734, + 0.82, + 0.971 + ] + ], + [ + 0.387, + [ + 0.739, + 0.823, + 0.968 + ] + ], + [ + 0.389, + [ + 0.739, + 0.823, + 0.968 + ] + ], + [ + 0.391, + [ + 0.744, + 0.825, + 0.966 + ] + ], + [ + 0.393, + [ + 0.744, + 0.825, + 0.966 + ] + ], + [ + 0.395, + [ + 0.749, + 0.828, + 0.963 + ] + ], + [ + 0.397, + [ + 0.749, + 0.828, + 0.963 + ] + ], + [ + 0.399, + [ + 0.754, + 0.83, + 0.961 + ] + ], + [ + 0.401, + [ + 0.754, + 0.83, + 0.961 + ] + ], + [ + 0.403, + [ + 0.759, + 0.833, + 0.958 + ] + ], + [ + 0.405, + [ + 0.759, + 0.833, + 0.958 + ] + ], + [ + 0.407, + [ + 0.763, + 0.835, + 0.956 + ] + ], + [ + 0.409, + [ + 0.763, + 0.835, + 0.956 + ] + ], + [ + 0.411, + [ + 0.768, + 0.837, + 0.952 + ] + ], + [ + 0.413, + [ + 0.768, + 0.837, + 0.952 + ] + ], + [ + 0.415, + [ + 0.773, + 0.839, + 0.949 + ] + ], + [ + 0.417, + [ + 0.773, + 0.839, + 0.949 + ] + ], + [ + 0.419, + [ + 0.777, + 0.841, + 0.946 + ] + ], + [ + 0.421, + [ + 0.777, + 0.841, + 0.946 + ] + ], + [ + 0.423, + [ + 0.782, + 0.843, + 0.943 + ] + ], + [ + 0.425, + [ + 0.782, + 0.843, + 0.943 + ] + ], + [ + 0.427, + [ + 0.787, + 0.845, + 0.94 + ] + ], + [ + 0.429, + [ + 0.787, + 0.845, + 0.94 + ] + ], + [ + 0.431, + [ + 0.791, + 0.847, + 0.937 + ] + ], + [ + 0.432, + [ + 0.791, + 0.847, + 0.937 + ] + ], + [ + 0.434, + [ + 0.796, + 0.849, + 0.933 + ] + ], + [ + 0.436, + [ + 0.796, + 0.849, + 0.933 + ] + ], + [ + 0.438, + [ + 0.801, + 0.85, + 0.93 + ] + ], + [ + 0.44, + [ + 0.801, + 0.85, + 0.93 + ] + ], + [ + 0.442, + [ + 0.805, + 0.852, + 0.926 + ] + ], + [ + 0.444, + [ + 0.805, + 0.852, + 0.926 + ] + ], + [ + 0.446, + [ + 0.809, + 0.853, + 0.922 + ] + ], + [ + 0.448, + [ + 0.809, + 0.853, + 0.922 + ] + ], + [ + 0.45, + [ + 0.814, + 0.854, + 0.918 + ] + ], + [ + 0.452, + [ + 0.814, + 0.854, + 0.918 + ] + ], + [ + 0.454, + [ + 0.818, + 0.856, + 0.915 + ] + ], + [ + 0.456, + [ + 0.818, + 0.856, + 0.915 + ] + ], + [ + 0.458, + [ + 0.822, + 0.857, + 0.911 + ] + ], + [ + 0.46, + [ + 0.822, + 0.857, + 0.911 + ] + ], + [ + 0.462, + [ + 0.827, + 0.858, + 0.907 + ] + ], + [ + 0.464, + [ + 0.827, + 0.858, + 0.907 + ] + ], + [ + 0.466, + [ + 0.831, + 0.86, + 0.903 + ] + ], + [ + 0.468, + [ + 0.831, + 0.86, + 0.903 + ] + ], + [ + 0.47, + [ + 0.835, + 0.861, + 0.899 + ] + ], + [ + 0.472, + [ + 0.835, + 0.861, + 0.899 + ] + ], + [ + 0.474, + [ + 0.839, + 0.861, + 0.894 + ] + ], + [ + 0.476, + [ + 0.839, + 0.861, + 0.894 + ] + ], + [ + 0.477, + [ + 0.843, + 0.862, + 0.89 + ] + ], + [ + 0.479, + [ + 0.843, + 0.862, + 0.89 + ] + ], + [ + 0.481, + [ + 0.847, + 0.862, + 0.886 + ] + ], + [ + 0.483, + [ + 0.847, + 0.862, + 0.886 + ] + ], + [ + 0.485, + [ + 0.851, + 0.863, + 0.881 + ] + ], + [ + 0.487, + [ + 0.851, + 0.863, + 0.881 + ] + ], + [ + 0.489, + [ + 0.855, + 0.864, + 0.877 + ] + ], + [ + 0.491, + [ + 0.855, + 0.864, + 0.877 + ] + ], + [ + 0.493, + [ + 0.859, + 0.864, + 0.872 + ] + ], + [ + 0.495, + [ + 0.859, + 0.864, + 0.872 + ] + ], + [ + 0.497, + [ + 0.863, + 0.865, + 0.868 + ] + ], + [ + 0.499, + [ + 0.863, + 0.865, + 0.868 + ] + ], + [ + 0.501, + [ + 0.867, + 0.864, + 0.863 + ] + ], + [ + 0.503, + [ + 0.867, + 0.864, + 0.863 + ] + ], + [ + 0.505, + [ + 0.871, + 0.862, + 0.857 + ] + ], + [ + 0.507, + [ + 0.871, + 0.862, + 0.857 + ] + ], + [ + 0.509, + [ + 0.876, + 0.86, + 0.851 + ] + ], + [ + 0.511, + [ + 0.876, + 0.86, + 0.851 + ] + ], + [ + 0.513, + [ + 0.88, + 0.858, + 0.846 + ] + ], + [ + 0.515, + [ + 0.88, + 0.858, + 0.846 + ] + ], + [ + 0.517, + [ + 0.884, + 0.856, + 0.84 + ] + ], + [ + 0.519, + [ + 0.884, + 0.856, + 0.84 + ] + ], + [ + 0.521, + [ + 0.888, + 0.854, + 0.835 + ] + ], + [ + 0.523, + [ + 0.888, + 0.854, + 0.835 + ] + ], + [ + 0.524, + [ + 0.892, + 0.852, + 0.829 + ] + ], + [ + 0.526, + [ + 0.892, + 0.852, + 0.829 + ] + ], + [ + 0.528, + [ + 0.896, + 0.85, + 0.823 + ] + ], + [ + 0.53, + [ + 0.896, + 0.85, + 0.823 + ] + ], + [ + 0.532, + [ + 0.9, + 0.848, + 0.818 + ] + ], + [ + 0.534, + [ + 0.9, + 0.848, + 0.818 + ] + ], + [ + 0.536, + [ + 0.903, + 0.845, + 0.812 + ] + ], + [ + 0.538, + [ + 0.903, + 0.845, + 0.812 + ] + ], + [ + 0.54, + [ + 0.906, + 0.842, + 0.806 + ] + ], + [ + 0.542, + [ + 0.906, + 0.842, + 0.806 + ] + ], + [ + 0.544, + [ + 0.909, + 0.839, + 0.8 + ] + ], + [ + 0.546, + [ + 0.909, + 0.839, + 0.8 + ] + ], + [ + 0.548, + [ + 0.913, + 0.837, + 0.795 + ] + ], + [ + 0.55, + [ + 0.913, + 0.837, + 0.795 + ] + ], + [ + 0.552, + [ + 0.916, + 0.834, + 0.789 + ] + ], + [ + 0.554, + [ + 0.916, + 0.834, + 0.789 + ] + ], + [ + 0.556, + [ + 0.919, + 0.831, + 0.783 + ] + ], + [ + 0.558, + [ + 0.919, + 0.831, + 0.783 + ] + ], + [ + 0.56, + [ + 0.923, + 0.829, + 0.777 + ] + ], + [ + 0.562, + [ + 0.923, + 0.829, + 0.777 + ] + ], + [ + 0.564, + [ + 0.926, + 0.826, + 0.771 + ] + ], + [ + 0.566, + [ + 0.926, + 0.826, + 0.771 + ] + ], + [ + 0.568, + [ + 0.928, + 0.822, + 0.765 + ] + ], + [ + 0.569, + [ + 0.928, + 0.822, + 0.765 + ] + ], + [ + 0.571, + [ + 0.931, + 0.819, + 0.759 + ] + ], + [ + 0.573, + [ + 0.931, + 0.819, + 0.759 + ] + ], + [ + 0.575, + [ + 0.933, + 0.816, + 0.753 + ] + ], + [ + 0.577, + [ + 0.933, + 0.816, + 0.753 + ] + ], + [ + 0.579, + [ + 0.936, + 0.812, + 0.747 + ] + ], + [ + 0.581, + [ + 0.936, + 0.812, + 0.747 + ] + ], + [ + 0.583, + [ + 0.938, + 0.809, + 0.741 + ] + ], + [ + 0.585, + [ + 0.938, + 0.809, + 0.741 + ] + ], + [ + 0.587, + [ + 0.941, + 0.806, + 0.735 + ] + ], + [ + 0.589, + [ + 0.941, + 0.806, + 0.735 + ] + ], + [ + 0.591, + [ + 0.943, + 0.802, + 0.729 + ] + ], + [ + 0.593, + [ + 0.943, + 0.802, + 0.729 + ] + ], + [ + 0.595, + [ + 0.946, + 0.799, + 0.723 + ] + ], + [ + 0.597, + [ + 0.946, + 0.799, + 0.723 + ] + ], + [ + 0.599, + [ + 0.947, + 0.795, + 0.717 + ] + ], + [ + 0.601, + [ + 0.947, + 0.795, + 0.717 + ] + ], + [ + 0.603, + [ + 0.949, + 0.791, + 0.711 + ] + ], + [ + 0.605, + [ + 0.949, + 0.791, + 0.711 + ] + ], + [ + 0.607, + [ + 0.951, + 0.787, + 0.705 + ] + ], + [ + 0.609, + [ + 0.951, + 0.787, + 0.705 + ] + ], + [ + 0.611, + [ + 0.953, + 0.783, + 0.699 + ] + ], + [ + 0.613, + [ + 0.953, + 0.783, + 0.699 + ] + ], + [ + 0.614, + [ + 0.955, + 0.779, + 0.693 + ] + ], + [ + 0.616, + [ + 0.955, + 0.779, + 0.693 + ] + ], + [ + 0.618, + [ + 0.956, + 0.775, + 0.686 + ] + ], + [ + 0.62, + [ + 0.956, + 0.775, + 0.686 + ] + ], + [ + 0.622, + [ + 0.958, + 0.771, + 0.68 + ] + ], + [ + 0.624, + [ + 0.958, + 0.771, + 0.68 + ] + ], + [ + 0.626, + [ + 0.96, + 0.767, + 0.674 + ] + ], + [ + 0.628, + [ + 0.96, + 0.767, + 0.674 + ] + ], + [ + 0.63, + [ + 0.961, + 0.763, + 0.668 + ] + ], + [ + 0.632, + [ + 0.961, + 0.763, + 0.668 + ] + ], + [ + 0.634, + [ + 0.962, + 0.758, + 0.662 + ] + ], + [ + 0.636, + [ + 0.962, + 0.758, + 0.662 + ] + ], + [ + 0.638, + [ + 0.963, + 0.754, + 0.656 + ] + ], + [ + 0.64, + [ + 0.963, + 0.754, + 0.656 + ] + ], + [ + 0.642, + [ + 0.964, + 0.749, + 0.649 + ] + ], + [ + 0.644, + [ + 0.964, + 0.749, + 0.649 + ] + ], + [ + 0.646, + [ + 0.965, + 0.745, + 0.643 + ] + ], + [ + 0.648, + [ + 0.965, + 0.745, + 0.643 + ] + ], + [ + 0.65, + [ + 0.966, + 0.74, + 0.637 + ] + ], + [ + 0.652, + [ + 0.966, + 0.74, + 0.637 + ] + ], + [ + 0.654, + [ + 0.967, + 0.736, + 0.631 + ] + ], + [ + 0.656, + [ + 0.967, + 0.736, + 0.631 + ] + ], + [ + 0.658, + [ + 0.968, + 0.731, + 0.625 + ] + ], + [ + 0.659, + [ + 0.968, + 0.731, + 0.625 + ] + ], + [ + 0.661, + [ + 0.968, + 0.726, + 0.618 + ] + ], + [ + 0.663, + [ + 0.968, + 0.726, + 0.618 + ] + ], + [ + 0.665, + [ + 0.968, + 0.721, + 0.612 + ] + ], + [ + 0.667, + [ + 0.968, + 0.721, + 0.612 + ] + ], + [ + 0.669, + [ + 0.969, + 0.716, + 0.606 + ] + ], + [ + 0.671, + [ + 0.969, + 0.716, + 0.606 + ] + ], + [ + 0.673, + [ + 0.969, + 0.711, + 0.6 + ] + ], + [ + 0.675, + [ + 0.969, + 0.711, + 0.6 + ] + ], + [ + 0.677, + [ + 0.969, + 0.706, + 0.594 + ] + ], + [ + 0.679, + [ + 0.969, + 0.706, + 0.594 + ] + ], + [ + 0.681, + [ + 0.97, + 0.701, + 0.588 + ] + ], + [ + 0.683, + [ + 0.97, + 0.701, + 0.588 + ] + ], + [ + 0.685, + [ + 0.97, + 0.696, + 0.581 + ] + ], + [ + 0.687, + [ + 0.97, + 0.696, + 0.581 + ] + ], + [ + 0.689, + [ + 0.97, + 0.69, + 0.575 + ] + ], + [ + 0.691, + [ + 0.97, + 0.69, + 0.575 + ] + ], + [ + 0.693, + [ + 0.969, + 0.685, + 0.569 + ] + ], + [ + 0.695, + [ + 0.969, + 0.685, + 0.569 + ] + ], + [ + 0.697, + [ + 0.969, + 0.679, + 0.563 + ] + ], + [ + 0.699, + [ + 0.969, + 0.679, + 0.563 + ] + ], + [ + 0.701, + [ + 0.968, + 0.674, + 0.557 + ] + ], + [ + 0.703, + [ + 0.968, + 0.674, + 0.557 + ] + ], + [ + 0.705, + [ + 0.968, + 0.668, + 0.55 + ] + ], + [ + 0.706, + [ + 0.968, + 0.668, + 0.55 + ] + ], + [ + 0.708, + [ + 0.968, + 0.663, + 0.544 + ] + ], + [ + 0.71, + [ + 0.968, + 0.663, + 0.544 + ] + ], + [ + 0.712, + [ + 0.967, + 0.657, + 0.538 + ] + ], + [ + 0.714, + [ + 0.967, + 0.657, + 0.538 + ] + ], + [ + 0.716, + [ + 0.967, + 0.652, + 0.532 + ] + ], + [ + 0.718, + [ + 0.967, + 0.652, + 0.532 + ] + ], + [ + 0.72, + [ + 0.966, + 0.646, + 0.526 + ] + ], + [ + 0.722, + [ + 0.966, + 0.646, + 0.526 + ] + ], + [ + 0.724, + [ + 0.965, + 0.64, + 0.52 + ] + ], + [ + 0.726, + [ + 0.965, + 0.64, + 0.52 + ] + ], + [ + 0.728, + [ + 0.964, + 0.634, + 0.514 + ] + ], + [ + 0.73, + [ + 0.964, + 0.634, + 0.514 + ] + ], + [ + 0.732, + [ + 0.963, + 0.628, + 0.508 + ] + ], + [ + 0.734, + [ + 0.963, + 0.628, + 0.508 + ] + ], + [ + 0.736, + [ + 0.962, + 0.622, + 0.502 + ] + ], + [ + 0.738, + [ + 0.962, + 0.622, + 0.502 + ] + ], + [ + 0.74, + [ + 0.96, + 0.616, + 0.495 + ] + ], + [ + 0.742, + [ + 0.96, + 0.616, + 0.495 + ] + ], + [ + 0.744, + [ + 0.959, + 0.61, + 0.489 + ] + ], + [ + 0.746, + [ + 0.959, + 0.61, + 0.489 + ] + ], + [ + 0.748, + [ + 0.958, + 0.604, + 0.483 + ] + ], + [ + 0.75, + [ + 0.958, + 0.604, + 0.483 + ] + ], + [ + 0.751, + [ + 0.957, + 0.598, + 0.477 + ] + ], + [ + 0.753, + [ + 0.957, + 0.598, + 0.477 + ] + ], + [ + 0.755, + [ + 0.955, + 0.592, + 0.471 + ] + ], + [ + 0.757, + [ + 0.955, + 0.592, + 0.471 + ] + ], + [ + 0.759, + [ + 0.953, + 0.585, + 0.465 + ] + ], + [ + 0.761, + [ + 0.953, + 0.585, + 0.465 + ] + ], + [ + 0.763, + [ + 0.951, + 0.579, + 0.459 + ] + ], + [ + 0.765, + [ + 0.951, + 0.579, + 0.459 + ] + ], + [ + 0.767, + [ + 0.949, + 0.572, + 0.453 + ] + ], + [ + 0.769, + [ + 0.949, + 0.572, + 0.453 + ] + ], + [ + 0.771, + [ + 0.948, + 0.566, + 0.447 + ] + ], + [ + 0.773, + [ + 0.948, + 0.566, + 0.447 + ] + ], + [ + 0.775, + [ + 0.946, + 0.56, + 0.442 + ] + ], + [ + 0.777, + [ + 0.946, + 0.56, + 0.442 + ] + ], + [ + 0.779, + [ + 0.944, + 0.553, + 0.436 + ] + ], + [ + 0.781, + [ + 0.944, + 0.553, + 0.436 + ] + ], + [ + 0.783, + [ + 0.942, + 0.546, + 0.43 + ] + ], + [ + 0.785, + [ + 0.942, + 0.546, + 0.43 + ] + ], + [ + 0.787, + [ + 0.939, + 0.54, + 0.424 + ] + ], + [ + 0.789, + [ + 0.939, + 0.54, + 0.424 + ] + ], + [ + 0.791, + [ + 0.937, + 0.533, + 0.418 + ] + ], + [ + 0.793, + [ + 0.937, + 0.533, + 0.418 + ] + ], + [ + 0.795, + [ + 0.934, + 0.526, + 0.412 + ] + ], + [ + 0.796, + [ + 0.934, + 0.526, + 0.412 + ] + ], + [ + 0.798, + [ + 0.932, + 0.519, + 0.406 + ] + ], + [ + 0.8, + [ + 0.932, + 0.519, + 0.406 + ] + ], + [ + 0.802, + [ + 0.929, + 0.512, + 0.401 + ] + ], + [ + 0.804, + [ + 0.929, + 0.512, + 0.401 + ] + ], + [ + 0.806, + [ + 0.927, + 0.505, + 0.395 + ] + ], + [ + 0.808, + [ + 0.927, + 0.505, + 0.395 + ] + ], + [ + 0.81, + [ + 0.924, + 0.499, + 0.389 + ] + ], + [ + 0.812, + [ + 0.924, + 0.499, + 0.389 + ] + ], + [ + 0.814, + [ + 0.921, + 0.491, + 0.383 + ] + ], + [ + 0.816, + [ + 0.921, + 0.491, + 0.383 + ] + ], + [ + 0.818, + [ + 0.918, + 0.484, + 0.378 + ] + ], + [ + 0.82, + [ + 0.918, + 0.484, + 0.378 + ] + ], + [ + 0.822, + [ + 0.915, + 0.477, + 0.372 + ] + ], + [ + 0.824, + [ + 0.915, + 0.477, + 0.372 + ] + ], + [ + 0.826, + [ + 0.912, + 0.47, + 0.367 + ] + ], + [ + 0.828, + [ + 0.912, + 0.47, + 0.367 + ] + ], + [ + 0.83, + [ + 0.909, + 0.462, + 0.361 + ] + ], + [ + 0.832, + [ + 0.909, + 0.462, + 0.361 + ] + ], + [ + 0.834, + [ + 0.906, + 0.455, + 0.355 + ] + ], + [ + 0.836, + [ + 0.906, + 0.455, + 0.355 + ] + ], + [ + 0.838, + [ + 0.903, + 0.448, + 0.35 + ] + ], + [ + 0.84, + [ + 0.903, + 0.448, + 0.35 + ] + ], + [ + 0.841, + [ + 0.9, + 0.441, + 0.344 + ] + ], + [ + 0.843, + [ + 0.9, + 0.441, + 0.344 + ] + ], + [ + 0.845, + [ + 0.896, + 0.433, + 0.339 + ] + ], + [ + 0.847, + [ + 0.896, + 0.433, + 0.339 + ] + ], + [ + 0.849, + [ + 0.892, + 0.425, + 0.333 + ] + ], + [ + 0.851, + [ + 0.892, + 0.425, + 0.333 + ] + ], + [ + 0.853, + [ + 0.888, + 0.418, + 0.328 + ] + ], + [ + 0.855, + [ + 0.888, + 0.418, + 0.328 + ] + ], + [ + 0.857, + [ + 0.885, + 0.41, + 0.323 + ] + ], + [ + 0.859, + [ + 0.885, + 0.41, + 0.323 + ] + ], + [ + 0.861, + [ + 0.881, + 0.402, + 0.317 + ] + ], + [ + 0.863, + [ + 0.881, + 0.402, + 0.317 + ] + ], + [ + 0.865, + [ + 0.877, + 0.395, + 0.312 + ] + ], + [ + 0.867, + [ + 0.877, + 0.395, + 0.312 + ] + ], + [ + 0.869, + [ + 0.873, + 0.387, + 0.306 + ] + ], + [ + 0.871, + [ + 0.873, + 0.387, + 0.306 + ] + ], + [ + 0.873, + [ + 0.87, + 0.379, + 0.301 + ] + ], + [ + 0.875, + [ + 0.87, + 0.379, + 0.301 + ] + ], + [ + 0.877, + [ + 0.865, + 0.371, + 0.296 + ] + ], + [ + 0.879, + [ + 0.865, + 0.371, + 0.296 + ] + ], + [ + 0.881, + [ + 0.861, + 0.363, + 0.291 + ] + ], + [ + 0.883, + [ + 0.861, + 0.363, + 0.291 + ] + ], + [ + 0.885, + [ + 0.857, + 0.355, + 0.285 + ] + ], + [ + 0.886, + [ + 0.857, + 0.355, + 0.285 + ] + ], + [ + 0.888, + [ + 0.852, + 0.346, + 0.28 + ] + ], + [ + 0.89, + [ + 0.852, + 0.346, + 0.28 + ] + ], + [ + 0.892, + [ + 0.848, + 0.338, + 0.275 + ] + ], + [ + 0.894, + [ + 0.848, + 0.338, + 0.275 + ] + ], + [ + 0.896, + [ + 0.844, + 0.33, + 0.27 + ] + ], + [ + 0.898, + [ + 0.844, + 0.33, + 0.27 + ] + ], + [ + 0.9, + [ + 0.839, + 0.322, + 0.265 + ] + ], + [ + 0.902, + [ + 0.839, + 0.322, + 0.265 + ] + ], + [ + 0.904, + [ + 0.835, + 0.314, + 0.26 + ] + ], + [ + 0.906, + [ + 0.835, + 0.314, + 0.26 + ] + ], + [ + 0.908, + [ + 0.83, + 0.305, + 0.255 + ] + ], + [ + 0.91, + [ + 0.83, + 0.305, + 0.255 + ] + ], + [ + 0.912, + [ + 0.825, + 0.296, + 0.25 + ] + ], + [ + 0.914, + [ + 0.825, + 0.296, + 0.25 + ] + ], + [ + 0.916, + [ + 0.82, + 0.287, + 0.245 + ] + ], + [ + 0.918, + [ + 0.82, + 0.287, + 0.245 + ] + ], + [ + 0.92, + [ + 0.816, + 0.278, + 0.24 + ] + ], + [ + 0.922, + [ + 0.816, + 0.278, + 0.24 + ] + ], + [ + 0.924, + [ + 0.811, + 0.269, + 0.235 + ] + ], + [ + 0.926, + [ + 0.811, + 0.269, + 0.235 + ] + ], + [ + 0.928, + [ + 0.806, + 0.26, + 0.231 + ] + ], + [ + 0.93, + [ + 0.806, + 0.26, + 0.231 + ] + ], + [ + 0.932, + [ + 0.801, + 0.251, + 0.226 + ] + ], + [ + 0.933, + [ + 0.801, + 0.251, + 0.226 + ] + ], + [ + 0.935, + [ + 0.796, + 0.242, + 0.221 + ] + ], + [ + 0.937, + [ + 0.796, + 0.242, + 0.221 + ] + ], + [ + 0.939, + [ + 0.791, + 0.231, + 0.216 + ] + ], + [ + 0.941, + [ + 0.791, + 0.231, + 0.216 + ] + ], + [ + 0.943, + [ + 0.785, + 0.221, + 0.212 + ] + ], + [ + 0.945, + [ + 0.785, + 0.221, + 0.212 + ] + ], + [ + 0.947, + [ + 0.78, + 0.21, + 0.207 + ] + ], + [ + 0.949, + [ + 0.78, + 0.21, + 0.207 + ] + ], + [ + 0.951, + [ + 0.774, + 0.2, + 0.203 + ] + ], + [ + 0.953, + [ + 0.774, + 0.2, + 0.203 + ] + ], + [ + 0.955, + [ + 0.769, + 0.189, + 0.198 + ] + ], + [ + 0.957, + [ + 0.769, + 0.189, + 0.198 + ] + ], + [ + 0.959, + [ + 0.764, + 0.179, + 0.193 + ] + ], + [ + 0.961, + [ + 0.764, + 0.179, + 0.193 + ] + ], + [ + 0.963, + [ + 0.758, + 0.168, + 0.189 + ] + ], + [ + 0.965, + [ + 0.758, + 0.168, + 0.189 + ] + ], + [ + 0.967, + [ + 0.753, + 0.158, + 0.184 + ] + ], + [ + 0.969, + [ + 0.753, + 0.158, + 0.184 + ] + ], + [ + 0.971, + [ + 0.747, + 0.14, + 0.18 + ] + ], + [ + 0.973, + [ + 0.747, + 0.14, + 0.18 + ] + ], + [ + 0.975, + [ + 0.741, + 0.122, + 0.176 + ] + ], + [ + 0.977, + [ + 0.741, + 0.122, + 0.176 + ] + ], + [ + 0.978, + [ + 0.735, + 0.104, + 0.171 + ] + ], + [ + 0.98, + [ + 0.735, + 0.104, + 0.171 + ] + ], + [ + 0.982, + [ + 0.729, + 0.087, + 0.167 + ] + ], + [ + 0.984, + [ + 0.729, + 0.087, + 0.167 + ] + ], + [ + 0.986, + [ + 0.723, + 0.069, + 0.163 + ] + ], + [ + 0.988, + [ + 0.723, + 0.069, + 0.163 + ] + ], + [ + 0.99, + [ + 0.717, + 0.051, + 0.159 + ] + ], + [ + 0.992, + [ + 0.717, + 0.051, + 0.159 + ] + ], + [ + 0.994, + [ + 0.712, + 0.033, + 0.154 + ] + ], + [ + 0.996, + [ + 0.712, + 0.033, + 0.154 + ] + ], + [ + 0.998, + [ + 0.706, + 0.016, + 0.15 + ] + ], + [ + 1, + [ + 0.706, + 0.016, + 0.15 + ] + ] + ], + [ + [ + 0, + [ + 1, + 1, + 0.851 + ] + ], + [ + 0.002, + [ + 1, + 1, + 0.851 + ] + ], + [ + 0.004, + [ + 0.998, + 0.999, + 0.846 + ] + ], + [ + 0.006, + [ + 0.998, + 0.999, + 0.846 + ] + ], + [ + 0.008, + [ + 0.996, + 0.998, + 0.841 + ] + ], + [ + 0.01, + [ + 0.996, + 0.998, + 0.841 + ] + ], + [ + 0.012, + [ + 0.993, + 0.997, + 0.836 + ] + ], + [ + 0.014, + [ + 0.993, + 0.997, + 0.836 + ] + ], + [ + 0.016, + [ + 0.991, + 0.997, + 0.831 + ] + ], + [ + 0.018, + [ + 0.991, + 0.997, + 0.831 + ] + ], + [ + 0.02, + [ + 0.989, + 0.996, + 0.826 + ] + ], + [ + 0.022, + [ + 0.989, + 0.996, + 0.826 + ] + ], + [ + 0.023, + [ + 0.987, + 0.995, + 0.821 + ] + ], + [ + 0.025, + [ + 0.987, + 0.995, + 0.821 + ] + ], + [ + 0.027, + [ + 0.984, + 0.994, + 0.817 + ] + ], + [ + 0.029, + [ + 0.984, + 0.994, + 0.817 + ] + ], + [ + 0.031, + [ + 0.982, + 0.993, + 0.812 + ] + ], + [ + 0.033, + [ + 0.982, + 0.993, + 0.812 + ] + ], + [ + 0.035, + [ + 0.98, + 0.992, + 0.807 + ] + ], + [ + 0.037, + [ + 0.98, + 0.992, + 0.807 + ] + ], + [ + 0.039, + [ + 0.978, + 0.991, + 0.802 + ] + ], + [ + 0.041, + [ + 0.978, + 0.991, + 0.802 + ] + ], + [ + 0.043, + [ + 0.976, + 0.991, + 0.797 + ] + ], + [ + 0.045, + [ + 0.976, + 0.991, + 0.797 + ] + ], + [ + 0.047, + [ + 0.973, + 0.99, + 0.792 + ] + ], + [ + 0.049, + [ + 0.973, + 0.99, + 0.792 + ] + ], + [ + 0.051, + [ + 0.971, + 0.989, + 0.787 + ] + ], + [ + 0.053, + [ + 0.971, + 0.989, + 0.787 + ] + ], + [ + 0.055, + [ + 0.969, + 0.988, + 0.782 + ] + ], + [ + 0.057, + [ + 0.969, + 0.988, + 0.782 + ] + ], + [ + 0.059, + [ + 0.967, + 0.987, + 0.777 + ] + ], + [ + 0.061, + [ + 0.967, + 0.987, + 0.777 + ] + ], + [ + 0.063, + [ + 0.965, + 0.986, + 0.772 + ] + ], + [ + 0.065, + [ + 0.965, + 0.986, + 0.772 + ] + ], + [ + 0.067, + [ + 0.962, + 0.985, + 0.767 + ] + ], + [ + 0.068, + [ + 0.962, + 0.985, + 0.767 + ] + ], + [ + 0.07, + [ + 0.96, + 0.984, + 0.762 + ] + ], + [ + 0.072, + [ + 0.96, + 0.984, + 0.762 + ] + ], + [ + 0.074, + [ + 0.958, + 0.984, + 0.757 + ] + ], + [ + 0.076, + [ + 0.958, + 0.984, + 0.757 + ] + ], + [ + 0.078, + [ + 0.956, + 0.983, + 0.753 + ] + ], + [ + 0.08, + [ + 0.956, + 0.983, + 0.753 + ] + ], + [ + 0.082, + [ + 0.953, + 0.982, + 0.748 + ] + ], + [ + 0.084, + [ + 0.953, + 0.982, + 0.748 + ] + ], + [ + 0.086, + [ + 0.951, + 0.981, + 0.743 + ] + ], + [ + 0.088, + [ + 0.951, + 0.981, + 0.743 + ] + ], + [ + 0.09, + [ + 0.949, + 0.98, + 0.738 + ] + ], + [ + 0.092, + [ + 0.949, + 0.98, + 0.738 + ] + ], + [ + 0.094, + [ + 0.947, + 0.979, + 0.733 + ] + ], + [ + 0.096, + [ + 0.947, + 0.979, + 0.733 + ] + ], + [ + 0.098, + [ + 0.945, + 0.978, + 0.728 + ] + ], + [ + 0.1, + [ + 0.945, + 0.978, + 0.728 + ] + ], + [ + 0.102, + [ + 0.942, + 0.978, + 0.723 + ] + ], + [ + 0.104, + [ + 0.942, + 0.978, + 0.723 + ] + ], + [ + 0.106, + [ + 0.94, + 0.977, + 0.718 + ] + ], + [ + 0.108, + [ + 0.94, + 0.977, + 0.718 + ] + ], + [ + 0.11, + [ + 0.938, + 0.976, + 0.713 + ] + ], + [ + 0.112, + [ + 0.938, + 0.976, + 0.713 + ] + ], + [ + 0.114, + [ + 0.936, + 0.975, + 0.708 + ] + ], + [ + 0.115, + [ + 0.936, + 0.975, + 0.708 + ] + ], + [ + 0.117, + [ + 0.934, + 0.974, + 0.703 + ] + ], + [ + 0.119, + [ + 0.934, + 0.974, + 0.703 + ] + ], + [ + 0.121, + [ + 0.931, + 0.973, + 0.698 + ] + ], + [ + 0.123, + [ + 0.931, + 0.973, + 0.698 + ] + ], + [ + 0.125, + [ + 0.929, + 0.972, + 0.694 + ] + ], + [ + 0.127, + [ + 0.929, + 0.972, + 0.694 + ] + ], + [ + 0.129, + [ + 0.924, + 0.97, + 0.695 + ] + ], + [ + 0.131, + [ + 0.924, + 0.97, + 0.695 + ] + ], + [ + 0.133, + [ + 0.919, + 0.969, + 0.695 + ] + ], + [ + 0.135, + [ + 0.919, + 0.969, + 0.695 + ] + ], + [ + 0.137, + [ + 0.915, + 0.967, + 0.695 + ] + ], + [ + 0.139, + [ + 0.915, + 0.967, + 0.695 + ] + ], + [ + 0.141, + [ + 0.91, + 0.965, + 0.696 + ] + ], + [ + 0.143, + [ + 0.91, + 0.965, + 0.696 + ] + ], + [ + 0.145, + [ + 0.905, + 0.963, + 0.696 + ] + ], + [ + 0.147, + [ + 0.905, + 0.963, + 0.696 + ] + ], + [ + 0.149, + [ + 0.901, + 0.961, + 0.696 + ] + ], + [ + 0.151, + [ + 0.901, + 0.961, + 0.696 + ] + ], + [ + 0.153, + [ + 0.896, + 0.959, + 0.697 + ] + ], + [ + 0.155, + [ + 0.896, + 0.959, + 0.697 + ] + ], + [ + 0.157, + [ + 0.891, + 0.958, + 0.697 + ] + ], + [ + 0.159, + [ + 0.891, + 0.958, + 0.697 + ] + ], + [ + 0.16, + [ + 0.887, + 0.956, + 0.697 + ] + ], + [ + 0.162, + [ + 0.887, + 0.956, + 0.697 + ] + ], + [ + 0.164, + [ + 0.882, + 0.954, + 0.698 + ] + ], + [ + 0.166, + [ + 0.882, + 0.954, + 0.698 + ] + ], + [ + 0.168, + [ + 0.877, + 0.952, + 0.698 + ] + ], + [ + 0.17, + [ + 0.877, + 0.952, + 0.698 + ] + ], + [ + 0.172, + [ + 0.873, + 0.95, + 0.699 + ] + ], + [ + 0.174, + [ + 0.873, + 0.95, + 0.699 + ] + ], + [ + 0.176, + [ + 0.868, + 0.948, + 0.699 + ] + ], + [ + 0.178, + [ + 0.868, + 0.948, + 0.699 + ] + ], + [ + 0.18, + [ + 0.863, + 0.946, + 0.699 + ] + ], + [ + 0.182, + [ + 0.863, + 0.946, + 0.699 + ] + ], + [ + 0.184, + [ + 0.859, + 0.945, + 0.7 + ] + ], + [ + 0.186, + [ + 0.859, + 0.945, + 0.7 + ] + ], + [ + 0.188, + [ + 0.854, + 0.943, + 0.7 + ] + ], + [ + 0.19, + [ + 0.854, + 0.943, + 0.7 + ] + ], + [ + 0.192, + [ + 0.849, + 0.941, + 0.7 + ] + ], + [ + 0.194, + [ + 0.849, + 0.941, + 0.7 + ] + ], + [ + 0.196, + [ + 0.845, + 0.939, + 0.701 + ] + ], + [ + 0.198, + [ + 0.845, + 0.939, + 0.701 + ] + ], + [ + 0.2, + [ + 0.84, + 0.937, + 0.701 + ] + ], + [ + 0.202, + [ + 0.84, + 0.937, + 0.701 + ] + ], + [ + 0.204, + [ + 0.835, + 0.935, + 0.702 + ] + ], + [ + 0.205, + [ + 0.835, + 0.935, + 0.702 + ] + ], + [ + 0.207, + [ + 0.831, + 0.934, + 0.702 + ] + ], + [ + 0.209, + [ + 0.831, + 0.934, + 0.702 + ] + ], + [ + 0.211, + [ + 0.826, + 0.932, + 0.702 + ] + ], + [ + 0.213, + [ + 0.826, + 0.932, + 0.702 + ] + ], + [ + 0.215, + [ + 0.821, + 0.93, + 0.703 + ] + ], + [ + 0.217, + [ + 0.821, + 0.93, + 0.703 + ] + ], + [ + 0.219, + [ + 0.817, + 0.928, + 0.703 + ] + ], + [ + 0.221, + [ + 0.817, + 0.928, + 0.703 + ] + ], + [ + 0.223, + [ + 0.812, + 0.926, + 0.703 + ] + ], + [ + 0.225, + [ + 0.812, + 0.926, + 0.703 + ] + ], + [ + 0.227, + [ + 0.807, + 0.924, + 0.704 + ] + ], + [ + 0.229, + [ + 0.807, + 0.924, + 0.704 + ] + ], + [ + 0.231, + [ + 0.803, + 0.922, + 0.704 + ] + ], + [ + 0.233, + [ + 0.803, + 0.922, + 0.704 + ] + ], + [ + 0.235, + [ + 0.798, + 0.921, + 0.704 + ] + ], + [ + 0.237, + [ + 0.798, + 0.921, + 0.704 + ] + ], + [ + 0.239, + [ + 0.793, + 0.919, + 0.705 + ] + ], + [ + 0.241, + [ + 0.793, + 0.919, + 0.705 + ] + ], + [ + 0.243, + [ + 0.789, + 0.917, + 0.705 + ] + ], + [ + 0.245, + [ + 0.789, + 0.917, + 0.705 + ] + ], + [ + 0.247, + [ + 0.784, + 0.915, + 0.706 + ] + ], + [ + 0.249, + [ + 0.784, + 0.915, + 0.706 + ] + ], + [ + 0.25, + [ + 0.778, + 0.913, + 0.706 + ] + ], + [ + 0.252, + [ + 0.778, + 0.913, + 0.706 + ] + ], + [ + 0.254, + [ + 0.769, + 0.909, + 0.707 + ] + ], + [ + 0.256, + [ + 0.769, + 0.909, + 0.707 + ] + ], + [ + 0.258, + [ + 0.76, + 0.906, + 0.708 + ] + ], + [ + 0.26, + [ + 0.76, + 0.906, + 0.708 + ] + ], + [ + 0.262, + [ + 0.752, + 0.903, + 0.709 + ] + ], + [ + 0.264, + [ + 0.752, + 0.903, + 0.709 + ] + ], + [ + 0.266, + [ + 0.743, + 0.899, + 0.71 + ] + ], + [ + 0.268, + [ + 0.743, + 0.899, + 0.71 + ] + ], + [ + 0.27, + [ + 0.734, + 0.896, + 0.71 + ] + ], + [ + 0.272, + [ + 0.734, + 0.896, + 0.71 + ] + ], + [ + 0.274, + [ + 0.725, + 0.892, + 0.711 + ] + ], + [ + 0.276, + [ + 0.725, + 0.892, + 0.711 + ] + ], + [ + 0.278, + [ + 0.716, + 0.889, + 0.712 + ] + ], + [ + 0.28, + [ + 0.716, + 0.889, + 0.712 + ] + ], + [ + 0.282, + [ + 0.707, + 0.885, + 0.713 + ] + ], + [ + 0.284, + [ + 0.707, + 0.885, + 0.713 + ] + ], + [ + 0.286, + [ + 0.698, + 0.882, + 0.714 + ] + ], + [ + 0.288, + [ + 0.698, + 0.882, + 0.714 + ] + ], + [ + 0.29, + [ + 0.69, + 0.878, + 0.715 + ] + ], + [ + 0.292, + [ + 0.69, + 0.878, + 0.715 + ] + ], + [ + 0.294, + [ + 0.681, + 0.875, + 0.716 + ] + ], + [ + 0.295, + [ + 0.681, + 0.875, + 0.716 + ] + ], + [ + 0.297, + [ + 0.672, + 0.872, + 0.716 + ] + ], + [ + 0.299, + [ + 0.672, + 0.872, + 0.716 + ] + ], + [ + 0.301, + [ + 0.663, + 0.868, + 0.717 + ] + ], + [ + 0.303, + [ + 0.663, + 0.868, + 0.717 + ] + ], + [ + 0.305, + [ + 0.654, + 0.865, + 0.718 + ] + ], + [ + 0.307, + [ + 0.654, + 0.865, + 0.718 + ] + ], + [ + 0.309, + [ + 0.645, + 0.861, + 0.719 + ] + ], + [ + 0.311, + [ + 0.645, + 0.861, + 0.719 + ] + ], + [ + 0.313, + [ + 0.636, + 0.858, + 0.72 + ] + ], + [ + 0.315, + [ + 0.636, + 0.858, + 0.72 + ] + ], + [ + 0.317, + [ + 0.628, + 0.854, + 0.721 + ] + ], + [ + 0.319, + [ + 0.628, + 0.854, + 0.721 + ] + ], + [ + 0.321, + [ + 0.619, + 0.851, + 0.722 + ] + ], + [ + 0.323, + [ + 0.619, + 0.851, + 0.722 + ] + ], + [ + 0.325, + [ + 0.61, + 0.847, + 0.722 + ] + ], + [ + 0.327, + [ + 0.61, + 0.847, + 0.722 + ] + ], + [ + 0.329, + [ + 0.601, + 0.844, + 0.723 + ] + ], + [ + 0.331, + [ + 0.601, + 0.844, + 0.723 + ] + ], + [ + 0.333, + [ + 0.592, + 0.841, + 0.724 + ] + ], + [ + 0.335, + [ + 0.592, + 0.841, + 0.724 + ] + ], + [ + 0.337, + [ + 0.583, + 0.837, + 0.725 + ] + ], + [ + 0.339, + [ + 0.583, + 0.837, + 0.725 + ] + ], + [ + 0.341, + [ + 0.574, + 0.834, + 0.726 + ] + ], + [ + 0.342, + [ + 0.574, + 0.834, + 0.726 + ] + ], + [ + 0.344, + [ + 0.566, + 0.83, + 0.727 + ] + ], + [ + 0.346, + [ + 0.566, + 0.83, + 0.727 + ] + ], + [ + 0.348, + [ + 0.557, + 0.827, + 0.728 + ] + ], + [ + 0.35, + [ + 0.557, + 0.827, + 0.728 + ] + ], + [ + 0.352, + [ + 0.548, + 0.823, + 0.728 + ] + ], + [ + 0.354, + [ + 0.548, + 0.823, + 0.728 + ] + ], + [ + 0.356, + [ + 0.539, + 0.82, + 0.729 + ] + ], + [ + 0.358, + [ + 0.539, + 0.82, + 0.729 + ] + ], + [ + 0.36, + [ + 0.53, + 0.816, + 0.73 + ] + ], + [ + 0.362, + [ + 0.53, + 0.816, + 0.73 + ] + ], + [ + 0.364, + [ + 0.521, + 0.813, + 0.731 + ] + ], + [ + 0.366, + [ + 0.521, + 0.813, + 0.731 + ] + ], + [ + 0.368, + [ + 0.512, + 0.81, + 0.732 + ] + ], + [ + 0.37, + [ + 0.512, + 0.81, + 0.732 + ] + ], + [ + 0.372, + [ + 0.504, + 0.806, + 0.733 + ] + ], + [ + 0.374, + [ + 0.504, + 0.806, + 0.733 + ] + ], + [ + 0.376, + [ + 0.495, + 0.803, + 0.734 + ] + ], + [ + 0.378, + [ + 0.495, + 0.803, + 0.734 + ] + ], + [ + 0.38, + [ + 0.488, + 0.8, + 0.735 + ] + ], + [ + 0.382, + [ + 0.488, + 0.8, + 0.735 + ] + ], + [ + 0.384, + [ + 0.48, + 0.797, + 0.736 + ] + ], + [ + 0.386, + [ + 0.48, + 0.797, + 0.736 + ] + ], + [ + 0.387, + [ + 0.472, + 0.794, + 0.737 + ] + ], + [ + 0.389, + [ + 0.472, + 0.794, + 0.737 + ] + ], + [ + 0.391, + [ + 0.465, + 0.792, + 0.738 + ] + ], + [ + 0.393, + [ + 0.465, + 0.792, + 0.738 + ] + ], + [ + 0.395, + [ + 0.457, + 0.789, + 0.739 + ] + ], + [ + 0.397, + [ + 0.457, + 0.789, + 0.739 + ] + ], + [ + 0.399, + [ + 0.449, + 0.786, + 0.74 + ] + ], + [ + 0.401, + [ + 0.449, + 0.786, + 0.74 + ] + ], + [ + 0.403, + [ + 0.442, + 0.783, + 0.741 + ] + ], + [ + 0.405, + [ + 0.442, + 0.783, + 0.741 + ] + ], + [ + 0.407, + [ + 0.434, + 0.78, + 0.743 + ] + ], + [ + 0.409, + [ + 0.434, + 0.78, + 0.743 + ] + ], + [ + 0.411, + [ + 0.427, + 0.777, + 0.744 + ] + ], + [ + 0.413, + [ + 0.427, + 0.777, + 0.744 + ] + ], + [ + 0.415, + [ + 0.419, + 0.775, + 0.745 + ] + ], + [ + 0.417, + [ + 0.419, + 0.775, + 0.745 + ] + ], + [ + 0.419, + [ + 0.411, + 0.772, + 0.746 + ] + ], + [ + 0.421, + [ + 0.411, + 0.772, + 0.746 + ] + ], + [ + 0.423, + [ + 0.404, + 0.769, + 0.747 + ] + ], + [ + 0.425, + [ + 0.404, + 0.769, + 0.747 + ] + ], + [ + 0.427, + [ + 0.396, + 0.766, + 0.748 + ] + ], + [ + 0.429, + [ + 0.396, + 0.766, + 0.748 + ] + ], + [ + 0.431, + [ + 0.388, + 0.763, + 0.749 + ] + ], + [ + 0.432, + [ + 0.388, + 0.763, + 0.749 + ] + ], + [ + 0.434, + [ + 0.381, + 0.76, + 0.75 + ] + ], + [ + 0.436, + [ + 0.381, + 0.76, + 0.75 + ] + ], + [ + 0.438, + [ + 0.373, + 0.758, + 0.751 + ] + ], + [ + 0.44, + [ + 0.373, + 0.758, + 0.751 + ] + ], + [ + 0.442, + [ + 0.366, + 0.755, + 0.753 + ] + ], + [ + 0.444, + [ + 0.366, + 0.755, + 0.753 + ] + ], + [ + 0.446, + [ + 0.358, + 0.752, + 0.754 + ] + ], + [ + 0.448, + [ + 0.358, + 0.752, + 0.754 + ] + ], + [ + 0.45, + [ + 0.35, + 0.749, + 0.755 + ] + ], + [ + 0.452, + [ + 0.35, + 0.749, + 0.755 + ] + ], + [ + 0.454, + [ + 0.343, + 0.746, + 0.756 + ] + ], + [ + 0.456, + [ + 0.343, + 0.746, + 0.756 + ] + ], + [ + 0.458, + [ + 0.335, + 0.743, + 0.757 + ] + ], + [ + 0.46, + [ + 0.335, + 0.743, + 0.757 + ] + ], + [ + 0.462, + [ + 0.327, + 0.741, + 0.758 + ] + ], + [ + 0.464, + [ + 0.327, + 0.741, + 0.758 + ] + ], + [ + 0.466, + [ + 0.32, + 0.738, + 0.759 + ] + ], + [ + 0.468, + [ + 0.32, + 0.738, + 0.759 + ] + ], + [ + 0.47, + [ + 0.312, + 0.735, + 0.76 + ] + ], + [ + 0.472, + [ + 0.312, + 0.735, + 0.76 + ] + ], + [ + 0.474, + [ + 0.304, + 0.732, + 0.761 + ] + ], + [ + 0.476, + [ + 0.304, + 0.732, + 0.761 + ] + ], + [ + 0.477, + [ + 0.297, + 0.729, + 0.763 + ] + ], + [ + 0.479, + [ + 0.297, + 0.729, + 0.763 + ] + ], + [ + 0.481, + [ + 0.289, + 0.726, + 0.764 + ] + ], + [ + 0.483, + [ + 0.289, + 0.726, + 0.764 + ] + ], + [ + 0.485, + [ + 0.282, + 0.724, + 0.765 + ] + ], + [ + 0.487, + [ + 0.282, + 0.724, + 0.765 + ] + ], + [ + 0.489, + [ + 0.274, + 0.721, + 0.766 + ] + ], + [ + 0.491, + [ + 0.274, + 0.721, + 0.766 + ] + ], + [ + 0.493, + [ + 0.266, + 0.718, + 0.767 + ] + ], + [ + 0.495, + [ + 0.266, + 0.718, + 0.767 + ] + ], + [ + 0.497, + [ + 0.259, + 0.715, + 0.768 + ] + ], + [ + 0.499, + [ + 0.259, + 0.715, + 0.768 + ] + ], + [ + 0.501, + [ + 0.253, + 0.711, + 0.768 + ] + ], + [ + 0.503, + [ + 0.253, + 0.711, + 0.768 + ] + ], + [ + 0.505, + [ + 0.248, + 0.707, + 0.768 + ] + ], + [ + 0.507, + [ + 0.248, + 0.707, + 0.768 + ] + ], + [ + 0.509, + [ + 0.244, + 0.702, + 0.767 + ] + ], + [ + 0.511, + [ + 0.244, + 0.702, + 0.767 + ] + ], + [ + 0.513, + [ + 0.239, + 0.698, + 0.767 + ] + ], + [ + 0.515, + [ + 0.239, + 0.698, + 0.767 + ] + ], + [ + 0.517, + [ + 0.235, + 0.693, + 0.766 + ] + ], + [ + 0.519, + [ + 0.235, + 0.693, + 0.766 + ] + ], + [ + 0.521, + [ + 0.231, + 0.689, + 0.766 + ] + ], + [ + 0.523, + [ + 0.231, + 0.689, + 0.766 + ] + ], + [ + 0.524, + [ + 0.226, + 0.684, + 0.765 + ] + ], + [ + 0.526, + [ + 0.226, + 0.684, + 0.765 + ] + ], + [ + 0.528, + [ + 0.222, + 0.68, + 0.765 + ] + ], + [ + 0.53, + [ + 0.222, + 0.68, + 0.765 + ] + ], + [ + 0.532, + [ + 0.217, + 0.675, + 0.764 + ] + ], + [ + 0.534, + [ + 0.217, + 0.675, + 0.764 + ] + ], + [ + 0.536, + [ + 0.213, + 0.67, + 0.764 + ] + ], + [ + 0.538, + [ + 0.213, + 0.67, + 0.764 + ] + ], + [ + 0.54, + [ + 0.208, + 0.666, + 0.763 + ] + ], + [ + 0.542, + [ + 0.208, + 0.666, + 0.763 + ] + ], + [ + 0.544, + [ + 0.204, + 0.661, + 0.763 + ] + ], + [ + 0.546, + [ + 0.204, + 0.661, + 0.763 + ] + ], + [ + 0.548, + [ + 0.2, + 0.657, + 0.762 + ] + ], + [ + 0.55, + [ + 0.2, + 0.657, + 0.762 + ] + ], + [ + 0.552, + [ + 0.195, + 0.652, + 0.762 + ] + ], + [ + 0.554, + [ + 0.195, + 0.652, + 0.762 + ] + ], + [ + 0.556, + [ + 0.191, + 0.648, + 0.761 + ] + ], + [ + 0.558, + [ + 0.191, + 0.648, + 0.761 + ] + ], + [ + 0.56, + [ + 0.186, + 0.643, + 0.761 + ] + ], + [ + 0.562, + [ + 0.186, + 0.643, + 0.761 + ] + ], + [ + 0.564, + [ + 0.182, + 0.639, + 0.761 + ] + ], + [ + 0.566, + [ + 0.182, + 0.639, + 0.761 + ] + ], + [ + 0.568, + [ + 0.177, + 0.634, + 0.76 + ] + ], + [ + 0.569, + [ + 0.177, + 0.634, + 0.76 + ] + ], + [ + 0.571, + [ + 0.173, + 0.63, + 0.76 + ] + ], + [ + 0.573, + [ + 0.173, + 0.63, + 0.76 + ] + ], + [ + 0.575, + [ + 0.169, + 0.625, + 0.759 + ] + ], + [ + 0.577, + [ + 0.169, + 0.625, + 0.759 + ] + ], + [ + 0.579, + [ + 0.164, + 0.62, + 0.759 + ] + ], + [ + 0.581, + [ + 0.164, + 0.62, + 0.759 + ] + ], + [ + 0.583, + [ + 0.16, + 0.616, + 0.758 + ] + ], + [ + 0.585, + [ + 0.16, + 0.616, + 0.758 + ] + ], + [ + 0.587, + [ + 0.155, + 0.611, + 0.758 + ] + ], + [ + 0.589, + [ + 0.155, + 0.611, + 0.758 + ] + ], + [ + 0.591, + [ + 0.151, + 0.607, + 0.757 + ] + ], + [ + 0.593, + [ + 0.151, + 0.607, + 0.757 + ] + ], + [ + 0.595, + [ + 0.146, + 0.602, + 0.757 + ] + ], + [ + 0.597, + [ + 0.146, + 0.602, + 0.757 + ] + ], + [ + 0.599, + [ + 0.142, + 0.598, + 0.756 + ] + ], + [ + 0.601, + [ + 0.142, + 0.598, + 0.756 + ] + ], + [ + 0.603, + [ + 0.138, + 0.593, + 0.756 + ] + ], + [ + 0.605, + [ + 0.138, + 0.593, + 0.756 + ] + ], + [ + 0.607, + [ + 0.133, + 0.589, + 0.755 + ] + ], + [ + 0.609, + [ + 0.133, + 0.589, + 0.755 + ] + ], + [ + 0.611, + [ + 0.129, + 0.584, + 0.755 + ] + ], + [ + 0.613, + [ + 0.129, + 0.584, + 0.755 + ] + ], + [ + 0.614, + [ + 0.124, + 0.579, + 0.754 + ] + ], + [ + 0.616, + [ + 0.124, + 0.579, + 0.754 + ] + ], + [ + 0.618, + [ + 0.12, + 0.575, + 0.754 + ] + ], + [ + 0.62, + [ + 0.12, + 0.575, + 0.754 + ] + ], + [ + 0.622, + [ + 0.115, + 0.57, + 0.753 + ] + ], + [ + 0.624, + [ + 0.115, + 0.57, + 0.753 + ] + ], + [ + 0.626, + [ + 0.114, + 0.565, + 0.751 + ] + ], + [ + 0.628, + [ + 0.114, + 0.565, + 0.751 + ] + ], + [ + 0.63, + [ + 0.115, + 0.558, + 0.748 + ] + ], + [ + 0.632, + [ + 0.115, + 0.558, + 0.748 + ] + ], + [ + 0.634, + [ + 0.115, + 0.552, + 0.745 + ] + ], + [ + 0.636, + [ + 0.115, + 0.552, + 0.745 + ] + ], + [ + 0.638, + [ + 0.116, + 0.546, + 0.742 + ] + ], + [ + 0.64, + [ + 0.116, + 0.546, + 0.742 + ] + ], + [ + 0.642, + [ + 0.117, + 0.54, + 0.739 + ] + ], + [ + 0.644, + [ + 0.117, + 0.54, + 0.739 + ] + ], + [ + 0.646, + [ + 0.117, + 0.533, + 0.736 + ] + ], + [ + 0.648, + [ + 0.117, + 0.533, + 0.736 + ] + ], + [ + 0.65, + [ + 0.118, + 0.527, + 0.733 + ] + ], + [ + 0.652, + [ + 0.118, + 0.527, + 0.733 + ] + ], + [ + 0.654, + [ + 0.118, + 0.521, + 0.73 + ] + ], + [ + 0.656, + [ + 0.118, + 0.521, + 0.73 + ] + ], + [ + 0.658, + [ + 0.119, + 0.515, + 0.727 + ] + ], + [ + 0.659, + [ + 0.119, + 0.515, + 0.727 + ] + ], + [ + 0.661, + [ + 0.12, + 0.508, + 0.725 + ] + ], + [ + 0.663, + [ + 0.12, + 0.508, + 0.725 + ] + ], + [ + 0.665, + [ + 0.12, + 0.502, + 0.722 + ] + ], + [ + 0.667, + [ + 0.12, + 0.502, + 0.722 + ] + ], + [ + 0.669, + [ + 0.121, + 0.496, + 0.719 + ] + ], + [ + 0.671, + [ + 0.121, + 0.496, + 0.719 + ] + ], + [ + 0.673, + [ + 0.121, + 0.489, + 0.716 + ] + ], + [ + 0.675, + [ + 0.121, + 0.489, + 0.716 + ] + ], + [ + 0.677, + [ + 0.122, + 0.483, + 0.713 + ] + ], + [ + 0.679, + [ + 0.122, + 0.483, + 0.713 + ] + ], + [ + 0.681, + [ + 0.123, + 0.477, + 0.71 + ] + ], + [ + 0.683, + [ + 0.123, + 0.477, + 0.71 + ] + ], + [ + 0.685, + [ + 0.123, + 0.471, + 0.707 + ] + ], + [ + 0.687, + [ + 0.123, + 0.471, + 0.707 + ] + ], + [ + 0.689, + [ + 0.124, + 0.464, + 0.704 + ] + ], + [ + 0.691, + [ + 0.124, + 0.464, + 0.704 + ] + ], + [ + 0.693, + [ + 0.125, + 0.458, + 0.701 + ] + ], + [ + 0.695, + [ + 0.125, + 0.458, + 0.701 + ] + ], + [ + 0.697, + [ + 0.125, + 0.452, + 0.698 + ] + ], + [ + 0.699, + [ + 0.125, + 0.452, + 0.698 + ] + ], + [ + 0.701, + [ + 0.126, + 0.445, + 0.695 + ] + ], + [ + 0.703, + [ + 0.126, + 0.445, + 0.695 + ] + ], + [ + 0.705, + [ + 0.126, + 0.439, + 0.692 + ] + ], + [ + 0.706, + [ + 0.126, + 0.439, + 0.692 + ] + ], + [ + 0.708, + [ + 0.127, + 0.433, + 0.689 + ] + ], + [ + 0.71, + [ + 0.127, + 0.433, + 0.689 + ] + ], + [ + 0.712, + [ + 0.128, + 0.427, + 0.686 + ] + ], + [ + 0.714, + [ + 0.128, + 0.427, + 0.686 + ] + ], + [ + 0.716, + [ + 0.128, + 0.42, + 0.683 + ] + ], + [ + 0.718, + [ + 0.128, + 0.42, + 0.683 + ] + ], + [ + 0.72, + [ + 0.129, + 0.414, + 0.68 + ] + ], + [ + 0.722, + [ + 0.129, + 0.414, + 0.68 + ] + ], + [ + 0.724, + [ + 0.129, + 0.408, + 0.677 + ] + ], + [ + 0.726, + [ + 0.129, + 0.408, + 0.677 + ] + ], + [ + 0.728, + [ + 0.13, + 0.402, + 0.674 + ] + ], + [ + 0.73, + [ + 0.13, + 0.402, + 0.674 + ] + ], + [ + 0.732, + [ + 0.131, + 0.395, + 0.671 + ] + ], + [ + 0.734, + [ + 0.131, + 0.395, + 0.671 + ] + ], + [ + 0.736, + [ + 0.131, + 0.389, + 0.668 + ] + ], + [ + 0.738, + [ + 0.131, + 0.389, + 0.668 + ] + ], + [ + 0.74, + [ + 0.132, + 0.383, + 0.665 + ] + ], + [ + 0.742, + [ + 0.132, + 0.383, + 0.665 + ] + ], + [ + 0.744, + [ + 0.133, + 0.376, + 0.663 + ] + ], + [ + 0.746, + [ + 0.133, + 0.376, + 0.663 + ] + ], + [ + 0.748, + [ + 0.133, + 0.37, + 0.66 + ] + ], + [ + 0.75, + [ + 0.133, + 0.37, + 0.66 + ] + ], + [ + 0.751, + [ + 0.134, + 0.365, + 0.657 + ] + ], + [ + 0.753, + [ + 0.134, + 0.365, + 0.657 + ] + ], + [ + 0.755, + [ + 0.134, + 0.36, + 0.655 + ] + ], + [ + 0.757, + [ + 0.134, + 0.36, + 0.655 + ] + ], + [ + 0.759, + [ + 0.134, + 0.354, + 0.652 + ] + ], + [ + 0.761, + [ + 0.134, + 0.354, + 0.652 + ] + ], + [ + 0.763, + [ + 0.135, + 0.349, + 0.65 + ] + ], + [ + 0.765, + [ + 0.135, + 0.349, + 0.65 + ] + ], + [ + 0.767, + [ + 0.135, + 0.344, + 0.647 + ] + ], + [ + 0.769, + [ + 0.135, + 0.344, + 0.647 + ] + ], + [ + 0.771, + [ + 0.135, + 0.339, + 0.645 + ] + ], + [ + 0.773, + [ + 0.135, + 0.339, + 0.645 + ] + ], + [ + 0.775, + [ + 0.136, + 0.334, + 0.642 + ] + ], + [ + 0.777, + [ + 0.136, + 0.334, + 0.642 + ] + ], + [ + 0.779, + [ + 0.136, + 0.329, + 0.64 + ] + ], + [ + 0.781, + [ + 0.136, + 0.329, + 0.64 + ] + ], + [ + 0.783, + [ + 0.137, + 0.323, + 0.637 + ] + ], + [ + 0.785, + [ + 0.137, + 0.323, + 0.637 + ] + ], + [ + 0.787, + [ + 0.137, + 0.318, + 0.635 + ] + ], + [ + 0.789, + [ + 0.137, + 0.318, + 0.635 + ] + ], + [ + 0.791, + [ + 0.137, + 0.313, + 0.632 + ] + ], + [ + 0.793, + [ + 0.137, + 0.313, + 0.632 + ] + ], + [ + 0.795, + [ + 0.138, + 0.308, + 0.63 + ] + ], + [ + 0.796, + [ + 0.138, + 0.308, + 0.63 + ] + ], + [ + 0.798, + [ + 0.138, + 0.303, + 0.627 + ] + ], + [ + 0.8, + [ + 0.138, + 0.303, + 0.627 + ] + ], + [ + 0.802, + [ + 0.138, + 0.298, + 0.625 + ] + ], + [ + 0.804, + [ + 0.138, + 0.298, + 0.625 + ] + ], + [ + 0.806, + [ + 0.139, + 0.292, + 0.623 + ] + ], + [ + 0.808, + [ + 0.139, + 0.292, + 0.623 + ] + ], + [ + 0.81, + [ + 0.139, + 0.287, + 0.62 + ] + ], + [ + 0.812, + [ + 0.139, + 0.287, + 0.62 + ] + ], + [ + 0.814, + [ + 0.14, + 0.282, + 0.618 + ] + ], + [ + 0.816, + [ + 0.14, + 0.282, + 0.618 + ] + ], + [ + 0.818, + [ + 0.14, + 0.277, + 0.615 + ] + ], + [ + 0.82, + [ + 0.14, + 0.277, + 0.615 + ] + ], + [ + 0.822, + [ + 0.14, + 0.272, + 0.613 + ] + ], + [ + 0.824, + [ + 0.14, + 0.272, + 0.613 + ] + ], + [ + 0.826, + [ + 0.141, + 0.267, + 0.61 + ] + ], + [ + 0.828, + [ + 0.141, + 0.267, + 0.61 + ] + ], + [ + 0.83, + [ + 0.141, + 0.261, + 0.608 + ] + ], + [ + 0.832, + [ + 0.141, + 0.261, + 0.608 + ] + ], + [ + 0.834, + [ + 0.141, + 0.256, + 0.605 + ] + ], + [ + 0.836, + [ + 0.141, + 0.256, + 0.605 + ] + ], + [ + 0.838, + [ + 0.142, + 0.251, + 0.603 + ] + ], + [ + 0.84, + [ + 0.142, + 0.251, + 0.603 + ] + ], + [ + 0.841, + [ + 0.142, + 0.246, + 0.6 + ] + ], + [ + 0.843, + [ + 0.142, + 0.246, + 0.6 + ] + ], + [ + 0.845, + [ + 0.142, + 0.241, + 0.598 + ] + ], + [ + 0.847, + [ + 0.142, + 0.241, + 0.598 + ] + ], + [ + 0.849, + [ + 0.143, + 0.236, + 0.595 + ] + ], + [ + 0.851, + [ + 0.143, + 0.236, + 0.595 + ] + ], + [ + 0.853, + [ + 0.143, + 0.23, + 0.593 + ] + ], + [ + 0.855, + [ + 0.143, + 0.23, + 0.593 + ] + ], + [ + 0.857, + [ + 0.144, + 0.225, + 0.591 + ] + ], + [ + 0.859, + [ + 0.144, + 0.225, + 0.591 + ] + ], + [ + 0.861, + [ + 0.144, + 0.22, + 0.588 + ] + ], + [ + 0.863, + [ + 0.144, + 0.22, + 0.588 + ] + ], + [ + 0.865, + [ + 0.144, + 0.215, + 0.586 + ] + ], + [ + 0.867, + [ + 0.144, + 0.215, + 0.586 + ] + ], + [ + 0.869, + [ + 0.145, + 0.21, + 0.583 + ] + ], + [ + 0.871, + [ + 0.145, + 0.21, + 0.583 + ] + ], + [ + 0.873, + [ + 0.145, + 0.205, + 0.581 + ] + ], + [ + 0.875, + [ + 0.145, + 0.205, + 0.581 + ] + ], + [ + 0.877, + [ + 0.142, + 0.201, + 0.574 + ] + ], + [ + 0.879, + [ + 0.142, + 0.201, + 0.574 + ] + ], + [ + 0.881, + [ + 0.138, + 0.199, + 0.567 + ] + ], + [ + 0.883, + [ + 0.138, + 0.199, + 0.567 + ] + ], + [ + 0.885, + [ + 0.135, + 0.196, + 0.559 + ] + ], + [ + 0.886, + [ + 0.135, + 0.196, + 0.559 + ] + ], + [ + 0.888, + [ + 0.131, + 0.193, + 0.552 + ] + ], + [ + 0.89, + [ + 0.131, + 0.193, + 0.552 + ] + ], + [ + 0.892, + [ + 0.128, + 0.19, + 0.544 + ] + ], + [ + 0.894, + [ + 0.128, + 0.19, + 0.544 + ] + ], + [ + 0.896, + [ + 0.124, + 0.187, + 0.537 + ] + ], + [ + 0.898, + [ + 0.124, + 0.187, + 0.537 + ] + ], + [ + 0.9, + [ + 0.121, + 0.184, + 0.53 + ] + ], + [ + 0.902, + [ + 0.121, + 0.184, + 0.53 + ] + ], + [ + 0.904, + [ + 0.117, + 0.182, + 0.522 + ] + ], + [ + 0.906, + [ + 0.117, + 0.182, + 0.522 + ] + ], + [ + 0.908, + [ + 0.113, + 0.179, + 0.515 + ] + ], + [ + 0.91, + [ + 0.113, + 0.179, + 0.515 + ] + ], + [ + 0.912, + [ + 0.11, + 0.176, + 0.507 + ] + ], + [ + 0.914, + [ + 0.11, + 0.176, + 0.507 + ] + ], + [ + 0.916, + [ + 0.106, + 0.173, + 0.5 + ] + ], + [ + 0.918, + [ + 0.106, + 0.173, + 0.5 + ] + ], + [ + 0.92, + [ + 0.103, + 0.17, + 0.493 + ] + ], + [ + 0.922, + [ + 0.103, + 0.17, + 0.493 + ] + ], + [ + 0.924, + [ + 0.099, + 0.167, + 0.485 + ] + ], + [ + 0.926, + [ + 0.099, + 0.167, + 0.485 + ] + ], + [ + 0.928, + [ + 0.096, + 0.165, + 0.478 + ] + ], + [ + 0.93, + [ + 0.096, + 0.165, + 0.478 + ] + ], + [ + 0.932, + [ + 0.092, + 0.162, + 0.471 + ] + ], + [ + 0.933, + [ + 0.092, + 0.162, + 0.471 + ] + ], + [ + 0.935, + [ + 0.088, + 0.159, + 0.463 + ] + ], + [ + 0.937, + [ + 0.088, + 0.159, + 0.463 + ] + ], + [ + 0.939, + [ + 0.085, + 0.156, + 0.456 + ] + ], + [ + 0.941, + [ + 0.085, + 0.156, + 0.456 + ] + ], + [ + 0.943, + [ + 0.081, + 0.153, + 0.448 + ] + ], + [ + 0.945, + [ + 0.081, + 0.153, + 0.448 + ] + ], + [ + 0.947, + [ + 0.078, + 0.151, + 0.441 + ] + ], + [ + 0.949, + [ + 0.078, + 0.151, + 0.441 + ] + ], + [ + 0.951, + [ + 0.074, + 0.148, + 0.434 + ] + ], + [ + 0.953, + [ + 0.074, + 0.148, + 0.434 + ] + ], + [ + 0.955, + [ + 0.071, + 0.145, + 0.426 + ] + ], + [ + 0.957, + [ + 0.071, + 0.145, + 0.426 + ] + ], + [ + 0.959, + [ + 0.067, + 0.142, + 0.419 + ] + ], + [ + 0.961, + [ + 0.067, + 0.142, + 0.419 + ] + ], + [ + 0.963, + [ + 0.063, + 0.139, + 0.412 + ] + ], + [ + 0.965, + [ + 0.063, + 0.139, + 0.412 + ] + ], + [ + 0.967, + [ + 0.06, + 0.136, + 0.404 + ] + ], + [ + 0.969, + [ + 0.06, + 0.136, + 0.404 + ] + ], + [ + 0.971, + [ + 0.056, + 0.134, + 0.397 + ] + ], + [ + 0.973, + [ + 0.056, + 0.134, + 0.397 + ] + ], + [ + 0.975, + [ + 0.053, + 0.131, + 0.389 + ] + ], + [ + 0.977, + [ + 0.053, + 0.131, + 0.389 + ] + ], + [ + 0.978, + [ + 0.049, + 0.128, + 0.382 + ] + ], + [ + 0.98, + [ + 0.049, + 0.128, + 0.382 + ] + ], + [ + 0.982, + [ + 0.046, + 0.125, + 0.375 + ] + ], + [ + 0.984, + [ + 0.046, + 0.125, + 0.375 + ] + ], + [ + 0.986, + [ + 0.042, + 0.122, + 0.367 + ] + ], + [ + 0.988, + [ + 0.042, + 0.122, + 0.367 + ] + ], + [ + 0.99, + [ + 0.039, + 0.119, + 0.36 + ] + ], + [ + 0.992, + [ + 0.039, + 0.119, + 0.36 + ] + ], + [ + 0.994, + [ + 0.035, + 0.117, + 0.352 + ] + ], + [ + 0.996, + [ + 0.035, + 0.117, + 0.352 + ] + ], + [ + 0.998, + [ + 0.031, + 0.114, + 0.345 + ] + ], + [ + 1, + [ + 0.031, + 0.114, + 0.345 + ] + ] + ], + [ + [ + 0, + [ + 0, + 0, + 1 + ] + ], + [ + 0.002, + [ + 0, + 0, + 1 + ] + ], + [ + 0.004, + [ + 0, + 0.004, + 0.998 + ] + ], + [ + 0.006, + [ + 0, + 0.004, + 0.998 + ] + ], + [ + 0.008, + [ + 0, + 0.008, + 0.996 + ] + ], + [ + 0.01, + [ + 0, + 0.008, + 0.996 + ] + ], + [ + 0.012, + [ + 0, + 0.012, + 0.994 + ] + ], + [ + 0.014, + [ + 0, + 0.012, + 0.994 + ] + ], + [ + 0.016, + [ + 0, + 0.016, + 0.992 + ] + ], + [ + 0.018, + [ + 0, + 0.016, + 0.992 + ] + ], + [ + 0.02, + [ + 0, + 0.02, + 0.99 + ] + ], + [ + 0.022, + [ + 0, + 0.02, + 0.99 + ] + ], + [ + 0.023, + [ + 0, + 0.024, + 0.988 + ] + ], + [ + 0.025, + [ + 0, + 0.024, + 0.988 + ] + ], + [ + 0.027, + [ + 0, + 0.027, + 0.986 + ] + ], + [ + 0.029, + [ + 0, + 0.027, + 0.986 + ] + ], + [ + 0.031, + [ + 0, + 0.031, + 0.984 + ] + ], + [ + 0.033, + [ + 0, + 0.031, + 0.984 + ] + ], + [ + 0.035, + [ + 0, + 0.035, + 0.982 + ] + ], + [ + 0.037, + [ + 0, + 0.035, + 0.982 + ] + ], + [ + 0.039, + [ + 0, + 0.039, + 0.98 + ] + ], + [ + 0.041, + [ + 0, + 0.039, + 0.98 + ] + ], + [ + 0.043, + [ + 0, + 0.043, + 0.978 + ] + ], + [ + 0.045, + [ + 0, + 0.043, + 0.978 + ] + ], + [ + 0.047, + [ + 0, + 0.047, + 0.976 + ] + ], + [ + 0.049, + [ + 0, + 0.047, + 0.976 + ] + ], + [ + 0.051, + [ + 0, + 0.051, + 0.975 + ] + ], + [ + 0.053, + [ + 0, + 0.051, + 0.975 + ] + ], + [ + 0.055, + [ + 0, + 0.055, + 0.973 + ] + ], + [ + 0.057, + [ + 0, + 0.055, + 0.973 + ] + ], + [ + 0.059, + [ + 0, + 0.059, + 0.971 + ] + ], + [ + 0.061, + [ + 0, + 0.059, + 0.971 + ] + ], + [ + 0.063, + [ + 0, + 0.063, + 0.969 + ] + ], + [ + 0.065, + [ + 0, + 0.063, + 0.969 + ] + ], + [ + 0.067, + [ + 0, + 0.067, + 0.967 + ] + ], + [ + 0.068, + [ + 0, + 0.067, + 0.967 + ] + ], + [ + 0.07, + [ + 0, + 0.071, + 0.965 + ] + ], + [ + 0.072, + [ + 0, + 0.071, + 0.965 + ] + ], + [ + 0.074, + [ + 0, + 0.075, + 0.963 + ] + ], + [ + 0.076, + [ + 0, + 0.075, + 0.963 + ] + ], + [ + 0.078, + [ + 0, + 0.078, + 0.961 + ] + ], + [ + 0.08, + [ + 0, + 0.078, + 0.961 + ] + ], + [ + 0.082, + [ + 0, + 0.082, + 0.959 + ] + ], + [ + 0.084, + [ + 0, + 0.082, + 0.959 + ] + ], + [ + 0.086, + [ + 0, + 0.086, + 0.957 + ] + ], + [ + 0.088, + [ + 0, + 0.086, + 0.957 + ] + ], + [ + 0.09, + [ + 0, + 0.09, + 0.955 + ] + ], + [ + 0.092, + [ + 0, + 0.09, + 0.955 + ] + ], + [ + 0.094, + [ + 0, + 0.094, + 0.953 + ] + ], + [ + 0.096, + [ + 0, + 0.094, + 0.953 + ] + ], + [ + 0.098, + [ + 0, + 0.098, + 0.951 + ] + ], + [ + 0.1, + [ + 0, + 0.098, + 0.951 + ] + ], + [ + 0.102, + [ + 0, + 0.102, + 0.949 + ] + ], + [ + 0.104, + [ + 0, + 0.102, + 0.949 + ] + ], + [ + 0.106, + [ + 0, + 0.106, + 0.947 + ] + ], + [ + 0.108, + [ + 0, + 0.106, + 0.947 + ] + ], + [ + 0.11, + [ + 0, + 0.11, + 0.945 + ] + ], + [ + 0.112, + [ + 0, + 0.11, + 0.945 + ] + ], + [ + 0.114, + [ + 0, + 0.114, + 0.943 + ] + ], + [ + 0.115, + [ + 0, + 0.114, + 0.943 + ] + ], + [ + 0.117, + [ + 0, + 0.118, + 0.941 + ] + ], + [ + 0.119, + [ + 0, + 0.118, + 0.941 + ] + ], + [ + 0.121, + [ + 0, + 0.122, + 0.939 + ] + ], + [ + 0.123, + [ + 0, + 0.122, + 0.939 + ] + ], + [ + 0.125, + [ + 0, + 0.125, + 0.937 + ] + ], + [ + 0.127, + [ + 0, + 0.125, + 0.937 + ] + ], + [ + 0.129, + [ + 0, + 0.129, + 0.935 + ] + ], + [ + 0.131, + [ + 0, + 0.129, + 0.935 + ] + ], + [ + 0.133, + [ + 0, + 0.133, + 0.933 + ] + ], + [ + 0.135, + [ + 0, + 0.133, + 0.933 + ] + ], + [ + 0.137, + [ + 0, + 0.137, + 0.931 + ] + ], + [ + 0.139, + [ + 0, + 0.137, + 0.931 + ] + ], + [ + 0.141, + [ + 0, + 0.141, + 0.929 + ] + ], + [ + 0.143, + [ + 0, + 0.141, + 0.929 + ] + ], + [ + 0.145, + [ + 0, + 0.145, + 0.927 + ] + ], + [ + 0.147, + [ + 0, + 0.145, + 0.927 + ] + ], + [ + 0.149, + [ + 0, + 0.149, + 0.925 + ] + ], + [ + 0.151, + [ + 0, + 0.149, + 0.925 + ] + ], + [ + 0.153, + [ + 0, + 0.153, + 0.924 + ] + ], + [ + 0.155, + [ + 0, + 0.153, + 0.924 + ] + ], + [ + 0.157, + [ + 0, + 0.157, + 0.922 + ] + ], + [ + 0.159, + [ + 0, + 0.157, + 0.922 + ] + ], + [ + 0.16, + [ + 0, + 0.161, + 0.92 + ] + ], + [ + 0.162, + [ + 0, + 0.161, + 0.92 + ] + ], + [ + 0.164, + [ + 0, + 0.165, + 0.918 + ] + ], + [ + 0.166, + [ + 0, + 0.165, + 0.918 + ] + ], + [ + 0.168, + [ + 0, + 0.169, + 0.916 + ] + ], + [ + 0.17, + [ + 0, + 0.169, + 0.916 + ] + ], + [ + 0.172, + [ + 0, + 0.173, + 0.914 + ] + ], + [ + 0.174, + [ + 0, + 0.173, + 0.914 + ] + ], + [ + 0.176, + [ + 0, + 0.176, + 0.912 + ] + ], + [ + 0.178, + [ + 0, + 0.176, + 0.912 + ] + ], + [ + 0.18, + [ + 0, + 0.18, + 0.91 + ] + ], + [ + 0.182, + [ + 0, + 0.18, + 0.91 + ] + ], + [ + 0.184, + [ + 0, + 0.184, + 0.908 + ] + ], + [ + 0.186, + [ + 0, + 0.184, + 0.908 + ] + ], + [ + 0.188, + [ + 0, + 0.188, + 0.906 + ] + ], + [ + 0.19, + [ + 0, + 0.188, + 0.906 + ] + ], + [ + 0.192, + [ + 0, + 0.192, + 0.904 + ] + ], + [ + 0.194, + [ + 0, + 0.192, + 0.904 + ] + ], + [ + 0.196, + [ + 0, + 0.196, + 0.902 + ] + ], + [ + 0.198, + [ + 0, + 0.196, + 0.902 + ] + ], + [ + 0.2, + [ + 0, + 0.2, + 0.9 + ] + ], + [ + 0.202, + [ + 0, + 0.2, + 0.9 + ] + ], + [ + 0.204, + [ + 0, + 0.204, + 0.898 + ] + ], + [ + 0.205, + [ + 0, + 0.204, + 0.898 + ] + ], + [ + 0.207, + [ + 0, + 0.208, + 0.896 + ] + ], + [ + 0.209, + [ + 0, + 0.208, + 0.896 + ] + ], + [ + 0.211, + [ + 0, + 0.212, + 0.894 + ] + ], + [ + 0.213, + [ + 0, + 0.212, + 0.894 + ] + ], + [ + 0.215, + [ + 0, + 0.216, + 0.892 + ] + ], + [ + 0.217, + [ + 0, + 0.216, + 0.892 + ] + ], + [ + 0.219, + [ + 0, + 0.22, + 0.89 + ] + ], + [ + 0.221, + [ + 0, + 0.22, + 0.89 + ] + ], + [ + 0.223, + [ + 0, + 0.224, + 0.888 + ] + ], + [ + 0.225, + [ + 0, + 0.224, + 0.888 + ] + ], + [ + 0.227, + [ + 0, + 0.227, + 0.886 + ] + ], + [ + 0.229, + [ + 0, + 0.227, + 0.886 + ] + ], + [ + 0.231, + [ + 0, + 0.231, + 0.884 + ] + ], + [ + 0.233, + [ + 0, + 0.231, + 0.884 + ] + ], + [ + 0.235, + [ + 0, + 0.235, + 0.882 + ] + ], + [ + 0.237, + [ + 0, + 0.235, + 0.882 + ] + ], + [ + 0.239, + [ + 0, + 0.239, + 0.88 + ] + ], + [ + 0.241, + [ + 0, + 0.239, + 0.88 + ] + ], + [ + 0.243, + [ + 0, + 0.243, + 0.878 + ] + ], + [ + 0.245, + [ + 0, + 0.243, + 0.878 + ] + ], + [ + 0.247, + [ + 0, + 0.247, + 0.876 + ] + ], + [ + 0.249, + [ + 0, + 0.247, + 0.876 + ] + ], + [ + 0.25, + [ + 0, + 0.251, + 0.875 + ] + ], + [ + 0.252, + [ + 0, + 0.251, + 0.875 + ] + ], + [ + 0.254, + [ + 0, + 0.255, + 0.873 + ] + ], + [ + 0.256, + [ + 0, + 0.255, + 0.873 + ] + ], + [ + 0.258, + [ + 0, + 0.259, + 0.871 + ] + ], + [ + 0.26, + [ + 0, + 0.259, + 0.871 + ] + ], + [ + 0.262, + [ + 0, + 0.263, + 0.869 + ] + ], + [ + 0.264, + [ + 0, + 0.263, + 0.869 + ] + ], + [ + 0.266, + [ + 0, + 0.267, + 0.867 + ] + ], + [ + 0.268, + [ + 0, + 0.267, + 0.867 + ] + ], + [ + 0.27, + [ + 0, + 0.271, + 0.865 + ] + ], + [ + 0.272, + [ + 0, + 0.271, + 0.865 + ] + ], + [ + 0.274, + [ + 0, + 0.275, + 0.863 + ] + ], + [ + 0.276, + [ + 0, + 0.275, + 0.863 + ] + ], + [ + 0.278, + [ + 0, + 0.278, + 0.861 + ] + ], + [ + 0.28, + [ + 0, + 0.278, + 0.861 + ] + ], + [ + 0.282, + [ + 0, + 0.282, + 0.859 + ] + ], + [ + 0.284, + [ + 0, + 0.282, + 0.859 + ] + ], + [ + 0.286, + [ + 0, + 0.286, + 0.857 + ] + ], + [ + 0.288, + [ + 0, + 0.286, + 0.857 + ] + ], + [ + 0.29, + [ + 0, + 0.29, + 0.855 + ] + ], + [ + 0.292, + [ + 0, + 0.29, + 0.855 + ] + ], + [ + 0.294, + [ + 0, + 0.294, + 0.853 + ] + ], + [ + 0.295, + [ + 0, + 0.294, + 0.853 + ] + ], + [ + 0.297, + [ + 0, + 0.298, + 0.851 + ] + ], + [ + 0.299, + [ + 0, + 0.298, + 0.851 + ] + ], + [ + 0.301, + [ + 0, + 0.302, + 0.849 + ] + ], + [ + 0.303, + [ + 0, + 0.302, + 0.849 + ] + ], + [ + 0.305, + [ + 0, + 0.306, + 0.847 + ] + ], + [ + 0.307, + [ + 0, + 0.306, + 0.847 + ] + ], + [ + 0.309, + [ + 0, + 0.31, + 0.845 + ] + ], + [ + 0.311, + [ + 0, + 0.31, + 0.845 + ] + ], + [ + 0.313, + [ + 0, + 0.314, + 0.843 + ] + ], + [ + 0.315, + [ + 0, + 0.314, + 0.843 + ] + ], + [ + 0.317, + [ + 0, + 0.318, + 0.841 + ] + ], + [ + 0.319, + [ + 0, + 0.318, + 0.841 + ] + ], + [ + 0.321, + [ + 0, + 0.322, + 0.839 + ] + ], + [ + 0.323, + [ + 0, + 0.322, + 0.839 + ] + ], + [ + 0.325, + [ + 0, + 0.325, + 0.837 + ] + ], + [ + 0.327, + [ + 0, + 0.325, + 0.837 + ] + ], + [ + 0.329, + [ + 0, + 0.329, + 0.835 + ] + ], + [ + 0.331, + [ + 0, + 0.329, + 0.835 + ] + ], + [ + 0.333, + [ + 0, + 0.333, + 0.833 + ] + ], + [ + 0.335, + [ + 0, + 0.333, + 0.833 + ] + ], + [ + 0.337, + [ + 0, + 0.337, + 0.831 + ] + ], + [ + 0.339, + [ + 0, + 0.337, + 0.831 + ] + ], + [ + 0.341, + [ + 0, + 0.341, + 0.829 + ] + ], + [ + 0.342, + [ + 0, + 0.341, + 0.829 + ] + ], + [ + 0.344, + [ + 0, + 0.345, + 0.827 + ] + ], + [ + 0.346, + [ + 0, + 0.345, + 0.827 + ] + ], + [ + 0.348, + [ + 0, + 0.349, + 0.825 + ] + ], + [ + 0.35, + [ + 0, + 0.349, + 0.825 + ] + ], + [ + 0.352, + [ + 0, + 0.353, + 0.824 + ] + ], + [ + 0.354, + [ + 0, + 0.353, + 0.824 + ] + ], + [ + 0.356, + [ + 0, + 0.357, + 0.822 + ] + ], + [ + 0.358, + [ + 0, + 0.357, + 0.822 + ] + ], + [ + 0.36, + [ + 0, + 0.361, + 0.82 + ] + ], + [ + 0.362, + [ + 0, + 0.361, + 0.82 + ] + ], + [ + 0.364, + [ + 0, + 0.365, + 0.818 + ] + ], + [ + 0.366, + [ + 0, + 0.365, + 0.818 + ] + ], + [ + 0.368, + [ + 0, + 0.369, + 0.816 + ] + ], + [ + 0.37, + [ + 0, + 0.369, + 0.816 + ] + ], + [ + 0.372, + [ + 0, + 0.373, + 0.814 + ] + ], + [ + 0.374, + [ + 0, + 0.373, + 0.814 + ] + ], + [ + 0.376, + [ + 0, + 0.376, + 0.812 + ] + ], + [ + 0.378, + [ + 0, + 0.376, + 0.812 + ] + ], + [ + 0.38, + [ + 0, + 0.38, + 0.81 + ] + ], + [ + 0.382, + [ + 0, + 0.38, + 0.81 + ] + ], + [ + 0.384, + [ + 0, + 0.384, + 0.808 + ] + ], + [ + 0.386, + [ + 0, + 0.384, + 0.808 + ] + ], + [ + 0.387, + [ + 0, + 0.388, + 0.806 + ] + ], + [ + 0.389, + [ + 0, + 0.388, + 0.806 + ] + ], + [ + 0.391, + [ + 0, + 0.392, + 0.804 + ] + ], + [ + 0.393, + [ + 0, + 0.392, + 0.804 + ] + ], + [ + 0.395, + [ + 0, + 0.396, + 0.802 + ] + ], + [ + 0.397, + [ + 0, + 0.396, + 0.802 + ] + ], + [ + 0.399, + [ + 0, + 0.4, + 0.8 + ] + ], + [ + 0.401, + [ + 0, + 0.4, + 0.8 + ] + ], + [ + 0.403, + [ + 0, + 0.404, + 0.798 + ] + ], + [ + 0.405, + [ + 0, + 0.404, + 0.798 + ] + ], + [ + 0.407, + [ + 0, + 0.408, + 0.796 + ] + ], + [ + 0.409, + [ + 0, + 0.408, + 0.796 + ] + ], + [ + 0.411, + [ + 0, + 0.412, + 0.794 + ] + ], + [ + 0.413, + [ + 0, + 0.412, + 0.794 + ] + ], + [ + 0.415, + [ + 0, + 0.416, + 0.792 + ] + ], + [ + 0.417, + [ + 0, + 0.416, + 0.792 + ] + ], + [ + 0.419, + [ + 0, + 0.42, + 0.79 + ] + ], + [ + 0.421, + [ + 0, + 0.42, + 0.79 + ] + ], + [ + 0.423, + [ + 0, + 0.424, + 0.788 + ] + ], + [ + 0.425, + [ + 0, + 0.424, + 0.788 + ] + ], + [ + 0.427, + [ + 0, + 0.427, + 0.786 + ] + ], + [ + 0.429, + [ + 0, + 0.427, + 0.786 + ] + ], + [ + 0.431, + [ + 0, + 0.431, + 0.784 + ] + ], + [ + 0.432, + [ + 0, + 0.431, + 0.784 + ] + ], + [ + 0.434, + [ + 0, + 0.435, + 0.782 + ] + ], + [ + 0.436, + [ + 0, + 0.435, + 0.782 + ] + ], + [ + 0.438, + [ + 0, + 0.439, + 0.78 + ] + ], + [ + 0.44, + [ + 0, + 0.439, + 0.78 + ] + ], + [ + 0.442, + [ + 0, + 0.443, + 0.778 + ] + ], + [ + 0.444, + [ + 0, + 0.443, + 0.778 + ] + ], + [ + 0.446, + [ + 0, + 0.447, + 0.776 + ] + ], + [ + 0.448, + [ + 0, + 0.447, + 0.776 + ] + ], + [ + 0.45, + [ + 0, + 0.451, + 0.775 + ] + ], + [ + 0.452, + [ + 0, + 0.451, + 0.775 + ] + ], + [ + 0.454, + [ + 0, + 0.455, + 0.773 + ] + ], + [ + 0.456, + [ + 0, + 0.455, + 0.773 + ] + ], + [ + 0.458, + [ + 0, + 0.459, + 0.771 + ] + ], + [ + 0.46, + [ + 0, + 0.459, + 0.771 + ] + ], + [ + 0.462, + [ + 0, + 0.463, + 0.769 + ] + ], + [ + 0.464, + [ + 0, + 0.463, + 0.769 + ] + ], + [ + 0.466, + [ + 0, + 0.467, + 0.767 + ] + ], + [ + 0.468, + [ + 0, + 0.467, + 0.767 + ] + ], + [ + 0.47, + [ + 0, + 0.471, + 0.765 + ] + ], + [ + 0.472, + [ + 0, + 0.471, + 0.765 + ] + ], + [ + 0.474, + [ + 0, + 0.475, + 0.763 + ] + ], + [ + 0.476, + [ + 0, + 0.475, + 0.763 + ] + ], + [ + 0.477, + [ + 0, + 0.478, + 0.761 + ] + ], + [ + 0.479, + [ + 0, + 0.478, + 0.761 + ] + ], + [ + 0.481, + [ + 0, + 0.482, + 0.759 + ] + ], + [ + 0.483, + [ + 0, + 0.482, + 0.759 + ] + ], + [ + 0.485, + [ + 0, + 0.486, + 0.757 + ] + ], + [ + 0.487, + [ + 0, + 0.486, + 0.757 + ] + ], + [ + 0.489, + [ + 0, + 0.49, + 0.755 + ] + ], + [ + 0.491, + [ + 0, + 0.49, + 0.755 + ] + ], + [ + 0.493, + [ + 0, + 0.494, + 0.753 + ] + ], + [ + 0.495, + [ + 0, + 0.494, + 0.753 + ] + ], + [ + 0.497, + [ + 0, + 0.498, + 0.751 + ] + ], + [ + 0.499, + [ + 0, + 0.498, + 0.751 + ] + ], + [ + 0.501, + [ + 0, + 0.502, + 0.749 + ] + ], + [ + 0.503, + [ + 0, + 0.502, + 0.749 + ] + ], + [ + 0.505, + [ + 0, + 0.506, + 0.747 + ] + ], + [ + 0.507, + [ + 0, + 0.506, + 0.747 + ] + ], + [ + 0.509, + [ + 0, + 0.51, + 0.745 + ] + ], + [ + 0.511, + [ + 0, + 0.51, + 0.745 + ] + ], + [ + 0.513, + [ + 0, + 0.514, + 0.743 + ] + ], + [ + 0.515, + [ + 0, + 0.514, + 0.743 + ] + ], + [ + 0.517, + [ + 0, + 0.518, + 0.741 + ] + ], + [ + 0.519, + [ + 0, + 0.518, + 0.741 + ] + ], + [ + 0.521, + [ + 0, + 0.522, + 0.739 + ] + ], + [ + 0.523, + [ + 0, + 0.522, + 0.739 + ] + ], + [ + 0.524, + [ + 0, + 0.525, + 0.737 + ] + ], + [ + 0.526, + [ + 0, + 0.525, + 0.737 + ] + ], + [ + 0.528, + [ + 0, + 0.529, + 0.735 + ] + ], + [ + 0.53, + [ + 0, + 0.529, + 0.735 + ] + ], + [ + 0.532, + [ + 0, + 0.533, + 0.733 + ] + ], + [ + 0.534, + [ + 0, + 0.533, + 0.733 + ] + ], + [ + 0.536, + [ + 0, + 0.537, + 0.731 + ] + ], + [ + 0.538, + [ + 0, + 0.537, + 0.731 + ] + ], + [ + 0.54, + [ + 0, + 0.541, + 0.729 + ] + ], + [ + 0.542, + [ + 0, + 0.541, + 0.729 + ] + ], + [ + 0.544, + [ + 0, + 0.545, + 0.727 + ] + ], + [ + 0.546, + [ + 0, + 0.545, + 0.727 + ] + ], + [ + 0.548, + [ + 0, + 0.549, + 0.725 + ] + ], + [ + 0.55, + [ + 0, + 0.549, + 0.725 + ] + ], + [ + 0.552, + [ + 0, + 0.553, + 0.724 + ] + ], + [ + 0.554, + [ + 0, + 0.553, + 0.724 + ] + ], + [ + 0.556, + [ + 0, + 0.557, + 0.722 + ] + ], + [ + 0.558, + [ + 0, + 0.557, + 0.722 + ] + ], + [ + 0.56, + [ + 0, + 0.561, + 0.72 + ] + ], + [ + 0.562, + [ + 0, + 0.561, + 0.72 + ] + ], + [ + 0.564, + [ + 0, + 0.565, + 0.718 + ] + ], + [ + 0.566, + [ + 0, + 0.565, + 0.718 + ] + ], + [ + 0.568, + [ + 0, + 0.569, + 0.716 + ] + ], + [ + 0.569, + [ + 0, + 0.569, + 0.716 + ] + ], + [ + 0.571, + [ + 0, + 0.573, + 0.714 + ] + ], + [ + 0.573, + [ + 0, + 0.573, + 0.714 + ] + ], + [ + 0.575, + [ + 0, + 0.576, + 0.712 + ] + ], + [ + 0.577, + [ + 0, + 0.576, + 0.712 + ] + ], + [ + 0.579, + [ + 0, + 0.58, + 0.71 + ] + ], + [ + 0.581, + [ + 0, + 0.58, + 0.71 + ] + ], + [ + 0.583, + [ + 0, + 0.584, + 0.708 + ] + ], + [ + 0.585, + [ + 0, + 0.584, + 0.708 + ] + ], + [ + 0.587, + [ + 0, + 0.588, + 0.706 + ] + ], + [ + 0.589, + [ + 0, + 0.588, + 0.706 + ] + ], + [ + 0.591, + [ + 0, + 0.592, + 0.704 + ] + ], + [ + 0.593, + [ + 0, + 0.592, + 0.704 + ] + ], + [ + 0.595, + [ + 0, + 0.596, + 0.702 + ] + ], + [ + 0.597, + [ + 0, + 0.596, + 0.702 + ] + ], + [ + 0.599, + [ + 0, + 0.6, + 0.7 + ] + ], + [ + 0.601, + [ + 0, + 0.6, + 0.7 + ] + ], + [ + 0.603, + [ + 0, + 0.604, + 0.698 + ] + ], + [ + 0.605, + [ + 0, + 0.604, + 0.698 + ] + ], + [ + 0.607, + [ + 0, + 0.608, + 0.696 + ] + ], + [ + 0.609, + [ + 0, + 0.608, + 0.696 + ] + ], + [ + 0.611, + [ + 0, + 0.612, + 0.694 + ] + ], + [ + 0.613, + [ + 0, + 0.612, + 0.694 + ] + ], + [ + 0.614, + [ + 0, + 0.616, + 0.692 + ] + ], + [ + 0.616, + [ + 0, + 0.616, + 0.692 + ] + ], + [ + 0.618, + [ + 0, + 0.62, + 0.69 + ] + ], + [ + 0.62, + [ + 0, + 0.62, + 0.69 + ] + ], + [ + 0.622, + [ + 0, + 0.624, + 0.688 + ] + ], + [ + 0.624, + [ + 0, + 0.624, + 0.688 + ] + ], + [ + 0.626, + [ + 0, + 0.627, + 0.686 + ] + ], + [ + 0.628, + [ + 0, + 0.627, + 0.686 + ] + ], + [ + 0.63, + [ + 0, + 0.631, + 0.684 + ] + ], + [ + 0.632, + [ + 0, + 0.631, + 0.684 + ] + ], + [ + 0.634, + [ + 0, + 0.635, + 0.682 + ] + ], + [ + 0.636, + [ + 0, + 0.635, + 0.682 + ] + ], + [ + 0.638, + [ + 0, + 0.639, + 0.68 + ] + ], + [ + 0.64, + [ + 0, + 0.639, + 0.68 + ] + ], + [ + 0.642, + [ + 0, + 0.643, + 0.678 + ] + ], + [ + 0.644, + [ + 0, + 0.643, + 0.678 + ] + ], + [ + 0.646, + [ + 0, + 0.647, + 0.676 + ] + ], + [ + 0.648, + [ + 0, + 0.647, + 0.676 + ] + ], + [ + 0.65, + [ + 0, + 0.651, + 0.675 + ] + ], + [ + 0.652, + [ + 0, + 0.651, + 0.675 + ] + ], + [ + 0.654, + [ + 0, + 0.655, + 0.673 + ] + ], + [ + 0.656, + [ + 0, + 0.655, + 0.673 + ] + ], + [ + 0.658, + [ + 0, + 0.659, + 0.671 + ] + ], + [ + 0.659, + [ + 0, + 0.659, + 0.671 + ] + ], + [ + 0.661, + [ + 0, + 0.663, + 0.669 + ] + ], + [ + 0.663, + [ + 0, + 0.663, + 0.669 + ] + ], + [ + 0.665, + [ + 0, + 0.667, + 0.667 + ] + ], + [ + 0.667, + [ + 0, + 0.667, + 0.667 + ] + ], + [ + 0.669, + [ + 0, + 0.671, + 0.665 + ] + ], + [ + 0.671, + [ + 0, + 0.671, + 0.665 + ] + ], + [ + 0.673, + [ + 0, + 0.675, + 0.663 + ] + ], + [ + 0.675, + [ + 0, + 0.675, + 0.663 + ] + ], + [ + 0.677, + [ + 0, + 0.678, + 0.661 + ] + ], + [ + 0.679, + [ + 0, + 0.678, + 0.661 + ] + ], + [ + 0.681, + [ + 0, + 0.682, + 0.659 + ] + ], + [ + 0.683, + [ + 0, + 0.682, + 0.659 + ] + ], + [ + 0.685, + [ + 0, + 0.686, + 0.657 + ] + ], + [ + 0.687, + [ + 0, + 0.686, + 0.657 + ] + ], + [ + 0.689, + [ + 0, + 0.69, + 0.655 + ] + ], + [ + 0.691, + [ + 0, + 0.69, + 0.655 + ] + ], + [ + 0.693, + [ + 0, + 0.694, + 0.653 + ] + ], + [ + 0.695, + [ + 0, + 0.694, + 0.653 + ] + ], + [ + 0.697, + [ + 0, + 0.698, + 0.651 + ] + ], + [ + 0.699, + [ + 0, + 0.698, + 0.651 + ] + ], + [ + 0.701, + [ + 0, + 0.702, + 0.649 + ] + ], + [ + 0.703, + [ + 0, + 0.702, + 0.649 + ] + ], + [ + 0.705, + [ + 0, + 0.706, + 0.647 + ] + ], + [ + 0.706, + [ + 0, + 0.706, + 0.647 + ] + ], + [ + 0.708, + [ + 0, + 0.71, + 0.645 + ] + ], + [ + 0.71, + [ + 0, + 0.71, + 0.645 + ] + ], + [ + 0.712, + [ + 0, + 0.714, + 0.643 + ] + ], + [ + 0.714, + [ + 0, + 0.714, + 0.643 + ] + ], + [ + 0.716, + [ + 0, + 0.718, + 0.641 + ] + ], + [ + 0.718, + [ + 0, + 0.718, + 0.641 + ] + ], + [ + 0.72, + [ + 0, + 0.722, + 0.639 + ] + ], + [ + 0.722, + [ + 0, + 0.722, + 0.639 + ] + ], + [ + 0.724, + [ + 0, + 0.725, + 0.637 + ] + ], + [ + 0.726, + [ + 0, + 0.725, + 0.637 + ] + ], + [ + 0.728, + [ + 0, + 0.729, + 0.635 + ] + ], + [ + 0.73, + [ + 0, + 0.729, + 0.635 + ] + ], + [ + 0.732, + [ + 0, + 0.733, + 0.633 + ] + ], + [ + 0.734, + [ + 0, + 0.733, + 0.633 + ] + ], + [ + 0.736, + [ + 0, + 0.737, + 0.631 + ] + ], + [ + 0.738, + [ + 0, + 0.737, + 0.631 + ] + ], + [ + 0.74, + [ + 0, + 0.741, + 0.629 + ] + ], + [ + 0.742, + [ + 0, + 0.741, + 0.629 + ] + ], + [ + 0.744, + [ + 0, + 0.745, + 0.627 + ] + ], + [ + 0.746, + [ + 0, + 0.745, + 0.627 + ] + ], + [ + 0.748, + [ + 0, + 0.749, + 0.625 + ] + ], + [ + 0.75, + [ + 0, + 0.749, + 0.625 + ] + ], + [ + 0.751, + [ + 0, + 0.753, + 0.624 + ] + ], + [ + 0.753, + [ + 0, + 0.753, + 0.624 + ] + ], + [ + 0.755, + [ + 0, + 0.757, + 0.622 + ] + ], + [ + 0.757, + [ + 0, + 0.757, + 0.622 + ] + ], + [ + 0.759, + [ + 0, + 0.761, + 0.62 + ] + ], + [ + 0.761, + [ + 0, + 0.761, + 0.62 + ] + ], + [ + 0.763, + [ + 0, + 0.765, + 0.618 + ] + ], + [ + 0.765, + [ + 0, + 0.765, + 0.618 + ] + ], + [ + 0.767, + [ + 0, + 0.769, + 0.616 + ] + ], + [ + 0.769, + [ + 0, + 0.769, + 0.616 + ] + ], + [ + 0.771, + [ + 0, + 0.773, + 0.614 + ] + ], + [ + 0.773, + [ + 0, + 0.773, + 0.614 + ] + ], + [ + 0.775, + [ + 0, + 0.776, + 0.612 + ] + ], + [ + 0.777, + [ + 0, + 0.776, + 0.612 + ] + ], + [ + 0.779, + [ + 0, + 0.78, + 0.61 + ] + ], + [ + 0.781, + [ + 0, + 0.78, + 0.61 + ] + ], + [ + 0.783, + [ + 0, + 0.784, + 0.608 + ] + ], + [ + 0.785, + [ + 0, + 0.784, + 0.608 + ] + ], + [ + 0.787, + [ + 0, + 0.788, + 0.606 + ] + ], + [ + 0.789, + [ + 0, + 0.788, + 0.606 + ] + ], + [ + 0.791, + [ + 0, + 0.792, + 0.604 + ] + ], + [ + 0.793, + [ + 0, + 0.792, + 0.604 + ] + ], + [ + 0.795, + [ + 0, + 0.796, + 0.602 + ] + ], + [ + 0.796, + [ + 0, + 0.796, + 0.602 + ] + ], + [ + 0.798, + [ + 0, + 0.8, + 0.6 + ] + ], + [ + 0.8, + [ + 0, + 0.8, + 0.6 + ] + ], + [ + 0.802, + [ + 0, + 0.804, + 0.598 + ] + ], + [ + 0.804, + [ + 0, + 0.804, + 0.598 + ] + ], + [ + 0.806, + [ + 0, + 0.808, + 0.596 + ] + ], + [ + 0.808, + [ + 0, + 0.808, + 0.596 + ] + ], + [ + 0.81, + [ + 0, + 0.812, + 0.594 + ] + ], + [ + 0.812, + [ + 0, + 0.812, + 0.594 + ] + ], + [ + 0.814, + [ + 0, + 0.816, + 0.592 + ] + ], + [ + 0.816, + [ + 0, + 0.816, + 0.592 + ] + ], + [ + 0.818, + [ + 0, + 0.82, + 0.59 + ] + ], + [ + 0.82, + [ + 0, + 0.82, + 0.59 + ] + ], + [ + 0.822, + [ + 0, + 0.824, + 0.588 + ] + ], + [ + 0.824, + [ + 0, + 0.824, + 0.588 + ] + ], + [ + 0.826, + [ + 0, + 0.827, + 0.586 + ] + ], + [ + 0.828, + [ + 0, + 0.827, + 0.586 + ] + ], + [ + 0.83, + [ + 0, + 0.831, + 0.584 + ] + ], + [ + 0.832, + [ + 0, + 0.831, + 0.584 + ] + ], + [ + 0.834, + [ + 0, + 0.835, + 0.582 + ] + ], + [ + 0.836, + [ + 0, + 0.835, + 0.582 + ] + ], + [ + 0.838, + [ + 0, + 0.839, + 0.58 + ] + ], + [ + 0.84, + [ + 0, + 0.839, + 0.58 + ] + ], + [ + 0.841, + [ + 0, + 0.843, + 0.578 + ] + ], + [ + 0.843, + [ + 0, + 0.843, + 0.578 + ] + ], + [ + 0.845, + [ + 0, + 0.847, + 0.576 + ] + ], + [ + 0.847, + [ + 0, + 0.847, + 0.576 + ] + ], + [ + 0.849, + [ + 0, + 0.851, + 0.575 + ] + ], + [ + 0.851, + [ + 0, + 0.851, + 0.575 + ] + ], + [ + 0.853, + [ + 0, + 0.855, + 0.573 + ] + ], + [ + 0.855, + [ + 0, + 0.855, + 0.573 + ] + ], + [ + 0.857, + [ + 0, + 0.859, + 0.571 + ] + ], + [ + 0.859, + [ + 0, + 0.859, + 0.571 + ] + ], + [ + 0.861, + [ + 0, + 0.863, + 0.569 + ] + ], + [ + 0.863, + [ + 0, + 0.863, + 0.569 + ] + ], + [ + 0.865, + [ + 0, + 0.867, + 0.567 + ] + ], + [ + 0.867, + [ + 0, + 0.867, + 0.567 + ] + ], + [ + 0.869, + [ + 0, + 0.871, + 0.565 + ] + ], + [ + 0.871, + [ + 0, + 0.871, + 0.565 + ] + ], + [ + 0.873, + [ + 0, + 0.875, + 0.563 + ] + ], + [ + 0.875, + [ + 0, + 0.875, + 0.563 + ] + ], + [ + 0.877, + [ + 0, + 0.878, + 0.561 + ] + ], + [ + 0.879, + [ + 0, + 0.878, + 0.561 + ] + ], + [ + 0.881, + [ + 0, + 0.882, + 0.559 + ] + ], + [ + 0.883, + [ + 0, + 0.882, + 0.559 + ] + ], + [ + 0.885, + [ + 0, + 0.886, + 0.557 + ] + ], + [ + 0.886, + [ + 0, + 0.886, + 0.557 + ] + ], + [ + 0.888, + [ + 0, + 0.89, + 0.555 + ] + ], + [ + 0.89, + [ + 0, + 0.89, + 0.555 + ] + ], + [ + 0.892, + [ + 0, + 0.894, + 0.553 + ] + ], + [ + 0.894, + [ + 0, + 0.894, + 0.553 + ] + ], + [ + 0.896, + [ + 0, + 0.898, + 0.551 + ] + ], + [ + 0.898, + [ + 0, + 0.898, + 0.551 + ] + ], + [ + 0.9, + [ + 0, + 0.902, + 0.549 + ] + ], + [ + 0.902, + [ + 0, + 0.902, + 0.549 + ] + ], + [ + 0.904, + [ + 0, + 0.906, + 0.547 + ] + ], + [ + 0.906, + [ + 0, + 0.906, + 0.547 + ] + ], + [ + 0.908, + [ + 0, + 0.91, + 0.545 + ] + ], + [ + 0.91, + [ + 0, + 0.91, + 0.545 + ] + ], + [ + 0.912, + [ + 0, + 0.914, + 0.543 + ] + ], + [ + 0.914, + [ + 0, + 0.914, + 0.543 + ] + ], + [ + 0.916, + [ + 0, + 0.918, + 0.541 + ] + ], + [ + 0.918, + [ + 0, + 0.918, + 0.541 + ] + ], + [ + 0.92, + [ + 0, + 0.922, + 0.539 + ] + ], + [ + 0.922, + [ + 0, + 0.922, + 0.539 + ] + ], + [ + 0.924, + [ + 0, + 0.925, + 0.537 + ] + ], + [ + 0.926, + [ + 0, + 0.925, + 0.537 + ] + ], + [ + 0.928, + [ + 0, + 0.929, + 0.535 + ] + ], + [ + 0.93, + [ + 0, + 0.929, + 0.535 + ] + ], + [ + 0.932, + [ + 0, + 0.933, + 0.533 + ] + ], + [ + 0.933, + [ + 0, + 0.933, + 0.533 + ] + ], + [ + 0.935, + [ + 0, + 0.937, + 0.531 + ] + ], + [ + 0.937, + [ + 0, + 0.937, + 0.531 + ] + ], + [ + 0.939, + [ + 0, + 0.941, + 0.529 + ] + ], + [ + 0.941, + [ + 0, + 0.941, + 0.529 + ] + ], + [ + 0.943, + [ + 0, + 0.945, + 0.527 + ] + ], + [ + 0.945, + [ + 0, + 0.945, + 0.527 + ] + ], + [ + 0.947, + [ + 0, + 0.949, + 0.525 + ] + ], + [ + 0.949, + [ + 0, + 0.949, + 0.525 + ] + ], + [ + 0.951, + [ + 0, + 0.953, + 0.524 + ] + ], + [ + 0.953, + [ + 0, + 0.953, + 0.524 + ] + ], + [ + 0.955, + [ + 0, + 0.957, + 0.522 + ] + ], + [ + 0.957, + [ + 0, + 0.957, + 0.522 + ] + ], + [ + 0.959, + [ + 0, + 0.961, + 0.52 + ] + ], + [ + 0.961, + [ + 0, + 0.961, + 0.52 + ] + ], + [ + 0.963, + [ + 0, + 0.965, + 0.518 + ] + ], + [ + 0.965, + [ + 0, + 0.965, + 0.518 + ] + ], + [ + 0.967, + [ + 0, + 0.969, + 0.516 + ] + ], + [ + 0.969, + [ + 0, + 0.969, + 0.516 + ] + ], + [ + 0.971, + [ + 0, + 0.973, + 0.514 + ] + ], + [ + 0.973, + [ + 0, + 0.973, + 0.514 + ] + ], + [ + 0.975, + [ + 0, + 0.976, + 0.512 + ] + ], + [ + 0.977, + [ + 0, + 0.976, + 0.512 + ] + ], + [ + 0.978, + [ + 0, + 0.98, + 0.51 + ] + ], + [ + 0.98, + [ + 0, + 0.98, + 0.51 + ] + ], + [ + 0.982, + [ + 0, + 0.984, + 0.508 + ] + ], + [ + 0.984, + [ + 0, + 0.984, + 0.508 + ] + ], + [ + 0.986, + [ + 0, + 0.988, + 0.506 + ] + ], + [ + 0.988, + [ + 0, + 0.988, + 0.506 + ] + ], + [ + 0.99, + [ + 0, + 0.992, + 0.504 + ] + ], + [ + 0.992, + [ + 0, + 0.992, + 0.504 + ] + ], + [ + 0.994, + [ + 0, + 0.996, + 0.502 + ] + ], + [ + 0.996, + [ + 0, + 0.996, + 0.502 + ] + ], + [ + 0.998, + [ + 0, + 1, + 0.5 + ] + ], + [ + 1, + [ + 0, + 1, + 0.5 + ] + ] + ], + [ + [ + 0, + [ + 0, + 0, + 0.5 + ] + ], + [ + 0.002, + [ + 0, + 0, + 0.5 + ] + ], + [ + 0.004, + [ + 0, + 0, + 0.518 + ] + ], + [ + 0.006, + [ + 0, + 0, + 0.518 + ] + ], + [ + 0.008, + [ + 0, + 0, + 0.536 + ] + ], + [ + 0.01, + [ + 0, + 0, + 0.536 + ] + ], + [ + 0.012, + [ + 0, + 0, + 0.553 + ] + ], + [ + 0.014, + [ + 0, + 0, + 0.553 + ] + ], + [ + 0.016, + [ + 0, + 0, + 0.571 + ] + ], + [ + 0.018, + [ + 0, + 0, + 0.571 + ] + ], + [ + 0.02, + [ + 0, + 0, + 0.589 + ] + ], + [ + 0.022, + [ + 0, + 0, + 0.589 + ] + ], + [ + 0.023, + [ + 0, + 0, + 0.607 + ] + ], + [ + 0.025, + [ + 0, + 0, + 0.607 + ] + ], + [ + 0.027, + [ + 0, + 0, + 0.625 + ] + ], + [ + 0.029, + [ + 0, + 0, + 0.625 + ] + ], + [ + 0.031, + [ + 0, + 0, + 0.643 + ] + ], + [ + 0.033, + [ + 0, + 0, + 0.643 + ] + ], + [ + 0.035, + [ + 0, + 0, + 0.66 + ] + ], + [ + 0.037, + [ + 0, + 0, + 0.66 + ] + ], + [ + 0.039, + [ + 0, + 0, + 0.678 + ] + ], + [ + 0.041, + [ + 0, + 0, + 0.678 + ] + ], + [ + 0.043, + [ + 0, + 0, + 0.696 + ] + ], + [ + 0.045, + [ + 0, + 0, + 0.696 + ] + ], + [ + 0.047, + [ + 0, + 0, + 0.714 + ] + ], + [ + 0.049, + [ + 0, + 0, + 0.714 + ] + ], + [ + 0.051, + [ + 0, + 0, + 0.732 + ] + ], + [ + 0.053, + [ + 0, + 0, + 0.732 + ] + ], + [ + 0.055, + [ + 0, + 0, + 0.75 + ] + ], + [ + 0.057, + [ + 0, + 0, + 0.75 + ] + ], + [ + 0.059, + [ + 0, + 0, + 0.767 + ] + ], + [ + 0.061, + [ + 0, + 0, + 0.767 + ] + ], + [ + 0.063, + [ + 0, + 0, + 0.785 + ] + ], + [ + 0.065, + [ + 0, + 0, + 0.785 + ] + ], + [ + 0.067, + [ + 0, + 0, + 0.803 + ] + ], + [ + 0.068, + [ + 0, + 0, + 0.803 + ] + ], + [ + 0.07, + [ + 0, + 0, + 0.821 + ] + ], + [ + 0.072, + [ + 0, + 0, + 0.821 + ] + ], + [ + 0.074, + [ + 0, + 0, + 0.839 + ] + ], + [ + 0.076, + [ + 0, + 0, + 0.839 + ] + ], + [ + 0.078, + [ + 0, + 0, + 0.857 + ] + ], + [ + 0.08, + [ + 0, + 0, + 0.857 + ] + ], + [ + 0.082, + [ + 0, + 0, + 0.874 + ] + ], + [ + 0.084, + [ + 0, + 0, + 0.874 + ] + ], + [ + 0.086, + [ + 0, + 0, + 0.892 + ] + ], + [ + 0.088, + [ + 0, + 0, + 0.892 + ] + ], + [ + 0.09, + [ + 0, + 0, + 0.91 + ] + ], + [ + 0.092, + [ + 0, + 0, + 0.91 + ] + ], + [ + 0.094, + [ + 0, + 0, + 0.928 + ] + ], + [ + 0.096, + [ + 0, + 0, + 0.928 + ] + ], + [ + 0.098, + [ + 0, + 0, + 0.946 + ] + ], + [ + 0.1, + [ + 0, + 0, + 0.946 + ] + ], + [ + 0.102, + [ + 0, + 0, + 0.963 + ] + ], + [ + 0.104, + [ + 0, + 0, + 0.963 + ] + ], + [ + 0.106, + [ + 0, + 0, + 0.981 + ] + ], + [ + 0.108, + [ + 0, + 0, + 0.981 + ] + ], + [ + 0.11, + [ + 0, + 0, + 0.999 + ] + ], + [ + 0.112, + [ + 0, + 0, + 0.999 + ] + ], + [ + 0.114, + [ + 0, + 0, + 1 + ] + ], + [ + 0.115, + [ + 0, + 0, + 1 + ] + ], + [ + 0.117, + [ + 0, + 0, + 1 + ] + ], + [ + 0.119, + [ + 0, + 0, + 1 + ] + ], + [ + 0.121, + [ + 0, + 0, + 1 + ] + ], + [ + 0.123, + [ + 0, + 0, + 1 + ] + ], + [ + 0.125, + [ + 0, + 0.002, + 1 + ] + ], + [ + 0.127, + [ + 0, + 0.002, + 1 + ] + ], + [ + 0.129, + [ + 0, + 0.018, + 1 + ] + ], + [ + 0.131, + [ + 0, + 0.018, + 1 + ] + ], + [ + 0.133, + [ + 0, + 0.033, + 1 + ] + ], + [ + 0.135, + [ + 0, + 0.033, + 1 + ] + ], + [ + 0.137, + [ + 0, + 0.049, + 1 + ] + ], + [ + 0.139, + [ + 0, + 0.049, + 1 + ] + ], + [ + 0.141, + [ + 0, + 0.065, + 1 + ] + ], + [ + 0.143, + [ + 0, + 0.065, + 1 + ] + ], + [ + 0.145, + [ + 0, + 0.08, + 1 + ] + ], + [ + 0.147, + [ + 0, + 0.08, + 1 + ] + ], + [ + 0.149, + [ + 0, + 0.096, + 1 + ] + ], + [ + 0.151, + [ + 0, + 0.096, + 1 + ] + ], + [ + 0.153, + [ + 0, + 0.112, + 1 + ] + ], + [ + 0.155, + [ + 0, + 0.112, + 1 + ] + ], + [ + 0.157, + [ + 0, + 0.127, + 1 + ] + ], + [ + 0.159, + [ + 0, + 0.127, + 1 + ] + ], + [ + 0.16, + [ + 0, + 0.143, + 1 + ] + ], + [ + 0.162, + [ + 0, + 0.143, + 1 + ] + ], + [ + 0.164, + [ + 0, + 0.159, + 1 + ] + ], + [ + 0.166, + [ + 0, + 0.159, + 1 + ] + ], + [ + 0.168, + [ + 0, + 0.175, + 1 + ] + ], + [ + 0.17, + [ + 0, + 0.175, + 1 + ] + ], + [ + 0.172, + [ + 0, + 0.19, + 1 + ] + ], + [ + 0.174, + [ + 0, + 0.19, + 1 + ] + ], + [ + 0.176, + [ + 0, + 0.206, + 1 + ] + ], + [ + 0.178, + [ + 0, + 0.206, + 1 + ] + ], + [ + 0.18, + [ + 0, + 0.222, + 1 + ] + ], + [ + 0.182, + [ + 0, + 0.222, + 1 + ] + ], + [ + 0.184, + [ + 0, + 0.237, + 1 + ] + ], + [ + 0.186, + [ + 0, + 0.237, + 1 + ] + ], + [ + 0.188, + [ + 0, + 0.253, + 1 + ] + ], + [ + 0.19, + [ + 0, + 0.253, + 1 + ] + ], + [ + 0.192, + [ + 0, + 0.269, + 1 + ] + ], + [ + 0.194, + [ + 0, + 0.269, + 1 + ] + ], + [ + 0.196, + [ + 0, + 0.284, + 1 + ] + ], + [ + 0.198, + [ + 0, + 0.284, + 1 + ] + ], + [ + 0.2, + [ + 0, + 0.3, + 1 + ] + ], + [ + 0.202, + [ + 0, + 0.3, + 1 + ] + ], + [ + 0.204, + [ + 0, + 0.316, + 1 + ] + ], + [ + 0.205, + [ + 0, + 0.316, + 1 + ] + ], + [ + 0.207, + [ + 0, + 0.331, + 1 + ] + ], + [ + 0.209, + [ + 0, + 0.331, + 1 + ] + ], + [ + 0.211, + [ + 0, + 0.347, + 1 + ] + ], + [ + 0.213, + [ + 0, + 0.347, + 1 + ] + ], + [ + 0.215, + [ + 0, + 0.363, + 1 + ] + ], + [ + 0.217, + [ + 0, + 0.363, + 1 + ] + ], + [ + 0.219, + [ + 0, + 0.378, + 1 + ] + ], + [ + 0.221, + [ + 0, + 0.378, + 1 + ] + ], + [ + 0.223, + [ + 0, + 0.394, + 1 + ] + ], + [ + 0.225, + [ + 0, + 0.394, + 1 + ] + ], + [ + 0.227, + [ + 0, + 0.41, + 1 + ] + ], + [ + 0.229, + [ + 0, + 0.41, + 1 + ] + ], + [ + 0.231, + [ + 0, + 0.425, + 1 + ] + ], + [ + 0.233, + [ + 0, + 0.425, + 1 + ] + ], + [ + 0.235, + [ + 0, + 0.441, + 1 + ] + ], + [ + 0.237, + [ + 0, + 0.441, + 1 + ] + ], + [ + 0.239, + [ + 0, + 0.457, + 1 + ] + ], + [ + 0.241, + [ + 0, + 0.457, + 1 + ] + ], + [ + 0.243, + [ + 0, + 0.473, + 1 + ] + ], + [ + 0.245, + [ + 0, + 0.473, + 1 + ] + ], + [ + 0.247, + [ + 0, + 0.488, + 1 + ] + ], + [ + 0.249, + [ + 0, + 0.488, + 1 + ] + ], + [ + 0.25, + [ + 0, + 0.504, + 1 + ] + ], + [ + 0.252, + [ + 0, + 0.504, + 1 + ] + ], + [ + 0.254, + [ + 0, + 0.52, + 1 + ] + ], + [ + 0.256, + [ + 0, + 0.52, + 1 + ] + ], + [ + 0.258, + [ + 0, + 0.535, + 1 + ] + ], + [ + 0.26, + [ + 0, + 0.535, + 1 + ] + ], + [ + 0.262, + [ + 0, + 0.551, + 1 + ] + ], + [ + 0.264, + [ + 0, + 0.551, + 1 + ] + ], + [ + 0.266, + [ + 0, + 0.567, + 1 + ] + ], + [ + 0.268, + [ + 0, + 0.567, + 1 + ] + ], + [ + 0.27, + [ + 0, + 0.582, + 1 + ] + ], + [ + 0.272, + [ + 0, + 0.582, + 1 + ] + ], + [ + 0.274, + [ + 0, + 0.598, + 1 + ] + ], + [ + 0.276, + [ + 0, + 0.598, + 1 + ] + ], + [ + 0.278, + [ + 0, + 0.614, + 1 + ] + ], + [ + 0.28, + [ + 0, + 0.614, + 1 + ] + ], + [ + 0.282, + [ + 0, + 0.629, + 1 + ] + ], + [ + 0.284, + [ + 0, + 0.629, + 1 + ] + ], + [ + 0.286, + [ + 0, + 0.645, + 1 + ] + ], + [ + 0.288, + [ + 0, + 0.645, + 1 + ] + ], + [ + 0.29, + [ + 0, + 0.661, + 1 + ] + ], + [ + 0.292, + [ + 0, + 0.661, + 1 + ] + ], + [ + 0.294, + [ + 0, + 0.676, + 1 + ] + ], + [ + 0.295, + [ + 0, + 0.676, + 1 + ] + ], + [ + 0.297, + [ + 0, + 0.692, + 1 + ] + ], + [ + 0.299, + [ + 0, + 0.692, + 1 + ] + ], + [ + 0.301, + [ + 0, + 0.708, + 1 + ] + ], + [ + 0.303, + [ + 0, + 0.708, + 1 + ] + ], + [ + 0.305, + [ + 0, + 0.724, + 1 + ] + ], + [ + 0.307, + [ + 0, + 0.724, + 1 + ] + ], + [ + 0.309, + [ + 0, + 0.739, + 1 + ] + ], + [ + 0.311, + [ + 0, + 0.739, + 1 + ] + ], + [ + 0.313, + [ + 0, + 0.755, + 1 + ] + ], + [ + 0.315, + [ + 0, + 0.755, + 1 + ] + ], + [ + 0.317, + [ + 0, + 0.771, + 1 + ] + ], + [ + 0.319, + [ + 0, + 0.771, + 1 + ] + ], + [ + 0.321, + [ + 0, + 0.786, + 1 + ] + ], + [ + 0.323, + [ + 0, + 0.786, + 1 + ] + ], + [ + 0.325, + [ + 0, + 0.802, + 1 + ] + ], + [ + 0.327, + [ + 0, + 0.802, + 1 + ] + ], + [ + 0.329, + [ + 0, + 0.818, + 1 + ] + ], + [ + 0.331, + [ + 0, + 0.818, + 1 + ] + ], + [ + 0.333, + [ + 0, + 0.833, + 1 + ] + ], + [ + 0.335, + [ + 0, + 0.833, + 1 + ] + ], + [ + 0.337, + [ + 0, + 0.849, + 1 + ] + ], + [ + 0.339, + [ + 0, + 0.849, + 1 + ] + ], + [ + 0.341, + [ + 0, + 0.865, + 0.996 + ] + ], + [ + 0.342, + [ + 0, + 0.865, + 0.996 + ] + ], + [ + 0.344, + [ + 0, + 0.88, + 0.984 + ] + ], + [ + 0.346, + [ + 0, + 0.88, + 0.984 + ] + ], + [ + 0.348, + [ + 0, + 0.896, + 0.971 + ] + ], + [ + 0.35, + [ + 0, + 0.896, + 0.971 + ] + ], + [ + 0.352, + [ + 0.009, + 0.912, + 0.958 + ] + ], + [ + 0.354, + [ + 0.009, + 0.912, + 0.958 + ] + ], + [ + 0.356, + [ + 0.022, + 0.927, + 0.946 + ] + ], + [ + 0.358, + [ + 0.022, + 0.927, + 0.946 + ] + ], + [ + 0.36, + [ + 0.035, + 0.943, + 0.933 + ] + ], + [ + 0.362, + [ + 0.035, + 0.943, + 0.933 + ] + ], + [ + 0.364, + [ + 0.047, + 0.959, + 0.92 + ] + ], + [ + 0.366, + [ + 0.047, + 0.959, + 0.92 + ] + ], + [ + 0.368, + [ + 0.06, + 0.975, + 0.908 + ] + ], + [ + 0.37, + [ + 0.06, + 0.975, + 0.908 + ] + ], + [ + 0.372, + [ + 0.073, + 0.99, + 0.895 + ] + ], + [ + 0.374, + [ + 0.073, + 0.99, + 0.895 + ] + ], + [ + 0.376, + [ + 0.085, + 1, + 0.882 + ] + ], + [ + 0.378, + [ + 0.085, + 1, + 0.882 + ] + ], + [ + 0.38, + [ + 0.098, + 1, + 0.87 + ] + ], + [ + 0.382, + [ + 0.098, + 1, + 0.87 + ] + ], + [ + 0.384, + [ + 0.111, + 1, + 0.857 + ] + ], + [ + 0.386, + [ + 0.111, + 1, + 0.857 + ] + ], + [ + 0.387, + [ + 0.123, + 1, + 0.844 + ] + ], + [ + 0.389, + [ + 0.123, + 1, + 0.844 + ] + ], + [ + 0.391, + [ + 0.136, + 1, + 0.832 + ] + ], + [ + 0.393, + [ + 0.136, + 1, + 0.832 + ] + ], + [ + 0.395, + [ + 0.149, + 1, + 0.819 + ] + ], + [ + 0.397, + [ + 0.149, + 1, + 0.819 + ] + ], + [ + 0.399, + [ + 0.161, + 1, + 0.806 + ] + ], + [ + 0.401, + [ + 0.161, + 1, + 0.806 + ] + ], + [ + 0.403, + [ + 0.174, + 1, + 0.794 + ] + ], + [ + 0.405, + [ + 0.174, + 1, + 0.794 + ] + ], + [ + 0.407, + [ + 0.187, + 1, + 0.781 + ] + ], + [ + 0.409, + [ + 0.187, + 1, + 0.781 + ] + ], + [ + 0.411, + [ + 0.199, + 1, + 0.769 + ] + ], + [ + 0.413, + [ + 0.199, + 1, + 0.769 + ] + ], + [ + 0.415, + [ + 0.212, + 1, + 0.756 + ] + ], + [ + 0.417, + [ + 0.212, + 1, + 0.756 + ] + ], + [ + 0.419, + [ + 0.225, + 1, + 0.743 + ] + ], + [ + 0.421, + [ + 0.225, + 1, + 0.743 + ] + ], + [ + 0.423, + [ + 0.237, + 1, + 0.731 + ] + ], + [ + 0.425, + [ + 0.237, + 1, + 0.731 + ] + ], + [ + 0.427, + [ + 0.25, + 1, + 0.718 + ] + ], + [ + 0.429, + [ + 0.25, + 1, + 0.718 + ] + ], + [ + 0.431, + [ + 0.262, + 1, + 0.705 + ] + ], + [ + 0.432, + [ + 0.262, + 1, + 0.705 + ] + ], + [ + 0.434, + [ + 0.275, + 1, + 0.693 + ] + ], + [ + 0.436, + [ + 0.275, + 1, + 0.693 + ] + ], + [ + 0.438, + [ + 0.288, + 1, + 0.68 + ] + ], + [ + 0.44, + [ + 0.288, + 1, + 0.68 + ] + ], + [ + 0.442, + [ + 0.3, + 1, + 0.667 + ] + ], + [ + 0.444, + [ + 0.3, + 1, + 0.667 + ] + ], + [ + 0.446, + [ + 0.313, + 1, + 0.655 + ] + ], + [ + 0.448, + [ + 0.313, + 1, + 0.655 + ] + ], + [ + 0.45, + [ + 0.326, + 1, + 0.642 + ] + ], + [ + 0.452, + [ + 0.326, + 1, + 0.642 + ] + ], + [ + 0.454, + [ + 0.338, + 1, + 0.629 + ] + ], + [ + 0.456, + [ + 0.338, + 1, + 0.629 + ] + ], + [ + 0.458, + [ + 0.351, + 1, + 0.617 + ] + ], + [ + 0.46, + [ + 0.351, + 1, + 0.617 + ] + ], + [ + 0.462, + [ + 0.364, + 1, + 0.604 + ] + ], + [ + 0.464, + [ + 0.364, + 1, + 0.604 + ] + ], + [ + 0.466, + [ + 0.376, + 1, + 0.591 + ] + ], + [ + 0.468, + [ + 0.376, + 1, + 0.591 + ] + ], + [ + 0.47, + [ + 0.389, + 1, + 0.579 + ] + ], + [ + 0.472, + [ + 0.389, + 1, + 0.579 + ] + ], + [ + 0.474, + [ + 0.402, + 1, + 0.566 + ] + ], + [ + 0.476, + [ + 0.402, + 1, + 0.566 + ] + ], + [ + 0.477, + [ + 0.414, + 1, + 0.553 + ] + ], + [ + 0.479, + [ + 0.414, + 1, + 0.553 + ] + ], + [ + 0.481, + [ + 0.427, + 1, + 0.541 + ] + ], + [ + 0.483, + [ + 0.427, + 1, + 0.541 + ] + ], + [ + 0.485, + [ + 0.44, + 1, + 0.528 + ] + ], + [ + 0.487, + [ + 0.44, + 1, + 0.528 + ] + ], + [ + 0.489, + [ + 0.452, + 1, + 0.515 + ] + ], + [ + 0.491, + [ + 0.452, + 1, + 0.515 + ] + ], + [ + 0.493, + [ + 0.465, + 1, + 0.503 + ] + ], + [ + 0.495, + [ + 0.465, + 1, + 0.503 + ] + ], + [ + 0.497, + [ + 0.478, + 1, + 0.49 + ] + ], + [ + 0.499, + [ + 0.478, + 1, + 0.49 + ] + ], + [ + 0.501, + [ + 0.49, + 1, + 0.478 + ] + ], + [ + 0.503, + [ + 0.49, + 1, + 0.478 + ] + ], + [ + 0.505, + [ + 0.503, + 1, + 0.465 + ] + ], + [ + 0.507, + [ + 0.503, + 1, + 0.465 + ] + ], + [ + 0.509, + [ + 0.515, + 1, + 0.452 + ] + ], + [ + 0.511, + [ + 0.515, + 1, + 0.452 + ] + ], + [ + 0.513, + [ + 0.528, + 1, + 0.44 + ] + ], + [ + 0.515, + [ + 0.528, + 1, + 0.44 + ] + ], + [ + 0.517, + [ + 0.541, + 1, + 0.427 + ] + ], + [ + 0.519, + [ + 0.541, + 1, + 0.427 + ] + ], + [ + 0.521, + [ + 0.553, + 1, + 0.414 + ] + ], + [ + 0.523, + [ + 0.553, + 1, + 0.414 + ] + ], + [ + 0.524, + [ + 0.566, + 1, + 0.402 + ] + ], + [ + 0.526, + [ + 0.566, + 1, + 0.402 + ] + ], + [ + 0.528, + [ + 0.579, + 1, + 0.389 + ] + ], + [ + 0.53, + [ + 0.579, + 1, + 0.389 + ] + ], + [ + 0.532, + [ + 0.591, + 1, + 0.376 + ] + ], + [ + 0.534, + [ + 0.591, + 1, + 0.376 + ] + ], + [ + 0.536, + [ + 0.604, + 1, + 0.364 + ] + ], + [ + 0.538, + [ + 0.604, + 1, + 0.364 + ] + ], + [ + 0.54, + [ + 0.617, + 1, + 0.351 + ] + ], + [ + 0.542, + [ + 0.617, + 1, + 0.351 + ] + ], + [ + 0.544, + [ + 0.629, + 1, + 0.338 + ] + ], + [ + 0.546, + [ + 0.629, + 1, + 0.338 + ] + ], + [ + 0.548, + [ + 0.642, + 1, + 0.326 + ] + ], + [ + 0.55, + [ + 0.642, + 1, + 0.326 + ] + ], + [ + 0.552, + [ + 0.655, + 1, + 0.313 + ] + ], + [ + 0.554, + [ + 0.655, + 1, + 0.313 + ] + ], + [ + 0.556, + [ + 0.667, + 1, + 0.3 + ] + ], + [ + 0.558, + [ + 0.667, + 1, + 0.3 + ] + ], + [ + 0.56, + [ + 0.68, + 1, + 0.288 + ] + ], + [ + 0.562, + [ + 0.68, + 1, + 0.288 + ] + ], + [ + 0.564, + [ + 0.693, + 1, + 0.275 + ] + ], + [ + 0.566, + [ + 0.693, + 1, + 0.275 + ] + ], + [ + 0.568, + [ + 0.705, + 1, + 0.262 + ] + ], + [ + 0.569, + [ + 0.705, + 1, + 0.262 + ] + ], + [ + 0.571, + [ + 0.718, + 1, + 0.25 + ] + ], + [ + 0.573, + [ + 0.718, + 1, + 0.25 + ] + ], + [ + 0.575, + [ + 0.731, + 1, + 0.237 + ] + ], + [ + 0.577, + [ + 0.731, + 1, + 0.237 + ] + ], + [ + 0.579, + [ + 0.743, + 1, + 0.225 + ] + ], + [ + 0.581, + [ + 0.743, + 1, + 0.225 + ] + ], + [ + 0.583, + [ + 0.756, + 1, + 0.212 + ] + ], + [ + 0.585, + [ + 0.756, + 1, + 0.212 + ] + ], + [ + 0.587, + [ + 0.769, + 1, + 0.199 + ] + ], + [ + 0.589, + [ + 0.769, + 1, + 0.199 + ] + ], + [ + 0.591, + [ + 0.781, + 1, + 0.187 + ] + ], + [ + 0.593, + [ + 0.781, + 1, + 0.187 + ] + ], + [ + 0.595, + [ + 0.794, + 1, + 0.174 + ] + ], + [ + 0.597, + [ + 0.794, + 1, + 0.174 + ] + ], + [ + 0.599, + [ + 0.806, + 1, + 0.161 + ] + ], + [ + 0.601, + [ + 0.806, + 1, + 0.161 + ] + ], + [ + 0.603, + [ + 0.819, + 1, + 0.149 + ] + ], + [ + 0.605, + [ + 0.819, + 1, + 0.149 + ] + ], + [ + 0.607, + [ + 0.832, + 1, + 0.136 + ] + ], + [ + 0.609, + [ + 0.832, + 1, + 0.136 + ] + ], + [ + 0.611, + [ + 0.844, + 1, + 0.123 + ] + ], + [ + 0.613, + [ + 0.844, + 1, + 0.123 + ] + ], + [ + 0.614, + [ + 0.857, + 1, + 0.111 + ] + ], + [ + 0.616, + [ + 0.857, + 1, + 0.111 + ] + ], + [ + 0.618, + [ + 0.87, + 1, + 0.098 + ] + ], + [ + 0.62, + [ + 0.87, + 1, + 0.098 + ] + ], + [ + 0.622, + [ + 0.882, + 1, + 0.085 + ] + ], + [ + 0.624, + [ + 0.882, + 1, + 0.085 + ] + ], + [ + 0.626, + [ + 0.895, + 1, + 0.073 + ] + ], + [ + 0.628, + [ + 0.895, + 1, + 0.073 + ] + ], + [ + 0.63, + [ + 0.908, + 1, + 0.06 + ] + ], + [ + 0.632, + [ + 0.908, + 1, + 0.06 + ] + ], + [ + 0.634, + [ + 0.92, + 1, + 0.047 + ] + ], + [ + 0.636, + [ + 0.92, + 1, + 0.047 + ] + ], + [ + 0.638, + [ + 0.933, + 1, + 0.035 + ] + ], + [ + 0.64, + [ + 0.933, + 1, + 0.035 + ] + ], + [ + 0.642, + [ + 0.946, + 0.988, + 0.022 + ] + ], + [ + 0.644, + [ + 0.946, + 0.988, + 0.022 + ] + ], + [ + 0.646, + [ + 0.958, + 0.974, + 0.009 + ] + ], + [ + 0.648, + [ + 0.958, + 0.974, + 0.009 + ] + ], + [ + 0.65, + [ + 0.971, + 0.959, + 0 + ] + ], + [ + 0.652, + [ + 0.971, + 0.959, + 0 + ] + ], + [ + 0.654, + [ + 0.984, + 0.945, + 0 + ] + ], + [ + 0.656, + [ + 0.984, + 0.945, + 0 + ] + ], + [ + 0.658, + [ + 0.996, + 0.93, + 0 + ] + ], + [ + 0.659, + [ + 0.996, + 0.93, + 0 + ] + ], + [ + 0.661, + [ + 1, + 0.916, + 0 + ] + ], + [ + 0.663, + [ + 1, + 0.916, + 0 + ] + ], + [ + 0.665, + [ + 1, + 0.901, + 0 + ] + ], + [ + 0.667, + [ + 1, + 0.901, + 0 + ] + ], + [ + 0.669, + [ + 1, + 0.887, + 0 + ] + ], + [ + 0.671, + [ + 1, + 0.887, + 0 + ] + ], + [ + 0.673, + [ + 1, + 0.872, + 0 + ] + ], + [ + 0.675, + [ + 1, + 0.872, + 0 + ] + ], + [ + 0.677, + [ + 1, + 0.858, + 0 + ] + ], + [ + 0.679, + [ + 1, + 0.858, + 0 + ] + ], + [ + 0.681, + [ + 1, + 0.843, + 0 + ] + ], + [ + 0.683, + [ + 1, + 0.843, + 0 + ] + ], + [ + 0.685, + [ + 1, + 0.829, + 0 + ] + ], + [ + 0.687, + [ + 1, + 0.829, + 0 + ] + ], + [ + 0.689, + [ + 1, + 0.814, + 0 + ] + ], + [ + 0.691, + [ + 1, + 0.814, + 0 + ] + ], + [ + 0.693, + [ + 1, + 0.8, + 0 + ] + ], + [ + 0.695, + [ + 1, + 0.8, + 0 + ] + ], + [ + 0.697, + [ + 1, + 0.785, + 0 + ] + ], + [ + 0.699, + [ + 1, + 0.785, + 0 + ] + ], + [ + 0.701, + [ + 1, + 0.771, + 0 + ] + ], + [ + 0.703, + [ + 1, + 0.771, + 0 + ] + ], + [ + 0.705, + [ + 1, + 0.756, + 0 + ] + ], + [ + 0.706, + [ + 1, + 0.756, + 0 + ] + ], + [ + 0.708, + [ + 1, + 0.741, + 0 + ] + ], + [ + 0.71, + [ + 1, + 0.741, + 0 + ] + ], + [ + 0.712, + [ + 1, + 0.727, + 0 + ] + ], + [ + 0.714, + [ + 1, + 0.727, + 0 + ] + ], + [ + 0.716, + [ + 1, + 0.712, + 0 + ] + ], + [ + 0.718, + [ + 1, + 0.712, + 0 + ] + ], + [ + 0.72, + [ + 1, + 0.698, + 0 + ] + ], + [ + 0.722, + [ + 1, + 0.698, + 0 + ] + ], + [ + 0.724, + [ + 1, + 0.683, + 0 + ] + ], + [ + 0.726, + [ + 1, + 0.683, + 0 + ] + ], + [ + 0.728, + [ + 1, + 0.669, + 0 + ] + ], + [ + 0.73, + [ + 1, + 0.669, + 0 + ] + ], + [ + 0.732, + [ + 1, + 0.654, + 0 + ] + ], + [ + 0.734, + [ + 1, + 0.654, + 0 + ] + ], + [ + 0.736, + [ + 1, + 0.64, + 0 + ] + ], + [ + 0.738, + [ + 1, + 0.64, + 0 + ] + ], + [ + 0.74, + [ + 1, + 0.625, + 0 + ] + ], + [ + 0.742, + [ + 1, + 0.625, + 0 + ] + ], + [ + 0.744, + [ + 1, + 0.611, + 0 + ] + ], + [ + 0.746, + [ + 1, + 0.611, + 0 + ] + ], + [ + 0.748, + [ + 1, + 0.596, + 0 + ] + ], + [ + 0.75, + [ + 1, + 0.596, + 0 + ] + ], + [ + 0.751, + [ + 1, + 0.582, + 0 + ] + ], + [ + 0.753, + [ + 1, + 0.582, + 0 + ] + ], + [ + 0.755, + [ + 1, + 0.567, + 0 + ] + ], + [ + 0.757, + [ + 1, + 0.567, + 0 + ] + ], + [ + 0.759, + [ + 1, + 0.553, + 0 + ] + ], + [ + 0.761, + [ + 1, + 0.553, + 0 + ] + ], + [ + 0.763, + [ + 1, + 0.538, + 0 + ] + ], + [ + 0.765, + [ + 1, + 0.538, + 0 + ] + ], + [ + 0.767, + [ + 1, + 0.524, + 0 + ] + ], + [ + 0.769, + [ + 1, + 0.524, + 0 + ] + ], + [ + 0.771, + [ + 1, + 0.509, + 0 + ] + ], + [ + 0.773, + [ + 1, + 0.509, + 0 + ] + ], + [ + 0.775, + [ + 1, + 0.495, + 0 + ] + ], + [ + 0.777, + [ + 1, + 0.495, + 0 + ] + ], + [ + 0.779, + [ + 1, + 0.48, + 0 + ] + ], + [ + 0.781, + [ + 1, + 0.48, + 0 + ] + ], + [ + 0.783, + [ + 1, + 0.466, + 0 + ] + ], + [ + 0.785, + [ + 1, + 0.466, + 0 + ] + ], + [ + 0.787, + [ + 1, + 0.451, + 0 + ] + ], + [ + 0.789, + [ + 1, + 0.451, + 0 + ] + ], + [ + 0.791, + [ + 1, + 0.436, + 0 + ] + ], + [ + 0.793, + [ + 1, + 0.436, + 0 + ] + ], + [ + 0.795, + [ + 1, + 0.422, + 0 + ] + ], + [ + 0.796, + [ + 1, + 0.422, + 0 + ] + ], + [ + 0.798, + [ + 1, + 0.407, + 0 + ] + ], + [ + 0.8, + [ + 1, + 0.407, + 0 + ] + ], + [ + 0.802, + [ + 1, + 0.393, + 0 + ] + ], + [ + 0.804, + [ + 1, + 0.393, + 0 + ] + ], + [ + 0.806, + [ + 1, + 0.378, + 0 + ] + ], + [ + 0.808, + [ + 1, + 0.378, + 0 + ] + ], + [ + 0.81, + [ + 1, + 0.364, + 0 + ] + ], + [ + 0.812, + [ + 1, + 0.364, + 0 + ] + ], + [ + 0.814, + [ + 1, + 0.349, + 0 + ] + ], + [ + 0.816, + [ + 1, + 0.349, + 0 + ] + ], + [ + 0.818, + [ + 1, + 0.335, + 0 + ] + ], + [ + 0.82, + [ + 1, + 0.335, + 0 + ] + ], + [ + 0.822, + [ + 1, + 0.32, + 0 + ] + ], + [ + 0.824, + [ + 1, + 0.32, + 0 + ] + ], + [ + 0.826, + [ + 1, + 0.306, + 0 + ] + ], + [ + 0.828, + [ + 1, + 0.306, + 0 + ] + ], + [ + 0.83, + [ + 1, + 0.291, + 0 + ] + ], + [ + 0.832, + [ + 1, + 0.291, + 0 + ] + ], + [ + 0.834, + [ + 1, + 0.277, + 0 + ] + ], + [ + 0.836, + [ + 1, + 0.277, + 0 + ] + ], + [ + 0.838, + [ + 1, + 0.262, + 0 + ] + ], + [ + 0.84, + [ + 1, + 0.262, + 0 + ] + ], + [ + 0.841, + [ + 1, + 0.248, + 0 + ] + ], + [ + 0.843, + [ + 1, + 0.248, + 0 + ] + ], + [ + 0.845, + [ + 1, + 0.233, + 0 + ] + ], + [ + 0.847, + [ + 1, + 0.233, + 0 + ] + ], + [ + 0.849, + [ + 1, + 0.219, + 0 + ] + ], + [ + 0.851, + [ + 1, + 0.219, + 0 + ] + ], + [ + 0.853, + [ + 1, + 0.204, + 0 + ] + ], + [ + 0.855, + [ + 1, + 0.204, + 0 + ] + ], + [ + 0.857, + [ + 1, + 0.19, + 0 + ] + ], + [ + 0.859, + [ + 1, + 0.19, + 0 + ] + ], + [ + 0.861, + [ + 1, + 0.175, + 0 + ] + ], + [ + 0.863, + [ + 1, + 0.175, + 0 + ] + ], + [ + 0.865, + [ + 1, + 0.16, + 0 + ] + ], + [ + 0.867, + [ + 1, + 0.16, + 0 + ] + ], + [ + 0.869, + [ + 1, + 0.146, + 0 + ] + ], + [ + 0.871, + [ + 1, + 0.146, + 0 + ] + ], + [ + 0.873, + [ + 1, + 0.131, + 0 + ] + ], + [ + 0.875, + [ + 1, + 0.131, + 0 + ] + ], + [ + 0.877, + [ + 1, + 0.117, + 0 + ] + ], + [ + 0.879, + [ + 1, + 0.117, + 0 + ] + ], + [ + 0.881, + [ + 1, + 0.102, + 0 + ] + ], + [ + 0.883, + [ + 1, + 0.102, + 0 + ] + ], + [ + 0.885, + [ + 1, + 0.088, + 0 + ] + ], + [ + 0.886, + [ + 1, + 0.088, + 0 + ] + ], + [ + 0.888, + [ + 0.999, + 0.073, + 0 + ] + ], + [ + 0.89, + [ + 0.999, + 0.073, + 0 + ] + ], + [ + 0.892, + [ + 0.981, + 0.059, + 0 + ] + ], + [ + 0.894, + [ + 0.981, + 0.059, + 0 + ] + ], + [ + 0.896, + [ + 0.963, + 0.044, + 0 + ] + ], + [ + 0.898, + [ + 0.963, + 0.044, + 0 + ] + ], + [ + 0.9, + [ + 0.946, + 0.03, + 0 + ] + ], + [ + 0.902, + [ + 0.946, + 0.03, + 0 + ] + ], + [ + 0.904, + [ + 0.928, + 0.015, + 0 + ] + ], + [ + 0.906, + [ + 0.928, + 0.015, + 0 + ] + ], + [ + 0.908, + [ + 0.91, + 0.001, + 0 + ] + ], + [ + 0.91, + [ + 0.91, + 0.001, + 0 + ] + ], + [ + 0.912, + [ + 0.892, + 0, + 0 + ] + ], + [ + 0.914, + [ + 0.892, + 0, + 0 + ] + ], + [ + 0.916, + [ + 0.874, + 0, + 0 + ] + ], + [ + 0.918, + [ + 0.874, + 0, + 0 + ] + ], + [ + 0.92, + [ + 0.857, + 0, + 0 + ] + ], + [ + 0.922, + [ + 0.857, + 0, + 0 + ] + ], + [ + 0.924, + [ + 0.839, + 0, + 0 + ] + ], + [ + 0.926, + [ + 0.839, + 0, + 0 + ] + ], + [ + 0.928, + [ + 0.821, + 0, + 0 + ] + ], + [ + 0.93, + [ + 0.821, + 0, + 0 + ] + ], + [ + 0.932, + [ + 0.803, + 0, + 0 + ] + ], + [ + 0.933, + [ + 0.803, + 0, + 0 + ] + ], + [ + 0.935, + [ + 0.785, + 0, + 0 + ] + ], + [ + 0.937, + [ + 0.785, + 0, + 0 + ] + ], + [ + 0.939, + [ + 0.767, + 0, + 0 + ] + ], + [ + 0.941, + [ + 0.767, + 0, + 0 + ] + ], + [ + 0.943, + [ + 0.75, + 0, + 0 + ] + ], + [ + 0.945, + [ + 0.75, + 0, + 0 + ] + ], + [ + 0.947, + [ + 0.732, + 0, + 0 + ] + ], + [ + 0.949, + [ + 0.732, + 0, + 0 + ] + ], + [ + 0.951, + [ + 0.714, + 0, + 0 + ] + ], + [ + 0.953, + [ + 0.714, + 0, + 0 + ] + ], + [ + 0.955, + [ + 0.696, + 0, + 0 + ] + ], + [ + 0.957, + [ + 0.696, + 0, + 0 + ] + ], + [ + 0.959, + [ + 0.678, + 0, + 0 + ] + ], + [ + 0.961, + [ + 0.678, + 0, + 0 + ] + ], + [ + 0.963, + [ + 0.66, + 0, + 0 + ] + ], + [ + 0.965, + [ + 0.66, + 0, + 0 + ] + ], + [ + 0.967, + [ + 0.643, + 0, + 0 + ] + ], + [ + 0.969, + [ + 0.643, + 0, + 0 + ] + ], + [ + 0.971, + [ + 0.625, + 0, + 0 + ] + ], + [ + 0.973, + [ + 0.625, + 0, + 0 + ] + ], + [ + 0.975, + [ + 0.607, + 0, + 0 + ] + ], + [ + 0.977, + [ + 0.607, + 0, + 0 + ] + ], + [ + 0.978, + [ + 0.589, + 0, + 0 + ] + ], + [ + 0.98, + [ + 0.589, + 0, + 0 + ] + ], + [ + 0.982, + [ + 0.571, + 0, + 0 + ] + ], + [ + 0.984, + [ + 0.571, + 0, + 0 + ] + ], + [ + 0.986, + [ + 0.553, + 0, + 0 + ] + ], + [ + 0.988, + [ + 0.553, + 0, + 0 + ] + ], + [ + 0.99, + [ + 0.536, + 0, + 0 + ] + ], + [ + 0.992, + [ + 0.536, + 0, + 0 + ] + ], + [ + 0.994, + [ + 0.518, + 0, + 0 + ] + ], + [ + 0.996, + [ + 0.518, + 0, + 0 + ] + ], + [ + 0.998, + [ + 0.5, + 0, + 0 + ] + ], + [ + 1, + [ + 0.5, + 0, + 0 + ] + ] + ] + ], + "colorMap": 0 + }, + "bar": false + } +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/setupFlight.js b/01_Code/physical_computing_interface/simulation/json/setupFlight.js new file mode 100644 index 0000000000000000000000000000000000000000..c199e26e4659f6d52835e7a2aff35a131f88dbba --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/setupFlight.js @@ -0,0 +1,65 @@ +var setup= +{ + nodes: [ + { + id: 'n0', + parent: '11', + degrees_of_freedom:[0,1,2,3,4,5] , + restrained_degrees_of_freedom:[true,true,true,true,true,true], + position: { x: 0, y: 0,z:0 }, + currPosition:new THREE.Vector3(0,0,0), + force:{ x: 0, y: 10,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 }, + orient: new THREE.Quaternion(), + linMom:new THREE.Vector3(0,0,0), + angMom:new THREE.Vector3(0,0,0), + intForce:new THREE.Vector3(0,0,0), + intMoment:new THREE.Vector3(0,0,0), + moment:{ x: 0, y: 0,z:0 }, + velocity:new THREE.Vector3(0,0,0), + + }, + ], + + edges: [ + // { + // id: 'e0', source: 0, target: 1 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0, + // currentRestLength:0, + // axis:Y_AXIS, + // pos2: new THREE.Vector3(0,0,0), + // angle1v: new THREE.Vector3(0,0,0), + // angle2v: new THREE.Vector3(0,0,0), + // angle1:new THREE.Quaternion(), + // angle2:new THREE.Quaternion(), + // currentTransverseArea:0, + // currentTransverseStrainSum:0 + + // }, + + ], + + //material properties - AISI 1095 Carbon Steel (Spring Steel) + ndofs : 3*6, + + animation : { + + showDisplacement : true, + exageration : 10, + speed:3.0 + + }, + + viz : { + + + minStress:-500, + maxStress: 500, + colorMaps:[YlGnBu, winter, coolwarm,jet], + colorMap:0, + + }, + + bar:false + +}; \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/setupScaling.json b/01_Code/physical_computing_interface/simulation/json/setupScaling.json new file mode 100644 index 0000000000000000000000000000000000000000..ae5b40dff451847e0b4db8760a0264cc7893f241 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/setupScaling.json @@ -0,0 +1,37826 @@ +{ + "setup": { + "nodes": [ + { + "id": "n0", + "parent": "11", + "degrees_of_freedom": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n1", + "parent": "11", + "degrees_of_freedom": [ + 6, + 7, + 8, + 9, + 10, + 11 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n2", + "parent": "11", + "degrees_of_freedom": [ + 12, + 13, + 14, + 15, + 16, + 17 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n3", + "parent": "11", + "degrees_of_freedom": [ + 18, + 19, + 20, + 21, + 22, + 23 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n4", + "parent": "11", + "degrees_of_freedom": [ + 24, + 25, + 26, + 27, + 28, + 29 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008205257007863758, + "y": -0.00028794773410591943, + "z": -0.00008823168988912126 + }, + "angle": { + "x": -0.000005840751456558866, + "y": -3.4991775892099054e-7, + "z": 0.000001859132341393773 + } + }, + { + "id": "n5", + "parent": "11", + "degrees_of_freedom": [ + 30, + 31, + 32, + 33, + 34, + 35 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003418000401508338, + "y": -0.00015500185230879723, + "z": -0.00008727593552701169 + }, + "angle": { + "x": -0.00001364278767889116, + "y": -8.318301850599637e-7, + "z": 0.000006418486542579446 + } + }, + { + "id": "n6", + "parent": "11", + "degrees_of_freedom": [ + 36, + 37, + 38, + 39, + 40, + 41 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003486407759695759, + "y": -0.0001297992224526492, + "z": -0.000027729741595737566 + }, + "angle": { + "x": -0.000009020995204898392, + "y": -1.0789018528087246e-7, + "z": 0.000005932310128387122 + } + }, + { + "id": "n7", + "parent": "11", + "degrees_of_freedom": [ + 42, + 43, + 44, + 45, + 46, + 47 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00013125465725385204, + "y": -0.0003325663733476859, + "z": -0.00010412108453770907 + }, + "angle": { + "x": -0.000007444428293583669, + "y": 6.87855269737807e-7, + "z": 0.000002245246841460526 + } + }, + { + "id": "n8", + "parent": "11", + "degrees_of_freedom": [ + 48, + 49, + 50, + 51, + 52, + 53 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012160073814526837, + "y": -0.00032867507742509054, + "z": -0.0001092343423033868 + }, + "angle": { + "x": -0.000005191621664452755, + "y": -0.0000022274744704041056, + "z": 0.0000049459595867660645 + } + }, + { + "id": "n9", + "parent": "11", + "degrees_of_freedom": [ + 54, + 55, + 56, + 57, + 58, + 59 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001111856419462881, + "y": -0.00029175719115308345, + "z": -0.00006875511290007724 + }, + "angle": { + "x": -0.00000399907031631663, + "y": -9.26913075792901e-7, + "z": 0.000003696685363435199 + } + }, + { + "id": "n10", + "parent": "11", + "degrees_of_freedom": [ + 60, + 61, + 62, + 63, + 64, + 65 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00014111777771570166, + "y": -0.00021478181674035136, + "z": -0.00011711714246285581 + }, + "angle": { + "x": -0.00001833798202284862, + "y": -0.000005128087096320026, + "z": 0.000012409488069825712 + } + }, + { + "id": "n11", + "parent": "11", + "degrees_of_freedom": [ + 66, + 67, + 68, + 69, + 70, + 71 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011892558075504496, + "y": -0.00016233497139187415, + "z": -0.00002939590886955851 + }, + "angle": { + "x": -0.000010269697898095962, + "y": 8.600196334893735e-7, + "z": 0.000009094411880164352 + } + }, + { + "id": "n12", + "parent": "11", + "degrees_of_freedom": [ + 72, + 73, + 74, + 75, + 76, + 77 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n13", + "parent": "11", + "degrees_of_freedom": [ + 78, + 79, + 80, + 81, + 82, + 83 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n14", + "parent": "11", + "degrees_of_freedom": [ + 84, + 85, + 86, + 87, + 88, + 89 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n15", + "parent": "11", + "degrees_of_freedom": [ + 90, + 91, + 92, + 93, + 94, + 95 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007747328359226291, + "y": -0.0002685675813799731, + "z": -0.000039326259891428496 + }, + "angle": { + "x": -0.000002385059906938731, + "y": 1.992628344267765e-7, + "z": 0.0000015565843291629355 + } + }, + { + "id": "n16", + "parent": "11", + "degrees_of_freedom": [ + 96, + 97, + 98, + 99, + 100, + 101 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000033069506623790315, + "y": -0.0001264253493308692, + "z": -0.000008904664495634693 + }, + "angle": { + "x": -0.000002714771361459645, + "y": 7.063062370646476e-8, + "z": 0.000005565359636019311 + } + }, + { + "id": "n17", + "parent": "11", + "degrees_of_freedom": [ + 102, + 103, + 104, + 105, + 106, + 107 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011529307898400247, + "y": -0.00030002484322960867, + "z": -0.00003978943950214754 + }, + "angle": { + "x": -0.0000036088835025601835, + "y": 0.0000016467054210120653, + "z": 0.0000025983912384540145 + } + }, + { + "id": "n18", + "parent": "11", + "degrees_of_freedom": [ + 108, + 109, + 110, + 111, + 112, + 113 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010356532824277346, + "y": -0.00028201686247848593, + "z": -0.00001951965010833282 + }, + "angle": { + "x": -9.061811101170063e-7, + "y": -7.226371531246605e-8, + "z": 0.000003201869774711499 + } + }, + { + "id": "n19", + "parent": "11", + "degrees_of_freedom": [ + 114, + 115, + 116, + 117, + 118, + 119 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011238967752822082, + "y": -0.00015626571700273764, + "z": -0.000008725807768663585 + }, + "angle": { + "x": -0.0000026896820420939988, + "y": 8.862734676532331e-9, + "z": 0.000008307538571132748 + } + }, + { + "id": "n20", + "parent": "11", + "degrees_of_freedom": [ + 120, + 121, + 122, + 123, + 124, + 125 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n21", + "parent": "11", + "degrees_of_freedom": [ + 126, + 127, + 128, + 129, + 130, + 131 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n22", + "parent": "11", + "degrees_of_freedom": [ + 132, + 133, + 134, + 135, + 136, + 137 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n23", + "parent": "11", + "degrees_of_freedom": [ + 138, + 139, + 140, + 141, + 142, + 143 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007393398904637748, + "y": -0.00026590749115153114, + "z": -3.01297560318607e-19 + }, + "angle": { + "x": -2.807445389073908e-20, + "y": -2.244234476450761e-20, + "z": 0.0000014810659436388197 + } + }, + { + "id": "n24", + "parent": "11", + "degrees_of_freedom": [ + 144, + 145, + 146, + 147, + 148, + 149 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003306950662379043, + "y": -0.00012642534933086913, + "z": 0.00000890466449563429 + }, + "angle": { + "x": 0.0000027147713614595527, + "y": -7.063062370646952e-8, + "z": 0.000005565359636019334 + } + }, + { + "id": "n25", + "parent": "11", + "degrees_of_freedom": [ + 150, + 151, + 152, + 153, + 154, + 155 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011381592956519392, + "y": -0.0002962464066205737, + "z": -2.923520729991998e-19 + }, + "angle": { + "x": 1.1762156275223358e-20, + "y": -4.52037518683331e-20, + "z": 0.0000026425976945234352 + } + }, + { + "id": "n26", + "parent": "11", + "degrees_of_freedom": [ + 156, + 157, + 158, + 159, + 160, + 161 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010356532824277381, + "y": -0.00028201686247848577, + "z": 0.00001951965010833221 + }, + "angle": { + "x": 9.061811101170516e-7, + "y": 7.226371531247085e-8, + "z": 0.0000032018697747115196 + } + }, + { + "id": "n27", + "parent": "11", + "degrees_of_freedom": [ + 162, + 163, + 164, + 165, + 166, + 167 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000112389677528221, + "y": -0.00015626571700273783, + "z": 0.000008725807768663134 + }, + "angle": { + "x": 0.000002689682042093912, + "y": -8.862734676560171e-9, + "z": 0.000008307538571132771 + } + }, + { + "id": "n28", + "parent": "11", + "degrees_of_freedom": [ + 168, + 169, + 170, + 171, + 172, + 173 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n29", + "parent": "11", + "degrees_of_freedom": [ + 174, + 175, + 176, + 177, + 178, + 179 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n30", + "parent": "11", + "degrees_of_freedom": [ + 180, + 181, + 182, + 183, + 184, + 185 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n31", + "parent": "11", + "degrees_of_freedom": [ + 186, + 187, + 188, + 189, + 190, + 191 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007747328359226326, + "y": -0.0002685675813799737, + "z": 0.00003932625989142777 + }, + "angle": { + "x": 0.0000023850599069388313, + "y": -1.9926283442681136e-7, + "z": 0.0000015565843291629573 + } + }, + { + "id": "n32", + "parent": "11", + "degrees_of_freedom": [ + 192, + 193, + 194, + 195, + 196, + 197 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000034864077596957726, + "y": -0.00012979922245264958, + "z": 0.00002772974159573717 + }, + "angle": { + "x": 0.000009020995204898295, + "y": 1.0789018528086878e-7, + "z": 0.0000059323101283871595 + } + }, + { + "id": "n33", + "parent": "11", + "degrees_of_freedom": [ + 198, + 199, + 200, + 201, + 202, + 203 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011529307898400291, + "y": -0.0003000248432296096, + "z": 0.00003978943950214678 + }, + "angle": { + "x": 0.000003608883502560242, + "y": -0.0000016467054210120983, + "z": 0.0000025983912384540204 + } + }, + { + "id": "n34", + "parent": "11", + "degrees_of_freedom": [ + 204, + 205, + 206, + 207, + 208, + 209 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011118564194628866, + "y": -0.0002917571911530847, + "z": 0.0000687551129000765 + }, + "angle": { + "x": 0.0000039990703163166004, + "y": 9.269130757928984e-7, + "z": 0.0000036966853634352035 + } + }, + { + "id": "n35", + "parent": "11", + "degrees_of_freedom": [ + 210, + 211, + 212, + 213, + 214, + 215 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011892558075504551, + "y": -0.00016233497139187466, + "z": 0.000029395908869558138 + }, + "angle": { + "x": 0.000010269697898095864, + "y": -8.600196334893759e-7, + "z": 0.00000909441188016439 + } + }, + { + "id": "n36", + "parent": "11", + "degrees_of_freedom": [ + 216, + 217, + 218, + 219, + 220, + 221 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n37", + "parent": "11", + "degrees_of_freedom": [ + 222, + 223, + 224, + 225, + 226, + 227 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n38", + "parent": "11", + "degrees_of_freedom": [ + 228, + 229, + 230, + 231, + 232, + 233 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n39", + "parent": "11", + "degrees_of_freedom": [ + 234, + 235, + 236, + 237, + 238, + 239 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008205257007863806, + "y": -0.0002879477341059203, + "z": 0.00008823168988912067 + }, + "angle": { + "x": 0.000005840751456558792, + "y": 3.499177589209918e-7, + "z": 0.0000018591323413937865 + } + }, + { + "id": "n40", + "parent": "11", + "degrees_of_freedom": [ + 240, + 241, + 242, + 243, + 244, + 245 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003418000401508367, + "y": -0.00015500185230879766, + "z": 0.00008727593552701162 + }, + "angle": { + "x": 0.000013642787678891092, + "y": 8.318301850599514e-7, + "z": 0.000006418486542579474 + } + }, + { + "id": "n41", + "parent": "11", + "degrees_of_freedom": [ + 246, + 247, + 248, + 249, + 250, + 251 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001312546572538525, + "y": -0.00033256637334768693, + "z": 0.0001041210845377083 + }, + "angle": { + "x": 0.0000074444282935835924, + "y": -6.878552697378077e-7, + "z": 0.00000224524684146052 + } + }, + { + "id": "n42", + "parent": "11", + "degrees_of_freedom": [ + 252, + 253, + 254, + 255, + 256, + 257 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012160073814526876, + "y": -0.00032867507742509157, + "z": 0.00010923434230338612 + }, + "angle": { + "x": 0.000005191621664452658, + "y": 0.000002227474470404092, + "z": 0.000004945959586766085 + } + }, + { + "id": "n43", + "parent": "11", + "degrees_of_freedom": [ + 258, + 259, + 260, + 261, + 262, + 263 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001411177777157022, + "y": -0.0002147818167403518, + "z": 0.00011711714246285568 + }, + "angle": { + "x": 0.000018337982022848528, + "y": 0.000005128087096320031, + "z": 0.00001240948806982576 + } + }, + { + "id": "n44", + "parent": "11", + "degrees_of_freedom": [ + 264, + 265, + 266, + 267, + 268, + 269 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012202429034742255, + "y": -0.0005955408165745366, + "z": -0.00012554653436312266 + }, + "angle": { + "x": -0.0000027740514759974623, + "y": -4.816901619645821e-7, + "z": 7.820775344678751e-7 + } + }, + { + "id": "n45", + "parent": "11", + "degrees_of_freedom": [ + 270, + 271, + 272, + 273, + 274, + 275 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010528475990560089, + "y": -0.00045628438109424497, + "z": -0.0001617025910058657 + }, + "angle": { + "x": -0.000004275923286031565, + "y": -0.00000138228976840466, + "z": 0.0000033760776438337575 + } + }, + { + "id": "n46", + "parent": "11", + "degrees_of_freedom": [ + 276, + 277, + 278, + 279, + 280, + 281 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010006683423972193, + "y": -0.0004299061013193987, + "z": -0.00008065713388380003 + }, + "angle": { + "x": -0.0000038110561990320063, + "y": -3.834317139396896e-7, + "z": 0.0000029611878478729786 + } + }, + { + "id": "n47", + "parent": "11", + "degrees_of_freedom": [ + 282, + 283, + 284, + 285, + 286, + 287 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00017640666032548577, + "y": -0.0006229774592153826, + "z": -0.00014364379549507776 + }, + "angle": { + "x": -0.0000032039695025010194, + "y": -8.013815068961581e-7, + "z": 0.000001065174696838168 + } + }, + { + "id": "n48", + "parent": "11", + "degrees_of_freedom": [ + 288, + 289, + 290, + 291, + 292, + 293 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001686055529297862, + "y": -0.0006193653168520976, + "z": -0.00014664817389030947 + }, + "angle": { + "x": -0.00000193859159339982, + "y": -0.0000015576655686546686, + "z": 0.0000025364469836090995 + } + }, + { + "id": "n49", + "parent": "11", + "degrees_of_freedom": [ + 294, + 295, + 296, + 297, + 298, + 299 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015888927232290815, + "y": -0.0005988538721147272, + "z": -0.00010099707603669671 + }, + "angle": { + "x": -0.0000015034883181778228, + "y": -0.000001278326363311665, + "z": 0.00000222091404817911 + } + }, + { + "id": "n50", + "parent": "11", + "degrees_of_freedom": [ + 300, + 301, + 302, + 303, + 304, + 305 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00022090326815513915, + "y": -0.0004960842300802111, + "z": -0.00018717650230455258 + }, + "angle": { + "x": -0.000004837611695984953, + "y": -0.0000041539775345243816, + "z": 0.000003668502227719859 + } + }, + { + "id": "n51", + "parent": "11", + "degrees_of_freedom": [ + 306, + 307, + 308, + 309, + 310, + 311 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00020774730443164953, + "y": -0.0004634644145101029, + "z": -0.00009106326411607891 + }, + "angle": { + "x": -0.000004395746373741507, + "y": 7.213299037102366e-7, + "z": 0.0000032741742743069296 + } + }, + { + "id": "n52", + "parent": "11", + "degrees_of_freedom": [ + 312, + 313, + 314, + 315, + 316, + 317 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001159031476143967, + "y": -0.0005797237546003277, + "z": -0.00006215172760603207 + }, + "angle": { + "x": -0.0000015508764566871114, + "y": 3.2162757846685926e-7, + "z": 7.794028355687937e-7 + } + }, + { + "id": "n53", + "parent": "11", + "degrees_of_freedom": [ + 318, + 319, + 320, + 321, + 322, + 323 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009374634267112445, + "y": -0.00041953849723029763, + "z": -0.000025259826442539153 + }, + "angle": { + "x": -0.000001457428156678837, + "y": 1.231460090728485e-7, + "z": 0.000002800471464947473 + } + }, + { + "id": "n54", + "parent": "11", + "degrees_of_freedom": [ + 324, + 325, + 326, + 327, + 328, + 329 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015786021363112585, + "y": -0.0006045953601215181, + "z": -0.00006595984389321468 + }, + "angle": { + "x": -0.0000018807539905082427, + "y": 0.0000014163055829588055, + "z": 0.0000010350756750412937 + } + }, + { + "id": "n55", + "parent": "11", + "degrees_of_freedom": [ + 330, + 331, + 332, + 333, + 334, + 335 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00014866847521380572, + "y": -0.000587662126198273, + "z": -0.00003191505108943056 + }, + "angle": { + "x": -6.521071250333701e-7, + "y": -2.3112703260603499e-7, + "z": 0.000002046075985379318 + } + }, + { + "id": "n56", + "parent": "11", + "degrees_of_freedom": [ + 336, + 337, + 338, + 339, + 340, + 341 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00019716633332846647, + "y": -0.0004477822134165714, + "z": -0.000026363986581689958 + }, + "angle": { + "x": -0.0000016290839493116223, + "y": -2.379968234758159e-8, + "z": 0.000002806287272752495 + } + }, + { + "id": "n57", + "parent": "11", + "degrees_of_freedom": [ + 342, + 343, + 344, + 345, + 346, + 347 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001114154859886675, + "y": -0.000574181982134475, + "z": -3.7176945381547914e-19 + }, + "angle": { + "x": -3.1573324611249414e-20, + "y": -4.7110506303626065e-20, + "z": 7.440083687513436e-7 + } + }, + { + "id": "n58", + "parent": "11", + "degrees_of_freedom": [ + 348, + 349, + 350, + 351, + 352, + 353 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00009374634267112481, + "y": -0.0004195384972302976, + "z": 0.00002525982644253844 + }, + "angle": { + "x": 0.0000014574281566788045, + "y": -1.2314600907286084e-7, + "z": 0.000002800471464947501 + } + }, + { + "id": "n59", + "parent": "11", + "degrees_of_freedom": [ + 354, + 355, + 356, + 357, + 358, + 359 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015393090364399076, + "y": -0.0005973785095737041, + "z": -2.878918684472943e-19 + }, + "angle": { + "x": -3.625891718024676e-20, + "y": -7.212715359580213e-21, + "z": 0.000001016950851271609 + } + }, + { + "id": "n60", + "parent": "11", + "degrees_of_freedom": [ + 360, + 361, + 362, + 363, + 364, + 365 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00014866847521380604, + "y": -0.000587662126198273, + "z": 0.00003191505108942977 + }, + "angle": { + "x": 6.521071250333623e-7, + "y": 2.311270326060566e-7, + "z": 0.0000020460759853792626 + } + }, + { + "id": "n61", + "parent": "11", + "degrees_of_freedom": [ + 366, + 367, + 368, + 369, + 370, + 371 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00019716633332846718, + "y": -0.00044778221341657134, + "z": 0.00002636398658168947 + }, + "angle": { + "x": 0.0000016290839493115822, + "y": 2.3799682347561202e-8, + "z": 0.0000028062872727524826 + } + }, + { + "id": "n62", + "parent": "11", + "degrees_of_freedom": [ + 372, + 373, + 374, + 375, + 376, + 377 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011590314761439756, + "y": -0.0005797237546003286, + "z": 0.00006215172760603104 + }, + "angle": { + "x": 0.000001550876456687245, + "y": -3.216275784669032e-7, + "z": 7.794028355687957e-7 + } + }, + { + "id": "n63", + "parent": "11", + "degrees_of_freedom": [ + 378, + 379, + 380, + 381, + 382, + 383 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010006683423972294, + "y": -0.0004299061013194006, + "z": 0.00008065713388379896 + }, + "angle": { + "x": 0.000003811056199031918, + "y": 3.8343171393966437e-7, + "z": 0.0000029611878478730095 + } + }, + { + "id": "n64", + "parent": "11", + "degrees_of_freedom": [ + 384, + 385, + 386, + 387, + 388, + 389 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015786021363112647, + "y": -0.0006045953601215181, + "z": 0.00006595984389321385 + }, + "angle": { + "x": 0.0000018807539905083634, + "y": -0.0000014163055829588091, + "z": 0.0000010350756750412003 + } + }, + { + "id": "n65", + "parent": "11", + "degrees_of_freedom": [ + 390, + 391, + 392, + 393, + 394, + 395 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000158889272322909, + "y": -0.0005988538721147283, + "z": 0.00010099707603669541 + }, + "angle": { + "x": 0.0000015034883181778005, + "y": 0.0000012783263633117015, + "z": 0.0000022209140481790593 + } + }, + { + "id": "n66", + "parent": "11", + "degrees_of_freedom": [ + 396, + 397, + 398, + 399, + 400, + 401 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00020774730443165026, + "y": -0.000463464414510104, + "z": 0.00009106326411607788 + }, + "angle": { + "x": 0.000004395746373741457, + "y": -7.213299037102291e-7, + "z": 0.0000032741742743069673 + } + }, + { + "id": "n67", + "parent": "11", + "degrees_of_freedom": [ + 402, + 403, + 404, + 405, + 406, + 407 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 15, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012202429034742377, + "y": -0.0005955408165745377, + "z": 0.00012554653436312095 + }, + "angle": { + "x": 0.000002774051475997288, + "y": 4.816901619645474e-7, + "z": 7.82077534467885e-7 + } + }, + { + "id": "n68", + "parent": "11", + "degrees_of_freedom": [ + 408, + 409, + 410, + 411, + 412, + 413 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 10, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00010528475990560142, + "y": -0.00045628438109424584, + "z": 0.0001617025910058645 + }, + "angle": { + "x": 0.00000427592328603145, + "y": 0.0000013822897684046607, + "z": 0.000003376077643833832 + } + }, + { + "id": "n69", + "parent": "11", + "degrees_of_freedom": [ + 414, + 415, + 416, + 417, + 418, + 419 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 15, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00017640666032548666, + "y": -0.0006229774592153835, + "z": 0.00014364379549507622 + }, + "angle": { + "x": 0.0000032039695025010728, + "y": 8.013815068961589e-7, + "z": 0.0000010651746968381161 + } + }, + { + "id": "n70", + "parent": "11", + "degrees_of_freedom": [ + 420, + 421, + 422, + 423, + 424, + 425 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 15, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001686055529297872, + "y": -0.0006193653168520992, + "z": 0.00014664817389030765 + }, + "angle": { + "x": 0.0000019385915933997113, + "y": 0.0000015576655686546715, + "z": 0.0000025364469836091694 + } + }, + { + "id": "n71", + "parent": "11", + "degrees_of_freedom": [ + 426, + 427, + 428, + 429, + 430, + 431 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 10, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00022090326815514004, + "y": -0.0004960842300802124, + "z": 0.00018717650230455122 + }, + "angle": { + "x": 0.000004837611695984864, + "y": 0.000004153977534524317, + "z": 0.000003668502227719873 + } + }, + { + "id": "n72", + "parent": "11", + "degrees_of_freedom": [ + 432, + 433, + 434, + 435, + 436, + 437 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00013051011138086362, + "y": -0.000904149878043637, + "z": -0.00013168566591480432 + }, + "angle": { + "x": -4.635540103216525e-7, + "y": -7.62242760375144e-7, + "z": 5.523889028569333e-8 + } + }, + { + "id": "n73", + "parent": "11", + "degrees_of_freedom": [ + 438, + 439, + 440, + 441, + 442, + 443 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012832036395449422, + "y": -0.0007551850582302714, + "z": -0.00018224962406495853 + }, + "angle": { + "x": -5.838825233981338e-7, + "y": -0.0000018623306222469322, + "z": 9.565935551959167e-7 + } + }, + { + "id": "n74", + "parent": "11", + "degrees_of_freedom": [ + 444, + 445, + 446, + 447, + 448, + 449 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001243054546493711, + "y": -0.0007435804141828677, + "z": -0.0000985786310878309 + }, + "angle": { + "x": -7.035865991617065e-7, + "y": -4.4091726739587275e-7, + "z": 8.926364118093831e-7 + } + }, + { + "id": "n75", + "parent": "11", + "degrees_of_freedom": [ + 450, + 451, + 452, + 453, + 454, + 455 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018722151689142745, + "y": -0.000916704016496113, + "z": -0.0001509689424428726 + }, + "angle": { + "x": -3.5480518547597904e-7, + "y": -8.950218572635585e-7, + "z": 3.8753774832365105e-7 + } + }, + { + "id": "n76", + "parent": "11", + "degrees_of_freedom": [ + 456, + 457, + 458, + 459, + 460, + 461 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000178341386703445, + "y": -0.0009129637630085545, + "z": -0.00015388042233328988 + }, + "angle": { + "x": -3.1517504895203293e-7, + "y": -0.000001814189006923291, + "z": 8.232431266607672e-7 + } + }, + { + "id": "n77", + "parent": "11", + "degrees_of_freedom": [ + 462, + 463, + 464, + 465, + 466, + 467 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016964050651717316, + "y": -0.0009077539508661511, + "z": -0.00010647884065372992 + }, + "angle": { + "x": 1.7348833013593458e-7, + "y": -0.000001245054875716651, + "z": 9.748086443097936e-7 + } + }, + { + "id": "n78", + "parent": "11", + "degrees_of_freedom": [ + 468, + 469, + 470, + 471, + 472, + 473 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00024906208967443653, + "y": -0.0007724354661767537, + "z": -0.00021005618995629334 + }, + "angle": { + "x": -5.919070498097901e-7, + "y": -0.0000043726054116957254, + "z": 6.335674905152001e-7 + } + }, + { + "id": "n79", + "parent": "11", + "degrees_of_freedom": [ + 474, + 475, + 476, + 477, + 478, + 479 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00023652279013474756, + "y": -0.0007617051974813338, + "z": -0.00010972290147606295 + }, + "angle": { + "x": -8.115864323287066e-7, + "y": 9.514995277015543e-7, + "z": 7.272600109100969e-7 + } + }, + { + "id": "n80", + "parent": "11", + "degrees_of_freedom": [ + 480, + 481, + 482, + 483, + 484, + 485 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012491522920891147, + "y": -0.0008969974384294977, + "z": -0.00006629036896655143 + }, + "angle": { + "x": -6.102217532822134e-7, + "y": 2.954622530551324e-7, + "z": 1.8047989966377077e-7 + } + }, + { + "id": "n81", + "parent": "11", + "degrees_of_freedom": [ + 486, + 487, + 488, + 489, + 490, + 491 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011686501544487318, + "y": -0.0007347792277375584, + "z": -0.00003256390438523177 + }, + "angle": { + "x": -2.8209625273000404e-7, + "y": 8.460888043491678e-8, + "z": 8.721877727549409e-7 + } + }, + { + "id": "n82", + "parent": "11", + "degrees_of_freedom": [ + 492, + 493, + 494, + 495, + 496, + 497 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001681771025554252, + "y": -0.0009120478297433008, + "z": -0.00006969311759639113 + }, + "angle": { + "x": -2.937597813844354e-7, + "y": 0.0000014135138536496654, + "z": 2.4045892275561885e-7 + } + }, + { + "id": "n83", + "parent": "11", + "degrees_of_freedom": [ + 498, + 499, + 500, + 501, + 502, + 503 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001593329539889215, + "y": -0.000900284400769502, + "z": -0.000034027620216753875 + }, + "angle": { + "x": -9.622159281296787e-9, + "y": -2.1474137785920515e-7, + "z": 0.0000010314686018150646 + } + }, + { + "id": "n84", + "parent": "11", + "degrees_of_freedom": [ + 504, + 505, + 506, + 507, + 508, + 509 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00022545077538152334, + "y": -0.0007527654189687695, + "z": -0.000034600278470766365 + }, + "angle": { + "x": -3.347588022231753e-7, + "y": 1.3052142220419483e-8, + "z": 7.538069287930602e-7 + } + }, + { + "id": "n85", + "parent": "11", + "degrees_of_freedom": [ + 510, + 511, + 512, + 513, + 514, + 515 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012037771622204196, + "y": -0.0008928232101132026, + "z": -1.2453356956208539e-19 + }, + "angle": { + "x": -1.8039386507775455e-19, + "y": 1.2427341221499302e-20, + "z": 1.9933369235676903e-7 + } + }, + { + "id": "n86", + "parent": "11", + "degrees_of_freedom": [ + 516, + 517, + 518, + 519, + 520, + 521 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011686501544487379, + "y": -0.0007347792277375583, + "z": 0.00003256390438523121 + }, + "angle": { + "x": 2.820962527300481e-7, + "y": -8.460888043494201e-8, + "z": 8.721877727549085e-7 + } + }, + { + "id": "n87", + "parent": "11", + "degrees_of_freedom": [ + 522, + 523, + 524, + 525, + 526, + 527 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001639876510845298, + "y": -0.000908057251829534, + "z": -1.7069116883676235e-19 + }, + "angle": { + "x": -1.6118452698902885e-19, + "y": 8.694363365095278e-20, + "z": 1.724105846279349e-7 + } + }, + { + "id": "n88", + "parent": "11", + "degrees_of_freedom": [ + 528, + 529, + 530, + 531, + 532, + 533 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000159332953988921, + "y": -0.0009002844007694994, + "z": 0.000034027620216753245 + }, + "angle": { + "x": 9.62215928123046e-9, + "y": 2.1474137785920298e-7, + "z": 0.00000103146860181509 + } + }, + { + "id": "n89", + "parent": "11", + "degrees_of_freedom": [ + 534, + 535, + 536, + 537, + 538, + 539 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000225450775381523, + "y": -0.0007527654189687685, + "z": 0.000034600278470766046 + }, + "angle": { + "x": 3.347588022231502e-7, + "y": -1.305214222039472e-8, + "z": 7.538069287930386e-7 + } + }, + { + "id": "n90", + "parent": "11", + "degrees_of_freedom": [ + 540, + 541, + 542, + 543, + 544, + 545 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012491522920891166, + "y": -0.0008969974384294959, + "z": 0.0000662903689665503 + }, + "angle": { + "x": 6.102217532822945e-7, + "y": -2.954622530551674e-7, + "z": 1.8047989966371296e-7 + } + }, + { + "id": "n91", + "parent": "11", + "degrees_of_freedom": [ + 546, + 547, + 548, + 549, + 550, + 551 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001243054546493719, + "y": -0.0007435804141828683, + "z": 0.0000985786310878293 + }, + "angle": { + "x": 7.035865991617335e-7, + "y": 4.409172673958689e-7, + "z": 8.926364118093561e-7 + } + }, + { + "id": "n92", + "parent": "11", + "degrees_of_freedom": [ + 552, + 553, + 554, + 555, + 556, + 557 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016817710255542513, + "y": -0.0009120478297432995, + "z": 0.00006969311759639043 + }, + "angle": { + "x": 2.9375978138446704e-7, + "y": -0.0000014135138536496428, + "z": 2.4045892275562664e-7 + } + }, + { + "id": "n93", + "parent": "11", + "degrees_of_freedom": [ + 558, + 559, + 560, + 561, + 562, + 563 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016964050651717324, + "y": -0.0009077539508661509, + "z": 0.00010647884065372874 + }, + "angle": { + "x": -1.7348833013577663e-7, + "y": 0.000001245054875716743, + "z": 9.748086443097879e-7 + } + }, + { + "id": "n94", + "parent": "11", + "degrees_of_freedom": [ + 564, + 565, + 566, + 567, + 568, + 569 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00023652279013474734, + "y": -0.0007617051974813336, + "z": 0.00010972290147606181 + }, + "angle": { + "x": 8.115864323287415e-7, + "y": -9.514995277015779e-7, + "z": 7.272600109100677e-7 + } + }, + { + "id": "n95", + "parent": "11", + "degrees_of_freedom": [ + 570, + 571, + 572, + 573, + 574, + 575 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 25, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001305101113808649, + "y": -0.0009041498780436374, + "z": 0.0001316856659148023 + }, + "angle": { + "x": 4.6355401032171707e-7, + "y": 7.622427603750339e-7, + "z": 5.523889028569062e-8 + } + }, + { + "id": "n96", + "parent": "11", + "degrees_of_freedom": [ + 576, + 577, + 578, + 579, + 580, + 581 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 20, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012832036395449628, + "y": -0.0007551850582302716, + "z": 0.0001822496240649562 + }, + "angle": { + "x": 5.838825233981062e-7, + "y": 0.0000018623306222468814, + "z": 9.56593555196029e-7 + } + }, + { + "id": "n97", + "parent": "11", + "degrees_of_freedom": [ + 582, + 583, + 584, + 585, + 586, + 587 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 25, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00018722151689142818, + "y": -0.0009167040164961127, + "z": 0.0001509689424428716 + }, + "angle": { + "x": 3.5480518547607295e-7, + "y": 8.950218572634767e-7, + "z": 3.875377483235341e-7 + } + }, + { + "id": "n98", + "parent": "11", + "degrees_of_freedom": [ + 588, + 589, + 590, + 591, + 592, + 593 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 25, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00017834138670344636, + "y": -0.0009129637630085546, + "z": 0.00015388042233328825 + }, + "angle": { + "x": 3.1517504895208206e-7, + "y": 0.0000018141890069234271, + "z": 8.232431266606815e-7 + } + }, + { + "id": "n99", + "parent": "11", + "degrees_of_freedom": [ + 594, + 595, + 596, + 597, + 598, + 599 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 20, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0002490620896744371, + "y": -0.0007724354661767562, + "z": 0.00021005618995629106 + }, + "angle": { + "x": 5.919070498100004e-7, + "y": 0.000004372605411695591, + "z": 6.33567490515382e-7 + } + }, + { + "id": "n100", + "parent": "11", + "degrees_of_freedom": [ + 600, + 601, + 602, + 603, + 604, + 605 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 35, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012237304115926504, + "y": -0.0012160221591597715, + "z": -0.00011916093200182494 + }, + "angle": { + "x": 6.655904915336238e-7, + "y": -9.482305751652769e-7, + "z": 2.299120456209401e-7 + } + }, + { + "id": "n101", + "parent": "11", + "degrees_of_freedom": [ + 606, + 607, + 608, + 609, + 610, + 611 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 30, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001237730304226037, + "y": -0.0010607767494983896, + "z": -0.0001793191510822441 + }, + "angle": { + "x": 0.0000015922403397783041, + "y": -0.0000021511013444575094, + "z": -1.5065481661150595e-7 + } + }, + { + "id": "n102", + "parent": "11", + "degrees_of_freedom": [ + 612, + 613, + 614, + 615, + 616, + 617 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 30, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012308521722443746, + "y": -0.0010578631391991678, + "z": -0.00009481208188018899 + }, + "angle": { + "x": 0.000001196020302152315, + "y": -4.434082104345888e-7, + "z": -1.9488733453188355e-7 + } + }, + { + "id": "n103", + "parent": "11", + "degrees_of_freedom": [ + 618, + 619, + 620, + 621, + 622, + 623 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 35, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00017378764328789586, + "y": -0.0012341852115381525, + "z": -0.00013663958130335984 + }, + "angle": { + "x": 0.0000011713290246309093, + "y": -0.0000012150502122736431, + "z": -9.126697143844189e-7 + } + }, + { + "id": "n104", + "parent": "11", + "degrees_of_freedom": [ + 624, + 625, + 626, + 627, + 628, + 629 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 35, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00016504183100431535, + "y": -0.0012276739731483118, + "z": -0.00013964885633080683 + }, + "angle": { + "x": 0.000002124814668238583, + "y": -0.0000016007461115383992, + "z": 6.363076345553558e-7 + } + }, + { + "id": "n105", + "parent": "11", + "degrees_of_freedom": [ + 630, + 631, + 632, + 633, + 634, + 635 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 35, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015989269391686325, + "y": -0.0012229281141201255, + "z": -0.00009579872759125372 + }, + "angle": { + "x": 4.2555933096744436e-7, + "y": -0.0000010953013251395796, + "z": 9.199411111358465e-7 + } + }, + { + "id": "n106", + "parent": "11", + "degrees_of_freedom": [ + 636, + 637, + 638, + 639, + 640, + 641 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 30, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00025215239159734267, + "y": -0.0010672494321225928, + "z": -0.00021128231672588532 + }, + "angle": { + "x": 0.0000024551180798697415, + "y": -0.0000048037951923587735, + "z": -0.0000013695153929077545 + } + }, + { + "id": "n107", + "parent": "11", + "degrees_of_freedom": [ + 642, + 643, + 644, + 645, + 646, + 647 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 30, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00023809294088328697, + "y": -0.0010695104417382498, + "z": -0.00010412581480327899 + }, + "angle": { + "x": 0.0000012376906548149639, + "y": 0.000001157694665168957, + "z": -6.715610936266854e-7 + } + }, + { + "id": "n108", + "parent": "11", + "degrees_of_freedom": [ + 648, + 649, + 650, + 651, + 652, + 653 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 35, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011814921331787833, + "y": -0.001208661947957445, + "z": -0.000059765069562693145 + }, + "angle": { + "x": -5.845603150010483e-7, + "y": 2.9488866584674225e-7, + "z": 1.9864704052180502e-7 + } + }, + { + "id": "n109", + "parent": "11", + "degrees_of_freedom": [ + 654, + 655, + 656, + 657, + 658, + 659 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 30, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011648976483076711, + "y": -0.0010500012503828053, + "z": -0.00003128184621263477 + }, + "angle": { + "x": 3.818287316353429e-7, + "y": 9.216303535969696e-8, + "z": -1.615193497803888e-7 + } + }, + { + "id": "n110", + "parent": "11", + "degrees_of_freedom": [ + 660, + 661, + 662, + 663, + 664, + 665 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 35, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015793444235280517, + "y": -0.0012250477634378472, + "z": -0.00006203219195541581 + }, + "angle": { + "x": -3.6019622592577263e-7, + "y": 0.0000014860243189849682, + "z": -8.807327220782967e-7 + } + }, + { + "id": "n111", + "parent": "11", + "degrees_of_freedom": [ + 666, + 667, + 668, + 669, + 670, + 671 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 35, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001498950989838417, + "y": -0.001212192353891447, + "z": -0.00003064561190145689 + }, + "angle": { + "x": -1.4093551689338847e-7, + "y": -1.3922411127708217e-7, + "z": 7.754924635796885e-7 + } + }, + { + "id": "n112", + "parent": "11", + "degrees_of_freedom": [ + 672, + 673, + 674, + 675, + 676, + 677 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 30, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00022566302082568847, + "y": -0.0010622959981732379, + "z": -0.00003250053865886304 + }, + "angle": { + "x": 3.519434834603261e-7, + "y": 1.3768488571340245e-7, + "z": -4.817153856370793e-7 + } + }, + { + "id": "n113", + "parent": "11", + "degrees_of_freedom": [ + 678, + 679, + 680, + 681, + 682, + 683 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 35, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011378054276825045, + "y": -0.0012022058495790968, + "z": -8.392530275671357e-19 + }, + "angle": { + "x": -4.334462555465165e-19, + "y": 1.9849384363518566e-20, + "z": 1.8869404888341118e-7 + } + }, + { + "id": "n114", + "parent": "11", + "degrees_of_freedom": [ + 684, + 685, + 686, + 687, + 688, + 689 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 30, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011648976483076628, + "y": -0.0010500012503828014, + "z": 0.000031281846212634186 + }, + "angle": { + "x": -3.8182873163546564e-7, + "y": -9.21630353596881e-8, + "z": -1.6151934978041532e-7 + } + }, + { + "id": "n115", + "parent": "11", + "degrees_of_freedom": [ + 690, + 691, + 692, + 693, + 694, + 695 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 35, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015356936235296403, + "y": -0.0012180967760022717, + "z": -6.210111509786338e-19 + }, + "angle": { + "x": -2.096540912917648e-19, + "y": -2.1551209395389004e-21, + "z": -9.898372529578446e-7 + } + }, + { + "id": "n116", + "parent": "11", + "degrees_of_freedom": [ + 696, + 697, + 698, + 699, + 700, + 701 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 35, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001498950989838414, + "y": -0.0012121923538914445, + "z": 0.00003064561190145544 + }, + "angle": { + "x": 1.409355168931673e-7, + "y": 1.3922411127711475e-7, + "z": 7.75492463579756e-7 + } + }, + { + "id": "n117", + "parent": "11", + "degrees_of_freedom": [ + 702, + 703, + 704, + 705, + 706, + 707 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 30, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00022566302082568818, + "y": -0.0010622959981732366, + "z": 0.000032500538658862215 + }, + "angle": { + "x": -3.5194348346044266e-7, + "y": -1.3768488571336772e-7, + "z": -4.81715385636968e-7 + } + }, + { + "id": "n118", + "parent": "11", + "degrees_of_freedom": [ + 708, + 709, + 710, + 711, + 712, + 713 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 35, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00011814921331787802, + "y": -0.0012086619479574395, + "z": 0.00005976506956269179 + }, + "angle": { + "x": 5.845603150007185e-7, + "y": -2.9488866584674124e-7, + "z": 1.9864704052193144e-7 + } + }, + { + "id": "n119", + "parent": "11", + "degrees_of_freedom": [ + 714, + 715, + 716, + 717, + 718, + 719 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 30, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012308521722443773, + "y": -0.001057863139199165, + "z": 0.00009481208188018742 + }, + "angle": { + "x": -0.0000011960203021523442, + "y": 4.4340821043457744e-7, + "z": -1.9488733453185216e-7 + } + }, + { + "id": "n120", + "parent": "11", + "degrees_of_freedom": [ + 720, + 721, + 722, + 723, + 724, + 725 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 35, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015793444235280451, + "y": -0.0012250477634378437, + "z": 0.0000620321919554145 + }, + "angle": { + "x": 3.601962259254882e-7, + "y": -0.000001486024318984719, + "z": -8.807327220782611e-7 + } + }, + { + "id": "n121", + "parent": "11", + "degrees_of_freedom": [ + 726, + 727, + 728, + 729, + 730, + 731 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 35, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00015989269391686187, + "y": -0.0012229281141201203, + "z": 0.000095798727591252 + }, + "angle": { + "x": -4.255593309675105e-7, + "y": 0.000001095301325139639, + "z": 9.19941111136049e-7 + } + }, + { + "id": "n122", + "parent": "11", + "degrees_of_freedom": [ + 732, + 733, + 734, + 735, + 736, + 737 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 30, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00023809294088328494, + "y": -0.0010695104417382472, + "z": 0.00010412581480327846 + }, + "angle": { + "x": -0.000001237690654815006, + "y": -0.0000011576946651688577, + "z": -6.715610936268466e-7 + } + }, + { + "id": "n123", + "parent": "11", + "degrees_of_freedom": [ + 738, + 739, + 740, + 741, + 742, + 743 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 35, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012237304115926477, + "y": -0.0012160221591597665, + "z": 0.00011916093200182301 + }, + "angle": { + "x": -6.655904915332383e-7, + "y": 9.482305751652637e-7, + "z": 2.2991204562076504e-7 + } + }, + { + "id": "n124", + "parent": "11", + "degrees_of_freedom": [ + 744, + 745, + 746, + 747, + 748, + 749 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 30, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00012377303042260571, + "y": -0.0010607767494983896, + "z": 0.00017931915108224152 + }, + "angle": { + "x": -0.0000015922403397781627, + "y": 0.0000021511013444574933, + "z": -1.5065481661164994e-7 + } + }, + { + "id": "n125", + "parent": "11", + "degrees_of_freedom": [ + 750, + 751, + 752, + 753, + 754, + 755 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 35, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001737876432878939, + "y": -0.0012341852115381484, + "z": 0.00013663958130335856 + }, + "angle": { + "x": -0.0000011713290246311494, + "y": 0.0000012150502122736487, + "z": -9.126697143844192e-7 + } + }, + { + "id": "n126", + "parent": "11", + "degrees_of_freedom": [ + 756, + 757, + 758, + 759, + 760, + 761 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 35, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0001650418310043139, + "y": -0.0012276739731483083, + "z": 0.0001396488563308055 + }, + "angle": { + "x": -0.00000212481466823863, + "y": 0.0000016007461115385447, + "z": 6.363076345551844e-7 + } + }, + { + "id": "n127", + "parent": "11", + "degrees_of_freedom": [ + 762, + 763, + 764, + 765, + 766, + 767 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 30, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00025215239159734153, + "y": -0.0010672494321225885, + "z": 0.00021128231672588424 + }, + "angle": { + "x": -0.0000024551180798696903, + "y": 0.0000048037951923588065, + "z": -0.0000013695153929079754 + } + }, + { + "id": "n128", + "parent": "11", + "degrees_of_freedom": [ + 768, + 769, + 770, + 771, + 772, + 773 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 45, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00012553879938195092, + "y": -0.0014833265374149189, + "z": -0.00009955497248088991 + }, + "angle": { + "x": 9.264224377798324e-7, + "y": -0.000001748780224426476, + "z": 0.0000015139994645467454 + } + }, + { + "id": "n129", + "parent": "11", + "degrees_of_freedom": [ + 774, + 775, + 776, + 777, + 778, + 779 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 40, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00011808741056979566, + "y": -0.0013719905260527068, + "z": -0.00015793609298409247 + }, + "angle": { + "x": 3.8942408121317785e-7, + "y": -0.0000025453303179607897, + "z": 0.0000011650632944049844 + } + }, + { + "id": "n130", + "parent": "11", + "degrees_of_freedom": [ + 780, + 781, + 782, + 783, + 784, + 785 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 40, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00011781335232840857, + "y": -0.0013656145936339439, + "z": -0.00008234658011356766 + }, + "angle": { + "x": 0.0000011750061025018343, + "y": -4.884747526675431e-7, + "z": 5.544618552679247e-7 + } + }, + { + "id": "n131", + "parent": "11", + "degrees_of_freedom": [ + 786, + 787, + 788, + 789, + 790, + 791 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 45, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00016376731083024196, + "y": -0.0015109052400423602, + "z": -0.00012119654800512507 + }, + "angle": { + "x": 0.0000020628056108449046, + "y": -0.000002569856367690078, + "z": -0.0000058414060281811845 + } + }, + { + "id": "n132", + "parent": "11", + "degrees_of_freedom": [ + 792, + 793, + 794, + 795, + 796, + 797 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 45, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00016394087296416884, + "y": -0.0014958002315114325, + "z": -0.0001094621337336769 + }, + "angle": { + "x": 0.000013757966332826855, + "y": -0.0000013138339958063711, + "z": 0.0000013419822492595378 + } + }, + { + "id": "n133", + "parent": "11", + "degrees_of_freedom": [ + 798, + 799, + 800, + 801, + 802, + 803 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 45, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00015449231382133833, + "y": -0.0014913058291761096, + "z": -0.00008780680655245233 + }, + "angle": { + "x": -0.0000018905417205721975, + "y": -7.854266195438133e-7, + "z": 0.0000016566696403296256 + } + }, + { + "id": "n134", + "parent": "11", + "degrees_of_freedom": [ + 804, + 805, + 806, + 807, + 808, + 809 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 40, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00023313597331784164, + "y": -0.001406367607448675, + "z": -0.00018900223679606858 + }, + "angle": { + "x": -0.0000014681971557486718, + "y": -0.0000045349236878754895, + "z": 0.0000034425372803176676 + } + }, + { + "id": "n135", + "parent": "11", + "degrees_of_freedom": [ + 810, + 811, + 812, + 813, + 814, + 815 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 40, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00022131198600854326, + "y": -0.0013904070010768794, + "z": -0.0000917326042624995 + }, + "angle": { + "x": 3.4088217493969503e-7, + "y": 0.0000015129634958705476, + "z": 0.0000017791864996996148 + } + }, + { + "id": "n136", + "parent": "11", + "degrees_of_freedom": [ + 816, + 817, + 818, + 819, + 820, + 821 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 45, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00011812519206714185, + "y": -0.0014622017510069894, + "z": -0.00005758701514394212 + }, + "angle": { + "x": -0.0000019609294123956403, + "y": 8.459093816224717e-8, + "z": 0.0000012496901025527241 + } + }, + { + "id": "n137", + "parent": "11", + "degrees_of_freedom": [ + 822, + 823, + 824, + 825, + 826, + 827 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 40, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00011006828325350498, + "y": -0.00135217504724122, + "z": -0.000029228897524487682 + }, + "angle": { + "x": 1.2088816384586484e-7, + "y": 1.0510922538310226e-7, + "z": 3.3232746998199715e-7 + } + }, + { + "id": "n138", + "parent": "11", + "degrees_of_freedom": [ + 828, + 829, + 830, + 831, + 832, + 833 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 45, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.0001384411055330675, + "y": -0.0014817776446959716, + "z": -0.00006038855453130221 + }, + "angle": { + "x": -0.0000016220254729765428, + "y": 0.0000013250127212362698, + "z": -0.000006195339506877631 + } + }, + { + "id": "n139", + "parent": "11", + "degrees_of_freedom": [ + 834, + 835, + 836, + 837, + 838, + 839 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 45, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00013960909545583224, + "y": -0.0014723311488452477, + "z": -0.00003018845146906489 + }, + "angle": { + "x": -4.193707632111335e-7, + "y": 1.818388960105655e-8, + "z": 0.0000012361669479398713 + } + }, + { + "id": "n140", + "parent": "11", + "degrees_of_freedom": [ + 840, + 841, + 842, + 843, + 844, + 845 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 40, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00020528724187700447, + "y": -0.0013735833086768424, + "z": -0.000029941046584270055 + }, + "angle": { + "x": -7.586195365632169e-8, + "y": 3.7992742633270297e-7, + "z": 0.000001253185728550208 + } + }, + { + "id": "n141", + "parent": "11", + "degrees_of_freedom": [ + 846, + 847, + 848, + 849, + 850, + 851 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 45, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00011202559017935455, + "y": -0.0014564032728519379, + "z": -2.221096798149599e-18 + }, + "angle": { + "x": -2.5904563957199064e-19, + "y": -2.5004006442638806e-20, + "z": 0.0000011472278952758946 + } + }, + { + "id": "n142", + "parent": "11", + "degrees_of_freedom": [ + 852, + 853, + 854, + 855, + 856, + 857 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 40, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.0001100682832535057, + "y": -0.0013521750472412174, + "z": 0.000029228897524484765 + }, + "angle": { + "x": -1.2088816384623663e-7, + "y": -1.0510922538308573e-7, + "z": 3.323274699820258e-7 + } + }, + { + "id": "n143", + "parent": "11", + "degrees_of_freedom": [ + 858, + 859, + 860, + 861, + 862, + 863 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 45, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00012981467358170448, + "y": -0.001472492771775608, + "z": -2.0483708288127745e-18 + }, + "angle": { + "x": -3.7694740730052296e-19, + "y": -2.760603190390731e-20, + "z": -0.00000617074668685641 + } + }, + { + "id": "n144", + "parent": "11", + "degrees_of_freedom": [ + 864, + 865, + 866, + 867, + 868, + 869 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 45, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00013960909545583238, + "y": -0.0014723311488452448, + "z": 0.000030188451469060886 + }, + "angle": { + "x": 4.1937076321081347e-7, + "y": -1.8183889600952244e-8, + "z": 0.0000012361669479398624 + } + }, + { + "id": "n145", + "parent": "11", + "degrees_of_freedom": [ + 870, + 871, + 872, + 873, + 874, + 875 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 40, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.0002052872418770047, + "y": -0.0013735833086768404, + "z": 0.000029941046584267978 + }, + "angle": { + "x": 7.586195365594714e-8, + "y": -3.799274263326273e-7, + "z": 0.0000012531857285501316 + } + }, + { + "id": "n146", + "parent": "11", + "degrees_of_freedom": [ + 876, + 877, + 878, + 879, + 880, + 881 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 45, + "z": 30 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00011812519206714188, + "y": -0.0014622017510069847, + "z": 0.00005758701514393808 + }, + "angle": { + "x": 0.000001960929412394874, + "y": -8.459093816217481e-8, + "z": 0.0000012496901025528416 + } + }, + { + "id": "n147", + "parent": "11", + "degrees_of_freedom": [ + 882, + 883, + 884, + 885, + 886, + 887 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 40, + "z": 35 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00011781335232840817, + "y": -0.0013656145936339354, + "z": 0.00008234658011356561 + }, + "angle": { + "x": -0.0000011750061025020668, + "y": 4.884747526675685e-7, + "z": 5.544618552680113e-7 + } + }, + { + "id": "n148", + "parent": "11", + "degrees_of_freedom": [ + 888, + 889, + 890, + 891, + 892, + 893 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 45, + "z": 30 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00013844110553306717, + "y": -0.0014817776446959684, + "z": 0.000060388554531299364 + }, + "angle": { + "x": 0.0000016220254729761669, + "y": -0.0000013250127212360983, + "z": -0.000006195339506877496 + } + }, + { + "id": "n149", + "parent": "11", + "degrees_of_freedom": [ + 894, + 895, + 896, + 897, + 898, + 899 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 45, + "z": 35 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00015449231382133803, + "y": -0.0014913058291761033, + "z": 0.0000878068065524493 + }, + "angle": { + "x": 0.0000018905417205720438, + "y": 7.854266195438302e-7, + "z": 0.0000016566696403298473 + } + }, + { + "id": "n150", + "parent": "11", + "degrees_of_freedom": [ + 900, + 901, + 902, + 903, + 904, + 905 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 40, + "z": 35 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00022131198600854144, + "y": -0.0013904070010768762, + "z": 0.00009173260426249739 + }, + "angle": { + "x": -3.4088217493995973e-7, + "y": -0.0000015129634958705068, + "z": 0.000001779186499699584 + } + }, + { + "id": "n151", + "parent": "11", + "degrees_of_freedom": [ + 906, + 907, + 908, + 909, + 910, + 911 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 45, + "z": 40 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00012553879938195016, + "y": -0.0014833265374149106, + "z": 0.00009955497248088758 + }, + "angle": { + "x": -9.264224377797147e-7, + "y": 0.0000017487802244266028, + "z": 0.0000015139994645469622 + } + }, + { + "id": "n152", + "parent": "11", + "degrees_of_freedom": [ + 912, + 913, + 914, + 915, + 916, + 917 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 40, + "z": 45 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00011808741056979326, + "y": -0.0013719905260527016, + "z": 0.00015793609298409 + }, + "angle": { + "x": -3.894240812131932e-7, + "y": 0.0000025453303179607664, + "z": 0.0000011650632944048476 + } + }, + { + "id": "n153", + "parent": "11", + "degrees_of_freedom": [ + 918, + 919, + 920, + 921, + 922, + 923 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 45, + "z": 40 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00016376731083024055, + "y": -0.0015109052400423548, + "z": 0.00012119654800512263 + }, + "angle": { + "x": -0.000002062805610844831, + "y": 0.000002569856367690172, + "z": -0.000005841406028181069 + } + }, + { + "id": "n154", + "parent": "11", + "degrees_of_freedom": [ + 924, + 925, + 926, + 927, + 928, + 929 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 45, + "z": 45 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.0001639408729641672, + "y": -0.0014958002315114264, + "z": 0.00010946213373367485 + }, + "angle": { + "x": -0.000013757966332826655, + "y": 0.0000013138339958063383, + "z": 0.0000013419822492596172 + } + }, + { + "id": "n155", + "parent": "11", + "degrees_of_freedom": [ + 930, + 931, + 932, + 933, + 934, + 935 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 40, + "z": 45 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.0002331359733178395, + "y": -0.0014063676074486699, + "z": 0.00018900223679606612 + }, + "angle": { + "x": 0.0000014681971557483504, + "y": 0.000004534923687875398, + "z": 0.0000034425372803177053 + } + }, + { + "id": "n156", + "parent": "11", + "degrees_of_freedom": [ + 936, + 937, + 938, + 939, + 940, + 941 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n157", + "parent": "11", + "degrees_of_freedom": [ + 942, + 943, + 944, + 945, + 946, + 947 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n158", + "parent": "11", + "degrees_of_freedom": [ + 948, + 949, + 950, + 951, + 952, + 953 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n159", + "parent": "11", + "degrees_of_freedom": [ + 954, + 955, + 956, + 957, + 958, + 959 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000022715550475232568, + "y": -0.00027594236622321, + "z": -0.00007989572585955912 + }, + "angle": { + "x": -0.000005038027469397863, + "y": -2.00330635434889e-7, + "z": 3.2566379030837505e-7 + } + }, + { + "id": "n160", + "parent": "11", + "degrees_of_freedom": [ + 960, + 961, + 962, + 963, + 964, + 965 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010147502319536862, + "y": -0.0001480887460910248, + "z": -0.000081083211527761 + }, + "angle": { + "x": -0.000012269192540735489, + "y": 1.2816734403414244e-8, + "z": 0.0000016053609873459926 + } + }, + { + "id": "n161", + "parent": "11", + "degrees_of_freedom": [ + 966, + 967, + 968, + 969, + 970, + 971 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000011044499633278985, + "y": -0.00012547074463121832, + "z": -0.000025352785417893108 + }, + "angle": { + "x": -0.000008152215314026214, + "y": -1.237065066767205e-7, + "z": 0.0000017052498127616908 + } + }, + { + "id": "n162", + "parent": "11", + "degrees_of_freedom": [ + 972, + 973, + 974, + 975, + 976, + 977 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004523776848897078, + "y": -0.00029076404062514674, + "z": -0.00009287283299180249 + }, + "angle": { + "x": -0.000005327292538719202, + "y": -0.0000014804778934444875, + "z": 0.0000020387460709784985 + } + }, + { + "id": "n163", + "parent": "11", + "degrees_of_freedom": [ + 978, + 979, + 980, + 981, + 982, + 983 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000047691182461146115, + "y": -0.0002666022685388228, + "z": -0.00006057903888985427 + }, + "angle": { + "x": -0.0000031775899881468518, + "y": -7.160035579792232e-7, + "z": 0.0000013125043918339904 + } + }, + { + "id": "n164", + "parent": "11", + "degrees_of_freedom": [ + 984, + 985, + 986, + 987, + 988, + 989 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n165", + "parent": "11", + "degrees_of_freedom": [ + 990, + 991, + 992, + 993, + 994, + 995 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n166", + "parent": "11", + "degrees_of_freedom": [ + 996, + 997, + 998, + 999, + 1000, + 1001 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000023515465506242, + "y": -0.0002603716762234156, + "z": -0.00003567012152741711 + }, + "angle": { + "x": -0.0000020593053907067725, + "y": -5.587137233757718e-8, + "z": 3.386543177174528e-7 + } + }, + { + "id": "n167", + "parent": "11", + "degrees_of_freedom": [ + 1002, + 1003, + 1004, + 1005, + 1006, + 1007 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010631775073070094, + "y": -0.00012277031972382212, + "z": -0.00000816589917400572 + }, + "angle": { + "x": -0.0000025120715618765877, + "y": -2.010687102155052e-8, + "z": 0.0000016661597923714452 + } + }, + { + "id": "n168", + "parent": "11", + "degrees_of_freedom": [ + 1008, + 1009, + 1010, + 1011, + 1012, + 1013 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000045391204587787744, + "y": -0.00026059159701885055, + "z": -0.000018895741526554452 + }, + "angle": { + "x": -8.335208913720047e-7, + "y": -1.9035014961539563e-7, + "z": 0.0000011518137414550347 + } + }, + { + "id": "n169", + "parent": "11", + "degrees_of_freedom": [ + 1014, + 1015, + 1016, + 1017, + 1018, + 1019 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n170", + "parent": "11", + "degrees_of_freedom": [ + 1020, + 1021, + 1022, + 1023, + 1024, + 1025 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n171", + "parent": "11", + "degrees_of_freedom": [ + 1026, + 1027, + 1028, + 1029, + 1030, + 1031 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000022876073761198327, + "y": -0.00025811365048576516, + "z": -3.21668293088408e-19 + }, + "angle": { + "x": -2.961798779491365e-20, + "y": -2.4898205354932254e-20, + "z": 3.3179600965914094e-7 + } + }, + { + "id": "n172", + "parent": "11", + "degrees_of_freedom": [ + 1032, + 1033, + 1034, + 1035, + 1036, + 1037 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010631775073070182, + "y": -0.00012277031972382212, + "z": 0.000008165899174005441 + }, + "angle": { + "x": 0.0000025120715618765073, + "y": 2.0106871021537343e-8, + "z": 0.0000016661597923714672 + } + }, + { + "id": "n173", + "parent": "11", + "degrees_of_freedom": [ + 1038, + 1039, + 1040, + 1041, + 1042, + 1043 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004539120458778796, + "y": -0.00026059159701885017, + "z": 0.000018895741526553795 + }, + "angle": { + "x": 8.335208913720002e-7, + "y": 1.9035014961537859e-7, + "z": 0.000001151813741455011 + } + }, + { + "id": "n174", + "parent": "11", + "degrees_of_freedom": [ + 1044, + 1045, + 1046, + 1047, + 1048, + 1049 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n175", + "parent": "11", + "degrees_of_freedom": [ + 1050, + 1051, + 1052, + 1053, + 1054, + 1055 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n176", + "parent": "11", + "degrees_of_freedom": [ + 1056, + 1057, + 1058, + 1059, + 1060, + 1061 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000023515465506242505, + "y": -0.0002603716762234156, + "z": 0.00003567012152741659 + }, + "angle": { + "x": 0.000002059305390706813, + "y": 5.587137233753738e-8, + "z": 3.386543177174507e-7 + } + }, + { + "id": "n177", + "parent": "11", + "degrees_of_freedom": [ + 1062, + 1063, + 1064, + 1065, + 1066, + 1067 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000011044499633279417, + "y": -0.00012547074463121856, + "z": 0.00002535278541789287 + }, + "angle": { + "x": 0.000008152215314026144, + "y": 1.2370650667671462e-7, + "z": 0.0000017052498127617258 + } + }, + { + "id": "n178", + "parent": "11", + "degrees_of_freedom": [ + 1068, + 1069, + 1070, + 1071, + 1072, + 1073 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004769118246114665, + "y": -0.00026660226853882324, + "z": 0.00006057903888985369 + }, + "angle": { + "x": 0.00000317758998814685, + "y": 7.160035579791724e-7, + "z": 0.0000013125043918340777 + } + }, + { + "id": "n179", + "parent": "11", + "degrees_of_freedom": [ + 1074, + 1075, + 1076, + 1077, + 1078, + 1079 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 15, + "y": -5, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n180", + "parent": "11", + "degrees_of_freedom": [ + 1080, + 1081, + 1082, + 1083, + 1084, + 1085 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 10, + "y": -5, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n181", + "parent": "11", + "degrees_of_freedom": [ + 1086, + 1087, + 1088, + 1089, + 1090, + 1091 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 5, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000022715550475233605, + "y": -0.00027594236622321006, + "z": 0.00007989572585955884 + }, + "angle": { + "x": 0.0000050380274693978525, + "y": 2.0033063543480972e-7, + "z": 3.2566379030839914e-7 + } + }, + { + "id": "n182", + "parent": "11", + "degrees_of_freedom": [ + 1092, + 1093, + 1094, + 1095, + 1096, + 1097 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 0, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000010147502319537461, + "y": -0.00014808874609102527, + "z": 0.00008108321152776085 + }, + "angle": { + "x": 0.000012269192540735465, + "y": -1.2816734403409946e-8, + "z": 0.0000016053609873460887 + } + }, + { + "id": "n183", + "parent": "11", + "degrees_of_freedom": [ + 1098, + 1099, + 1100, + 1101, + 1102, + 1103 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 5, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004523776848897153, + "y": -0.000290764040625148, + "z": 0.00009287283299180215 + }, + "angle": { + "x": 0.0000053272925387191924, + "y": 0.0000014804778934444543, + "z": 0.000002038746070978567 + } + }, + { + "id": "n184", + "parent": "11", + "degrees_of_freedom": [ + 1104, + 1105, + 1106, + 1107, + 1108, + 1109 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003809357838289568, + "y": -0.0005798377184679755, + "z": -0.00011342037191664281 + }, + "angle": { + "x": -0.0000024273169285887332, + "y": -2.571453356367218e-7, + "z": 3.5395761425126e-7 + } + }, + { + "id": "n185", + "parent": "11", + "degrees_of_freedom": [ + 1110, + 1111, + 1112, + 1113, + 1114, + 1115 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000029754973184635295, + "y": -0.0004365130503070888, + "z": -0.0001499265198745806 + }, + "angle": { + "x": -0.0000034210465879360053, + "y": -7.206324574498952e-8, + "z": 0.0000011722975279183673 + } + }, + { + "id": "n186", + "parent": "11", + "degrees_of_freedom": [ + 1116, + 1117, + 1118, + 1119, + 1120, + 1121 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003054844848538612, + "y": -0.0004158146858359336, + "z": -0.00007267033859381299 + }, + "angle": { + "x": -0.000003459311557089001, + "y": -3.187937321869595e-7, + "z": 0.0000010810232525809816 + } + }, + { + "id": "n187", + "parent": "11", + "degrees_of_freedom": [ + 1122, + 1123, + 1124, + 1125, + 1126, + 1127 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007662091142301778, + "y": -0.0005948055722336079, + "z": -0.00012539563583917142 + }, + "angle": { + "x": -0.000001644396619585974, + "y": -0.0000017635007331148114, + "z": 0.0000015079579029374988 + } + }, + { + "id": "n188", + "parent": "11", + "degrees_of_freedom": [ + 1128, + 1129, + 1130, + 1131, + 1132, + 1133 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007699972670708857, + "y": -0.000577113385692017, + "z": -0.00008982026954217869 + }, + "angle": { + "x": -0.0000013793882388625182, + "y": -0.0000011213246463408702, + "z": 0.0000012335113565499362 + } + }, + { + "id": "n189", + "parent": "11", + "degrees_of_freedom": [ + 1134, + 1135, + 1136, + 1137, + 1138, + 1139 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003799706909054762, + "y": -0.0005663593015427659, + "z": -0.00005631387174927259 + }, + "angle": { + "x": -0.0000013429902461152182, + "y": -2.143896620747219e-8, + "z": 3.1765787045298195e-7 + } + }, + { + "id": "n190", + "parent": "11", + "degrees_of_freedom": [ + 1140, + 1141, + 1142, + 1143, + 1144, + 1145 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000029252075903653453, + "y": -0.0004072917313115491, + "z": -0.000023032537831244173 + }, + "angle": { + "x": -0.0000013210725294316509, + "y": -5.751242610954771e-8, + "z": 0.0000010246141977126724 + } + }, + { + "id": "n191", + "parent": "11", + "degrees_of_freedom": [ + 1146, + 1147, + 1148, + 1149, + 1150, + 1151 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007315558296523082, + "y": -0.0005680526387159475, + "z": -0.000029906663453318364 + }, + "angle": { + "x": -5.47366428737437e-7, + "y": -3.4354295768004193e-7, + "z": 0.0000011145438681229729 + } + }, + { + "id": "n192", + "parent": "11", + "degrees_of_freedom": [ + 1152, + 1153, + 1154, + 1155, + 1156, + 1157 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003699095921198125, + "y": -0.0005615869205247239, + "z": -3.780305649320789e-19 + }, + "angle": { + "x": 1.9270794894742002e-21, + "y": -6.354393271206185e-20, + "z": 3.0475783079975924e-7 + } + }, + { + "id": "n193", + "parent": "11", + "degrees_of_freedom": [ + 1158, + 1159, + 1160, + 1161, + 1162, + 1163 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000029252075903653897, + "y": -0.00040729173131154913, + "z": 0.000023032537831243438 + }, + "angle": { + "x": 0.0000013210725294316301, + "y": 5.751242610951451e-8, + "z": 0.0000010246141977126654 + } + }, + { + "id": "n194", + "parent": "11", + "degrees_of_freedom": [ + 1164, + 1165, + 1166, + 1167, + 1168, + 1169 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007315558296523129, + "y": -0.0005680526387159467, + "z": 0.000029906663453317534 + }, + "angle": { + "x": 5.473664287374681e-7, + "y": 3.43542957680015e-7, + "z": 0.0000011145438681229837 + } + }, + { + "id": "n195", + "parent": "11", + "degrees_of_freedom": [ + 1170, + 1171, + 1172, + 1173, + 1174, + 1175 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000037997069090548585, + "y": -0.0005663593015427662, + "z": 0.00005631387174927183 + }, + "angle": { + "x": 0.000001342990246115266, + "y": 2.1438966207329125e-8, + "z": 3.1765787045299095e-7 + } + }, + { + "id": "n196", + "parent": "11", + "degrees_of_freedom": [ + 1176, + 1177, + 1178, + 1179, + 1180, + 1181 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003054844848538701, + "y": -0.0004158146858359338, + "z": 0.00007267033859381247 + }, + "angle": { + "x": 0.000003459311557088953, + "y": 3.1879373218690396e-7, + "z": 0.0000010810232525810576 + } + }, + { + "id": "n197", + "parent": "11", + "degrees_of_freedom": [ + 1182, + 1183, + 1184, + 1185, + 1186, + 1187 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007699972670709004, + "y": -0.0005771133856920193, + "z": 0.00008982026954217733 + }, + "angle": { + "x": 0.0000013793882388624604, + "y": 0.000001121324646340793, + "z": 0.000001233511356550021 + } + }, + { + "id": "n198", + "parent": "11", + "degrees_of_freedom": [ + 1188, + 1189, + 1190, + 1191, + 1192, + 1193 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 15, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000380935783828977, + "y": -0.0005798377184679751, + "z": 0.00011342037191664182 + }, + "angle": { + "x": 0.000002427316928588525, + "y": 2.5714533563658297e-7, + "z": 3.539576142513446e-7 + } + }, + { + "id": "n199", + "parent": "11", + "degrees_of_freedom": [ + 1194, + 1195, + 1196, + 1197, + 1198, + 1199 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 10, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000029754973184637524, + "y": -0.00043651305030708855, + "z": 0.00014992651987457998 + }, + "angle": { + "x": 0.000003421046587935946, + "y": 7.206324574489755e-8, + "z": 0.0000011722975279183853 + } + }, + { + "id": "n200", + "parent": "11", + "degrees_of_freedom": [ + 1200, + 1201, + 1202, + 1203, + 1204, + 1205 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 15, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007662091142301981, + "y": -0.0005948055722336066, + "z": 0.00012539563583916982 + }, + "angle": { + "x": 0.0000016443966195857925, + "y": 0.000001763500733114771, + "z": 0.0000015079579029376375 + } + }, + { + "id": "n201", + "parent": "11", + "degrees_of_freedom": [ + 1206, + 1207, + 1208, + 1209, + 1210, + 1211 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004146691564973539, + "y": -0.0008903415121194339, + "z": -0.00011857197727883154 + }, + "angle": { + "x": -4.3352440380267597e-7, + "y": -3.4333317200048075e-7, + "z": 1.0585813493460509e-7 + } + }, + { + "id": "n202", + "parent": "11", + "degrees_of_freedom": [ + 1212, + 1213, + 1214, + 1215, + 1216, + 1217 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004009510140285921, + "y": -0.0007407238439894439, + "z": -0.00016851156423978018 + }, + "angle": { + "x": -5.14605226684448e-7, + "y": -2.1506204048673868e-7, + "z": 4.302814032267394e-7 + } + }, + { + "id": "n203", + "parent": "11", + "degrees_of_freedom": [ + 1218, + 1219, + 1220, + 1221, + 1222, + 1223 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004043587267506576, + "y": -0.0007297391170247333, + "z": -0.00008871480978997197 + }, + "angle": { + "x": -5.935443419082908e-7, + "y": -3.4220356101859474e-7, + "z": 3.6434274432730607e-7 + } + }, + { + "id": "n204", + "parent": "11", + "degrees_of_freedom": [ + 1224, + 1225, + 1226, + 1227, + 1228, + 1229 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008223451645304447, + "y": -0.0009008840479480045, + "z": -0.00013034824374981655 + }, + "angle": { + "x": 1.1268293023183563e-7, + "y": -0.0000018514805318021527, + "z": 8.180525499239489e-7 + } + }, + { + "id": "n205", + "parent": "11", + "degrees_of_freedom": [ + 1230, + 1231, + 1232, + 1233, + 1234, + 1235 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000840489807796707, + "y": -0.0008937153638573917, + "z": -0.00009464259399547575 + }, + "angle": { + "x": -4.509699696348973e-9, + "y": -0.0000012180727602719974, + "z": 9.418167175782187e-7 + } + }, + { + "id": "n206", + "parent": "11", + "degrees_of_freedom": [ + 1236, + 1237, + 1238, + 1239, + 1240, + 1241 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004166728991487167, + "y": -0.0008830215286461746, + "z": -0.00005997886934392497 + }, + "angle": { + "x": -5.980984955054838e-7, + "y": -3.0205782857078847e-8, + "z": 1.2374181806119959e-7 + } + }, + { + "id": "n207", + "parent": "11", + "degrees_of_freedom": [ + 1242, + 1243, + 1244, + 1245, + 1246, + 1247 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003860546859182419, + "y": -0.000721658305283845, + "z": -0.000029534443002562394 + }, + "angle": { + "x": -2.521778880779539e-7, + "y": -6.881296654228069e-8, + "z": 3.600347204752347e-7 + } + }, + { + "id": "n208", + "parent": "11", + "degrees_of_freedom": [ + 1248, + 1249, + 1250, + 1251, + 1252, + 1253 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000802474266433031, + "y": -0.0008857220276336559, + "z": -0.00003192226411395208 + }, + "angle": { + "x": -4.554230532560859e-8, + "y": -3.8154665804744287e-7, + "z": 9.335131048389906e-7 + } + }, + { + "id": "n209", + "parent": "11", + "degrees_of_freedom": [ + 1254, + 1255, + 1256, + 1257, + 1258, + 1259 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004066664733146555, + "y": -0.000879059995272586, + "z": -1.667278061656167e-19 + }, + "angle": { + "x": 5.3635962519203825e-20, + "y": -8.210158582951241e-20, + "z": 1.2150490919044296e-7 + } + }, + { + "id": "n210", + "parent": "11", + "degrees_of_freedom": [ + 1260, + 1261, + 1262, + 1263, + 1264, + 1265 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003860546859182491, + "y": -0.0007216583052838458, + "z": 0.000029534443002561862 + }, + "angle": { + "x": 2.5217788807797895e-7, + "y": 6.881296654223009e-8, + "z": 3.6003472047524255e-7 + } + }, + { + "id": "n211", + "parent": "11", + "degrees_of_freedom": [ + 1266, + 1267, + 1268, + 1269, + 1270, + 1271 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008024742664330363, + "y": -0.0008857220276336559, + "z": 0.00003192226411395144 + }, + "angle": { + "x": 4.554230532558997e-8, + "y": 3.815466580474292e-7, + "z": 9.335131048388729e-7 + } + }, + { + "id": "n212", + "parent": "11", + "degrees_of_freedom": [ + 1272, + 1273, + 1274, + 1275, + 1276, + 1277 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004166728991487296, + "y": -0.000883021528646175, + "z": 0.000059978869343924106 + }, + "angle": { + "x": 5.980984955054507e-7, + "y": 3.020578285693634e-8, + "z": 1.2374181806114937e-7 + } + }, + { + "id": "n213", + "parent": "11", + "degrees_of_freedom": [ + 1278, + 1279, + 1280, + 1281, + 1282, + 1283 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004043587267506789, + "y": -0.0007297391170247337, + "z": 0.00008871480978997077 + }, + "angle": { + "x": 5.935443419082153e-7, + "y": 3.4220356101853867e-7, + "z": 3.643427443273106e-7 + } + }, + { + "id": "n214", + "parent": "11", + "degrees_of_freedom": [ + 1284, + 1285, + 1286, + 1287, + 1288, + 1289 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008404898077967231, + "y": -0.000893715363857391, + "z": 0.00009464259399547411 + }, + "angle": { + "x": 4.509699696325873e-9, + "y": 0.0000012180727602719782, + "z": 9.418167175782213e-7 + } + }, + { + "id": "n215", + "parent": "11", + "degrees_of_freedom": [ + 1290, + 1291, + 1292, + 1293, + 1294, + 1295 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 25, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004146691564973748, + "y": -0.0008903415121194338, + "z": 0.00011857197727882953 + }, + "angle": { + "x": 4.3352440380272033e-7, + "y": 3.4333317200042003e-7, + "z": 1.0585813493448714e-7 + } + }, + { + "id": "n216", + "parent": "11", + "degrees_of_freedom": [ + 1296, + 1297, + 1298, + 1299, + 1300, + 1301 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 20, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004009510140286198, + "y": -0.0007407238439894433, + "z": 0.00016851156423977848 + }, + "angle": { + "x": 5.146052266844012e-7, + "y": 2.1506204048666038e-7, + "z": 4.3028140322661103e-7 + } + }, + { + "id": "n217", + "parent": "11", + "degrees_of_freedom": [ + 1302, + 1303, + 1304, + 1305, + 1306, + 1307 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 25, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008223451645304647, + "y": -0.0009008840479480039, + "z": 0.0001303482437498144 + }, + "angle": { + "x": -1.1268293023201221e-7, + "y": 0.000001851480531802149, + "z": 8.180525499238765e-7 + } + }, + { + "id": "n218", + "parent": "11", + "degrees_of_freedom": [ + 1308, + 1309, + 1310, + 1311, + 1312, + 1313 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 35, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000039558219669398865, + "y": -0.001197226806279167, + "z": -0.00010562362939201775 + }, + "angle": { + "x": 9.627414190354122e-7, + "y": -4.5367601425944907e-7, + "z": 2.2372345784924734e-7 + } + }, + { + "id": "n219", + "parent": "11", + "degrees_of_freedom": [ + 1314, + 1315, + 1316, + 1317, + 1318, + 1319 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 30, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000391868539923099, + "y": -0.0010459188045769106, + "z": -0.0001637218573224765 + }, + "angle": { + "x": 0.0000014785695779577276, + "y": -3.529361754605132e-7, + "z": 1.0265044401183095e-7 + } + }, + { + "id": "n220", + "parent": "11", + "degrees_of_freedom": [ + 1320, + 1321, + 1322, + 1323, + 1324, + 1325 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 30, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.0000406463400872509, + "y": -0.0010430154725548858, + "z": -0.00008507090062004336 + }, + "angle": { + "x": 0.0000011972246443525705, + "y": -3.52587125504896e-7, + "z": 3.3609302163534325e-8 + } + }, + { + "id": "n221", + "parent": "11", + "degrees_of_freedom": [ + 1326, + 1327, + 1328, + 1329, + 1330, + 1331 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 35, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007719951912713348, + "y": -0.0012065775784045785, + "z": -0.00011682182650942957 + }, + "angle": { + "x": 0.000002235225156168193, + "y": -0.0000019267619016425216, + "z": 0.0000011634555016633755 + } + }, + { + "id": "n222", + "parent": "11", + "degrees_of_freedom": [ + 1332, + 1333, + 1334, + 1335, + 1336, + 1337 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 35, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008043972530544783, + "y": -0.0012037922233349317, + "z": -0.00008466251439554828 + }, + "angle": { + "x": 5.352015567441837e-7, + "y": -0.0000012673405374508442, + "z": 0.0000011843571702633077 + } + }, + { + "id": "n223", + "parent": "11", + "degrees_of_freedom": [ + 1338, + 1339, + 1340, + 1341, + 1342, + 1343 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 35, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000040109214082682474, + "y": -0.001190752804205278, + "z": -0.00005338993519361292 + }, + "angle": { + "x": -5.06794149446643e-7, + "y": -4.634113156985006e-8, + "z": 2.415865838766627e-7 + } + }, + { + "id": "n224", + "parent": "11", + "degrees_of_freedom": [ + 1344, + 1345, + 1346, + 1347, + 1348, + 1349 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 30, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003897715821270549, + "y": -0.0010352618348686401, + "z": -0.000028225800962100432 + }, + "angle": { + "x": 3.847558650703117e-7, + "y": -7.221708664532393e-8, + "z": 4.0735382942000716e-8 + } + }, + { + "id": "n225", + "parent": "11", + "degrees_of_freedom": [ + 1350, + 1351, + 1352, + 1353, + 1354, + 1355 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 35, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007694562577506606, + "y": -0.0011937370501485542, + "z": -0.000028752079063425334 + }, + "angle": { + "x": -1.4812849078179817e-7, + "y": -3.9317774723414014e-7, + "z": 0.00000115141699586373 + } + }, + { + "id": "n226", + "parent": "11", + "degrees_of_freedom": [ + 1356, + 1357, + 1358, + 1359, + 1360, + 1361 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 35, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000039185532485004066, + "y": -0.001184336080936715, + "z": -6.085299483084769e-19 + }, + "angle": { + "x": -3.134062283759118e-19, + "y": -4.781251679729646e-20, + "z": 2.4612752089384443e-7 + } + }, + { + "id": "n227", + "parent": "11", + "degrees_of_freedom": [ + 1362, + 1363, + 1364, + 1365, + 1366, + 1367 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 30, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00003897715821270662, + "y": -0.001035261834868639, + "z": 0.000028225800962099866 + }, + "angle": { + "x": -3.8475586507042544e-7, + "y": 7.221708664525802e-8, + "z": 4.073538294194481e-8 + } + }, + { + "id": "n228", + "parent": "11", + "degrees_of_freedom": [ + 1368, + 1369, + 1370, + 1371, + 1372, + 1373 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 35, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007694562577506594, + "y": -0.00119373705014855, + "z": 0.000028752079063423758 + }, + "angle": { + "x": 1.4812849078151131e-7, + "y": 3.9317774723410996e-7, + "z": 0.0000011514169958636888 + } + }, + { + "id": "n229", + "parent": "11", + "degrees_of_freedom": [ + 1374, + 1375, + 1376, + 1377, + 1378, + 1379 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 35, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000040109214082683694, + "y": -0.0011907528042052736, + "z": 0.00005338993519361163 + }, + "angle": { + "x": 5.067941494464063e-7, + "y": 4.634113156960046e-8, + "z": 2.415865838764907e-7 + } + }, + { + "id": "n230", + "parent": "11", + "degrees_of_freedom": [ + 1380, + 1381, + 1382, + 1383, + 1384, + 1385 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 30, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00004064634008725282, + "y": -0.0010430154725548835, + "z": 0.00008507090062004201 + }, + "angle": { + "x": -0.0000011972246443525431, + "y": 3.525871255048138e-7, + "z": 3.3609302163476846e-8 + } + }, + { + "id": "n231", + "parent": "11", + "degrees_of_freedom": [ + 1386, + 1387, + 1388, + 1389, + 1390, + 1391 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 35, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00008043972530544908, + "y": -0.0012037922233349256, + "z": 0.00008466251439554665 + }, + "angle": { + "x": -5.352015567441341e-7, + "y": 0.00000126734053745081, + "z": 0.0000011843571702632065 + } + }, + { + "id": "n232", + "parent": "11", + "degrees_of_freedom": [ + 1392, + 1393, + 1394, + 1395, + 1396, + 1397 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 35, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000039558219669401175, + "y": -0.0011972268062791626, + "z": 0.00010562362939201671 + }, + "angle": { + "x": -9.627414190350876e-7, + "y": 4.536760142593763e-7, + "z": 2.2372345784929732e-7 + } + }, + { + "id": "n233", + "parent": "11", + "degrees_of_freedom": [ + 1398, + 1399, + 1400, + 1401, + 1402, + 1403 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 30, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.000039186853992311384, + "y": -0.0010459188045769119, + "z": 0.00016372185732247446 + }, + "angle": { + "x": -0.0000014785695779574646, + "y": 3.5293617546041305e-7, + "z": 1.0265044401181535e-7 + } + }, + { + "id": "n234", + "parent": "11", + "degrees_of_freedom": [ + 1404, + 1405, + 1406, + 1407, + 1408, + 1409 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 35, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -0.00007719951912713454, + "y": -0.00120657757840458, + "z": 0.00011682182650942843 + }, + "angle": { + "x": -0.0000022352251561679357, + "y": 0.000001926761901642388, + "z": 0.0000011634555016633043 + } + }, + { + "id": "n235", + "parent": "11", + "degrees_of_freedom": [ + 1410, + 1411, + 1412, + 1413, + 1414, + 1415 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 45, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00004284672539420836, + "y": -0.0014563642298368001, + "z": -0.0000811774698266121 + }, + "angle": { + "x": 0.0000016606326307315182, + "y": -7.954455500020985e-7, + "z": 2.8626572803236343e-7 + } + }, + { + "id": "n236", + "parent": "11", + "degrees_of_freedom": [ + 1416, + 1417, + 1418, + 1419, + 1420, + 1421 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 40, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00003948184222360158, + "y": -0.0013472913336072519, + "z": -0.0001389313021681841 + }, + "angle": { + "x": 0.000001228918067799669, + "y": -6.177180526326956e-7, + "z": 5.049728426989507e-7 + } + }, + { + "id": "n237", + "parent": "11", + "degrees_of_freedom": [ + 1422, + 1423, + 1424, + 1425, + 1426, + 1427 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 40, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00004167412306070941, + "y": -0.0013439210018901498, + "z": -0.00007093945861742764 + }, + "angle": { + "x": 0.0000015836105176921543, + "y": -4.119157343721139e-7, + "z": 3.5404146693176047e-7 + } + }, + { + "id": "n238", + "parent": "11", + "degrees_of_freedom": [ + 1428, + 1429, + 1430, + 1431, + 1432, + 1433 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 45, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00008282818165539597, + "y": -0.001454192207496404, + "z": -0.00007824336700285044 + }, + "angle": { + "x": 0.00001459218026549071, + "y": -0.0000022975430349274054, + "z": 0.000001852673322126474 + } + }, + { + "id": "n239", + "parent": "11", + "degrees_of_freedom": [ + 1434, + 1435, + 1436, + 1437, + 1438, + 1439 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 45, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00008589927752503797, + "y": -0.0014559793138788323, + "z": -0.00007326894424953757 + }, + "angle": { + "x": -0.000001249581968804535, + "y": -0.0000014464110090173359, + "z": 0.000001769513915291442 + } + }, + { + "id": "n240", + "parent": "11", + "degrees_of_freedom": [ + 1440, + 1441, + 1442, + 1443, + 1444, + 1445 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 45, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00004295220042594693, + "y": -0.001437481649742261, + "z": -0.00004950635916878738 + }, + "angle": { + "x": -0.0000018844626756282655, + "y": -2.1837575887264613e-7, + "z": 1.8462707459916276e-7 + } + }, + { + "id": "n241", + "parent": "11", + "degrees_of_freedom": [ + 1446, + 1447, + 1448, + 1449, + 1450, + 1451 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 40, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000039984469914587665, + "y": -0.0013310824666634695, + "z": -0.000025836463151752323 + }, + "angle": { + "x": 2.2791766389819356e-7, + "y": -8.511901258034514e-8, + "z": 3.108674793414768e-7 + } + }, + { + "id": "n242", + "parent": "11", + "degrees_of_freedom": [ + 1452, + 1453, + 1454, + 1455, + 1456, + 1457 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 45, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00008130967298253002, + "y": -0.0014399630080205875, + "z": -0.000027499971042723744 + }, + "angle": { + "x": -1.7737216564605109e-7, + "y": -3.8887647384273006e-7, + "z": 0.0000017773279176237051 + } + }, + { + "id": "n243", + "parent": "11", + "degrees_of_freedom": [ + 1458, + 1459, + 1460, + 1461, + 1462, + 1463 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 45, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000041683230633945814, + "y": -0.0014323120303334769, + "z": -2.2199402758809833e-18 + }, + "angle": { + "x": -4.673084958057063e-19, + "y": 3.655009876988532e-21, + "z": 1.502470976305877e-7 + } + }, + { + "id": "n244", + "parent": "11", + "degrees_of_freedom": [ + 1464, + 1465, + 1466, + 1467, + 1468, + 1469 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 40, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00003998446991458657, + "y": -0.001331082466663466, + "z": 0.00002583646315174966 + }, + "angle": { + "x": -2.279176638985486e-7, + "y": 8.511901258028427e-8, + "z": 3.1086747934147947e-7 + } + }, + { + "id": "n245", + "parent": "11", + "degrees_of_freedom": [ + 1470, + 1471, + 1472, + 1473, + 1474, + 1475 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 45, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00008130967298253022, + "y": -0.0014399630080205862, + "z": 0.000027499971042719627 + }, + "angle": { + "x": 1.7737216564583014e-7, + "y": 3.8887647384266447e-7, + "z": 0.0000017773279176238631 + } + }, + { + "id": "n246", + "parent": "11", + "degrees_of_freedom": [ + 1476, + 1477, + 1478, + 1479, + 1480, + 1481 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 45, + "z": 30 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000042952200425947314, + "y": -0.0014374816497422585, + "z": 0.000049506359168784154 + }, + "angle": { + "x": 0.0000018844626756280285, + "y": 2.1837575887249022e-7, + "z": 1.846270745991275e-7 + } + }, + { + "id": "n247", + "parent": "11", + "degrees_of_freedom": [ + 1482, + 1483, + 1484, + 1485, + 1486, + 1487 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 40, + "z": 35 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000041674123060711565, + "y": -0.0013439210018901448, + "z": 0.00007093945861742636 + }, + "angle": { + "x": -0.0000015836105176923638, + "y": 4.119157343720232e-7, + "z": 3.540414669315036e-7 + } + }, + { + "id": "n248", + "parent": "11", + "degrees_of_freedom": [ + 1488, + 1489, + 1490, + 1491, + 1492, + 1493 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 45, + "z": 35 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00008589927752503766, + "y": -0.0014559793138788223, + "z": 0.00007326894424953465 + }, + "angle": { + "x": 0.0000012495819688042738, + "y": 0.0000014464110090172433, + "z": 0.000001769513915291234 + } + }, + { + "id": "n249", + "parent": "11", + "degrees_of_freedom": [ + 1494, + 1495, + 1496, + 1497, + 1498, + 1499 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 45, + "z": 40 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.000042846725394209255, + "y": -0.001456364229836794, + "z": 0.00008117746982661018 + }, + "angle": { + "x": -0.0000016606326307318335, + "y": 7.954455500019066e-7, + "z": 2.862657280320414e-7 + } + }, + { + "id": "n250", + "parent": "11", + "degrees_of_freedom": [ + 1500, + 1501, + 1502, + 1503, + 1504, + 1505 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 15, + "y": 40, + "z": 45 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00003948184222360471, + "y": -0.0013472913336072467, + "z": 0.00013893130216818282 + }, + "angle": { + "x": -0.000001228918067799857, + "y": 6.177180526326216e-7, + "z": 5.049728426988531e-7 + } + }, + { + "id": "n251", + "parent": "11", + "degrees_of_freedom": [ + 1506, + 1507, + 1508, + 1509, + 1510, + 1511 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 10, + "y": 45, + "z": 45 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -0.00008282818165539572, + "y": -0.0014541922074963911, + "z": 0.00007824336700284805 + }, + "angle": { + "x": -0.000014592180265491469, + "y": 0.000002297543034927317, + "z": 0.0000018526733221262052 + } + }, + { + "id": "n252", + "parent": "11", + "degrees_of_freedom": [ + 1512, + 1513, + 1514, + 1515, + 1516, + 1517 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n253", + "parent": "11", + "degrees_of_freedom": [ + 1518, + 1519, + 1520, + 1521, + 1522, + 1523 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n254", + "parent": "11", + "degrees_of_freedom": [ + 1524, + 1525, + 1526, + 1527, + 1528, + 1529 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n255", + "parent": "11", + "degrees_of_freedom": [ + 1530, + 1531, + 1532, + 1533, + 1534, + 1535 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000022715550476179493, + "y": -0.00027594236622306467, + "z": -0.00007989572585980398 + }, + "angle": { + "x": -0.000005038027469426002, + "y": 2.00330635219035e-7, + "z": -3.2566379033415175e-7 + } + }, + { + "id": "n256", + "parent": "11", + "degrees_of_freedom": [ + 1536, + 1537, + 1538, + 1539, + 1540, + 1541 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010147502320455421, + "y": -0.00014808874609106658, + "z": -0.00008108321152784224 + }, + "angle": { + "x": -0.000012269192540768802, + "y": -1.2816734412096108e-8, + "z": -0.00000160536098745835 + } + }, + { + "id": "n257", + "parent": "11", + "degrees_of_freedom": [ + 1542, + 1543, + 1544, + 1545, + 1546, + 1547 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000011044499633255954, + "y": -0.00012547074463117327, + "z": -0.000025352785418000833 + }, + "angle": { + "x": -0.000008152215314052528, + "y": 1.2370650665796584e-7, + "z": -0.0000017052498127590936 + } + }, + { + "id": "n258", + "parent": "11", + "degrees_of_freedom": [ + 1548, + 1549, + 1550, + 1551, + 1552, + 1553 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 1.0597045069847236e-15, + "y": -0.0002862876705978491, + "z": -0.00009105442209841503 + }, + "angle": { + "x": -0.00000528822177348499, + "y": 2.858346322047794e-17, + "z": -4.5406749015528807e-17 + } + }, + { + "id": "n259", + "parent": "11", + "degrees_of_freedom": [ + 1554, + 1555, + 1556, + 1557, + 1558, + 1559 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -2.8978167232603635e-17, + "y": -0.0002632291654953533, + "z": -0.00005670246083041181 + }, + "angle": { + "x": -0.000002953241720239814, + "y": 3.571454182949144e-17, + "z": 1.9471744950693296e-17 + } + }, + { + "id": "n260", + "parent": "11", + "degrees_of_freedom": [ + 1560, + 1561, + 1562, + 1563, + 1564, + 1565 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n261", + "parent": "11", + "degrees_of_freedom": [ + 1566, + 1567, + 1568, + 1569, + 1570, + 1571 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n262", + "parent": "11", + "degrees_of_freedom": [ + 1572, + 1573, + 1574, + 1575, + 1576, + 1577 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000023515465505632702, + "y": -0.0002603716762233337, + "z": -0.00003567012152761643 + }, + "angle": { + "x": -0.000002059305390701593, + "y": 5.587137226106247e-8, + "z": -3.386543177012881e-7 + } + }, + { + "id": "n263", + "parent": "11", + "degrees_of_freedom": [ + 1578, + 1579, + 1580, + 1581, + 1582, + 1583 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010631775072500825, + "y": -0.00012277031972386586, + "z": -0.000008165899174069953 + }, + "angle": { + "x": -0.0000025120715618884945, + "y": 2.0106871018006817e-8, + "z": -0.0000016661597923063514 + } + }, + { + "id": "n264", + "parent": "11", + "degrees_of_freedom": [ + 1584, + 1585, + 1586, + 1587, + 1588, + 1589 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -4.939428034665728e-16, + "y": -0.0002575313888096321, + "z": -0.000017735197214383274 + }, + "angle": { + "x": -7.817217855521419e-7, + "y": 1.2789258230596294e-17, + "z": 8.634313077438933e-18 + } + }, + { + "id": "n265", + "parent": "11", + "degrees_of_freedom": [ + 1590, + 1591, + 1592, + 1593, + 1594, + 1595 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n266", + "parent": "11", + "degrees_of_freedom": [ + 1596, + 1597, + 1598, + 1599, + 1600, + 1601 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n267", + "parent": "11", + "degrees_of_freedom": [ + 1602, + 1603, + 1604, + 1605, + 1606, + 1607 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002287607376014491, + "y": -0.0002581136504858279, + "z": -8.098961435387606e-20 + }, + "angle": { + "x": -1.6463600878718287e-20, + "y": -3.841018254362262e-20, + "z": -3.317960096485036e-7 + } + }, + { + "id": "n268", + "parent": "11", + "degrees_of_freedom": [ + 1608, + 1609, + 1610, + 1611, + 1612, + 1613 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010631775072500429, + "y": -0.00012277031972386613, + "z": 0.00000816589917406979 + }, + "angle": { + "x": 0.0000025120715618884424, + "y": -2.010687101802803e-8, + "z": -0.0000016661597923063395 + } + }, + { + "id": "n269", + "parent": "11", + "degrees_of_freedom": [ + 1614, + 1615, + 1616, + 1617, + 1618, + 1619 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -4.941857394579829e-16, + "y": -0.00025753138880963165, + "z": 0.000017735197214382752 + }, + "angle": { + "x": 7.817217855521271e-7, + "y": -1.2830241153230205e-17, + "z": 8.640669608028593e-18 + } + }, + { + "id": "n270", + "parent": "11", + "degrees_of_freedom": [ + 1620, + 1621, + 1622, + 1623, + 1624, + 1625 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n271", + "parent": "11", + "degrees_of_freedom": [ + 1626, + 1627, + 1628, + 1629, + 1630, + 1631 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n272", + "parent": "11", + "degrees_of_freedom": [ + 1632, + 1633, + 1634, + 1635, + 1636, + 1637 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002351546550563198, + "y": -0.00026037167622333386, + "z": 0.00003567012152761603 + }, + "angle": { + "x": 0.0000020593053907017005, + "y": -5.587137226115782e-8, + "z": -3.3865431770130524e-7 + } + }, + { + "id": "n273", + "parent": "11", + "degrees_of_freedom": [ + 1638, + 1639, + 1640, + 1641, + 1642, + 1643 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000011044499633255312, + "y": -0.00012547074463117373, + "z": 0.00002535278541800058 + }, + "angle": { + "x": 0.00000815221531405249, + "y": -1.237065066579847e-7, + "z": -0.0000017052498127590057 + } + }, + { + "id": "n274", + "parent": "11", + "degrees_of_freedom": [ + 1644, + 1645, + 1646, + 1647, + 1648, + 1649 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -2.998353651990881e-17, + "y": -0.0002632291654953543, + "z": 0.000056702460830411354 + }, + "angle": { + "x": 0.0000029532417202398235, + "y": -3.573589093314724e-17, + "z": 1.9420849994548303e-17 + } + }, + { + "id": "n275", + "parent": "11", + "degrees_of_freedom": [ + 1650, + 1651, + 1652, + 1653, + 1654, + 1655 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 25, + "y": -5, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n276", + "parent": "11", + "degrees_of_freedom": [ + 1656, + 1657, + 1658, + 1659, + 1660, + 1661 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 20, + "y": -5, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n277", + "parent": "11", + "degrees_of_freedom": [ + 1662, + 1663, + 1664, + 1665, + 1666, + 1667 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 5, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000022715550476178002, + "y": -0.00027594236622306565, + "z": 0.00007989572585980376 + }, + "angle": { + "x": 0.0000050380274694259766, + "y": -2.0033063521910656e-7, + "z": -3.256637903341381e-7 + } + }, + { + "id": "n278", + "parent": "11", + "degrees_of_freedom": [ + 1668, + 1669, + 1670, + 1671, + 1672, + 1673 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 0, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000010147502320454495, + "y": -0.00014808874609106704, + "z": 0.00008108321152784228 + }, + "angle": { + "x": 0.000012269192540768792, + "y": 1.2816734412091527e-8, + "z": -0.0000016053609874582255 + } + }, + { + "id": "n279", + "parent": "11", + "degrees_of_freedom": [ + 1674, + 1675, + 1676, + 1677, + 1678, + 1679 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 5, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 1.0578438936900294e-15, + "y": -0.0002862876705978499, + "z": 0.00009105442209841495 + }, + "angle": { + "x": 0.0000052882217734850125, + "y": -2.865092338412327e-17, + "z": -4.539490574358854e-17 + } + }, + { + "id": "n280", + "parent": "11", + "degrees_of_freedom": [ + 1680, + 1681, + 1682, + 1683, + 1684, + 1685 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003809357838550264, + "y": -0.0005798377184669264, + "z": -0.00011342037191779021 + }, + "angle": { + "x": -0.000002427316928480638, + "y": 2.571453348479352e-7, + "z": -3.5395761427018414e-7 + } + }, + { + "id": "n281", + "parent": "11", + "degrees_of_freedom": [ + 1686, + 1687, + 1688, + 1689, + 1690, + 1691 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002975497318887621, + "y": -0.0004365130503066856, + "z": -0.00014992651987513425 + }, + "angle": { + "x": -0.0000034210465880620993, + "y": 7.206324570958423e-8, + "z": -0.000001172297528094157 + } + }, + { + "id": "n282", + "parent": "11", + "degrees_of_freedom": [ + 1692, + 1693, + 1694, + 1695, + 1696, + 1697 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003054844848478775, + "y": -0.0004158146858357147, + "z": -0.0000726703385944066 + }, + "angle": { + "x": -0.0000034593115571445457, + "y": 3.187937321178437e-7, + "z": -0.0000010810232525487956 + } + }, + { + "id": "n283", + "parent": "11", + "degrees_of_freedom": [ + 1698, + 1699, + 1700, + 1701, + 1702, + 1703 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 3.3869280964424065e-15, + "y": -0.0005849687701976557, + "z": -0.00012073602094850635 + }, + "angle": { + "x": -0.0000015503982152781574, + "y": 1.5169938111312e-16, + "z": -1.9296637640589332e-17 + } + }, + { + "id": "n284", + "parent": "11", + "degrees_of_freedom": [ + 1704, + 1705, + 1706, + 1707, + 1708, + 1709 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -5.598351242697792e-16, + "y": -0.0005692123369925466, + "z": -0.00008445313816525642 + }, + "angle": { + "x": -0.0000012787482078189961, + "y": 1.1901037305367577e-16, + "z": 6.577059993998841e-17 + } + }, + { + "id": "n285", + "parent": "11", + "degrees_of_freedom": [ + 1710, + 1711, + 1712, + 1713, + 1714, + 1715 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003799706908880073, + "y": -0.0005663593015426447, + "z": -0.00005631387174969125 + }, + "angle": { + "x": -0.0000013429902461484329, + "y": 2.1438966202114648e-8, + "z": -3.176578704086568e-7 + } + }, + { + "id": "n286", + "parent": "11", + "degrees_of_freedom": [ + 1716, + 1717, + 1718, + 1719, + 1720, + 1721 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002925207590192772, + "y": -0.0004072917313116777, + "z": -0.000023032537831409548 + }, + "angle": { + "x": -0.0000013210725294425359, + "y": 5.751242611005224e-8, + "z": -0.0000010246141976443088 + } + }, + { + "id": "n287", + "parent": "11", + "degrees_of_freedom": [ + 1722, + 1723, + 1724, + 1725, + 1726, + 1727 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -9.96106580228416e-16, + "y": -0.0005609061563483864, + "z": -0.00002817517195237923 + }, + "angle": { + "x": -5.106519147510729e-7, + "y": 1.346032612240052e-17, + "z": 7.408634986023082e-18 + } + }, + { + "id": "n288", + "parent": "11", + "degrees_of_freedom": [ + 1728, + 1729, + 1730, + 1731, + 1732, + 1733 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000036990959209738524, + "y": -0.0005615869205248081, + "z": 2.033860376390582e-20 + }, + "angle": { + "x": -3.6597868651107036e-20, + "y": -5.076014637076424e-20, + "z": -3.047578308094723e-7 + } + }, + { + "id": "n289", + "parent": "11", + "degrees_of_freedom": [ + 1734, + 1735, + 1736, + 1737, + 1738, + 1739 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00002925207590192764, + "y": -0.00040729173131167707, + "z": 0.000023032537831409416 + }, + "angle": { + "x": 0.0000013210725294425577, + "y": -5.751242611012339e-8, + "z": -0.0000010246141976442633 + } + }, + { + "id": "n290", + "parent": "11", + "degrees_of_freedom": [ + 1740, + 1741, + 1742, + 1743, + 1744, + 1745 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -9.965293189120407e-16, + "y": -0.0005609061563483865, + "z": 0.0000281751719523788 + }, + "angle": { + "x": 5.106519147510791e-7, + "y": -1.3551883613973945e-17, + "z": 7.401548092215344e-18 + } + }, + { + "id": "n291", + "parent": "11", + "degrees_of_freedom": [ + 1746, + 1747, + 1748, + 1749, + 1750, + 1751 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003799706908879954, + "y": -0.0005663593015426448, + "z": 0.000056313871749691064 + }, + "angle": { + "x": 0.000001342990246148642, + "y": -2.1438966202308903e-8, + "z": -3.17657870408618e-7 + } + }, + { + "id": "n292", + "parent": "11", + "degrees_of_freedom": [ + 1752, + 1753, + 1754, + 1755, + 1756, + 1757 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000030548448484786255, + "y": -0.000415814685835716, + "z": 0.0000726703385944063 + }, + "angle": { + "x": 0.000003459311557144587, + "y": -3.187937321179195e-7, + "z": -0.0000010810232525487354 + } + }, + { + "id": "n293", + "parent": "11", + "degrees_of_freedom": [ + 1758, + 1759, + 1760, + 1761, + 1762, + 1763 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -5.614833260873215e-16, + "y": -0.0005692123369925473, + "z": 0.00008445313816525586 + }, + "angle": { + "x": 0.0000012787482078189754, + "y": -1.1912456973122695e-16, + "z": 6.563699564075845e-17 + } + }, + { + "id": "n294", + "parent": "11", + "degrees_of_freedom": [ + 1764, + 1765, + 1766, + 1767, + 1768, + 1769 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 15, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003809357838550027, + "y": -0.0005798377184669276, + "z": 0.00011342037191779006 + }, + "angle": { + "x": 0.000002427316928480651, + "y": -2.5714533484809424e-7, + "z": -3.5395761427025095e-7 + } + }, + { + "id": "n295", + "parent": "11", + "degrees_of_freedom": [ + 1770, + 1771, + 1772, + 1773, + 1774, + 1775 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 10, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000029754973188873533, + "y": -0.000436513050306687, + "z": 0.0001499265198751341 + }, + "angle": { + "x": 0.000003421046588062122, + "y": -7.206324570964883e-8, + "z": -0.0000011722975280941398 + } + }, + { + "id": "n296", + "parent": "11", + "degrees_of_freedom": [ + 1776, + 1777, + 1778, + 1779, + 1780, + 1781 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 15, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 3.384180932804129e-15, + "y": -0.0005849687701976555, + "z": 0.00012073602094850571 + }, + "angle": { + "x": 0.0000015503982152780324, + "y": -1.5181508279158399e-16, + "z": -1.943669921124086e-17 + } + }, + { + "id": "n297", + "parent": "11", + "degrees_of_freedom": [ + 1782, + 1783, + 1784, + 1785, + 1786, + 1787 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004146691565434689, + "y": -0.0008903415121167189, + "z": -0.00011857197728224093 + }, + "angle": { + "x": -4.335244028468397e-7, + "y": 3.4333317012589424e-7, + "z": -1.0585813484940583e-7 + } + }, + { + "id": "n298", + "parent": "11", + "degrees_of_freedom": [ + 1788, + 1789, + 1790, + 1791, + 1792, + 1793 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004009510141420624, + "y": -0.0007407238439856294, + "z": -0.0001685115642420428 + }, + "angle": { + "x": -5.146052270074737e-7, + "y": 2.150620404215973e-7, + "z": -4.3028140329834106e-7 + } + }, + { + "id": "n299", + "parent": "11", + "degrees_of_freedom": [ + 1794, + 1795, + 1796, + 1797, + 1798, + 1799 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000040435872671070276, + "y": -0.000729739117025392, + "z": -0.0000887148097915634 + }, + "angle": { + "x": -5.93544342004316e-7, + "y": 3.422035608814038e-7, + "z": -3.6434274426903253e-7 + } + }, + { + "id": "n300", + "parent": "11", + "degrees_of_freedom": [ + 1800, + 1801, + 1802, + 1803, + 1804, + 1805 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 6.11572074804893e-15, + "y": -0.0008930668025669994, + "z": -0.00012489422101734748 + }, + "angle": { + "x": 2.6821019410573873e-7, + "y": 5.059365842403605e-16, + "z": 2.511661277049982e-16 + } + }, + { + "id": "n301", + "parent": "11", + "degrees_of_freedom": [ + 1806, + 1807, + 1808, + 1809, + 1810, + 1811 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -2.1194329371070132e-15, + "y": -0.0008861515011039337, + "z": -0.00008887423872002788 + }, + "angle": { + "x": -1.750307399947009e-8, + "y": 2.1578973780345226e-16, + "z": 2.6091770837885955e-17 + } + }, + { + "id": "n302", + "parent": "11", + "degrees_of_freedom": [ + 1812, + 1813, + 1814, + 1815, + 1816, + 1817 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004166728991045496, + "y": -0.0008830215286468671, + "z": -0.00005997886934401323 + }, + "angle": { + "x": -5.980984959153384e-7, + "y": 3.0205783234752514e-8, + "z": -1.2374181804410744e-7 + } + }, + { + "id": "n303", + "parent": "11", + "degrees_of_freedom": [ + 1818, + 1819, + 1820, + 1821, + 1822, + 1823 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000038605468589032553, + "y": -0.0007216583052836391, + "z": -0.000029534443002483054 + }, + "angle": { + "x": -2.5217788804266885e-7, + "y": 6.881296653179184e-8, + "z": -3.6003472032575193e-7 + } + }, + { + "id": "n304", + "parent": "11", + "degrees_of_freedom": [ + 1824, + 1825, + 1826, + 1827, + 1828, + 1829 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -1.876798840645635e-15, + "y": -0.0008783999569869059, + "z": -0.000030054327142821774 + }, + "angle": { + "x": -3.8527078949011e-8, + "y": -2.005457944655861e-17, + "z": 3.7006438242171917e-17 + } + }, + { + "id": "n305", + "parent": "11", + "degrees_of_freedom": [ + 1830, + 1831, + 1832, + 1833, + 1834, + 1835 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004066664732726329, + "y": -0.0008790599952720412, + "z": 3.8121629955361486e-19 + }, + "angle": { + "x": -1.351941355192191e-19, + "y": -1.1838722445189128e-19, + "z": -1.2150490910960933e-7 + } + }, + { + "id": "n306", + "parent": "11", + "degrees_of_freedom": [ + 1836, + 1837, + 1838, + 1839, + 1840, + 1841 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000038605468589031964, + "y": -0.0007216583052836386, + "z": 0.000029534443002483288 + }, + "angle": { + "x": 2.5217788804272306e-7, + "y": -6.881296653190181e-8, + "z": -3.6003472032555907e-7 + } + }, + { + "id": "n307", + "parent": "11", + "degrees_of_freedom": [ + 1842, + 1843, + 1844, + 1845, + 1846, + 1847 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -1.8775274492052933e-15, + "y": -0.0008783999569869069, + "z": 0.000030054327142821554 + }, + "angle": { + "x": 3.8527078949010456e-8, + "y": 1.9934361702521632e-17, + "z": 3.698444531042861e-17 + } + }, + { + "id": "n308", + "parent": "11", + "degrees_of_freedom": [ + 1848, + 1849, + 1850, + 1851, + 1852, + 1853 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004166728991045329, + "y": -0.0008830215286468666, + "z": 0.00005997886934401338 + }, + "angle": { + "x": 5.980984959155154e-7, + "y": -3.020578323496987e-8, + "z": -1.2374181804400103e-7 + } + }, + { + "id": "n309", + "parent": "11", + "degrees_of_freedom": [ + 1854, + 1855, + 1856, + 1857, + 1858, + 1859 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000404358726710687, + "y": -0.0007297391170253936, + "z": 0.0000887148097915633 + }, + "angle": { + "x": 5.935443420043493e-7, + "y": -3.422035608814981e-7, + "z": -3.6434274426894714e-7 + } + }, + { + "id": "n310", + "parent": "11", + "degrees_of_freedom": [ + 1860, + 1861, + 1862, + 1863, + 1864, + 1865 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -2.1213961981171945e-15, + "y": -0.0008861515011039358, + "z": 0.000088874238720027 + }, + "angle": { + "x": 1.7503073999478626e-8, + "y": -2.1595409516125171e-16, + "z": 2.609164669193202e-17 + } + }, + { + "id": "n311", + "parent": "11", + "degrees_of_freedom": [ + 1866, + 1867, + 1868, + 1869, + 1870, + 1871 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 25, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004146691565434401, + "y": -0.0008903415121167201, + "z": 0.00011857197728224044 + }, + "angle": { + "x": 4.3352440284703206e-7, + "y": -3.433331701261112e-7, + "z": -1.0585813484934515e-7 + } + }, + { + "id": "n312", + "parent": "11", + "degrees_of_freedom": [ + 1872, + 1873, + 1874, + 1875, + 1876, + 1877 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 20, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004009510141420339, + "y": -0.0007407238439856317, + "z": 0.0001685115642420426 + }, + "angle": { + "x": 5.146052270074543e-7, + "y": -2.1506204042180662e-7, + "z": -4.302814032983089e-7 + } + }, + { + "id": "n313", + "parent": "11", + "degrees_of_freedom": [ + 1878, + 1879, + 1880, + 1881, + 1882, + 1883 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 25, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 6.1128533208556665e-15, + "y": -0.0008930668025670019, + "z": 0.00012489422101734623 + }, + "angle": { + "x": -2.682101941056386e-7, + "y": -5.060477192507033e-16, + "z": 2.510489076155388e-16 + } + }, + { + "id": "n314", + "parent": "11", + "degrees_of_freedom": [ + 1884, + 1885, + 1886, + 1887, + 1888, + 1889 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 35, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003955821967227466, + "y": -0.0011972268062768903, + "z": -0.0001056236293970985 + }, + "angle": { + "x": 9.627414208746837e-7, + "y": 4.5367601191612914e-7, + "z": -2.237234577044147e-7 + } + }, + { + "id": "n315", + "parent": "11", + "degrees_of_freedom": [ + 1890, + 1891, + 1892, + 1893, + 1894, + 1895 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 30, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003918685400938592, + "y": -0.0010459188045668383, + "z": -0.00016372185732756335 + }, + "angle": { + "x": 0.000001478569577683941, + "y": 3.5293617554797386e-7, + "z": -1.0265044329973982e-7 + } + }, + { + "id": "n316", + "parent": "11", + "degrees_of_freedom": [ + 1896, + 1897, + 1898, + 1899, + 1900, + 1901 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 30, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000406463400762742, + "y": -0.0010430154725591303, + "z": -0.00008507090062201786 + }, + "angle": { + "x": 0.0000011972246443329123, + "y": 3.525871252922558e-7, + "z": -3.360930219507903e-8 + } + }, + { + "id": "n317", + "parent": "11", + "degrees_of_freedom": [ + 1902, + 1903, + 1904, + 1905, + 1906, + 1907 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 35, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 3.813633701175138e-15, + "y": -0.0011954575757590442, + "z": -0.00011046042652143335 + }, + "angle": { + "x": 0.0000024514605235100407, + "y": 8.343489484799643e-16, + "z": 6.020294141519786e-16 + } + }, + { + "id": "n318", + "parent": "11", + "degrees_of_freedom": [ + 1908, + 1909, + 1910, + 1911, + 1912, + 1913 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 35, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -3.341378459201154e-15, + "y": -0.0011932409620185752, + "z": -0.00007876339612480257 + }, + "angle": { + "x": 5.948869342392166e-7, + "y": 1.7602762290655466e-16, + "z": -1.9510933876189925e-16 + } + }, + { + "id": "n319", + "parent": "11", + "degrees_of_freedom": [ + 1914, + 1915, + 1916, + 1917, + 1918, + 1919 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 35, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004010921407348147, + "y": -0.0011907528042070792, + "z": -0.00005338993519225395 + }, + "angle": { + "x": -5.06794150333209e-7, + "y": 4.634113199138888e-8, + "z": -2.4158658406130446e-7 + } + }, + { + "id": "n320", + "parent": "11", + "degrees_of_freedom": [ + 1920, + 1921, + 1922, + 1923, + 1924, + 1925 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 30, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003897715820776684, + "y": -0.0010352618348672734, + "z": -0.00002822580096121211 + }, + "angle": { + "x": 3.847558653195697e-7, + "y": 7.221708634970565e-8, + "z": -4.073538250400782e-8 + } + }, + { + "id": "n321", + "parent": "11", + "degrees_of_freedom": [ + 1926, + 1927, + 1928, + 1929, + 1930, + 1931 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 35, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -4.581426592736954e-15, + "y": -0.0011831794977392046, + "z": -0.0000268460112186263 + }, + "angle": { + "x": -1.4038828520842455e-7, + "y": -9.611983437932581e-17, + "z": 1.051890090057279e-16 + } + }, + { + "id": "n322", + "parent": "11", + "degrees_of_freedom": [ + 1932, + 1933, + 1934, + 1935, + 1936, + 1937 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 35, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003918553247536295, + "y": -0.0011843360809355565, + "z": -1.8770192083999574e-19 + }, + "angle": { + "x": -2.2489000204762577e-19, + "y": -1.7598182851128243e-19, + "z": -2.461275204899561e-7 + } + }, + { + "id": "n323", + "parent": "11", + "degrees_of_freedom": [ + 1938, + 1939, + 1940, + 1941, + 1942, + 1943 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 30, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003897715820776589, + "y": -0.0010352618348672708, + "z": 0.00002822580096121273 + }, + "angle": { + "x": -3.8475586531963434e-7, + "y": -7.221708634987212e-8, + "z": -4.0735382503798584e-8 + } + }, + { + "id": "n324", + "parent": "11", + "degrees_of_freedom": [ + 1944, + 1945, + 1946, + 1947, + 1948, + 1949 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 35, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -4.582591288628483e-15, + "y": -0.0011831794977392052, + "z": 0.000026846011218625655 + }, + "angle": { + "x": 1.4038828520826886e-7, + "y": 9.593567486015277e-17, + "z": 1.0506508573466088e-16 + } + }, + { + "id": "n325", + "parent": "11", + "degrees_of_freedom": [ + 1950, + 1951, + 1952, + 1953, + 1954, + 1955 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 35, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000040109214073479265, + "y": -0.0011907528042070768, + "z": 0.00005338993519225426 + }, + "angle": { + "x": 5.06794150332969e-7, + "y": -4.634113199157354e-8, + "z": -2.4158658406128154e-7 + } + }, + { + "id": "n326", + "parent": "11", + "degrees_of_freedom": [ + 1956, + 1957, + 1958, + 1959, + 1960, + 1961 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 30, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000040646340076271475, + "y": -0.0010430154725591283, + "z": 0.00008507090062201793 + }, + "angle": { + "x": -0.0000011972246443328534, + "y": -3.5258712529237487e-7, + "z": -3.360930219493959e-8 + } + }, + { + "id": "n327", + "parent": "11", + "degrees_of_freedom": [ + 1962, + 1963, + 1964, + 1965, + 1966, + 1967 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 35, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": -3.343961228485757e-15, + "y": -0.0011932409620185726, + "z": 0.00007876339612480209 + }, + "angle": { + "x": -5.948869342392243e-7, + "y": -1.7619182968204764e-16, + "z": -1.951696965321697e-16 + } + }, + { + "id": "n328", + "parent": "11", + "degrees_of_freedom": [ + 1968, + 1969, + 1970, + 1971, + 1972, + 1973 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 35, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003955821967227098, + "y": -0.0011972268062768892, + "z": 0.00010562362939709856 + }, + "angle": { + "x": -9.627414208744923e-7, + "y": -4.5367601191634524e-7, + "z": -2.237234577044217e-7 + } + }, + { + "id": "n329", + "parent": "11", + "degrees_of_freedom": [ + 1974, + 1975, + 1976, + 1977, + 1978, + 1979 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 30, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003918685400938163, + "y": -0.00104591880456684, + "z": 0.00016372185732756257 + }, + "angle": { + "x": -0.0000014785695776837462, + "y": -3.529361755481746e-7, + "z": -1.0265044329961758e-7 + } + }, + { + "id": "n330", + "parent": "11", + "degrees_of_freedom": [ + 1980, + 1981, + 1982, + 1983, + 1984, + 1985 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 35, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 3.810060663593556e-15, + "y": -0.001195457575759043, + "z": 0.00011046042652143298 + }, + "angle": { + "x": -0.000002451460523509802, + "y": -8.344389836275432e-16, + "z": 6.019792408711499e-16 + } + }, + { + "id": "n331", + "parent": "11", + "degrees_of_freedom": [ + 1986, + 1987, + 1988, + 1989, + 1990, + 1991 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 45, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00004284672539015515, + "y": -0.001456364229836829, + "z": -0.00008117746983166995 + }, + "angle": { + "x": 0.0000016606326306709278, + "y": 7.954455489867558e-7, + "z": -2.8626572805244536e-7 + } + }, + { + "id": "n332", + "parent": "11", + "degrees_of_freedom": [ + 1992, + 1993, + 1994, + 1995, + 1996, + 1997 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 40, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000039481842230983195, + "y": -0.001347291333601417, + "z": -0.000138931302173174 + }, + "angle": { + "x": 0.0000012289180678634957, + "y": 6.177180528832378e-7, + "z": -5.049728414977981e-7 + } + }, + { + "id": "n333", + "parent": "11", + "degrees_of_freedom": [ + 1998, + 1999, + 2000, + 2001, + 2002, + 2003 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 40, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0000416741230488041, + "y": -0.0013439210018935026, + "z": -0.00007093945861841472 + }, + "angle": { + "x": 0.0000015836105178016954, + "y": 4.119157342065112e-7, + "z": -3.5404146696072323e-7 + } + }, + { + "id": "n334", + "parent": "11", + "degrees_of_freedom": [ + 2004, + 2005, + 2006, + 2007, + 2008, + 2009 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 45, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -1.3815781371222334e-15, + "y": -0.0014417071222516315, + "z": -0.00006812708739177694 + }, + "angle": { + "x": 0.000014638813492579602, + "y": 7.928219210432784e-16, + "z": 4.466892123027119e-16 + } + }, + { + "id": "n335", + "parent": "11", + "degrees_of_freedom": [ + 2010, + 2011, + 2012, + 2013, + 2014, + 2015 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 45, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -3.5409883899609907e-15, + "y": -0.0014465553857091092, + "z": -0.0000654099824354298 + }, + "angle": { + "x": -0.0000010322651655231949, + "y": 2.7649795461349628e-17, + "z": -2.280287103712141e-16 + } + }, + { + "id": "n336", + "parent": "11", + "degrees_of_freedom": [ + 2016, + 2017, + 2018, + 2019, + 2020, + 2021 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 45, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00004295220041275926, + "y": -0.0014374816497435355, + "z": -0.000049506359165184705 + }, + "angle": { + "x": -0.0000018844626752458781, + "y": 2.1837575833709298e-7, + "z": -1.846270744371504e-7 + } + }, + { + "id": "n337", + "parent": "11", + "degrees_of_freedom": [ + 2022, + 2023, + 2024, + 2025, + 2026, + 2027 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 40, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00003998446990258459, + "y": -0.0013310824666628656, + "z": -0.000025836463150132962 + }, + "angle": { + "x": 2.2791766423167343e-7, + "y": 8.511901162439538e-8, + "z": -3.1086747872063656e-7 + } + }, + { + "id": "n338", + "parent": "11", + "degrees_of_freedom": [ + 2028, + 2029, + 2030, + 2031, + 2032, + 2033 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 45, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -8.011778309773337e-15, + "y": -0.0014314279730793702, + "z": -0.000025034743237840347 + }, + "angle": { + "x": -1.0156979716664364e-7, + "y": -3.223364544199184e-16, + "z": 5.090661779860964e-18 + } + }, + { + "id": "n339", + "parent": "11", + "degrees_of_freedom": [ + 2034, + 2035, + 2036, + 2037, + 2038, + 2039 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 45, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000041683230614449426, + "y": -0.0014323120303332407, + "z": -1.45970929920407e-18 + }, + "angle": { + "x": -6.414407990666291e-19, + "y": -1.8329815795773268e-19, + "z": -1.5024709758937486e-7 + } + }, + { + "id": "n340", + "parent": "11", + "degrees_of_freedom": [ + 2040, + 2041, + 2042, + 2043, + 2044, + 2045 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 40, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000039984469902582654, + "y": -0.001331082466662865, + "z": 0.000025836463150131912 + }, + "angle": { + "x": -2.2791766423198876e-7, + "y": -8.511901162454436e-8, + "z": -3.1086747872056763e-7 + } + }, + { + "id": "n341", + "parent": "11", + "degrees_of_freedom": [ + 2046, + 2047, + 2048, + 2049, + 2050, + 2051 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 45, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -8.012053984088724e-15, + "y": -0.0014314279730793654, + "z": 0.000025034743237837097 + }, + "angle": { + "x": 1.0156979716645786e-7, + "y": 3.221299440842277e-16, + "z": 5.0073963630166205e-18 + } + }, + { + "id": "n342", + "parent": "11", + "degrees_of_freedom": [ + 2052, + 2053, + 2054, + 2055, + 2056, + 2057 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 45, + "z": 30 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00004295220041275751, + "y": -0.0014374816497435335, + "z": 0.000049506359165183004 + }, + "angle": { + "x": 0.000001884462675245558, + "y": -2.1837575833727139e-7, + "z": -1.8462707443713383e-7 + } + }, + { + "id": "n343", + "parent": "11", + "degrees_of_freedom": [ + 2058, + 2059, + 2060, + 2061, + 2062, + 2063 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 40, + "z": 35 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00004167412304880201, + "y": -0.0013439210018934991, + "z": 0.00007093945861841434 + }, + "angle": { + "x": -0.0000015836105178018788, + "y": -4.1191573420660037e-7, + "z": -3.540414669607163e-7 + } + }, + { + "id": "n344", + "parent": "11", + "degrees_of_freedom": [ + 2064, + 2065, + 2066, + 2067, + 2068, + 2069 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 45, + "z": 35 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -3.5429618356981442e-15, + "y": -0.0014465553857091068, + "z": 0.00006540998243542796 + }, + "angle": { + "x": 0.0000010322651655231364, + "y": -2.782288325436468e-17, + "z": -2.2803837968148937e-16 + } + }, + { + "id": "n345", + "parent": "11", + "degrees_of_freedom": [ + 2070, + 2071, + 2072, + 2073, + 2074, + 2075 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 45, + "z": 40 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00004284672539015201, + "y": -0.0014563642298368255, + "z": 0.00008117746983166916 + }, + "angle": { + "x": -0.0000016606326306711053, + "y": -7.954455489869259e-7, + "z": -2.862657280523388e-7 + } + }, + { + "id": "n346", + "parent": "11", + "degrees_of_freedom": [ + 2076, + 2077, + 2078, + 2079, + 2080, + 2081 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 25, + "y": 40, + "z": 45 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.000039481842230979265, + "y": -0.001347291333601414, + "z": 0.00013893130217317338 + }, + "angle": { + "x": -0.0000012289180678636865, + "y": -6.177180528832943e-7, + "z": -5.049728414979172e-7 + } + }, + { + "id": "n347", + "parent": "11", + "degrees_of_freedom": [ + 2082, + 2083, + 2084, + 2085, + 2086, + 2087 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 20, + "y": 45, + "z": 45 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": -1.3843772801760472e-15, + "y": -0.0014417071222516244, + "z": 0.00006812708739177626 + }, + "angle": { + "x": -0.000014638813492579512, + "y": -7.929513356615463e-16, + "z": 4.466088348840352e-16 + } + }, + { + "id": "n348", + "parent": "11", + "degrees_of_freedom": [ + 2088, + 2089, + 2090, + 2091, + 2092, + 2093 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 35, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n349", + "parent": "11", + "degrees_of_freedom": [ + 2094, + 2095, + 2096, + 2097, + 2098, + 2099 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 30, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n350", + "parent": "11", + "degrees_of_freedom": [ + 2100, + 2101, + 2102, + 2103, + 2104, + 2105 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 30, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n351", + "parent": "11", + "degrees_of_freedom": [ + 2106, + 2107, + 2108, + 2109, + 2110, + 2111 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008205257007920611, + "y": -0.00028794773410566253, + "z": -0.00008823168988940856 + }, + "angle": { + "x": -0.000005840751456581767, + "y": 3.4991775872755267e-7, + "z": -0.0000018591323414022267 + } + }, + { + "id": "n352", + "parent": "11", + "degrees_of_freedom": [ + 2112, + 2113, + 2114, + 2115, + 2116, + 2117 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003418000401580664, + "y": -0.0001550018523088084, + "z": -0.00008727593552709991 + }, + "angle": { + "x": -0.000013642787678929659, + "y": 8.318301850332637e-7, + "z": -0.0000064184865426611305 + } + }, + { + "id": "n353", + "parent": "11", + "degrees_of_freedom": [ + 2118, + 2119, + 2120, + 2121, + 2122, + 2123 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003486407759681369, + "y": -0.00012979922245260597, + "z": -0.000027729741595912715 + }, + "angle": { + "x": -0.000009020995204931507, + "y": 1.0789018525647172e-7, + "z": -0.0000059323101283709626 + } + }, + { + "id": "n354", + "parent": "11", + "degrees_of_freedom": [ + 2124, + 2125, + 2126, + 2127, + 2128, + 2129 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000452377684907288, + "y": -0.00029076404062508424, + "z": -0.00009287283299212232 + }, + "angle": { + "x": -0.000005327292538753341, + "y": 0.0000014804778934470157, + "z": -0.0000020387460710501007 + } + }, + { + "id": "n355", + "parent": "11", + "degrees_of_freedom": [ + 2130, + 2131, + 2132, + 2133, + 2134, + 2135 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000047691182460958534, + "y": -0.00026660226853867085, + "z": -0.00006057903889014351 + }, + "angle": { + "x": -0.0000031775899881828524, + "y": 7.160035579916377e-7, + "z": -0.000001312504391817253 + } + }, + { + "id": "n356", + "parent": "11", + "degrees_of_freedom": [ + 2136, + 2137, + 2138, + 2139, + 2140, + 2141 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 35, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n357", + "parent": "11", + "degrees_of_freedom": [ + 2142, + 2143, + 2144, + 2145, + 2146, + 2147 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 30, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n358", + "parent": "11", + "degrees_of_freedom": [ + 2148, + 2149, + 2150, + 2151, + 2152, + 2153 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000774732835914091, + "y": -0.00026856758138003227, + "z": -0.000039326259891744575 + }, + "angle": { + "x": -0.0000023850599069064263, + "y": -1.992628345355926e-7, + "z": -0.0000015565843291419617 + } + }, + { + "id": "n359", + "parent": "11", + "degrees_of_freedom": [ + 2154, + 2155, + 2156, + 2157, + 2158, + 2159 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003306950662313287, + "y": -0.00012642534933103426, + "z": -0.00000890466449575296 + }, + "angle": { + "x": -0.0000027147713614785813, + "y": -7.063062371543782e-8, + "z": -0.000005565359635933918 + } + }, + { + "id": "n360", + "parent": "11", + "degrees_of_freedom": [ + 2160, + 2161, + 2162, + 2163, + 2164, + 2165 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004539120458658169, + "y": -0.00026059159701919787, + "z": -0.00001889574152671243 + }, + "angle": { + "x": -8.335208913736181e-7, + "y": 1.9035014962501938e-7, + "z": -0.000001151813741449675 + } + }, + { + "id": "n361", + "parent": "11", + "degrees_of_freedom": [ + 2166, + 2167, + 2168, + 2169, + 2170, + 2171 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 35, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n362", + "parent": "11", + "degrees_of_freedom": [ + 2172, + 2173, + 2174, + 2175, + 2176, + 2177 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 30, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n363", + "parent": "11", + "degrees_of_freedom": [ + 2178, + 2179, + 2180, + 2181, + 2182, + 2183 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007393398904501592, + "y": -0.0002659074911519315, + "z": 6.983889668171685e-20 + }, + "angle": { + "x": 1.4447187864314988e-19, + "y": -8.672200509762968e-20, + "z": -0.0000014810659436055141 + } + }, + { + "id": "n364", + "parent": "11", + "degrees_of_freedom": [ + 2184, + 2185, + 2186, + 2187, + 2188, + 2189 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003306950662313254, + "y": -0.00012642534933103474, + "z": 0.0000089046644957529 + }, + "angle": { + "x": 0.000002714771361478617, + "y": 7.063062371540705e-8, + "z": -0.000005565359635933892 + } + }, + { + "id": "n365", + "parent": "11", + "degrees_of_freedom": [ + 2190, + 2191, + 2192, + 2193, + 2194, + 2195 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000045391204586581095, + "y": -0.0002605915970191988, + "z": 0.00001889574152671234 + }, + "angle": { + "x": 8.335208913736725e-7, + "y": -1.9035014962508757e-7, + "z": -0.0000011518137414497587 + } + }, + { + "id": "n366", + "parent": "11", + "degrees_of_freedom": [ + 2196, + 2197, + 2198, + 2199, + 2200, + 2201 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 35, + "y": -5, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n367", + "parent": "11", + "degrees_of_freedom": [ + 2202, + 2203, + 2204, + 2205, + 2206, + 2207 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 30, + "y": -5, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n368", + "parent": "11", + "degrees_of_freedom": [ + 2208, + 2209, + 2210, + 2211, + 2212, + 2213 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 5, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007747328359140835, + "y": -0.0002685675813800338, + "z": 0.00003932625989174496 + }, + "angle": { + "x": 0.000002385059906906516, + "y": 1.992628345354987e-7, + "z": -0.00000155658432914193 + } + }, + { + "id": "n369", + "parent": "11", + "degrees_of_freedom": [ + 2214, + 2215, + 2216, + 2217, + 2218, + 2219 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 0, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000034864077596813134, + "y": -0.00012979922245260676, + "z": 0.000027729741595912834 + }, + "angle": { + "x": 0.00000902099520493157, + "y": -1.0789018525650255e-7, + "z": -0.00000593231012837089 + } + }, + { + "id": "n370", + "parent": "11", + "degrees_of_freedom": [ + 2220, + 2221, + 2222, + 2223, + 2224, + 2225 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 5, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004769118246095737, + "y": -0.0002666022685386723, + "z": 0.00006057903889014351 + }, + "angle": { + "x": 0.0000031775899881828964, + "y": -7.160035579917573e-7, + "z": -0.0000013125043918173024 + } + }, + { + "id": "n371", + "parent": "11", + "degrees_of_freedom": [ + 2226, + 2227, + 2228, + 2229, + 2230, + 2231 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 35, + "y": -5, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n372", + "parent": "11", + "degrees_of_freedom": [ + 2232, + 2233, + 2234, + 2235, + 2236, + 2237 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 30, + "y": -5, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n373", + "parent": "11", + "degrees_of_freedom": [ + 2238, + 2239, + 2240, + 2241, + 2242, + 2243 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 5, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008205257007920486, + "y": -0.0002879477341056646, + "z": 0.00008823168988940906 + }, + "angle": { + "x": 0.000005840751456581845, + "y": -3.499177587276477e-7, + "z": -0.000001859132341402231 + } + }, + { + "id": "n374", + "parent": "11", + "degrees_of_freedom": [ + 2244, + 2245, + 2246, + 2247, + 2248, + 2249 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 0, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00003418000401580563, + "y": -0.0001550018523088094, + "z": 0.0000872759355271004 + }, + "angle": { + "x": 0.000013642787678929718, + "y": -8.318301850332909e-7, + "z": -0.000006418486542661057 + } + }, + { + "id": "n375", + "parent": "11", + "degrees_of_freedom": [ + 2250, + 2251, + 2252, + 2253, + 2254, + 2255 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 5, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00004523776849072715, + "y": -0.00029076404062508543, + "z": 0.00009287283299212236 + }, + "angle": { + "x": 0.000005327292538753325, + "y": -0.000001480477893447118, + "z": -0.0000020387460710501397 + } + }, + { + "id": "n376", + "parent": "11", + "degrees_of_freedom": [ + 2256, + 2257, + 2258, + 2259, + 2260, + 2261 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012202429034877644, + "y": -0.0005955408165727418, + "z": -0.00012554653436448008 + }, + "angle": { + "x": -0.0000027740514758247315, + "y": 4.816901613301738e-7, + "z": -7.820775344707111e-7 + } + }, + { + "id": "n377", + "parent": "11", + "degrees_of_freedom": [ + 2262, + 2263, + 2264, + 2265, + 2266, + 2267 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010528475990826303, + "y": -0.00045628438109341263, + "z": -0.00016170259100642615 + }, + "angle": { + "x": -0.000004275923286183267, + "y": 0.0000013822897682674848, + "z": -0.0000033760776439751323 + } + }, + { + "id": "n378", + "parent": "11", + "degrees_of_freedom": [ + 2268, + 2269, + 2270, + 2271, + 2272, + 2273 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010006683423901707, + "y": -0.0004299061013190535, + "z": -0.0000806571338846051 + }, + "angle": { + "x": -0.0000038110561990819317, + "y": 3.834317138294738e-7, + "z": -0.000002961187847814117 + } + }, + { + "id": "n379", + "parent": "11", + "degrees_of_freedom": [ + 2274, + 2275, + 2276, + 2277, + 2278, + 2279 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007662091142832601, + "y": -0.0005948055722311801, + "z": -0.00012539563584068519 + }, + "angle": { + "x": -0.0000016443966197008653, + "y": 0.0000017635007331558362, + "z": -0.0000015079579030809633 + } + }, + { + "id": "n380", + "parent": "11", + "degrees_of_freedom": [ + 2280, + 2281, + 2282, + 2283, + 2284, + 2285 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007699972670579767, + "y": -0.0005771133856921687, + "z": -0.00008982026954311116 + }, + "angle": { + "x": -0.0000013793882389067742, + "y": 0.0000011213246463646147, + "z": -0.0000012335113564533789 + } + }, + { + "id": "n381", + "parent": "11", + "degrees_of_freedom": [ + 2286, + 2287, + 2288, + 2289, + 2290, + 2291 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011590314761190588, + "y": -0.000579723754600539, + "z": -0.00006215172760646519 + }, + "angle": { + "x": -0.0000015508764566117829, + "y": -3.216275786638073e-7, + "z": -7.794028355214393e-7 + } + }, + { + "id": "n382", + "parent": "11", + "degrees_of_freedom": [ + 2292, + 2293, + 2294, + 2295, + 2296, + 2297 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009374634266868749, + "y": -0.00041953849723104384, + "z": -0.000025259826442846483 + }, + "angle": { + "x": -0.0000014574281566751916, + "y": -1.231460091058002e-7, + "z": -0.000002800471464830863 + } + }, + { + "id": "n383", + "parent": "11", + "degrees_of_freedom": [ + 2298, + 2299, + 2300, + 2301, + 2302, + 2303 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007315558296249086, + "y": -0.0005680526387165187, + "z": -0.00002990666345357034 + }, + "angle": { + "x": -5.473664286514914e-7, + "y": 3.4354295765593426e-7, + "z": -0.0000011145438681669214 + } + }, + { + "id": "n384", + "parent": "11", + "degrees_of_freedom": [ + 2304, + 2305, + 2306, + 2307, + 2308, + 2309 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011141548598520962, + "y": -0.0005741819821358413, + "z": 6.901553556261339e-19 + }, + "angle": { + "x": 1.1147623538773533e-19, + "y": -1.3303487710000106e-19, + "z": -7.440083687444099e-7 + } + }, + { + "id": "n385", + "parent": "11", + "degrees_of_freedom": [ + 2310, + 2311, + 2312, + 2313, + 2314, + 2315 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00009374634266868628, + "y": -0.00041953849723104595, + "z": 0.000025259826442847235 + }, + "angle": { + "x": 0.000001457428156675327, + "y": 1.2314600910569178e-7, + "z": -0.0000028004714648309134 + } + }, + { + "id": "n386", + "parent": "11", + "degrees_of_freedom": [ + 2316, + 2317, + 2318, + 2319, + 2320, + 2321 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000731555829624901, + "y": -0.0005680526387165166, + "z": 0.000029906663453570966 + }, + "angle": { + "x": 5.47366428651565e-7, + "y": -3.4354295765609287e-7, + "z": -0.000001114543868167009 + } + }, + { + "id": "n387", + "parent": "11", + "degrees_of_freedom": [ + 2322, + 2323, + 2324, + 2325, + 2326, + 2327 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 15, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011590314761190397, + "y": -0.0005797237546005407, + "z": 0.00006215172760646646 + }, + "angle": { + "x": 0.0000015508764566118796, + "y": 3.2162757866356726e-7, + "z": -7.794028355214756e-7 + } + }, + { + "id": "n388", + "parent": "11", + "degrees_of_freedom": [ + 2328, + 2329, + 2330, + 2331, + 2332, + 2333 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 10, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010006683423901523, + "y": -0.0004299061013190559, + "z": 0.00008065713388460602 + }, + "angle": { + "x": 0.0000038110561990820405, + "y": -3.834317138295399e-7, + "z": -0.0000029611878478140073 + } + }, + { + "id": "n389", + "parent": "11", + "degrees_of_freedom": [ + 2334, + 2335, + 2336, + 2337, + 2338, + 2339 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 15, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007699972670579524, + "y": -0.0005771133856921701, + "z": 0.00008982026954311178 + }, + "angle": { + "x": 0.0000013793882389068328, + "y": -0.0000011213246463648076, + "z": -0.0000012335113564534579 + } + }, + { + "id": "n390", + "parent": "11", + "degrees_of_freedom": [ + 2340, + 2341, + 2342, + 2343, + 2344, + 2345 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 15, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012202429034877326, + "y": -0.0005955408165727443, + "z": 0.00012554653436448152 + }, + "angle": { + "x": 0.0000027740514758248035, + "y": -4.81690161330316e-7, + "z": -7.820775344706123e-7 + } + }, + { + "id": "n391", + "parent": "11", + "degrees_of_freedom": [ + 2346, + 2347, + 2348, + 2349, + 2350, + 2351 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 10, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010528475990826074, + "y": -0.00045628438109341545, + "z": 0.0001617025910064273 + }, + "angle": { + "x": 0.0000042759232861834055, + "y": -0.0000013822897682675754, + "z": -0.0000033760776439749905 + } + }, + { + "id": "n392", + "parent": "11", + "degrees_of_freedom": [ + 2352, + 2353, + 2354, + 2355, + 2356, + 2357 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 15, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007662091142832288, + "y": -0.000594805572231183, + "z": 0.00012539563584068603 + }, + "angle": { + "x": 0.000001644396619700873, + "y": -0.0000017635007331560139, + "z": -0.0000015079579030810158 + } + }, + { + "id": "n393", + "parent": "11", + "degrees_of_freedom": [ + 2358, + 2359, + 2360, + 2361, + 2362, + 2363 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00013051011138391608, + "y": -0.0009041498780385263, + "z": -0.0001316856659195845 + }, + "angle": { + "x": -4.635540082928142e-7, + "y": 7.622427575648614e-7, + "z": -5.523889033054493e-8 + } + }, + { + "id": "n394", + "parent": "11", + "degrees_of_freedom": [ + 2364, + 2365, + 2366, + 2367, + 2368, + 2369 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012832036396226537, + "y": -0.0007551850582244219, + "z": -0.00018224962406805764 + }, + "angle": { + "x": -5.838825239620155e-7, + "y": 0.000001862330621835826, + "z": -9.565935557333856e-7 + } + }, + { + "id": "n395", + "parent": "11", + "degrees_of_freedom": [ + 2370, + 2371, + 2372, + 2373, + 2374, + 2375 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012430545464550978, + "y": -0.0007435804141837616, + "z": -0.00009857863108968693 + }, + "angle": { + "x": -7.035865991350734e-7, + "y": 4.4091726703534763e-7, + "z": -8.926364114932258e-7 + } + }, + { + "id": "n396", + "parent": "11", + "degrees_of_freedom": [ + 2376, + 2377, + 2378, + 2379, + 2380, + 2381 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008223451646785079, + "y": -0.0009008840479336965, + "z": -0.0001303482437552912 + }, + "angle": { + "x": 1.1268293017372122e-7, + "y": 0.000001851480532140205, + "z": -8.180525500615635e-7 + } + }, + { + "id": "n397", + "parent": "11", + "degrees_of_freedom": [ + 2382, + 2383, + 2384, + 2385, + 2386, + 2387 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008404898077254955, + "y": -0.0008937153638642532, + "z": -0.00009464259399745617 + }, + "angle": { + "x": -4.509699502060102e-9, + "y": 0.0000012180727602109331, + "z": -9.418167174037071e-7 + } + }, + { + "id": "n398", + "parent": "11", + "degrees_of_freedom": [ + 2388, + 2389, + 2390, + 2391, + 2392, + 2393 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012491522920199188, + "y": -0.0008969974384321563, + "z": -0.0000662903689643734 + }, + "angle": { + "x": -6.102217539850106e-7, + "y": -2.954622525771139e-7, + "z": -1.804798994205154e-7 + } + }, + { + "id": "n399", + "parent": "11", + "degrees_of_freedom": [ + 2394, + 2395, + 2396, + 2397, + 2398, + 2399 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011686501544033037, + "y": -0.0007347792277386058, + "z": -0.000032563904384389887 + }, + "angle": { + "x": -2.820962525482332e-7, + "y": -8.460888047465846e-8, + "z": -8.721877726234881e-7 + } + }, + { + "id": "n400", + "parent": "11", + "degrees_of_freedom": [ + 2400, + 2401, + 2402, + 2403, + 2404, + 2405 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008024742663923011, + "y": -0.0008857220276319124, + "z": -0.000031922264112965185 + }, + "angle": { + "x": -4.554230513678321e-8, + "y": 3.8154665771992503e-7, + "z": -9.335131049313125e-7 + } + }, + { + "id": "n401", + "parent": "11", + "degrees_of_freedom": [ + 2406, + 2407, + 2408, + 2409, + 2410, + 2411 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012037771621632582, + "y": -0.0008928232101136692, + "z": 1.3632357622159237e-18 + }, + "angle": { + "x": -9.289842901715787e-20, + "y": -1.5203979084667342e-19, + "z": -1.993336926256938e-7 + } + }, + { + "id": "n402", + "parent": "11", + "degrees_of_freedom": [ + 2412, + 2413, + 2414, + 2415, + 2416, + 2417 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011686501544032942, + "y": -0.0007347792277386066, + "z": 0.00003256390438439162 + }, + "angle": { + "x": 2.8209625254835947e-7, + "y": 8.460888047448527e-8, + "z": -8.721877726235865e-7 + } + }, + { + "id": "n403", + "parent": "11", + "degrees_of_freedom": [ + 2418, + 2419, + 2420, + 2421, + 2422, + 2423 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008024742663922905, + "y": -0.0008857220276319088, + "z": 0.00003192226411296656 + }, + "angle": { + "x": 4.554230513686298e-8, + "y": -3.8154665772016236e-7, + "z": -9.335131049314502e-7 + } + }, + { + "id": "n404", + "parent": "11", + "degrees_of_freedom": [ + 2424, + 2425, + 2426, + 2427, + 2428, + 2429 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 25, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012491522920198944, + "y": -0.0008969974384321582, + "z": 0.00006629036896437517 + }, + "angle": { + "x": 6.102217539853364e-7, + "y": 2.9546225257677993e-7, + "z": -1.8047989942058501e-7 + } + }, + { + "id": "n405", + "parent": "11", + "degrees_of_freedom": [ + 2430, + 2431, + 2432, + 2433, + 2434, + 2435 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 20, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012430545464550623, + "y": -0.0007435804141837635, + "z": 0.0000985786310896882 + }, + "angle": { + "x": 7.035865991350647e-7, + "y": -4.409172670354925e-7, + "z": -8.926364114932109e-7 + } + }, + { + "id": "n406", + "parent": "11", + "degrees_of_freedom": [ + 2436, + 2437, + 2438, + 2439, + 2440, + 2441 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 25, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000840489807725466, + "y": -0.000893715363864253, + "z": 0.00009464259399745668 + }, + "angle": { + "x": 4.5096995021629355e-9, + "y": -0.0000012180727602111479, + "z": -9.418167174039116e-7 + } + }, + { + "id": "n407", + "parent": "11", + "degrees_of_freedom": [ + 2442, + 2443, + 2444, + 2445, + 2446, + 2447 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 25, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00013051011138391148, + "y": -0.0009041498780385283, + "z": 0.00013168566591958581 + }, + "angle": { + "x": 4.6355400829279655e-7, + "y": -7.622427575650794e-7, + "z": -5.523889033055298e-8 + } + }, + { + "id": "n408", + "parent": "11", + "degrees_of_freedom": [ + 2448, + 2449, + 2450, + 2451, + 2452, + 2453 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 20, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012832036396226074, + "y": -0.0007551850582244244, + "z": 0.00018224962406805903 + }, + "angle": { + "x": 5.83882523962059e-7, + "y": -0.0000018623306218358982, + "z": -9.5659355573332e-7 + } + }, + { + "id": "n409", + "parent": "11", + "degrees_of_freedom": [ + 2454, + 2455, + 2456, + 2457, + 2458, + 2459 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 25, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008223451646784638, + "y": -0.0009008840479336985, + "z": 0.00013034824375529218 + }, + "angle": { + "x": -1.1268293017374957e-7, + "y": -0.0000018514805321404517, + "z": -8.180525500615077e-7 + } + }, + { + "id": "n410", + "parent": "11", + "degrees_of_freedom": [ + 2460, + 2461, + 2462, + 2463, + 2464, + 2465 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 35, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012237304116038007, + "y": -0.001216022159157461, + "z": -0.00011916093200546616 + }, + "angle": { + "x": 6.655904995876464e-7, + "y": 9.482305657911879e-7, + "z": -2.2991204558212724e-7 + } + }, + { + "id": "n411", + "parent": "11", + "degrees_of_freedom": [ + 2466, + 2467, + 2468, + 2469, + 2470, + 2471 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 30, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001237730304549262, + "y": -0.0010607767494717896, + "z": -0.00017931915109107308 + }, + "angle": { + "x": 0.000001592240339582016, + "y": 0.00000215110134277792, + "z": 1.5065481586030567e-7 + } + }, + { + "id": "n412", + "parent": "11", + "degrees_of_freedom": [ + 2472, + 2473, + 2474, + 2475, + 2476, + 2477 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 30, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001230852171994807, + "y": -0.001057863139215178, + "z": -0.00009481208188066692 + }, + "angle": { + "x": 0.0000011960203026838508, + "y": 4.434082094029013e-7, + "z": 1.9488733536527021e-7 + } + }, + { + "id": "n413", + "parent": "11", + "degrees_of_freedom": [ + 2478, + 2479, + 2480, + 2481, + 2482, + 2483 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 35, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007719951915322508, + "y": -0.0012065775783756036, + "z": -0.00011682182651901752 + }, + "angle": { + "x": 0.0000022352251571967877, + "y": 0.0000019267619020422076, + "z": -0.0000011634555007401913 + } + }, + { + "id": "n414", + "parent": "11", + "degrees_of_freedom": [ + 2484, + 2485, + 2486, + 2487, + 2488, + 2489 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 35, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00008043972528454461, + "y": -0.0012037922233557017, + "z": -0.00008466251439724792 + }, + "angle": { + "x": 5.352015571972985e-7, + "y": 0.0000012673405368631024, + "z": -0.0000011843571708678358 + } + }, + { + "id": "n415", + "parent": "11", + "degrees_of_freedom": [ + 2490, + 2491, + 2492, + 2493, + 2494, + 2495 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 35, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011814921329646996, + "y": -0.0012086619479690138, + "z": -0.00005976506955405117 + }, + "angle": { + "x": -5.845603195080871e-7, + "y": -2.948886622169588e-7, + "z": -1.9864704047010641e-7 + } + }, + { + "id": "n416", + "parent": "11", + "degrees_of_freedom": [ + 2496, + 2497, + 2498, + 2499, + 2500, + 2501 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 30, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011648976482927102, + "y": -0.001050001250378455, + "z": -0.0000312818462061748 + }, + "angle": { + "x": 3.818287322045949e-7, + "y": -9.216303519108822e-8, + "z": 1.6151934997023826e-7 + } + }, + { + "id": "n417", + "parent": "11", + "degrees_of_freedom": [ + 2502, + 2503, + 2504, + 2505, + 2506, + 2507 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 35, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007694562576944234, + "y": -0.001193737050141363, + "z": -0.000028752079057395913 + }, + "angle": { + "x": -1.481284911595369e-7, + "y": 3.931777466228354e-7, + "z": -0.0000011514169955680195 + } + }, + { + "id": "n418", + "parent": "11", + "degrees_of_freedom": [ + 2508, + 2509, + 2510, + 2511, + 2512, + 2513 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 35, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011378054276757463, + "y": -0.0012022058495667054, + "z": 1.3057931142164549e-18 + }, + "angle": { + "x": -4.194495030130783e-19, + "y": -1.9261094140930142e-19, + "z": -1.8869404880313427e-7 + } + }, + { + "id": "n419", + "parent": "11", + "degrees_of_freedom": [ + 2514, + 2515, + 2516, + 2517, + 2518, + 2519 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 30, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011648976482926995, + "y": -0.001050001250378453, + "z": 0.00003128184620617788 + }, + "angle": { + "x": -3.8182873220461233e-7, + "y": 9.216303519090698e-8, + "z": 1.615193499702458e-7 + } + }, + { + "id": "n420", + "parent": "11", + "degrees_of_freedom": [ + 2520, + 2521, + 2522, + 2523, + 2524, + 2525 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 35, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007694562576944108, + "y": -0.0011937370501413594, + "z": 0.000028752079057397065 + }, + "angle": { + "x": 1.4812849115932083e-7, + "y": -3.9317774662317337e-7, + "z": -0.0000011514169955679257 + } + }, + { + "id": "n421", + "parent": "11", + "degrees_of_freedom": [ + 2526, + 2527, + 2528, + 2529, + 2530, + 2531 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 35, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011814921329646714, + "y": -0.0012086619479690103, + "z": 0.00005976506955405331 + }, + "angle": { + "x": 5.845603195081636e-7, + "y": 2.9488866221667387e-7, + "z": -1.986470404700661e-7 + } + }, + { + "id": "n422", + "parent": "11", + "degrees_of_freedom": [ + 2532, + 2533, + 2534, + 2535, + 2536, + 2537 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 30, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012308521719947715, + "y": -0.0010578631392151787, + "z": 0.00009481208188066849 + }, + "angle": { + "x": -0.00000119602030268383, + "y": -4.4340820940306226e-7, + "z": 1.9488733536523337e-7 + } + }, + { + "id": "n423", + "parent": "11", + "degrees_of_freedom": [ + 2538, + 2539, + 2540, + 2541, + 2542, + 2543 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 35, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0000804397252845416, + "y": -0.0012037922233556991, + "z": 0.00008466251439724877 + }, + "angle": { + "x": -5.352015571972502e-7, + "y": -0.0000012673405368633356, + "z": -0.0000011843571708679668 + } + }, + { + "id": "n424", + "parent": "11", + "degrees_of_freedom": [ + 2544, + 2545, + 2546, + 2547, + 2548, + 2549 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 35, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012237304116037508, + "y": -0.0012160221591574593, + "z": 0.00011916093200546765 + }, + "angle": { + "x": -6.655904995874187e-7, + "y": -9.482305657915575e-7, + "z": -2.2991204558211908e-7 + } + }, + { + "id": "n425", + "parent": "11", + "degrees_of_freedom": [ + 2550, + 2551, + 2552, + 2553, + 2554, + 2555 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 30, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012377303045491995, + "y": -0.00106077674947179, + "z": 0.00017931915109107376 + }, + "angle": { + "x": -0.0000015922403395820305, + "y": -0.000002151101342778035, + "z": 1.5065481586036145e-7 + } + }, + { + "id": "n426", + "parent": "11", + "degrees_of_freedom": [ + 2556, + 2557, + 2558, + 2559, + 2560, + 2561 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 35, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00007719951915321974, + "y": -0.0012065775783756032, + "z": 0.0001168218265190182 + }, + "angle": { + "x": -0.0000022352251571967885, + "y": -0.000001926761902042361, + "z": -0.0000011634555007403 + } + }, + { + "id": "n427", + "parent": "11", + "degrees_of_freedom": [ + 2562, + 2563, + 2564, + 2565, + 2566, + 2567 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 45, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00012553879936774028, + "y": -0.0014833265374088545, + "z": -0.0000995549724787208 + }, + "angle": { + "x": 9.264224457936052e-7, + "y": 0.0000017487802066047064, + "z": -0.0000015139994646945897 + } + }, + { + "id": "n428", + "parent": "11", + "degrees_of_freedom": [ + 2568, + 2569, + 2570, + 2571, + 2572, + 2573 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 40, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00011808741063863685, + "y": -0.0013719905260058706, + "z": -0.00015793609297396415 + }, + "angle": { + "x": 3.894240849187717e-7, + "y": 0.0000025453303076406342, + "z": -0.0000011650632944992744 + } + }, + { + "id": "n429", + "parent": "11", + "degrees_of_freedom": [ + 2574, + 2575, + 2576, + 2577, + 2578, + 2579 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 40, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0001178133522578954, + "y": -0.0013656145936706864, + "z": -0.00008234658010690862 + }, + "angle": { + "x": 0.0000011750061034631296, + "y": 4.88474750348559e-7, + "z": -5.54461853857854e-7 + } + }, + { + "id": "n430", + "parent": "11", + "degrees_of_freedom": [ + 2580, + 2581, + 2582, + 2583, + 2584, + 2585 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 45, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0000828281816655939, + "y": -0.0014541922074881174, + "z": -0.00007824336701353319 + }, + "angle": { + "x": 0.000014592180263816793, + "y": 0.0000022975430349598616, + "z": -0.0000018526733178794622 + } + }, + { + "id": "n431", + "parent": "11", + "degrees_of_freedom": [ + 2586, + 2587, + 2588, + 2589, + 2590, + 2591 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 45, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00008589927750040187, + "y": -0.001455979313883061, + "z": -0.00007326894425011029 + }, + "angle": { + "x": -0.0000012495819688781234, + "y": 0.000001446411007906353, + "z": -0.0000017695139176065922 + } + }, + { + "id": "n432", + "parent": "11", + "degrees_of_freedom": [ + 2592, + 2593, + 2594, + 2595, + 2596, + 2597 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 45, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00011812519202297139, + "y": -0.0014622017510129946, + "z": -0.00005758701513066159 + }, + "angle": { + "x": -0.000001960929417439812, + "y": -8.459093028385254e-8, + "z": -0.0000012496901024476673 + } + }, + { + "id": "n433", + "parent": "11", + "degrees_of_freedom": [ + 2598, + 2599, + 2600, + 2601, + 2602, + 2603 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 40, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00011006828326124701, + "y": -0.0013521750472263346, + "z": -0.00002922889752168642 + }, + "angle": { + "x": 1.2088816336899661e-7, + "y": -1.0510922203587573e-7, + "z": -3.3232746953543826e-7 + } + }, + { + "id": "n434", + "parent": "11", + "degrees_of_freedom": [ + 2604, + 2605, + 2606, + 2607, + 2608, + 2609 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 45, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00008130967296845207, + "y": -0.0014399630080183495, + "z": -0.0000274999710296334 + }, + "angle": { + "x": -1.7737216488318942e-7, + "y": 3.888764737547434e-7, + "z": -0.0000017773279164415589 + } + }, + { + "id": "n435", + "parent": "11", + "degrees_of_freedom": [ + 2610, + 2611, + 2612, + 2613, + 2614, + 2615 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 45, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0001120255901894409, + "y": -0.0014564032728403193, + "z": -3.224590434784534e-19 + }, + "angle": { + "x": -6.611772338440867e-19, + "y": -1.6793498219803132e-19, + "z": -0.0000011472278946751998 + } + }, + { + "id": "n436", + "parent": "11", + "degrees_of_freedom": [ + 2616, + 2617, + 2618, + 2619, + 2620, + 2621 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 40, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00011006828326124552, + "y": -0.001352175047226329, + "z": 0.000029228897521687947 + }, + "angle": { + "x": -1.2088816336931147e-7, + "y": 1.0510922203568271e-7, + "z": -3.323274695354704e-7 + } + }, + { + "id": "n437", + "parent": "11", + "degrees_of_freedom": [ + 2622, + 2623, + 2624, + 2625, + 2626, + 2627 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 45, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00008130967296845031, + "y": -0.0014399630080183445, + "z": 0.00002749997102963217 + }, + "angle": { + "x": 1.7737216488288057e-7, + "y": -3.8887647375507793e-7, + "z": -0.000001777327916441435 + } + }, + { + "id": "n438", + "parent": "11", + "degrees_of_freedom": [ + 2628, + 2629, + 2630, + 2631, + 2632, + 2633 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 45, + "z": 30 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0001181251920229696, + "y": -0.0014622017510129894, + "z": 0.00005758701513066233 + }, + "angle": { + "x": 0.0000019609294174397177, + "y": 8.459093028347697e-8, + "z": -0.0000012496901024477793 + } + }, + { + "id": "n439", + "parent": "11", + "degrees_of_freedom": [ + 2634, + 2635, + 2636, + 2637, + 2638, + 2639 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 40, + "z": 35 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00011781335225789167, + "y": -0.0013656145936706806, + "z": 0.0000823465801069102 + }, + "angle": { + "x": -0.0000011750061034631983, + "y": -4.884747503487213e-7, + "z": -5.5446185385789e-7 + } + }, + { + "id": "n440", + "parent": "11", + "degrees_of_freedom": [ + 2640, + 2641, + 2642, + 2643, + 2644, + 2645 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 45, + "z": 35 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0000858992775003993, + "y": -0.0014559793138830535, + "z": 0.00007326894425011007 + }, + "angle": { + "x": 0.0000012495819688780715, + "y": -0.0000014464110079066912, + "z": -0.0000017695139176066415 + } + }, + { + "id": "n441", + "parent": "11", + "degrees_of_freedom": [ + 2646, + 2647, + 2648, + 2649, + 2650, + 2651 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 45, + "z": 40 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0001255387993677362, + "y": -0.0014833265374088493, + "z": 0.00009955497247872244 + }, + "angle": { + "x": -9.264224457932454e-7, + "y": -0.0000017487802066050474, + "z": -0.0000015139994646946176 + } + }, + { + "id": "n442", + "parent": "11", + "degrees_of_freedom": [ + 2652, + 2653, + 2654, + 2655, + 2656, + 2657 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 35, + "y": 40, + "z": 45 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00011808741063863103, + "y": -0.0013719905260058674, + "z": 0.00015793609297396532 + }, + "angle": { + "x": -3.894240849188315e-7, + "y": -0.0000025453303076409066, + "z": -0.0000011650632944994692 + } + }, + { + "id": "n443", + "parent": "11", + "degrees_of_freedom": [ + 2658, + 2659, + 2660, + 2661, + 2662, + 2663 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 30, + "y": 45, + "z": 45 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0000828281816655891, + "y": -0.001454192207488112, + "z": 0.0000782433670135335 + }, + "angle": { + "x": -0.000014592180263816762, + "y": -0.0000022975430349601865, + "z": -0.000001852673317879513 + } + }, + { + "id": "n444", + "parent": "11", + "degrees_of_freedom": [ + 2664, + 2665, + 2666, + 2667, + 2668, + 2669 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 45, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n445", + "parent": "11", + "degrees_of_freedom": [ + 2670, + 2671, + 2672, + 2673, + 2674, + 2675 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 40, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n446", + "parent": "11", + "degrees_of_freedom": [ + 2676, + 2677, + 2678, + 2679, + 2680, + 2681 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 40, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n447", + "parent": "11", + "degrees_of_freedom": [ + 2682, + 2683, + 2684, + 2685, + 2686, + 2687 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000131254657254238, + "y": -0.00033256637334759173, + "z": -0.00010412108453720051 + }, + "angle": { + "x": -0.000007444428293508187, + "y": -6.878552699268284e-7, + "z": -0.000002245246841457323 + } + }, + { + "id": "n448", + "parent": "11", + "degrees_of_freedom": [ + 2688, + 2689, + 2690, + 2691, + 2692, + 2693 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014111777771621563, + "y": -0.00021478181674041216, + "z": -0.00011711714246260673 + }, + "angle": { + "x": -0.00001833798202280996, + "y": 0.0000051280870962784535, + "z": -0.000012409488069905184 + } + }, + { + "id": "n449", + "parent": "11", + "degrees_of_freedom": [ + 2694, + 2695, + 2696, + 2697, + 2698, + 2699 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011892558075484229, + "y": -0.00016233497139190318, + "z": -0.000029395908869483277 + }, + "angle": { + "x": -0.00001026969789805961, + "y": -8.600196335175513e-7, + "z": -0.000009094411880143676 + } + }, + { + "id": "n450", + "parent": "11", + "degrees_of_freedom": [ + 2700, + 2701, + 2702, + 2703, + 2704, + 2705 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001216007381464705, + "y": -0.000328675077424859, + "z": -0.00010923434230326053 + }, + "angle": { + "x": -0.0000051916216644149625, + "y": 0.0000022274744702977196, + "z": -0.000004945959586810387 + } + }, + { + "id": "n451", + "parent": "11", + "degrees_of_freedom": [ + 2706, + 2707, + 2708, + 2709, + 2710, + 2711 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011118564194590206, + "y": -0.000291757191152995, + "z": -0.00006875511290010067 + }, + "angle": { + "x": -0.000003999070316320615, + "y": 9.269130756996763e-7, + "z": -0.0000036966853634420687 + } + }, + { + "id": "n452", + "parent": "11", + "degrees_of_freedom": [ + 2712, + 2713, + 2714, + 2715, + 2716, + 2717 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 45, + "y": -5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n453", + "parent": "11", + "degrees_of_freedom": [ + 2718, + 2719, + 2720, + 2721, + 2722, + 2723 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 40, + "y": -5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n454", + "parent": "11", + "degrees_of_freedom": [ + 2724, + 2725, + 2726, + 2727, + 2728, + 2729 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 5, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011529307898311616, + "y": -0.0003000248432299856, + "z": -0.00003978943950206608 + }, + "angle": { + "x": -0.0000036088835024934775, + "y": -0.0000016467054211045797, + "z": -0.000002598391238428206 + } + }, + { + "id": "n455", + "parent": "11", + "degrees_of_freedom": [ + 2730, + 2731, + 2732, + 2733, + 2734, + 2735 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 0, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011238967752769181, + "y": -0.00015626571700283826, + "z": -0.000008725807768690639 + }, + "angle": { + "x": -0.0000026896820420891537, + "y": -8.862734687873219e-9, + "z": -0.000008307538571033669 + } + }, + { + "id": "n456", + "parent": "11", + "degrees_of_freedom": [ + 2736, + 2737, + 2738, + 2739, + 2740, + 2741 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 5, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010356532824138541, + "y": -0.00028201686247904365, + "z": -0.00001951965010841808 + }, + "angle": { + "x": -9.061811101166825e-7, + "y": 7.226371528329029e-8, + "z": -0.000003201869774703417 + } + }, + { + "id": "n457", + "parent": "11", + "degrees_of_freedom": [ + 2742, + 2743, + 2744, + 2745, + 2746, + 2747 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 45, + "y": -5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n458", + "parent": "11", + "degrees_of_freedom": [ + 2748, + 2749, + 2750, + 2751, + 2752, + 2753 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 40, + "y": -5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n459", + "parent": "11", + "degrees_of_freedom": [ + 2754, + 2755, + 2756, + 2757, + 2758, + 2759 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 5, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011381592956378187, + "y": -0.00029624640662127724, + "z": 4.52990536923811e-19 + }, + "angle": { + "x": 1.616896050802541e-19, + "y": -1.4258458410765999e-21, + "z": -0.0000026425976944871005 + } + }, + { + "id": "n460", + "parent": "11", + "degrees_of_freedom": [ + 2760, + 2761, + 2762, + 2763, + 2764, + 2765 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 0, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011238967752769199, + "y": -0.00015626571700283866, + "z": 0.000008725807768690961 + }, + "angle": { + "x": 0.000002689682042089278, + "y": 8.862734687886295e-9, + "z": -0.000008307538571033653 + } + }, + { + "id": "n461", + "parent": "11", + "degrees_of_freedom": [ + 2766, + 2767, + 2768, + 2769, + 2770, + 2771 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 5, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00010356532824138523, + "y": -0.0002820168624790451, + "z": 0.00001951965010841885 + }, + "angle": { + "x": 9.061811101167856e-7, + "y": -7.226371528338741e-8, + "z": -0.000003201869774703424 + } + }, + { + "id": "n462", + "parent": "11", + "degrees_of_freedom": [ + 2772, + 2773, + 2774, + 2775, + 2776, + 2777 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 45, + "y": -5, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n463", + "parent": "11", + "degrees_of_freedom": [ + 2778, + 2779, + 2780, + 2781, + 2782, + 2783 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 40, + "y": -5, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n464", + "parent": "11", + "degrees_of_freedom": [ + 2784, + 2785, + 2786, + 2787, + 2788, + 2789 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 5, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011529307898311575, + "y": -0.0003000248432299864, + "z": 0.00003978943950206736 + }, + "angle": { + "x": 0.0000036088835024935876, + "y": 0.0000016467054211044903, + "z": -0.0000025983912384281364 + } + }, + { + "id": "n465", + "parent": "11", + "degrees_of_freedom": [ + 2790, + 2791, + 2792, + 2793, + 2794, + 2795 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 0, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011892558075484239, + "y": -0.00016233497139190377, + "z": 0.00002939590886948384 + }, + "angle": { + "x": 0.000010269697898059765, + "y": 8.6001963351754e-7, + "z": -0.00000909441188014363 + } + }, + { + "id": "n466", + "parent": "11", + "degrees_of_freedom": [ + 2796, + 2797, + 2798, + 2799, + 2800, + 2801 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 5, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00011118564194590132, + "y": -0.00029175719115299655, + "z": 0.00006875511290010151 + }, + "angle": { + "x": 0.0000039990703163206925, + "y": -9.269130756997725e-7, + "z": -0.0000036966853634420378 + } + }, + { + "id": "n467", + "parent": "11", + "degrees_of_freedom": [ + 2802, + 2803, + 2804, + 2805, + 2806, + 2807 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 45, + "y": -5, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n468", + "parent": "11", + "degrees_of_freedom": [ + 2808, + 2809, + 2810, + 2811, + 2812, + 2813 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 40, + "y": -5, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n469", + "parent": "11", + "degrees_of_freedom": [ + 2814, + 2815, + 2816, + 2817, + 2818, + 2819 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 5, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.000131254657254237, + "y": -0.00033256637334759255, + "z": 0.00010412108453720172 + }, + "angle": { + "x": 0.000007444428293508333, + "y": 6.878552699267008e-7, + "z": -0.000002245246841457183 + } + }, + { + "id": "n470", + "parent": "11", + "degrees_of_freedom": [ + 2820, + 2821, + 2822, + 2823, + 2824, + 2825 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 0, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014111777771621566, + "y": -0.00021478181674041284, + "z": 0.0001171171424626074 + }, + "angle": { + "x": 0.000018337982022810127, + "y": -0.000005128087096278456, + "z": -0.000012409488069905059 + } + }, + { + "id": "n471", + "parent": "11", + "degrees_of_freedom": [ + 2826, + 2827, + 2828, + 2829, + 2830, + 2831 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 5, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00012160073814646885, + "y": -0.00032867507742486167, + "z": 0.00010923434230326136 + }, + "angle": { + "x": 0.000005191621664415115, + "y": -0.000002227474470297808, + "z": -0.000004945959586810298 + } + }, + { + "id": "n472", + "parent": "11", + "degrees_of_freedom": [ + 2832, + 2833, + 2834, + 2835, + 2836, + 2837 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 15, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017640666032618402, + "y": -0.0006229774592142321, + "z": -0.00014364379549346512 + }, + "angle": { + "x": -0.000003203969502219857, + "y": 8.013815064618227e-7, + "z": -0.0000010651746968399557 + } + }, + { + "id": "n473", + "parent": "11", + "degrees_of_freedom": [ + 2838, + 2839, + 2840, + 2841, + 2842, + 2843 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 10, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00022090326815669148, + "y": -0.0004960842300794823, + "z": -0.00018717650230330016 + }, + "angle": { + "x": -0.000004837611695909063, + "y": 0.0000041539775343368315, + "z": -0.00000366850222781876 + } + }, + { + "id": "n474", + "parent": "11", + "degrees_of_freedom": [ + 2844, + 2845, + 2846, + 2847, + 2848, + 2849 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 10, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020774730443084424, + "y": -0.0004634644145100088, + "z": -0.00009106326411552317 + }, + "angle": { + "x": -0.000004395746373587461, + "y": -7.213299038285749e-7, + "z": -0.000003274174274257969 + } + }, + { + "id": "n475", + "parent": "11", + "degrees_of_freedom": [ + 2850, + 2851, + 2852, + 2853, + 2854, + 2855 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 15, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001686055529328305, + "y": -0.000619365316850068, + "z": -0.0001466481738902322 + }, + "angle": { + "x": -0.0000019385915934324343, + "y": 0.0000015576655682764705, + "z": -0.000002536446983784483 + } + }, + { + "id": "n476", + "parent": "11", + "degrees_of_freedom": [ + 2856, + 2857, + 2858, + 2859, + 2860, + 2861 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 15, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015888927232160377, + "y": -0.0005988538721145902, + "z": -0.00010099707603641663 + }, + "angle": { + "x": -0.000001503488318067199, + "y": 0.000001278326362934533, + "z": -0.000002220914048178067 + } + }, + { + "id": "n477", + "parent": "11", + "degrees_of_freedom": [ + 2862, + 2863, + 2864, + 2865, + 2866, + 2867 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 15, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015786021362858475, + "y": -0.000604595360122907, + "z": -0.00006595984389190885 + }, + "angle": { + "x": -0.0000018807539901205574, + "y": -0.0000014163055833427903, + "z": -0.000001035075675006626 + } + }, + { + "id": "n478", + "parent": "11", + "degrees_of_freedom": [ + 2868, + 2869, + 2870, + 2871, + 2872, + 2873 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 10, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019716633332621277, + "y": -0.000447782213417845, + "z": -0.00002636398658162899 + }, + "angle": { + "x": -0.0000016290839492199246, + "y": 2.3799682309043937e-8, + "z": -0.000002806287272589908 + } + }, + { + "id": "n479", + "parent": "11", + "degrees_of_freedom": [ + 2874, + 2875, + 2876, + 2877, + 2878, + 2879 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 15, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001486684752100591, + "y": -0.0005876621262001882, + "z": -0.000031915051089223145 + }, + "angle": { + "x": -6.521071248475855e-7, + "y": 2.3112703248164846e-7, + "z": -0.0000020460759854573607 + } + }, + { + "id": "n480", + "parent": "11", + "degrees_of_freedom": [ + 2880, + 2881, + 2882, + 2883, + 2884, + 2885 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 15, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015393090364020722, + "y": -0.0005973785095772147, + "z": 1.5716187778550596e-18 + }, + "angle": { + "x": 1.6969054182464261e-19, + "y": -1.692380725279793e-19, + "z": -0.000001016950851210875 + } + }, + { + "id": "n481", + "parent": "11", + "degrees_of_freedom": [ + 2886, + 2887, + 2888, + 2889, + 2890, + 2891 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 10, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00019716633332621217, + "y": -0.00044778221341784647, + "z": 0.00002636398658163103 + }, + "angle": { + "x": 0.0000016290839492201626, + "y": -2.3799682309145694e-8, + "z": -0.0000028062872725897616 + } + }, + { + "id": "n482", + "parent": "11", + "degrees_of_freedom": [ + 2892, + 2893, + 2894, + 2895, + 2896, + 2897 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 15, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014866847521005817, + "y": -0.0005876621262001902, + "z": 0.00003191505108922529 + }, + "angle": { + "x": 6.521071248477099e-7, + "y": -2.3112703248187293e-7, + "z": -0.0000020460759854573044 + } + }, + { + "id": "n483", + "parent": "11", + "degrees_of_freedom": [ + 2898, + 2899, + 2900, + 2901, + 2902, + 2903 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 15, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015786021362858266, + "y": -0.0006045953601229074, + "z": 0.0000659598438919116 + }, + "angle": { + "x": 0.0000018807539901206141, + "y": 0.00000141630558334258, + "z": -0.0000010350756750065556 + } + }, + { + "id": "n484", + "parent": "11", + "degrees_of_freedom": [ + 2904, + 2905, + 2906, + 2907, + 2908, + 2909 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 10, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00020774730443084253, + "y": -0.0004634644145100096, + "z": 0.00009106326411552523 + }, + "angle": { + "x": 0.000004395746373587678, + "y": 7.213299038284586e-7, + "z": -0.00000327417427425778 + } + }, + { + "id": "n485", + "parent": "11", + "degrees_of_freedom": [ + 2910, + 2911, + 2912, + 2913, + 2914, + 2915 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 15, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015888927232160074, + "y": -0.0005988538721145915, + "z": 0.00010099707603641853 + }, + "angle": { + "x": 0.0000015034883180672915, + "y": -0.0000012783263629347242, + "z": -0.0000022209140481779133 + } + }, + { + "id": "n486", + "parent": "11", + "degrees_of_freedom": [ + 2916, + 2917, + 2918, + 2919, + 2920, + 2921 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 15, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017640666032618042, + "y": -0.0006229774592142332, + "z": 0.00014364379549346786 + }, + "angle": { + "x": 0.0000032039695022198443, + "y": -8.013815064619592e-7, + "z": -0.0000010651746968398813 + } + }, + { + "id": "n487", + "parent": "11", + "degrees_of_freedom": [ + 2922, + 2923, + 2924, + 2925, + 2926, + 2927 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 10, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00022090326815668866, + "y": -0.0004960842300794839, + "z": 0.00018717650230330244 + }, + "angle": { + "x": 0.000004837611695909354, + "y": -0.000004153977534336862, + "z": -0.000003668502227818612 + } + }, + { + "id": "n488", + "parent": "11", + "degrees_of_freedom": [ + 2928, + 2929, + 2930, + 2931, + 2932, + 2933 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 15, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00016860555293282632, + "y": -0.00061936531685007, + "z": 0.0001466481738902344 + }, + "angle": { + "x": 0.0000019385915934323797, + "y": -0.0000015576655682766807, + "z": -0.000002536446983784366 + } + }, + { + "id": "n489", + "parent": "11", + "degrees_of_freedom": [ + 2934, + 2935, + 2936, + 2937, + 2938, + 2939 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 25, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018722151689245096, + "y": -0.0009167040164955598, + "z": -0.00015096894243914826 + }, + "angle": { + "x": -3.5480518376669005e-7, + "y": 8.950218561451026e-7, + "z": -3.875377484038346e-7 + } + }, + { + "id": "n490", + "parent": "11", + "degrees_of_freedom": [ + 2940, + 2941, + 2942, + 2943, + 2944, + 2945 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 20, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00024906208967825244, + "y": -0.0007724354661741704, + "z": -0.00021005618995424086 + }, + "angle": { + "x": -5.919070497526851e-7, + "y": 0.000004372605411260119, + "z": -6.335674909888432e-7 + } + }, + { + "id": "n491", + "parent": "11", + "degrees_of_freedom": [ + 2946, + 2947, + 2948, + 2949, + 2950, + 2951 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 20, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00023652279013295098, + "y": -0.0007617051974818262, + "z": -0.00010972290147252737 + }, + "angle": { + "x": -8.115864316939599e-7, + "y": -9.514995280264751e-7, + "z": -7.272600105828889e-7 + } + }, + { + "id": "n492", + "parent": "11", + "degrees_of_freedom": [ + 2952, + 2953, + 2954, + 2955, + 2956, + 2957 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 25, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017834138671422644, + "y": -0.0009129637629977984, + "z": -0.00015388042233403085 + }, + "angle": { + "x": -3.151750487559593e-7, + "y": 0.0000018141890057500275, + "z": -8.232431276604007e-7 + } + }, + { + "id": "n493", + "parent": "11", + "degrees_of_freedom": [ + 2958, + 2959, + 2960, + 2961, + 2962, + 2963 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 25, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00016964050651075216, + "y": -0.0009077539508725842, + "z": -0.00010647884065068454 + }, + "angle": { + "x": 1.73488330636496e-7, + "y": 0.0000012450548745406083, + "z": -9.748086441393577e-7 + } + }, + { + "id": "n494", + "parent": "11", + "degrees_of_freedom": [ + 2964, + 2965, + 2966, + 2967, + 2968, + 2969 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 25, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00016817710254931207, + "y": -0.0009120478297478686, + "z": -0.00006969311758653205 + }, + "angle": { + "x": -2.937597808355056e-7, + "y": -0.0000014135138547829028, + "z": -2.404589227367099e-7 + } + }, + { + "id": "n495", + "parent": "11", + "degrees_of_freedom": [ + 2970, + 2971, + 2972, + 2973, + 2974, + 2975 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 20, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00022545077537605335, + "y": -0.0007527654189725952, + "z": -0.000034600278468066966 + }, + "angle": { + "x": -3.347588016528257e-7, + "y": -1.3052142279370622e-8, + "z": -7.538069286523706e-7 + } + }, + { + "id": "n496", + "parent": "11", + "degrees_of_freedom": [ + 2976, + 2977, + 2978, + 2979, + 2980, + 2981 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 25, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015933295398247202, + "y": -0.0009002844007705641, + "z": -0.00003402762021335687 + }, + "angle": { + "x": -9.622158403015021e-9, + "y": 2.1474137713871146e-7, + "z": -0.0000010314686020977658 + } + }, + { + "id": "n497", + "parent": "11", + "degrees_of_freedom": [ + 2982, + 2983, + 2984, + 2985, + 2986, + 2987 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 25, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00016398765107808328, + "y": -0.0009080572518359874, + "z": 2.6067095266671603e-18 + }, + "angle": { + "x": -1.173534531717188e-19, + "y": -3.1763501442901654e-19, + "z": -1.7241058441631605e-7 + } + }, + { + "id": "n498", + "parent": "11", + "degrees_of_freedom": [ + 2988, + 2989, + 2990, + 2991, + 2992, + 2993 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 20, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002254507753760516, + "y": -0.0007527654189725954, + "z": 0.00003460027846807099 + }, + "angle": { + "x": 3.3475880165300555e-7, + "y": 1.3052142279166618e-8, + "z": -7.538069286523394e-7 + } + }, + { + "id": "n499", + "parent": "11", + "degrees_of_freedom": [ + 2994, + 2995, + 2996, + 2997, + 2998, + 2999 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 25, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001593329539824705, + "y": -0.0009002844007705622, + "z": 0.00003402762021336017 + }, + "angle": { + "x": 9.622158403095309e-9, + "y": -2.1474137713899127e-7, + "z": -0.0000010314686020977315 + } + }, + { + "id": "n500", + "parent": "11", + "degrees_of_freedom": [ + 3000, + 3001, + 3002, + 3003, + 3004, + 3005 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 25, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00016817710254930933, + "y": -0.0009120478297478677, + "z": 0.00006969311758653595 + }, + "angle": { + "x": 2.937597808356486e-7, + "y": 0.0000014135138547825788, + "z": -2.404589227365709e-7 + } + }, + { + "id": "n501", + "parent": "11", + "degrees_of_freedom": [ + 3006, + 3007, + 3008, + 3009, + 3010, + 3011 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 20, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00023652279013294724, + "y": -0.0007617051974818272, + "z": 0.00010972290147253021 + }, + "angle": { + "x": 8.115864316939732e-7, + "y": 9.5149952802635e-7, + "z": -7.272600105828324e-7 + } + }, + { + "id": "n502", + "parent": "11", + "degrees_of_freedom": [ + 3012, + 3013, + 3014, + 3015, + 3016, + 3017 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 25, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00016964050651074807, + "y": -0.0009077539508725865, + "z": 0.00010647884065068682 + }, + "angle": { + "x": -1.734883306364452e-7, + "y": -0.0000012450548745408222, + "z": -9.74808644139214e-7 + } + }, + { + "id": "n503", + "parent": "11", + "degrees_of_freedom": [ + 3018, + 3019, + 3020, + 3021, + 3022, + 3023 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 25, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00018722151689244584, + "y": -0.0009167040164955592, + "z": 0.00015096894243915053 + }, + "angle": { + "x": 3.5480518376681383e-7, + "y": -8.95021856145248e-7, + "z": -3.875377484036481e-7 + } + }, + { + "id": "n504", + "parent": "11", + "degrees_of_freedom": [ + 3024, + 3025, + 3026, + 3027, + 3028, + 3029 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 20, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002490620896782475, + "y": -0.0007724354661741698, + "z": 0.00021005618995424284 + }, + "angle": { + "x": 5.919070497525189e-7, + "y": -0.00000437260541126012, + "z": -6.335674909886568e-7 + } + }, + { + "id": "n505", + "parent": "11", + "degrees_of_freedom": [ + 3030, + 3031, + 3032, + 3033, + 3034, + 3035 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 25, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017834138671422048, + "y": -0.0009129637629978001, + "z": 0.00015388042233403267 + }, + "angle": { + "x": 3.1517504875595947e-7, + "y": -0.000001814189005750143, + "z": -8.232431276603307e-7 + } + }, + { + "id": "n506", + "parent": "11", + "degrees_of_freedom": [ + 3036, + 3037, + 3038, + 3039, + 3040, + 3041 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 35, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017378764329547077, + "y": -0.001234185211553846, + "z": -0.00013663958127893428 + }, + "angle": { + "x": 0.000001171329041182825, + "y": 0.0000012150502009160403, + "z": 9.126697143156026e-7 + } + }, + { + "id": "n507", + "parent": "11", + "degrees_of_freedom": [ + 3042, + 3043, + 3044, + 3045, + 3046, + 3047 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 30, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002521523916146149, + "y": -0.0010672494321100953, + "z": -0.00021128231672145882 + }, + "angle": { + "x": 0.00000245511808161902, + "y": 0.000004803795192824862, + "z": 0.0000013695153886510084 + } + }, + { + "id": "n508", + "parent": "11", + "degrees_of_freedom": [ + 3048, + 3049, + 3050, + 3051, + 3052, + 3053 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 30, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002380929408741082, + "y": -0.0010695104417563807, + "z": -0.00010412581478920817 + }, + "angle": { + "x": 0.0000012376906567761482, + "y": -0.0000011576946660377813, + "z": 6.715610961585675e-7 + } + }, + { + "id": "n509", + "parent": "11", + "degrees_of_freedom": [ + 3054, + 3055, + 3056, + 3057, + 3058, + 3059 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 35, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001650418310604831, + "y": -0.0012276739730833145, + "z": -0.00013964885631088182 + }, + "angle": { + "x": 0.0000021248146781404186, + "y": 0.0000016007461048737443, + "z": -6.363076352820976e-7 + } + }, + { + "id": "n510", + "parent": "11", + "degrees_of_freedom": [ + 3060, + 3061, + 3062, + 3063, + 3064, + 3065 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 35, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015989269387334238, + "y": -0.0012229281141838207, + "z": -0.00009579872757687344 + }, + "angle": { + "x": 4.2555933275647355e-7, + "y": 0.00000109530132172551, + "z": -9.199411121982143e-7 + } + }, + { + "id": "n511", + "parent": "11", + "degrees_of_freedom": [ + 3066, + 3067, + 3068, + 3069, + 3070, + 3071 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 35, + "z": 10 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015793444233654273, + "y": -0.001225047763465161, + "z": -0.00006203219192994961 + }, + "angle": { + "x": -3.601962347137546e-7, + "y": -0.0000014860243153893658, + "z": 8.807327225710941e-7 + } + }, + { + "id": "n512", + "parent": "11", + "degrees_of_freedom": [ + 3072, + 3073, + 3074, + 3075, + 3076, + 3077 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 30, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002256630208169375, + "y": -0.0010622959981719615, + "z": -0.000032500538640678844 + }, + "angle": { + "x": 3.5194348374694033e-7, + "y": -1.3768488676848606e-7, + "z": 4.817153848137349e-7 + } + }, + { + "id": "n513", + "parent": "11", + "degrees_of_freedom": [ + 3078, + 3079, + 3080, + 3081, + 3082, + 3083 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 35, + "z": 15 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014989509898459714, + "y": -0.001212192353868021, + "z": -0.00003064561189581393 + }, + "angle": { + "x": -1.4093552045254124e-7, + "y": 1.3922411089575873e-7, + "z": -7.754924630532768e-7 + } + }, + { + "id": "n514", + "parent": "11", + "degrees_of_freedom": [ + 3084, + 3085, + 3086, + 3087, + 3088, + 3089 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 35, + "z": 20 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015356936235083414, + "y": -0.0012180967759681898, + "z": 2.2175683897628515e-18 + }, + "angle": { + "x": -3.489689783629578e-19, + "y": -2.797963720170827e-19, + "z": 9.898372531516203e-7 + } + }, + { + "id": "n515", + "parent": "11", + "degrees_of_freedom": [ + 3090, + 3091, + 3092, + 3093, + 3094, + 3095 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 30, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00022566302081693438, + "y": -0.0010622959981719587, + "z": 0.00003250053864068376 + }, + "angle": { + "x": -3.5194348374700317e-7, + "y": 1.3768488676818386e-7, + "z": 4.817153848137428e-7 + } + }, + { + "id": "n516", + "parent": "11", + "degrees_of_freedom": [ + 3096, + 3097, + 3098, + 3099, + 3100, + 3101 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 35, + "z": 25 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00014989509898459492, + "y": -0.0012121923538680162, + "z": 0.000030645611895817126 + }, + "angle": { + "x": 1.4093552045232763e-7, + "y": -1.392241108960223e-7, + "z": -7.754924630532956e-7 + } + }, + { + "id": "n517", + "parent": "11", + "degrees_of_freedom": [ + 3102, + 3103, + 3104, + 3105, + 3106, + 3107 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 35, + "z": 30 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00015793444233653896, + "y": -0.0012250477634651571, + "z": 0.00006203219192995369 + }, + "angle": { + "x": 3.6019623471367926e-7, + "y": 0.0000014860243153889485, + "z": 8.807327225710076e-7 + } + }, + { + "id": "n518", + "parent": "11", + "degrees_of_freedom": [ + 3108, + 3109, + 3110, + 3111, + 3112, + 3113 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 30, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00023809294087410223, + "y": -0.001069510441756377, + "z": 0.00010412581478921153 + }, + "angle": { + "x": -0.0000012376906567760226, + "y": 0.0000011576946660376185, + "z": 6.715610961586983e-7 + } + }, + { + "id": "n519", + "parent": "11", + "degrees_of_freedom": [ + 3114, + 3115, + 3116, + 3117, + 3118, + 3119 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 35, + "z": 35 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001598926938733377, + "y": -0.0012229281141838168, + "z": 0.00009579872757687626 + }, + "angle": { + "x": -4.2555933275636587e-7, + "y": -0.0000010953013217258538, + "z": -9.199411121981155e-7 + } + }, + { + "id": "n520", + "parent": "11", + "degrees_of_freedom": [ + 3120, + 3121, + 3122, + 3123, + 3124, + 3125 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 35, + "z": 40 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.00017378764329546422, + "y": -0.0012341852115538444, + "z": 0.00013663958127893862 + }, + "angle": { + "x": -0.0000011713290411822841, + "y": -0.0000012150502009163378, + "z": 9.126697143156455e-7 + } + }, + { + "id": "n521", + "parent": "11", + "degrees_of_freedom": [ + 3126, + 3127, + 3128, + 3129, + 3130, + 3131 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 30, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0002521523916146074, + "y": -0.0010672494321100955, + "z": 0.0002112823167214618 + }, + "angle": { + "x": -0.000002455118081618736, + "y": -0.000004803795192825006, + "z": 0.0000013695153886512297 + } + }, + { + "id": "n522", + "parent": "11", + "degrees_of_freedom": [ + 3132, + 3133, + 3134, + 3135, + 3136, + 3137 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 35, + "z": 45 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0.0001650418310604756, + "y": -0.001227673973083317, + "z": 0.00013964885631088502 + }, + "angle": { + "x": -0.000002124814678139945, + "y": -0.000001600746104874174, + "z": -6.363076352823015e-7 + } + }, + { + "id": "n523", + "parent": "11", + "degrees_of_freedom": [ + 3138, + 3139, + 3140, + 3141, + 3142, + 3143 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 45, + "z": 0 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00016376731083781395, + "y": -0.001510905240040909, + "z": -0.00012119654767177575 + }, + "angle": { + "x": 0.0000020628058585326925, + "y": 0.0000025698560697340654, + "z": 0.000005841406028647575 + } + }, + { + "id": "n524", + "parent": "11", + "degrees_of_freedom": [ + 3144, + 3145, + 3146, + 3147, + 3148, + 3149 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 40, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0002331359734557682, + "y": -0.0014063676073439626, + "z": -0.00018900223671558644 + }, + "angle": { + "x": -0.0000014681971548910232, + "y": 0.000004534923697224015, + "z": -0.000003442537301635907 + } + }, + { + "id": "n525", + "parent": "11", + "degrees_of_freedom": [ + 3150, + 3151, + 3152, + 3153, + 3154, + 3155 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 40, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00022131198586248054, + "y": -0.0013904070012034325, + "z": -0.00009173260422551785 + }, + "angle": { + "x": 3.4088217589846846e-7, + "y": -0.000001512963492717738, + "z": -0.0000017791864773533428 + } + }, + { + "id": "n526", + "parent": "11", + "degrees_of_freedom": [ + 3156, + 3157, + 3158, + 3159, + 3160, + 3161 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 45, + "z": -5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00016394087309779668, + "y": -0.001495800231410357, + "z": -0.00010946213367828334 + }, + "angle": { + "x": 0.00001375796631933138, + "y": 0.0000013138339953699202, + "z": -0.00000134198223191399 + } + }, + { + "id": "n527", + "parent": "11", + "degrees_of_freedom": [ + 3162, + 3163, + 3164, + 3165, + 3166, + 3167 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 45, + "z": 5 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0001544923136796721, + "y": -0.0014913058293063366, + "z": -0.00008780680653789713 + }, + "angle": { + "x": -0.000001890541724884307, + "y": 7.854266205244292e-7, + "z": -0.0000016566696612960976 + } + }, + { + "id": "n528", + "parent": "11", + "degrees_of_freedom": [ + 3168, + 3169, + 3170, + 3171, + 3172, + 3173 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 45, + "z": 10 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00013844110547553626, + "y": -0.0014817776447229127, + "z": -0.00006038855470583557 + }, + "angle": { + "x": -0.000001622025664340847, + "y": -0.0000013250125586681703, + "z": 0.000006195339506717805 + } + }, + { + "id": "n529", + "parent": "11", + "degrees_of_freedom": [ + 3174, + 3175, + 3176, + 3177, + 3178, + 3179 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 40, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0002052872419056942, + "y": -0.0013735833086183137, + "z": -0.000029941046579682003 + }, + "angle": { + "x": -7.586195158180245e-8, + "y": -3.7992743482518077e-7, + "z": -0.0000012531857355128121 + } + }, + { + "id": "n530", + "parent": "11", + "degrees_of_freedom": [ + 3180, + 3181, + 3182, + 3183, + 3184, + 3185 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 45, + "z": 15 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0001396090954797756, + "y": -0.0014723311487830964, + "z": -0.0000301884514719815 + }, + "angle": { + "x": -4.193707548513609e-7, + "y": -1.8183890862985348e-8, + "z": -0.0000012361669380272588 + } + }, + { + "id": "n531", + "parent": "11", + "degrees_of_freedom": [ + 3186, + 3187, + 3188, + 3189, + 3190, + 3191 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 45, + "z": 20 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0001298146736068947, + "y": -0.0014724927717099346, + "z": 7.269096336387336e-19 + }, + "angle": { + "x": -4.526175243642605e-19, + "y": 7.141174769739685e-21, + "z": 0.000006170746686628939 + } + }, + { + "id": "n532", + "parent": "11", + "degrees_of_freedom": [ + 3192, + 3193, + 3194, + 3195, + 3196, + 3197 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 40, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.0002052872419056929, + "y": -0.0013735833086183106, + "z": 0.00002994104657968552 + }, + "angle": { + "x": 7.586195158155612e-8, + "y": 3.79927434824923e-7, + "z": -0.0000012531857355129794 + } + }, + { + "id": "n533", + "parent": "11", + "degrees_of_freedom": [ + 3198, + 3199, + 3200, + 3201, + 3202, + 3203 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 45, + "z": 25 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00013960909547977552, + "y": -0.0014723311487830925, + "z": 0.000030188451471982852 + }, + "angle": { + "x": 4.19370754851109e-7, + "y": 1.8183890862671982e-8, + "z": -0.0000012361669380275074 + } + }, + { + "id": "n534", + "parent": "11", + "degrees_of_freedom": [ + 3204, + 3205, + 3206, + 3207, + 3208, + 3209 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 45, + "z": 30 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00013844110547553442, + "y": -0.0014817776447229101, + "z": 0.000060388554705839515 + }, + "angle": { + "x": 0.0000016220256643407506, + "y": 0.0000013250125586676433, + "z": 0.000006195339506717596 + } + }, + { + "id": "n535", + "parent": "11", + "degrees_of_freedom": [ + 3210, + 3211, + 3212, + 3213, + 3214, + 3215 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 40, + "z": 35 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00022131198586247566, + "y": -0.0013904070012034297, + "z": 0.00009173260422552235 + }, + "angle": { + "x": -3.408821758983792e-7, + "y": 0.0000015129634927174442, + "z": -0.000001779186477353647 + } + }, + { + "id": "n536", + "parent": "11", + "degrees_of_freedom": [ + 3216, + 3217, + 3218, + 3219, + 3220, + 3221 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 45, + "z": 35 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00015449231367966885, + "y": -0.0014913058293063305, + "z": 0.00008780680653790002 + }, + "angle": { + "x": 0.000001890541724884367, + "y": -7.854266205249016e-7, + "z": -0.0000016566696612963102 + } + }, + { + "id": "n537", + "parent": "11", + "degrees_of_freedom": [ + 3222, + 3223, + 3224, + 3225, + 3226, + 3227 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 45, + "z": 40 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00016376731083780937, + "y": -0.001510905240040908, + "z": 0.00012119654767178092 + }, + "angle": { + "x": -0.000002062805858532326, + "y": -0.000002569856069734563, + "z": 0.000005841406028647414 + } + }, + { + "id": "n538", + "parent": "11", + "degrees_of_freedom": [ + 3228, + 3229, + 3230, + 3231, + 3232, + 3233 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 45, + "y": 40, + "z": 45 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00023313597345576037, + "y": -0.001406367607343962, + "z": 0.00018900223671559183 + }, + "angle": { + "x": 0.000001468197154890906, + "y": -0.000004534923697224348, + "z": -0.000003442537301635989 + } + }, + { + "id": "n539", + "parent": "11", + "degrees_of_freedom": [ + 3234, + 3235, + 3236, + 3237, + 3238, + 3239 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 40, + "y": 45, + "z": 45 + }, + "force": { + "x": 0, + "y": -400, + "z": 0 + }, + "displacement": { + "x": 0.00016394087309779115, + "y": -0.0014958002314103562, + "z": 0.00010946213367828672 + }, + "angle": { + "x": -0.000013757966319331302, + "y": -0.0000013138339953704234, + "z": -0.0000013419822319142645 + } + } + ], + "edges": [ + { + "id": "e0", + "source": 0, + "target": 1, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1", + "source": 1, + "target": 2, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e2", + "source": 2, + "target": 3, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e3", + "source": 3, + "target": 0, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e4", + "source": 4, + "target": 5, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -401.7049560546875 + }, + { + "id": "e5", + "source": 5, + "target": 0, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.17774963378906 + }, + { + "id": "e6", + "source": 0, + "target": 6, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -472.5869140625 + }, + { + "id": "e7", + "source": 6, + "target": 4, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.939697265625 + }, + { + "id": "e8", + "source": 7, + "target": 8, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.3015251159668 + }, + { + "id": "e9", + "source": 8, + "target": 4, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 181.6524658203125 + }, + { + "id": "e10", + "source": 4, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 145.8289337158203 + }, + { + "id": "e11", + "source": 9, + "target": 7, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 166.3050079345703 + }, + { + "id": "e12", + "source": 2, + "target": 10, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.9940185546875 + }, + { + "id": "e13", + "source": 10, + "target": 7, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -314.3655090332031 + }, + { + "id": "e14", + "source": 7, + "target": 11, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -286.51873779296875 + }, + { + "id": "e15", + "source": 11, + "target": 2, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -575.192626953125 + }, + { + "id": "e16", + "source": 8, + "target": 10, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -283.128662109375 + }, + { + "id": "e17", + "source": 10, + "target": 1, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.99209594726562 + }, + { + "id": "e18", + "source": 1, + "target": 5, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -567.5455322265625 + }, + { + "id": "e19", + "source": 5, + "target": 8, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -258.7574768066406 + }, + { + "id": "e20", + "source": 6, + "target": 3, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -493.98992919921875 + }, + { + "id": "e21", + "source": 3, + "target": 11, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -130.22816467285156 + }, + { + "id": "e22", + "source": 11, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -365.04693603515625 + }, + { + "id": "e23", + "source": 9, + "target": 6, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -256.9091796875 + }, + { + "id": "e24", + "source": 12, + "target": 3, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e25", + "source": 3, + "target": 13, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e26", + "source": 13, + "target": 14, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e27", + "source": 14, + "target": 12, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e28", + "source": 15, + "target": 6, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -451.0946044921875 + }, + { + "id": "e29", + "source": 6, + "target": 12, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -306.20843505859375 + }, + { + "id": "e30", + "source": 12, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -405.9900207519531 + }, + { + "id": "e31", + "source": 16, + "target": 15, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -335.16192626953125 + }, + { + "id": "e32", + "source": 17, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 99.21932983398438 + }, + { + "id": "e33", + "source": 9, + "target": 15, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.42361450195312 + }, + { + "id": "e34", + "source": 15, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.69595336914062 + }, + { + "id": "e35", + "source": 18, + "target": 17, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 95.99263763427734 + }, + { + "id": "e36", + "source": 13, + "target": 11, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -398.817138671875 + }, + { + "id": "e37", + "source": 11, + "target": 17, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -444.2502136230469 + }, + { + "id": "e38", + "source": 17, + "target": 19, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.0864562988281 + }, + { + "id": "e39", + "source": 19, + "target": 13, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -494.9745178222656 + }, + { + "id": "e40", + "source": 16, + "target": 14, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -478.4845886230469 + }, + { + "id": "e41", + "source": 14, + "target": 19, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -131.62808227539062 + }, + { + "id": "e42", + "source": 19, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.78045654296875 + }, + { + "id": "e43", + "source": 18, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.28709411621094 + }, + { + "id": "e44", + "source": 20, + "target": 14, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e45", + "source": 14, + "target": 21, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e46", + "source": 21, + "target": 22, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e47", + "source": 22, + "target": 20, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e48", + "source": 23, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -391.7324523925781 + }, + { + "id": "e49", + "source": 16, + "target": 20, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -352.5620422363281 + }, + { + "id": "e50", + "source": 20, + "target": 24, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -352.5620422363281 + }, + { + "id": "e51", + "source": 24, + "target": 23, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -391.7324523925781 + }, + { + "id": "e52", + "source": 25, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 89.3107681274414 + }, + { + "id": "e53", + "source": 18, + "target": 23, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 147.4529571533203 + }, + { + "id": "e54", + "source": 23, + "target": 26, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 147.4529571533203 + }, + { + "id": "e55", + "source": 26, + "target": 25, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 89.3107681274414 + }, + { + "id": "e56", + "source": 21, + "target": 19, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -442.6197204589844 + }, + { + "id": "e57", + "source": 19, + "target": 25, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.7646179199219 + }, + { + "id": "e58", + "source": 25, + "target": 27, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.7646179199219 + }, + { + "id": "e59", + "source": 27, + "target": 21, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -442.6197204589844 + }, + { + "id": "e60", + "source": 24, + "target": 22, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -478.4845886230469 + }, + { + "id": "e61", + "source": 22, + "target": 27, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -131.62808227539062 + }, + { + "id": "e62", + "source": 27, + "target": 26, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.78045654296875 + }, + { + "id": "e63", + "source": 26, + "target": 24, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.28709411621094 + }, + { + "id": "e64", + "source": 28, + "target": 22, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e65", + "source": 22, + "target": 29, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e66", + "source": 29, + "target": 30, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e67", + "source": 30, + "target": 28, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e68", + "source": 31, + "target": 24, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -335.16192626953125 + }, + { + "id": "e69", + "source": 24, + "target": 28, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -405.9900207519531 + }, + { + "id": "e70", + "source": 28, + "target": 32, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -306.20843505859375 + }, + { + "id": "e71", + "source": 32, + "target": 31, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -451.0946044921875 + }, + { + "id": "e72", + "source": 33, + "target": 26, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 95.99263763427734 + }, + { + "id": "e73", + "source": 26, + "target": 31, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.69595336914062 + }, + { + "id": "e74", + "source": 31, + "target": 34, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.42361450195312 + }, + { + "id": "e75", + "source": 34, + "target": 33, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 99.21932983398438 + }, + { + "id": "e76", + "source": 29, + "target": 27, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -494.9745178222656 + }, + { + "id": "e77", + "source": 27, + "target": 33, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.0864562988281 + }, + { + "id": "e78", + "source": 33, + "target": 35, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -444.2502136230469 + }, + { + "id": "e79", + "source": 35, + "target": 29, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -398.817138671875 + }, + { + "id": "e80", + "source": 32, + "target": 30, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -493.98992919921875 + }, + { + "id": "e81", + "source": 30, + "target": 35, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -130.22816467285156 + }, + { + "id": "e82", + "source": 35, + "target": 34, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -365.04693603515625 + }, + { + "id": "e83", + "source": 34, + "target": 32, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -256.9091796875 + }, + { + "id": "e84", + "source": 36, + "target": 30, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e85", + "source": 30, + "target": 37, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e86", + "source": 37, + "target": 38, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e87", + "source": 38, + "target": 36, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e88", + "source": 39, + "target": 32, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.939697265625 + }, + { + "id": "e89", + "source": 32, + "target": 36, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -472.5869140625 + }, + { + "id": "e90", + "source": 36, + "target": 40, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.17774963378906 + }, + { + "id": "e91", + "source": 40, + "target": 39, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -401.7049560546875 + }, + { + "id": "e92", + "source": 41, + "target": 34, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 166.3050079345703 + }, + { + "id": "e93", + "source": 34, + "target": 39, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 145.8289337158203 + }, + { + "id": "e94", + "source": 39, + "target": 42, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 181.6524658203125 + }, + { + "id": "e95", + "source": 42, + "target": 41, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.3015251159668 + }, + { + "id": "e96", + "source": 37, + "target": 35, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -575.192626953125 + }, + { + "id": "e97", + "source": 35, + "target": 41, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -286.51873779296875 + }, + { + "id": "e98", + "source": 41, + "target": 43, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -314.3655090332031 + }, + { + "id": "e99", + "source": 43, + "target": 37, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.9940185546875 + }, + { + "id": "e100", + "source": 40, + "target": 38, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -567.5455322265625 + }, + { + "id": "e101", + "source": 38, + "target": 43, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.99209594726562 + }, + { + "id": "e102", + "source": 43, + "target": 42, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -283.128662109375 + }, + { + "id": "e103", + "source": 42, + "target": 40, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -258.7574768066406 + }, + { + "id": "e104", + "source": 44, + "target": 45, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.3009948730469 + }, + { + "id": "e105", + "source": 45, + "target": 4, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -284.59722900390625 + }, + { + "id": "e106", + "source": 4, + "target": 46, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -403.1513671875 + }, + { + "id": "e107", + "source": 46, + "target": 44, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.2358703613281 + }, + { + "id": "e108", + "source": 47, + "target": 48, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.416481018066406 + }, + { + "id": "e109", + "source": 48, + "target": 44, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 203.0487060546875 + }, + { + "id": "e110", + "source": 44, + "target": 49, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 184.2433319091797 + }, + { + "id": "e111", + "source": 49, + "target": 47, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 180.49227905273438 + }, + { + "id": "e112", + "source": 7, + "target": 50, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -241.38722229003906 + }, + { + "id": "e113", + "source": 50, + "target": 47, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -250.0814971923828 + }, + { + "id": "e114", + "source": 47, + "target": 51, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.7974548339844 + }, + { + "id": "e115", + "source": 51, + "target": 7, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.5205993652344 + }, + { + "id": "e116", + "source": 48, + "target": 50, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.9500732421875 + }, + { + "id": "e117", + "source": 50, + "target": 8, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -204.31982421875 + }, + { + "id": "e118", + "source": 8, + "target": 45, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -333.8799743652344 + }, + { + "id": "e119", + "source": 45, + "target": 48, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -299.2804260253906 + }, + { + "id": "e120", + "source": 46, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -381.0902099609375 + }, + { + "id": "e121", + "source": 9, + "target": 51, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -225.43670654296875 + }, + { + "id": "e122", + "source": 51, + "target": 49, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -259.5942687988281 + }, + { + "id": "e123", + "source": 49, + "target": 46, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.3759460449219 + }, + { + "id": "e124", + "source": 52, + "target": 46, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.936767578125 + }, + { + "id": "e125", + "source": 46, + "target": 15, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -360.0229187011719 + }, + { + "id": "e126", + "source": 15, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -410.7134704589844 + }, + { + "id": "e127", + "source": 53, + "target": 52, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.88006591796875 + }, + { + "id": "e128", + "source": 54, + "target": 49, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.02445983886719 + }, + { + "id": "e129", + "source": 49, + "target": 52, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 245.49436950683594 + }, + { + "id": "e130", + "source": 52, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.0060272216797 + }, + { + "id": "e131", + "source": 55, + "target": 54, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 129.7095947265625 + }, + { + "id": "e132", + "source": 17, + "target": 51, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.497314453125 + }, + { + "id": "e133", + "source": 51, + "target": 54, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.0825500488281 + }, + { + "id": "e134", + "source": 54, + "target": 56, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -351.6517639160156 + }, + { + "id": "e135", + "source": 56, + "target": 17, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.9957580566406 + }, + { + "id": "e136", + "source": 53, + "target": 18, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.1078186035156 + }, + { + "id": "e137", + "source": 18, + "target": 56, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.4929962158203 + }, + { + "id": "e138", + "source": 56, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -274.1460876464844 + }, + { + "id": "e139", + "source": 55, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -339.60443115234375 + }, + { + "id": "e140", + "source": 57, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -388.15087890625 + }, + { + "id": "e141", + "source": 53, + "target": 23, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.113525390625 + }, + { + "id": "e142", + "source": 23, + "target": 58, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.113525390625 + }, + { + "id": "e143", + "source": 58, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -388.15087890625 + }, + { + "id": "e144", + "source": 59, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 111.53241729736328 + }, + { + "id": "e145", + "source": 55, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 207.50411987304688 + }, + { + "id": "e146", + "source": 57, + "target": 60, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 207.50411987304688 + }, + { + "id": "e147", + "source": 60, + "target": 59, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 111.53241729736328 + }, + { + "id": "e148", + "source": 25, + "target": 56, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.5155029296875 + }, + { + "id": "e149", + "source": 56, + "target": 59, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.69696044921875 + }, + { + "id": "e150", + "source": 59, + "target": 61, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.69696044921875 + }, + { + "id": "e151", + "source": 61, + "target": 25, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.5155029296875 + }, + { + "id": "e152", + "source": 58, + "target": 26, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.1078186035156 + }, + { + "id": "e153", + "source": 26, + "target": 61, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.4929962158203 + }, + { + "id": "e154", + "source": 61, + "target": 60, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -274.1460876464844 + }, + { + "id": "e155", + "source": 60, + "target": 58, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -339.60443115234375 + }, + { + "id": "e156", + "source": 62, + "target": 58, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.88006591796875 + }, + { + "id": "e157", + "source": 58, + "target": 31, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -410.7134704589844 + }, + { + "id": "e158", + "source": 31, + "target": 63, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -360.0229187011719 + }, + { + "id": "e159", + "source": 63, + "target": 62, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.936767578125 + }, + { + "id": "e160", + "source": 64, + "target": 60, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 129.7095947265625 + }, + { + "id": "e161", + "source": 60, + "target": 62, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.0060272216797 + }, + { + "id": "e162", + "source": 62, + "target": 65, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 245.49436950683594 + }, + { + "id": "e163", + "source": 65, + "target": 64, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.02445983886719 + }, + { + "id": "e164", + "source": 33, + "target": 61, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.9957580566406 + }, + { + "id": "e165", + "source": 61, + "target": 64, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -351.6517639160156 + }, + { + "id": "e166", + "source": 64, + "target": 66, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.0825500488281 + }, + { + "id": "e167", + "source": 66, + "target": 33, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.497314453125 + }, + { + "id": "e168", + "source": 63, + "target": 34, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -381.0902099609375 + }, + { + "id": "e169", + "source": 34, + "target": 66, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -225.43670654296875 + }, + { + "id": "e170", + "source": 66, + "target": 65, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -259.5942687988281 + }, + { + "id": "e171", + "source": 65, + "target": 63, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.3759460449219 + }, + { + "id": "e172", + "source": 67, + "target": 63, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.2358703613281 + }, + { + "id": "e173", + "source": 63, + "target": 39, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -403.1513671875 + }, + { + "id": "e174", + "source": 39, + "target": 68, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -284.59722900390625 + }, + { + "id": "e175", + "source": 68, + "target": 67, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.3009948730469 + }, + { + "id": "e176", + "source": 69, + "target": 65, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 180.49227905273438 + }, + { + "id": "e177", + "source": 65, + "target": 67, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 184.2433319091797 + }, + { + "id": "e178", + "source": 67, + "target": 70, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 203.0487060546875 + }, + { + "id": "e179", + "source": 70, + "target": 69, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.416481018066406 + }, + { + "id": "e180", + "source": 41, + "target": 66, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.5205993652344 + }, + { + "id": "e181", + "source": 66, + "target": 69, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.7974548339844 + }, + { + "id": "e182", + "source": 69, + "target": 71, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -250.0814971923828 + }, + { + "id": "e183", + "source": 71, + "target": 41, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -241.38722229003906 + }, + { + "id": "e184", + "source": 68, + "target": 42, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -333.8799743652344 + }, + { + "id": "e185", + "source": 42, + "target": 71, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -204.31982421875 + }, + { + "id": "e186", + "source": 71, + "target": 70, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.9500732421875 + }, + { + "id": "e187", + "source": 70, + "target": 68, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -299.2804260253906 + }, + { + "id": "e188", + "source": 72, + "target": 73, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -295.2023620605469 + }, + { + "id": "e189", + "source": 73, + "target": 44, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -308.8236389160156 + }, + { + "id": "e190", + "source": 44, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -363.21502685546875 + }, + { + "id": "e191", + "source": 74, + "target": 72, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -382.387451171875 + }, + { + "id": "e192", + "source": 75, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.374813079833984 + }, + { + "id": "e193", + "source": 76, + "target": 72, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 210.07814025878906 + }, + { + "id": "e194", + "source": 72, + "target": 77, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 193.01165771484375 + }, + { + "id": "e195", + "source": 77, + "target": 75, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 186.21340942382812 + }, + { + "id": "e196", + "source": 47, + "target": 78, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -249.13690185546875 + }, + { + "id": "e197", + "source": 78, + "target": 75, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.54400634765625 + }, + { + "id": "e198", + "source": 75, + "target": 79, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -341.2582092285156 + }, + { + "id": "e199", + "source": 79, + "target": 47, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -314.42059326171875 + }, + { + "id": "e200", + "source": 76, + "target": 78, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -209.42283630371094 + }, + { + "id": "e201", + "source": 78, + "target": 48, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -217.84075927734375 + }, + { + "id": "e202", + "source": 48, + "target": 73, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -286.6039123535156 + }, + { + "id": "e203", + "source": 73, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -323.2729187011719 + }, + { + "id": "e204", + "source": 74, + "target": 49, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.42816162109375 + }, + { + "id": "e205", + "source": 49, + "target": 79, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.65353393554688 + }, + { + "id": "e206", + "source": 79, + "target": 77, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -237.49928283691406 + }, + { + "id": "e207", + "source": 77, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -356.5154113769531 + }, + { + "id": "e208", + "source": 80, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -363.38641357421875 + }, + { + "id": "e209", + "source": 74, + "target": 52, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -382.2891540527344 + }, + { + "id": "e210", + "source": 52, + "target": 81, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.40301513671875 + }, + { + "id": "e211", + "source": 81, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.4752502441406 + }, + { + "id": "e212", + "source": 82, + "target": 77, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 105.96690368652344 + }, + { + "id": "e213", + "source": 77, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 254.7412109375 + }, + { + "id": "e214", + "source": 80, + "target": 83, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.04141235351562 + }, + { + "id": "e215", + "source": 83, + "target": 82, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.5289306640625 + }, + { + "id": "e216", + "source": 54, + "target": 79, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.0404968261719 + }, + { + "id": "e217", + "source": 79, + "target": 82, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.9383850097656 + }, + { + "id": "e218", + "source": 82, + "target": 84, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.56866455078125 + }, + { + "id": "e219", + "source": 84, + "target": 54, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.43157958984375 + }, + { + "id": "e220", + "source": 81, + "target": 55, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -345.94110107421875 + }, + { + "id": "e221", + "source": 55, + "target": 84, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -264.96295166015625 + }, + { + "id": "e222", + "source": 84, + "target": 83, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -244.203369140625 + }, + { + "id": "e223", + "source": 83, + "target": 81, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.111572265625 + }, + { + "id": "e224", + "source": 85, + "target": 81, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.4401550292969 + }, + { + "id": "e225", + "source": 81, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.10009765625 + }, + { + "id": "e226", + "source": 57, + "target": 86, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.10009765625 + }, + { + "id": "e227", + "source": 86, + "target": 85, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.4401550292969 + }, + { + "id": "e228", + "source": 87, + "target": 83, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 116.04698181152344 + }, + { + "id": "e229", + "source": 83, + "target": 85, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 218.94857788085938 + }, + { + "id": "e230", + "source": 85, + "target": 88, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 218.94857788085938 + }, + { + "id": "e231", + "source": 88, + "target": 87, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 116.04698181152344 + }, + { + "id": "e232", + "source": 59, + "target": 84, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.3597106933594 + }, + { + "id": "e233", + "source": 84, + "target": 87, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.0746154785156 + }, + { + "id": "e234", + "source": 87, + "target": 89, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.0746154785156 + }, + { + "id": "e235", + "source": 89, + "target": 59, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.3597106933594 + }, + { + "id": "e236", + "source": 86, + "target": 60, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -345.94110107421875 + }, + { + "id": "e237", + "source": 60, + "target": 89, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -264.96295166015625 + }, + { + "id": "e238", + "source": 89, + "target": 88, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -244.203369140625 + }, + { + "id": "e239", + "source": 88, + "target": 86, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.111572265625 + }, + { + "id": "e240", + "source": 90, + "target": 86, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.4752502441406 + }, + { + "id": "e241", + "source": 86, + "target": 62, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.40301513671875 + }, + { + "id": "e242", + "source": 62, + "target": 91, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -382.2891540527344 + }, + { + "id": "e243", + "source": 91, + "target": 90, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -363.38641357421875 + }, + { + "id": "e244", + "source": 92, + "target": 88, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.5289306640625 + }, + { + "id": "e245", + "source": 88, + "target": 90, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.04141235351562 + }, + { + "id": "e246", + "source": 90, + "target": 93, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 254.7412109375 + }, + { + "id": "e247", + "source": 93, + "target": 92, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 105.96690368652344 + }, + { + "id": "e248", + "source": 64, + "target": 89, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.43157958984375 + }, + { + "id": "e249", + "source": 89, + "target": 92, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.56866455078125 + }, + { + "id": "e250", + "source": 92, + "target": 94, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.9383850097656 + }, + { + "id": "e251", + "source": 94, + "target": 64, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.0404968261719 + }, + { + "id": "e252", + "source": 91, + "target": 65, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.42816162109375 + }, + { + "id": "e253", + "source": 65, + "target": 94, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.65353393554688 + }, + { + "id": "e254", + "source": 94, + "target": 93, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -237.49928283691406 + }, + { + "id": "e255", + "source": 93, + "target": 91, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -356.5154113769531 + }, + { + "id": "e256", + "source": 95, + "target": 91, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -382.387451171875 + }, + { + "id": "e257", + "source": 91, + "target": 67, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -363.21502685546875 + }, + { + "id": "e258", + "source": 67, + "target": 96, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -308.8236389160156 + }, + { + "id": "e259", + "source": 96, + "target": 95, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -295.2023620605469 + }, + { + "id": "e260", + "source": 97, + "target": 93, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 186.21340942382812 + }, + { + "id": "e261", + "source": 93, + "target": 95, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 193.01165771484375 + }, + { + "id": "e262", + "source": 95, + "target": 98, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 210.07814025878906 + }, + { + "id": "e263", + "source": 98, + "target": 97, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.374813079833984 + }, + { + "id": "e264", + "source": 69, + "target": 94, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -314.42059326171875 + }, + { + "id": "e265", + "source": 94, + "target": 97, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -341.2582092285156 + }, + { + "id": "e266", + "source": 97, + "target": 99, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.54400634765625 + }, + { + "id": "e267", + "source": 99, + "target": 69, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -249.13690185546875 + }, + { + "id": "e268", + "source": 96, + "target": 70, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -286.6039123535156 + }, + { + "id": "e269", + "source": 70, + "target": 99, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -217.84075927734375 + }, + { + "id": "e270", + "source": 99, + "target": 98, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -209.42283630371094 + }, + { + "id": "e271", + "source": 98, + "target": 96, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -323.2729187011719 + }, + { + "id": "e272", + "source": 100, + "target": 101, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -285.26171875 + }, + { + "id": "e273", + "source": 101, + "target": 72, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.9801940917969 + }, + { + "id": "e274", + "source": 72, + "target": 102, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.5188903808594 + }, + { + "id": "e275", + "source": 102, + "target": 100, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -401.4304504394531 + }, + { + "id": "e276", + "source": 103, + "target": 104, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.26524353027344 + }, + { + "id": "e277", + "source": 104, + "target": 100, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.4701690673828 + }, + { + "id": "e278", + "source": 100, + "target": 105, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 182.64556884765625 + }, + { + "id": "e279", + "source": 105, + "target": 103, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 164.20742797851562 + }, + { + "id": "e280", + "source": 75, + "target": 106, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -270.6961364746094 + }, + { + "id": "e281", + "source": 106, + "target": 103, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -276.8791198730469 + }, + { + "id": "e282", + "source": 103, + "target": 107, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -396.48272705078125 + }, + { + "id": "e283", + "source": 107, + "target": 75, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.89007568359375 + }, + { + "id": "e284", + "source": 104, + "target": 106, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -219.9418487548828 + }, + { + "id": "e285", + "source": 106, + "target": 76, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -241.42416381835938 + }, + { + "id": "e286", + "source": 76, + "target": 101, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -279.7339172363281 + }, + { + "id": "e287", + "source": 101, + "target": 104, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.88519287109375 + }, + { + "id": "e288", + "source": 102, + "target": 77, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -310.6617126464844 + }, + { + "id": "e289", + "source": 77, + "target": 107, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -279.9124450683594 + }, + { + "id": "e290", + "source": 107, + "target": 105, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -225.6521759033203 + }, + { + "id": "e291", + "source": 105, + "target": 102, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.77264404296875 + }, + { + "id": "e292", + "source": 108, + "target": 102, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -347.255615234375 + }, + { + "id": "e293", + "source": 102, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -397.0319519042969 + }, + { + "id": "e294", + "source": 80, + "target": 109, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.9858703613281 + }, + { + "id": "e295", + "source": 109, + "target": 108, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.5323791503906 + }, + { + "id": "e296", + "source": 110, + "target": 105, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 95.42484283447266 + }, + { + "id": "e297", + "source": 105, + "target": 108, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 233.33139038085938 + }, + { + "id": "e298", + "source": 108, + "target": 111, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 182.59603881835938 + }, + { + "id": "e299", + "source": 111, + "target": 110, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 118.27772521972656 + }, + { + "id": "e300", + "source": 82, + "target": 107, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.0900573730469 + }, + { + "id": "e301", + "source": 107, + "target": 110, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.3307800292969 + }, + { + "id": "e302", + "source": 110, + "target": 112, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -399.6603088378906 + }, + { + "id": "e303", + "source": 112, + "target": 82, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -339.1669006347656 + }, + { + "id": "e304", + "source": 109, + "target": 83, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.6211242675781 + }, + { + "id": "e305", + "source": 83, + "target": 112, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -287.04473876953125 + }, + { + "id": "e306", + "source": 112, + "target": 111, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -222.38546752929688 + }, + { + "id": "e307", + "source": 111, + "target": 109, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -386.35736083984375 + }, + { + "id": "e308", + "source": 113, + "target": 109, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.768310546875 + }, + { + "id": "e309", + "source": 109, + "target": 85, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.68853759765625 + }, + { + "id": "e310", + "source": 85, + "target": 114, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.68853759765625 + }, + { + "id": "e311", + "source": 114, + "target": 113, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.768310546875 + }, + { + "id": "e312", + "source": 115, + "target": 111, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.95960998535156 + }, + { + "id": "e313", + "source": 111, + "target": 113, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.28053283691406 + }, + { + "id": "e314", + "source": 113, + "target": 116, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.28053283691406 + }, + { + "id": "e315", + "source": 116, + "target": 115, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.95960998535156 + }, + { + "id": "e316", + "source": 87, + "target": 112, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -365.2146301269531 + }, + { + "id": "e317", + "source": 112, + "target": 115, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.9008483886719 + }, + { + "id": "e318", + "source": 115, + "target": 117, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.9008483886719 + }, + { + "id": "e319", + "source": 117, + "target": 87, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -365.2146301269531 + }, + { + "id": "e320", + "source": 114, + "target": 88, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.6211242675781 + }, + { + "id": "e321", + "source": 88, + "target": 117, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -287.04473876953125 + }, + { + "id": "e322", + "source": 117, + "target": 116, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -222.38546752929688 + }, + { + "id": "e323", + "source": 116, + "target": 114, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -386.35736083984375 + }, + { + "id": "e324", + "source": 118, + "target": 114, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.5323791503906 + }, + { + "id": "e325", + "source": 114, + "target": 90, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.9858703613281 + }, + { + "id": "e326", + "source": 90, + "target": 119, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -397.0319519042969 + }, + { + "id": "e327", + "source": 119, + "target": 118, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -347.255615234375 + }, + { + "id": "e328", + "source": 120, + "target": 116, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 118.27772521972656 + }, + { + "id": "e329", + "source": 116, + "target": 118, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 182.59603881835938 + }, + { + "id": "e330", + "source": 118, + "target": 121, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 233.33139038085938 + }, + { + "id": "e331", + "source": 121, + "target": 120, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 95.42484283447266 + }, + { + "id": "e332", + "source": 92, + "target": 117, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -339.1669006347656 + }, + { + "id": "e333", + "source": 117, + "target": 120, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -399.6603088378906 + }, + { + "id": "e334", + "source": 120, + "target": 122, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.3307800292969 + }, + { + "id": "e335", + "source": 122, + "target": 92, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.0900573730469 + }, + { + "id": "e336", + "source": 119, + "target": 93, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -310.6617126464844 + }, + { + "id": "e337", + "source": 93, + "target": 122, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -279.9124450683594 + }, + { + "id": "e338", + "source": 122, + "target": 121, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -225.6521759033203 + }, + { + "id": "e339", + "source": 121, + "target": 119, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.77264404296875 + }, + { + "id": "e340", + "source": 123, + "target": 119, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -401.4304504394531 + }, + { + "id": "e341", + "source": 119, + "target": 95, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.5188903808594 + }, + { + "id": "e342", + "source": 95, + "target": 124, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.9801940917969 + }, + { + "id": "e343", + "source": 124, + "target": 123, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -285.26171875 + }, + { + "id": "e344", + "source": 125, + "target": 121, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 164.20742797851562 + }, + { + "id": "e345", + "source": 121, + "target": 123, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 182.64556884765625 + }, + { + "id": "e346", + "source": 123, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.4701690673828 + }, + { + "id": "e347", + "source": 126, + "target": 125, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.26524353027344 + }, + { + "id": "e348", + "source": 97, + "target": 122, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.89007568359375 + }, + { + "id": "e349", + "source": 122, + "target": 125, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -396.48272705078125 + }, + { + "id": "e350", + "source": 125, + "target": 127, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -276.8791198730469 + }, + { + "id": "e351", + "source": 127, + "target": 97, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -270.6961364746094 + }, + { + "id": "e352", + "source": 124, + "target": 98, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -279.7339172363281 + }, + { + "id": "e353", + "source": 98, + "target": 127, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -241.42416381835938 + }, + { + "id": "e354", + "source": 127, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -219.9418487548828 + }, + { + "id": "e355", + "source": 126, + "target": 124, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.88519287109375 + }, + { + "id": "e356", + "source": 128, + "target": 129, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -158.86463928222656 + }, + { + "id": "e357", + "source": 129, + "target": 100, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -351.5798034667969 + }, + { + "id": "e358", + "source": 100, + "target": 130, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.33392333984375 + }, + { + "id": "e359", + "source": 130, + "target": 128, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -301.51080322265625 + }, + { + "id": "e360", + "source": 131, + "target": 132, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -35.72393035888672 + }, + { + "id": "e361", + "source": 132, + "target": 128, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 144.92771911621094 + }, + { + "id": "e362", + "source": 128, + "target": 133, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 122.10501098632812 + }, + { + "id": "e363", + "source": 133, + "target": 131, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 127.99420166015625 + }, + { + "id": "e364", + "source": 103, + "target": 134, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -359.4593505859375 + }, + { + "id": "e365", + "source": 134, + "target": 131, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -110.1958999633789 + }, + { + "id": "e366", + "source": 131, + "target": 135, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -273.1029357910156 + }, + { + "id": "e367", + "source": 135, + "target": 103, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -333.9443054199219 + }, + { + "id": "e368", + "source": 132, + "target": 134, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -60.71269989013672 + }, + { + "id": "e369", + "source": 134, + "target": 104, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.79852294921875 + }, + { + "id": "e370", + "source": 104, + "target": 129, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.0865478515625 + }, + { + "id": "e371", + "source": 129, + "target": 132, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -233.8688201904297 + }, + { + "id": "e372", + "source": 130, + "target": 105, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -301.82147216796875 + }, + { + "id": "e373", + "source": 105, + "target": 135, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -318.1784973144531 + }, + { + "id": "e374", + "source": 135, + "target": 133, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -102.23804473876953 + }, + { + "id": "e375", + "source": 133, + "target": 130, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -267.0370178222656 + }, + { + "id": "e376", + "source": 136, + "target": 130, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -215.4828338623047 + }, + { + "id": "e377", + "source": 130, + "target": 108, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -403.1134338378906 + }, + { + "id": "e378", + "source": 108, + "target": 137, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.9307861328125 + }, + { + "id": "e379", + "source": 137, + "target": 136, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -245.0057373046875 + }, + { + "id": "e380", + "source": 138, + "target": 133, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 34.101131439208984 + }, + { + "id": "e381", + "source": 133, + "target": 136, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.76075744628906 + }, + { + "id": "e382", + "source": 136, + "target": 139, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 146.64736938476562 + }, + { + "id": "e383", + "source": 139, + "target": 138, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 87.09632873535156 + }, + { + "id": "e384", + "source": 110, + "target": 135, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -406.9765319824219 + }, + { + "id": "e385", + "source": 135, + "target": 138, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -180.07997131347656 + }, + { + "id": "e386", + "source": 138, + "target": 140, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -233.24058532714844 + }, + { + "id": "e387", + "source": 140, + "target": 110, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -349.333251953125 + }, + { + "id": "e388", + "source": 137, + "target": 111, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -300.4674377441406 + }, + { + "id": "e389", + "source": 111, + "target": 140, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.9964904785156 + }, + { + "id": "e390", + "source": 140, + "target": 139, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -99.20890808105469 + }, + { + "id": "e391", + "source": 139, + "target": 137, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -271.845947265625 + }, + { + "id": "e392", + "source": 141, + "target": 137, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -224.99798583984375 + }, + { + "id": "e393", + "source": 137, + "target": 113, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.2207946777344 + }, + { + "id": "e394", + "source": 113, + "target": 142, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.2207946777344 + }, + { + "id": "e395", + "source": 142, + "target": 141, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -224.99798583984375 + }, + { + "id": "e396", + "source": 143, + "target": 139, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 61.18206787109375 + }, + { + "id": "e397", + "source": 139, + "target": 141, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 173.3158416748047 + }, + { + "id": "e398", + "source": 141, + "target": 144, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 173.3158416748047 + }, + { + "id": "e399", + "source": 144, + "target": 143, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 61.18206787109375 + }, + { + "id": "e400", + "source": 115, + "target": 140, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.6365051269531 + }, + { + "id": "e401", + "source": 140, + "target": 143, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -206.90562438964844 + }, + { + "id": "e402", + "source": 143, + "target": 145, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -206.90562438964844 + }, + { + "id": "e403", + "source": 145, + "target": 115, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.6365051269531 + }, + { + "id": "e404", + "source": 142, + "target": 116, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -300.4674377441406 + }, + { + "id": "e405", + "source": 116, + "target": 145, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.9964904785156 + }, + { + "id": "e406", + "source": 145, + "target": 144, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -99.20890808105469 + }, + { + "id": "e407", + "source": 144, + "target": 142, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -271.845947265625 + }, + { + "id": "e408", + "source": 146, + "target": 142, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -245.0057373046875 + }, + { + "id": "e409", + "source": 142, + "target": 118, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.9307861328125 + }, + { + "id": "e410", + "source": 118, + "target": 147, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -403.1134338378906 + }, + { + "id": "e411", + "source": 147, + "target": 146, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -215.4828338623047 + }, + { + "id": "e412", + "source": 148, + "target": 144, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 87.09632873535156 + }, + { + "id": "e413", + "source": 144, + "target": 146, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 146.64736938476562 + }, + { + "id": "e414", + "source": 146, + "target": 149, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.76075744628906 + }, + { + "id": "e415", + "source": 149, + "target": 148, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 34.101131439208984 + }, + { + "id": "e416", + "source": 120, + "target": 145, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -349.333251953125 + }, + { + "id": "e417", + "source": 145, + "target": 148, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -233.24058532714844 + }, + { + "id": "e418", + "source": 148, + "target": 150, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -180.07997131347656 + }, + { + "id": "e419", + "source": 150, + "target": 120, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -406.9765319824219 + }, + { + "id": "e420", + "source": 147, + "target": 121, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -301.82147216796875 + }, + { + "id": "e421", + "source": 121, + "target": 150, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -318.1784973144531 + }, + { + "id": "e422", + "source": 150, + "target": 149, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -102.23804473876953 + }, + { + "id": "e423", + "source": 149, + "target": 147, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -267.0370178222656 + }, + { + "id": "e424", + "source": 151, + "target": 147, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -301.51080322265625 + }, + { + "id": "e425", + "source": 147, + "target": 123, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.33392333984375 + }, + { + "id": "e426", + "source": 123, + "target": 152, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -351.5798034667969 + }, + { + "id": "e427", + "source": 152, + "target": 151, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -158.86463928222656 + }, + { + "id": "e428", + "source": 153, + "target": 149, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 127.99420166015625 + }, + { + "id": "e429", + "source": 149, + "target": 151, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 122.10501098632812 + }, + { + "id": "e430", + "source": 151, + "target": 154, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 144.92771911621094 + }, + { + "id": "e431", + "source": 154, + "target": 153, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -35.72393035888672 + }, + { + "id": "e432", + "source": 125, + "target": 150, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -333.9443054199219 + }, + { + "id": "e433", + "source": 150, + "target": 153, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -273.1029357910156 + }, + { + "id": "e434", + "source": 153, + "target": 155, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -110.1958999633789 + }, + { + "id": "e435", + "source": 155, + "target": 125, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -359.4593505859375 + }, + { + "id": "e436", + "source": 152, + "target": 126, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.0865478515625 + }, + { + "id": "e437", + "source": 126, + "target": 155, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.79852294921875 + }, + { + "id": "e438", + "source": 155, + "target": 154, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -60.71269989013672 + }, + { + "id": "e439", + "source": 154, + "target": 152, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -233.8688201904297 + }, + { + "id": "e440", + "source": 156, + "target": 157, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e441", + "source": 157, + "target": 0, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e442", + "source": 0, + "target": 158, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e443", + "source": 158, + "target": 156, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e444", + "source": 159, + "target": 160, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -379.99847412109375 + }, + { + "id": "e445", + "source": 160, + "target": 156, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -201.01658630371094 + }, + { + "id": "e446", + "source": 156, + "target": 161, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -452.4705810546875 + }, + { + "id": "e447", + "source": 161, + "target": 159, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -287.78607177734375 + }, + { + "id": "e448", + "source": 4, + "target": 162, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.36783599853516 + }, + { + "id": "e449", + "source": 162, + "target": 159, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 106.49797058105469 + }, + { + "id": "e450", + "source": 159, + "target": 163, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 132.876953125 + }, + { + "id": "e451", + "source": 163, + "target": 4, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 186.04214477539062 + }, + { + "id": "e452", + "source": 162, + "target": 5, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -440.4598388671875 + }, + { + "id": "e453", + "source": 5, + "target": 157, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.46551513671875 + }, + { + "id": "e454", + "source": 157, + "target": 160, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -474.7087707519531 + }, + { + "id": "e455", + "source": 160, + "target": 162, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -322.75506591796875 + }, + { + "id": "e456", + "source": 161, + "target": 158, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -409.5457458496094 + }, + { + "id": "e457", + "source": 158, + "target": 6, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -284.8054504394531 + }, + { + "id": "e458", + "source": 6, + "target": 163, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -448.890380859375 + }, + { + "id": "e459", + "source": 163, + "target": 161, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -313.4544982910156 + }, + { + "id": "e460", + "source": 164, + "target": 158, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e461", + "source": 158, + "target": 12, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e462", + "source": 12, + "target": 165, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e463", + "source": 165, + "target": 164, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e464", + "source": 166, + "target": 161, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -435.65484619140625 + }, + { + "id": "e465", + "source": 161, + "target": 164, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -300.3538818359375 + }, + { + "id": "e466", + "source": 164, + "target": 167, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.80865478515625 + }, + { + "id": "e467", + "source": 167, + "target": 166, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.29144287109375 + }, + { + "id": "e468", + "source": 15, + "target": 163, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 153.10464477539062 + }, + { + "id": "e469", + "source": 163, + "target": 166, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 147.25387573242188 + }, + { + "id": "e470", + "source": 166, + "target": 168, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 115.9503402709961 + }, + { + "id": "e471", + "source": 168, + "target": 15, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 157.53778076171875 + }, + { + "id": "e472", + "source": 167, + "target": 165, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -400.2062683105469 + }, + { + "id": "e473", + "source": 165, + "target": 16, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -280.0675354003906 + }, + { + "id": "e474", + "source": 16, + "target": 168, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -439.4637756347656 + }, + { + "id": "e475", + "source": 168, + "target": 167, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.185546875 + }, + { + "id": "e476", + "source": 169, + "target": 165, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e477", + "source": 165, + "target": 20, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e478", + "source": 20, + "target": 170, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e479", + "source": 170, + "target": 169, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e480", + "source": 171, + "target": 167, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -381.53228759765625 + }, + { + "id": "e481", + "source": 167, + "target": 169, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.813232421875 + }, + { + "id": "e482", + "source": 169, + "target": 172, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.813232421875 + }, + { + "id": "e483", + "source": 172, + "target": 171, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -381.53228759765625 + }, + { + "id": "e484", + "source": 23, + "target": 168, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 142.31558227539062 + }, + { + "id": "e485", + "source": 168, + "target": 171, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.23261260986328 + }, + { + "id": "e486", + "source": 171, + "target": 173, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.23261260986328 + }, + { + "id": "e487", + "source": 173, + "target": 23, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 142.31558227539062 + }, + { + "id": "e488", + "source": 172, + "target": 170, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -400.2062683105469 + }, + { + "id": "e489", + "source": 170, + "target": 24, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -280.0675354003906 + }, + { + "id": "e490", + "source": 24, + "target": 173, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -439.4637756347656 + }, + { + "id": "e491", + "source": 173, + "target": 172, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.185546875 + }, + { + "id": "e492", + "source": 174, + "target": 170, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e493", + "source": 170, + "target": 28, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e494", + "source": 28, + "target": 175, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e495", + "source": 175, + "target": 174, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e496", + "source": 176, + "target": 172, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.29144287109375 + }, + { + "id": "e497", + "source": 172, + "target": 174, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.80865478515625 + }, + { + "id": "e498", + "source": 174, + "target": 177, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -300.3538818359375 + }, + { + "id": "e499", + "source": 177, + "target": 176, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -435.65484619140625 + }, + { + "id": "e500", + "source": 31, + "target": 173, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 157.53778076171875 + }, + { + "id": "e501", + "source": 173, + "target": 176, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 115.9503402709961 + }, + { + "id": "e502", + "source": 176, + "target": 178, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 147.25387573242188 + }, + { + "id": "e503", + "source": 178, + "target": 31, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 153.10464477539062 + }, + { + "id": "e504", + "source": 177, + "target": 175, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -409.5457458496094 + }, + { + "id": "e505", + "source": 175, + "target": 32, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -284.8054504394531 + }, + { + "id": "e506", + "source": 32, + "target": 178, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -448.890380859375 + }, + { + "id": "e507", + "source": 178, + "target": 177, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -313.4544982910156 + }, + { + "id": "e508", + "source": 179, + "target": 175, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e509", + "source": 175, + "target": 36, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e510", + "source": 36, + "target": 180, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e511", + "source": 180, + "target": 179, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e512", + "source": 181, + "target": 177, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -287.78607177734375 + }, + { + "id": "e513", + "source": 177, + "target": 179, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -452.4705810546875 + }, + { + "id": "e514", + "source": 179, + "target": 182, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -201.01658630371094 + }, + { + "id": "e515", + "source": 182, + "target": 181, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -379.99847412109375 + }, + { + "id": "e516", + "source": 39, + "target": 178, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 186.04214477539062 + }, + { + "id": "e517", + "source": 178, + "target": 181, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 132.876953125 + }, + { + "id": "e518", + "source": 181, + "target": 183, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 106.49797058105469 + }, + { + "id": "e519", + "source": 183, + "target": 39, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.36783599853516 + }, + { + "id": "e520", + "source": 182, + "target": 180, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -474.7087707519531 + }, + { + "id": "e521", + "source": 180, + "target": 40, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.46551513671875 + }, + { + "id": "e522", + "source": 40, + "target": 183, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -440.4598388671875 + }, + { + "id": "e523", + "source": 183, + "target": 182, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -322.75506591796875 + }, + { + "id": "e524", + "source": 184, + "target": 185, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.4554138183594 + }, + { + "id": "e525", + "source": 185, + "target": 159, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -271.6195983886719 + }, + { + "id": "e526", + "source": 159, + "target": 186, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -397.9407653808594 + }, + { + "id": "e527", + "source": 186, + "target": 184, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.81890869140625 + }, + { + "id": "e528", + "source": 44, + "target": 187, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 135.75743103027344 + }, + { + "id": "e529", + "source": 187, + "target": 184, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 151.50775146484375 + }, + { + "id": "e530", + "source": 184, + "target": 188, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 187.51873779296875 + }, + { + "id": "e531", + "source": 188, + "target": 44, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 242.25247192382812 + }, + { + "id": "e532", + "source": 187, + "target": 45, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -329.5719909667969 + }, + { + "id": "e533", + "source": 45, + "target": 162, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -316.4200744628906 + }, + { + "id": "e534", + "source": 162, + "target": 185, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.798583984375 + }, + { + "id": "e535", + "source": 185, + "target": 187, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -334.2796630859375 + }, + { + "id": "e536", + "source": 186, + "target": 163, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -396.20904541015625 + }, + { + "id": "e537", + "source": 163, + "target": 46, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -332.7845153808594 + }, + { + "id": "e538", + "source": 46, + "target": 188, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.4205017089844 + }, + { + "id": "e539", + "source": 188, + "target": 186, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -344.542236328125 + }, + { + "id": "e540", + "source": 189, + "target": 186, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.5644836425781 + }, + { + "id": "e541", + "source": 186, + "target": 166, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -355.328369140625 + }, + { + "id": "e542", + "source": 166, + "target": 190, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.84735107421875 + }, + { + "id": "e543", + "source": 190, + "target": 189, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.3588562011719 + }, + { + "id": "e544", + "source": 52, + "target": 188, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.7158966064453 + }, + { + "id": "e545", + "source": 188, + "target": 189, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 217.52716064453125 + }, + { + "id": "e546", + "source": 189, + "target": 191, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 184.69715881347656 + }, + { + "id": "e547", + "source": 191, + "target": 52, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 224.97789001464844 + }, + { + "id": "e548", + "source": 190, + "target": 168, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -391.6830749511719 + }, + { + "id": "e549", + "source": 168, + "target": 53, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.7752990722656 + }, + { + "id": "e550", + "source": 53, + "target": 191, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.7701721191406 + }, + { + "id": "e551", + "source": 191, + "target": 190, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.5722351074219 + }, + { + "id": "e552", + "source": 192, + "target": 190, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.7879638671875 + }, + { + "id": "e553", + "source": 190, + "target": 171, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -378.4365539550781 + }, + { + "id": "e554", + "source": 171, + "target": 193, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -378.4365539550781 + }, + { + "id": "e555", + "source": 193, + "target": 192, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.7879638671875 + }, + { + "id": "e556", + "source": 57, + "target": 191, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 204.4996795654297 + }, + { + "id": "e557", + "source": 191, + "target": 192, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.2138671875 + }, + { + "id": "e558", + "source": 192, + "target": 194, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.2138671875 + }, + { + "id": "e559", + "source": 194, + "target": 57, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 204.4996795654297 + }, + { + "id": "e560", + "source": 193, + "target": 173, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -391.6830749511719 + }, + { + "id": "e561", + "source": 173, + "target": 58, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.7752990722656 + }, + { + "id": "e562", + "source": 58, + "target": 194, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.7701721191406 + }, + { + "id": "e563", + "source": 194, + "target": 193, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.5722351074219 + }, + { + "id": "e564", + "source": 195, + "target": 193, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.3588562011719 + }, + { + "id": "e565", + "source": 193, + "target": 176, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.84735107421875 + }, + { + "id": "e566", + "source": 176, + "target": 196, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -355.328369140625 + }, + { + "id": "e567", + "source": 196, + "target": 195, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.5644836425781 + }, + { + "id": "e568", + "source": 62, + "target": 194, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 224.97789001464844 + }, + { + "id": "e569", + "source": 194, + "target": 195, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 184.69715881347656 + }, + { + "id": "e570", + "source": 195, + "target": 197, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 217.52716064453125 + }, + { + "id": "e571", + "source": 197, + "target": 62, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.7158966064453 + }, + { + "id": "e572", + "source": 196, + "target": 178, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -396.20904541015625 + }, + { + "id": "e573", + "source": 178, + "target": 63, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -332.7845153808594 + }, + { + "id": "e574", + "source": 63, + "target": 197, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.4205017089844 + }, + { + "id": "e575", + "source": 197, + "target": 196, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -344.542236328125 + }, + { + "id": "e576", + "source": 198, + "target": 196, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.81890869140625 + }, + { + "id": "e577", + "source": 196, + "target": 181, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -397.9407653808594 + }, + { + "id": "e578", + "source": 181, + "target": 199, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -271.6195983886719 + }, + { + "id": "e579", + "source": 199, + "target": 198, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.4554138183594 + }, + { + "id": "e580", + "source": 67, + "target": 197, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 242.25247192382812 + }, + { + "id": "e581", + "source": 197, + "target": 198, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 187.51873779296875 + }, + { + "id": "e582", + "source": 198, + "target": 200, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 151.50775146484375 + }, + { + "id": "e583", + "source": 200, + "target": 67, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 135.75743103027344 + }, + { + "id": "e584", + "source": 199, + "target": 183, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.798583984375 + }, + { + "id": "e585", + "source": 183, + "target": 68, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -316.4200744628906 + }, + { + "id": "e586", + "source": 68, + "target": 200, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -329.5719909667969 + }, + { + "id": "e587", + "source": 200, + "target": 199, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -334.2796630859375 + }, + { + "id": "e588", + "source": 201, + "target": 202, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -299.03411865234375 + }, + { + "id": "e589", + "source": 202, + "target": 184, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.3849182128906 + }, + { + "id": "e590", + "source": 184, + "target": 203, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.5876770019531 + }, + { + "id": "e591", + "source": 203, + "target": 201, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.2357482910156 + }, + { + "id": "e592", + "source": 72, + "target": 204, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 140.8145294189453 + }, + { + "id": "e593", + "source": 204, + "target": 201, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 157.63160705566406 + }, + { + "id": "e594", + "source": 201, + "target": 205, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.53433227539062 + }, + { + "id": "e595", + "source": 205, + "target": 72, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 250.51260375976562 + }, + { + "id": "e596", + "source": 204, + "target": 73, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -298.8392639160156 + }, + { + "id": "e597", + "source": 73, + "target": 187, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.040283203125 + }, + { + "id": "e598", + "source": 187, + "target": 202, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.17742919921875 + }, + { + "id": "e599", + "source": 202, + "target": 204, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -354.0624084472656 + }, + { + "id": "e600", + "source": 203, + "target": 188, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.1856384277344 + }, + { + "id": "e601", + "source": 188, + "target": 74, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.4838562011719 + }, + { + "id": "e602", + "source": 74, + "target": 205, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -329.63543701171875 + }, + { + "id": "e603", + "source": 205, + "target": 203, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.0893859863281 + }, + { + "id": "e604", + "source": 206, + "target": 203, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.63922119140625 + }, + { + "id": "e605", + "source": 203, + "target": 189, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.93658447265625 + }, + { + "id": "e606", + "source": 189, + "target": 207, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.5587158203125 + }, + { + "id": "e607", + "source": 207, + "target": 206, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.7561950683594 + }, + { + "id": "e608", + "source": 80, + "target": 205, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 207.65541076660156 + }, + { + "id": "e609", + "source": 205, + "target": 206, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 231.13621520996094 + }, + { + "id": "e610", + "source": 206, + "target": 208, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.91021728515625 + }, + { + "id": "e611", + "source": 208, + "target": 80, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 237.10772705078125 + }, + { + "id": "e612", + "source": 207, + "target": 191, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.16650390625 + }, + { + "id": "e613", + "source": 191, + "target": 81, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.0514221191406 + }, + { + "id": "e614", + "source": 81, + "target": 208, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -342.9756774902344 + }, + { + "id": "e615", + "source": 208, + "target": 207, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -367.2653503417969 + }, + { + "id": "e616", + "source": 209, + "target": 207, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.6018371582031 + }, + { + "id": "e617", + "source": 207, + "target": 192, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -391.6108093261719 + }, + { + "id": "e618", + "source": 192, + "target": 210, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -391.6108093261719 + }, + { + "id": "e619", + "source": 210, + "target": 209, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.6018371582031 + }, + { + "id": "e620", + "source": 85, + "target": 208, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 216.1576385498047 + }, + { + "id": "e621", + "source": 208, + "target": 209, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 214.50914001464844 + }, + { + "id": "e622", + "source": 209, + "target": 211, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 214.50914001464844 + }, + { + "id": "e623", + "source": 211, + "target": 85, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 216.1576385498047 + }, + { + "id": "e624", + "source": 210, + "target": 194, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.16650390625 + }, + { + "id": "e625", + "source": 194, + "target": 86, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.0514221191406 + }, + { + "id": "e626", + "source": 86, + "target": 211, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -342.9756774902344 + }, + { + "id": "e627", + "source": 211, + "target": 210, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -367.2653503417969 + }, + { + "id": "e628", + "source": 212, + "target": 210, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.7561950683594 + }, + { + "id": "e629", + "source": 210, + "target": 195, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.5587158203125 + }, + { + "id": "e630", + "source": 195, + "target": 213, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.93658447265625 + }, + { + "id": "e631", + "source": 213, + "target": 212, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.63922119140625 + }, + { + "id": "e632", + "source": 90, + "target": 211, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 237.10772705078125 + }, + { + "id": "e633", + "source": 211, + "target": 212, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.91021728515625 + }, + { + "id": "e634", + "source": 212, + "target": 214, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 231.13621520996094 + }, + { + "id": "e635", + "source": 214, + "target": 90, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 207.65541076660156 + }, + { + "id": "e636", + "source": 213, + "target": 197, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.1856384277344 + }, + { + "id": "e637", + "source": 197, + "target": 91, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.4838562011719 + }, + { + "id": "e638", + "source": 91, + "target": 214, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -329.63543701171875 + }, + { + "id": "e639", + "source": 214, + "target": 213, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.0893859863281 + }, + { + "id": "e640", + "source": 215, + "target": 213, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.2357482910156 + }, + { + "id": "e641", + "source": 213, + "target": 198, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.5876770019531 + }, + { + "id": "e642", + "source": 198, + "target": 216, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.3849182128906 + }, + { + "id": "e643", + "source": 216, + "target": 215, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -299.03411865234375 + }, + { + "id": "e644", + "source": 95, + "target": 214, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 250.51260375976562 + }, + { + "id": "e645", + "source": 214, + "target": 215, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.53433227539062 + }, + { + "id": "e646", + "source": 215, + "target": 217, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 157.63160705566406 + }, + { + "id": "e647", + "source": 217, + "target": 95, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 140.8145294189453 + }, + { + "id": "e648", + "source": 216, + "target": 200, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.17742919921875 + }, + { + "id": "e649", + "source": 200, + "target": 96, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.040283203125 + }, + { + "id": "e650", + "source": 96, + "target": 217, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -298.8392639160156 + }, + { + "id": "e651", + "source": 217, + "target": 216, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -354.0624084472656 + }, + { + "id": "e652", + "source": 218, + "target": 219, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -279.6291809082031 + }, + { + "id": "e653", + "source": 219, + "target": 201, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.2821350097656 + }, + { + "id": "e654", + "source": 201, + "target": 220, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.518798828125 + }, + { + "id": "e655", + "source": 220, + "target": 218, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -400.9755554199219 + }, + { + "id": "e656", + "source": 100, + "target": 221, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 128.50323486328125 + }, + { + "id": "e657", + "source": 221, + "target": 218, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 146.5185089111328 + }, + { + "id": "e658", + "source": 218, + "target": 222, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 185.5278778076172 + }, + { + "id": "e659", + "source": 222, + "target": 100, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 229.29518127441406 + }, + { + "id": "e660", + "source": 221, + "target": 101, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -297.6817932128906 + }, + { + "id": "e661", + "source": 101, + "target": 204, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -355.06256103515625 + }, + { + "id": "e662", + "source": 204, + "target": 219, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -305.961181640625 + }, + { + "id": "e663", + "source": 219, + "target": 221, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -367.93829345703125 + }, + { + "id": "e664", + "source": 220, + "target": 205, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.6925048828125 + }, + { + "id": "e665", + "source": 205, + "target": 102, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.3345642089844 + }, + { + "id": "e666", + "source": 102, + "target": 222, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.8504333496094 + }, + { + "id": "e667", + "source": 222, + "target": 220, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.9497985839844 + }, + { + "id": "e668", + "source": 223, + "target": 220, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.16912841796875 + }, + { + "id": "e669", + "source": 220, + "target": 206, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -404.7060546875 + }, + { + "id": "e670", + "source": 206, + "target": 224, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.461669921875 + }, + { + "id": "e671", + "source": 224, + "target": 223, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.9808349609375 + }, + { + "id": "e672", + "source": 108, + "target": 222, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 187.82078552246094 + }, + { + "id": "e673", + "source": 222, + "target": 223, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 214.8092498779297 + }, + { + "id": "e674", + "source": 223, + "target": 225, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 184.42279052734375 + }, + { + "id": "e675", + "source": 225, + "target": 108, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 216.6497344970703 + }, + { + "id": "e676", + "source": 224, + "target": 208, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -324.8084716796875 + }, + { + "id": "e677", + "source": 208, + "target": 109, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.1105651855469 + }, + { + "id": "e678", + "source": 109, + "target": 225, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -312.5748596191406 + }, + { + "id": "e679", + "source": 225, + "target": 224, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.52044677734375 + }, + { + "id": "e680", + "source": 226, + "target": 224, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.5453186035156 + }, + { + "id": "e681", + "source": 224, + "target": 209, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.9278259277344 + }, + { + "id": "e682", + "source": 209, + "target": 227, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.9278259277344 + }, + { + "id": "e683", + "source": 227, + "target": 226, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.5453186035156 + }, + { + "id": "e684", + "source": 113, + "target": 225, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 196.76100158691406 + }, + { + "id": "e685", + "source": 225, + "target": 226, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.53651428222656 + }, + { + "id": "e686", + "source": 226, + "target": 228, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.53651428222656 + }, + { + "id": "e687", + "source": 228, + "target": 113, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 196.76100158691406 + }, + { + "id": "e688", + "source": 227, + "target": 211, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -324.8084716796875 + }, + { + "id": "e689", + "source": 211, + "target": 114, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.1105651855469 + }, + { + "id": "e690", + "source": 114, + "target": 228, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -312.5748596191406 + }, + { + "id": "e691", + "source": 228, + "target": 227, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.52044677734375 + }, + { + "id": "e692", + "source": 229, + "target": 227, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.9808349609375 + }, + { + "id": "e693", + "source": 227, + "target": 212, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.461669921875 + }, + { + "id": "e694", + "source": 212, + "target": 230, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -404.7060546875 + }, + { + "id": "e695", + "source": 230, + "target": 229, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.16912841796875 + }, + { + "id": "e696", + "source": 118, + "target": 228, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 216.6497344970703 + }, + { + "id": "e697", + "source": 228, + "target": 229, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 184.42279052734375 + }, + { + "id": "e698", + "source": 229, + "target": 231, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 214.8092498779297 + }, + { + "id": "e699", + "source": 231, + "target": 118, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 187.82078552246094 + }, + { + "id": "e700", + "source": 230, + "target": 214, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.6925048828125 + }, + { + "id": "e701", + "source": 214, + "target": 119, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.3345642089844 + }, + { + "id": "e702", + "source": 119, + "target": 231, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.8504333496094 + }, + { + "id": "e703", + "source": 231, + "target": 230, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.9497985839844 + }, + { + "id": "e704", + "source": 232, + "target": 230, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -400.9755554199219 + }, + { + "id": "e705", + "source": 230, + "target": 215, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.518798828125 + }, + { + "id": "e706", + "source": 215, + "target": 233, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.2821350097656 + }, + { + "id": "e707", + "source": 233, + "target": 232, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -279.6291809082031 + }, + { + "id": "e708", + "source": 123, + "target": 231, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 229.29518127441406 + }, + { + "id": "e709", + "source": 231, + "target": 232, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 185.5278778076172 + }, + { + "id": "e710", + "source": 232, + "target": 234, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 146.5185089111328 + }, + { + "id": "e711", + "source": 234, + "target": 123, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 128.50323486328125 + }, + { + "id": "e712", + "source": 233, + "target": 217, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -305.961181640625 + }, + { + "id": "e713", + "source": 217, + "target": 124, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -355.06256103515625 + }, + { + "id": "e714", + "source": 124, + "target": 234, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -297.6817932128906 + }, + { + "id": "e715", + "source": 234, + "target": 233, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -367.93829345703125 + }, + { + "id": "e716", + "source": 235, + "target": 236, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -153.95716857910156 + }, + { + "id": "e717", + "source": 236, + "target": 218, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.2704162597656 + }, + { + "id": "e718", + "source": 218, + "target": 237, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.0303039550781 + }, + { + "id": "e719", + "source": 237, + "target": 235, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -306.6153564453125 + }, + { + "id": "e720", + "source": 128, + "target": 238, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 64.19703674316406 + }, + { + "id": "e721", + "source": 238, + "target": 235, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 111.14207458496094 + }, + { + "id": "e722", + "source": 235, + "target": 239, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 152.8832244873047 + }, + { + "id": "e723", + "source": 239, + "target": 128, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 197.77662658691406 + }, + { + "id": "e724", + "source": 238, + "target": 129, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -140.8271026611328 + }, + { + "id": "e725", + "source": 129, + "target": 221, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.57525634765625 + }, + { + "id": "e726", + "source": 221, + "target": 236, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -308.98809814453125 + }, + { + "id": "e727", + "source": 236, + "target": 238, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -190.6639404296875 + }, + { + "id": "e728", + "source": 237, + "target": 222, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -304.08978271484375 + }, + { + "id": "e729", + "source": 222, + "target": 130, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.3465881347656 + }, + { + "id": "e730", + "source": 130, + "target": 239, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -175.351806640625 + }, + { + "id": "e731", + "source": 239, + "target": 237, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.4993896484375 + }, + { + "id": "e732", + "source": 240, + "target": 237, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.3822479248047 + }, + { + "id": "e733", + "source": 237, + "target": 223, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -406.8560485839844 + }, + { + "id": "e734", + "source": 223, + "target": 241, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.3282470703125 + }, + { + "id": "e735", + "source": 241, + "target": 240, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -248.18795776367188 + }, + { + "id": "e736", + "source": 136, + "target": 239, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 143.72354125976562 + }, + { + "id": "e737", + "source": 239, + "target": 240, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.1289825439453 + }, + { + "id": "e738", + "source": 240, + "target": 242, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 181.09156799316406 + }, + { + "id": "e739", + "source": 242, + "target": 136, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.70770263671875 + }, + { + "id": "e740", + "source": 241, + "target": 225, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -301.1527099609375 + }, + { + "id": "e741", + "source": 225, + "target": 137, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.9460144042969 + }, + { + "id": "e742", + "source": 137, + "target": 242, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -177.08837890625 + }, + { + "id": "e743", + "source": 242, + "target": 241, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -202.66616821289062 + }, + { + "id": "e744", + "source": 243, + "target": 241, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -226.17967224121094 + }, + { + "id": "e745", + "source": 241, + "target": 226, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.7297668457031 + }, + { + "id": "e746", + "source": 226, + "target": 244, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.7297668457031 + }, + { + "id": "e747", + "source": 244, + "target": 243, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -226.17967224121094 + }, + { + "id": "e748", + "source": 141, + "target": 242, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 174.64768981933594 + }, + { + "id": "e749", + "source": 242, + "target": 243, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 201.37924194335938 + }, + { + "id": "e750", + "source": 243, + "target": 245, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 201.37924194335938 + }, + { + "id": "e751", + "source": 245, + "target": 141, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 174.64768981933594 + }, + { + "id": "e752", + "source": 244, + "target": 228, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -301.1527099609375 + }, + { + "id": "e753", + "source": 228, + "target": 142, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.9460144042969 + }, + { + "id": "e754", + "source": 142, + "target": 245, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -177.08837890625 + }, + { + "id": "e755", + "source": 245, + "target": 244, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -202.66616821289062 + }, + { + "id": "e756", + "source": 246, + "target": 244, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -248.18795776367188 + }, + { + "id": "e757", + "source": 244, + "target": 229, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.3282470703125 + }, + { + "id": "e758", + "source": 229, + "target": 247, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -406.8560485839844 + }, + { + "id": "e759", + "source": 247, + "target": 246, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.3822479248047 + }, + { + "id": "e760", + "source": 146, + "target": 245, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.70770263671875 + }, + { + "id": "e761", + "source": 245, + "target": 246, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 181.09156799316406 + }, + { + "id": "e762", + "source": 246, + "target": 248, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.1289825439453 + }, + { + "id": "e763", + "source": 248, + "target": 146, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 143.72354125976562 + }, + { + "id": "e764", + "source": 247, + "target": 231, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -304.08978271484375 + }, + { + "id": "e765", + "source": 231, + "target": 147, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.3465881347656 + }, + { + "id": "e766", + "source": 147, + "target": 248, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -175.351806640625 + }, + { + "id": "e767", + "source": 248, + "target": 247, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.4993896484375 + }, + { + "id": "e768", + "source": 249, + "target": 247, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -306.6153564453125 + }, + { + "id": "e769", + "source": 247, + "target": 232, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.0303039550781 + }, + { + "id": "e770", + "source": 232, + "target": 250, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.2704162597656 + }, + { + "id": "e771", + "source": 250, + "target": 249, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -153.95716857910156 + }, + { + "id": "e772", + "source": 151, + "target": 248, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 197.77662658691406 + }, + { + "id": "e773", + "source": 248, + "target": 249, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 152.8832244873047 + }, + { + "id": "e774", + "source": 249, + "target": 251, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 111.14207458496094 + }, + { + "id": "e775", + "source": 251, + "target": 151, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 64.19703674316406 + }, + { + "id": "e776", + "source": 250, + "target": 234, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -308.98809814453125 + }, + { + "id": "e777", + "source": 234, + "target": 152, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.57525634765625 + }, + { + "id": "e778", + "source": 152, + "target": 251, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -140.8271026611328 + }, + { + "id": "e779", + "source": 251, + "target": 250, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -190.6639404296875 + }, + { + "id": "e780", + "source": 252, + "target": 253, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e781", + "source": 253, + "target": 156, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e782", + "source": 156, + "target": 254, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e783", + "source": 254, + "target": 252, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e784", + "source": 255, + "target": 256, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -379.99847412109375 + }, + { + "id": "e785", + "source": 256, + "target": 252, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -201.01658630371094 + }, + { + "id": "e786", + "source": 252, + "target": 257, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -452.4705810546875 + }, + { + "id": "e787", + "source": 257, + "target": 255, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -287.78607177734375 + }, + { + "id": "e788", + "source": 159, + "target": 258, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 101.62273406982422 + }, + { + "id": "e789", + "source": 258, + "target": 255, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 101.62273406982422 + }, + { + "id": "e790", + "source": 255, + "target": 259, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.7264404296875 + }, + { + "id": "e791", + "source": 259, + "target": 159, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.7264404296875 + }, + { + "id": "e792", + "source": 258, + "target": 160, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.1542053222656 + }, + { + "id": "e793", + "source": 160, + "target": 253, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -413.82373046875 + }, + { + "id": "e794", + "source": 253, + "target": 256, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -413.82373046875 + }, + { + "id": "e795", + "source": 256, + "target": 258, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.1542053222656 + }, + { + "id": "e796", + "source": 257, + "target": 254, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.27874755859375 + }, + { + "id": "e797", + "source": 254, + "target": 161, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.27874755859375 + }, + { + "id": "e798", + "source": 161, + "target": 259, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -380.1417236328125 + }, + { + "id": "e799", + "source": 259, + "target": 257, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -380.1417236328125 + }, + { + "id": "e800", + "source": 260, + "target": 254, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e801", + "source": 254, + "target": 164, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e802", + "source": 164, + "target": 261, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e803", + "source": 261, + "target": 260, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e804", + "source": 262, + "target": 257, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -435.65484619140625 + }, + { + "id": "e805", + "source": 257, + "target": 260, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -300.3538818359375 + }, + { + "id": "e806", + "source": 260, + "target": 263, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.80865478515625 + }, + { + "id": "e807", + "source": 263, + "target": 262, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.29144287109375 + }, + { + "id": "e808", + "source": 166, + "target": 259, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.6434326171875 + }, + { + "id": "e809", + "source": 259, + "target": 262, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.6434326171875 + }, + { + "id": "e810", + "source": 262, + "target": 264, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.35116577148438 + }, + { + "id": "e811", + "source": 264, + "target": 166, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.35116577148438 + }, + { + "id": "e812", + "source": 263, + "target": 261, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.4156188964844 + }, + { + "id": "e813", + "source": 261, + "target": 167, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.4156188964844 + }, + { + "id": "e814", + "source": 167, + "target": 264, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.38787841796875 + }, + { + "id": "e815", + "source": 264, + "target": 263, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.38787841796875 + }, + { + "id": "e816", + "source": 265, + "target": 261, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e817", + "source": 261, + "target": 169, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e818", + "source": 169, + "target": 266, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e819", + "source": 266, + "target": 265, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e820", + "source": 267, + "target": 263, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -381.53228759765625 + }, + { + "id": "e821", + "source": 263, + "target": 265, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.813232421875 + }, + { + "id": "e822", + "source": 265, + "target": 268, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.813232421875 + }, + { + "id": "e823", + "source": 268, + "target": 267, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -381.53228759765625 + }, + { + "id": "e824", + "source": 171, + "target": 264, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 121.83381652832031 + }, + { + "id": "e825", + "source": 264, + "target": 267, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 121.83381652832031 + }, + { + "id": "e826", + "source": 267, + "target": 269, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 121.83381652832031 + }, + { + "id": "e827", + "source": 269, + "target": 171, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 121.83381652832031 + }, + { + "id": "e828", + "source": 268, + "target": 266, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.4156188964844 + }, + { + "id": "e829", + "source": 266, + "target": 172, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.4156188964844 + }, + { + "id": "e830", + "source": 172, + "target": 269, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.38787841796875 + }, + { + "id": "e831", + "source": 269, + "target": 268, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.38787841796875 + }, + { + "id": "e832", + "source": 270, + "target": 266, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e833", + "source": 266, + "target": 174, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e834", + "source": 174, + "target": 271, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e835", + "source": 271, + "target": 270, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e836", + "source": 272, + "target": 268, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.29144287109375 + }, + { + "id": "e837", + "source": 268, + "target": 270, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.80865478515625 + }, + { + "id": "e838", + "source": 270, + "target": 273, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -300.3538818359375 + }, + { + "id": "e839", + "source": 273, + "target": 272, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -435.65484619140625 + }, + { + "id": "e840", + "source": 176, + "target": 269, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.35116577148438 + }, + { + "id": "e841", + "source": 269, + "target": 272, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.35116577148438 + }, + { + "id": "e842", + "source": 272, + "target": 274, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.6434326171875 + }, + { + "id": "e843", + "source": 274, + "target": 176, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.6434326171875 + }, + { + "id": "e844", + "source": 273, + "target": 271, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.27874755859375 + }, + { + "id": "e845", + "source": 271, + "target": 177, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -343.27874755859375 + }, + { + "id": "e846", + "source": 177, + "target": 274, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -380.1417236328125 + }, + { + "id": "e847", + "source": 274, + "target": 273, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -380.1417236328125 + }, + { + "id": "e848", + "source": 275, + "target": 271, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e849", + "source": 271, + "target": 179, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e850", + "source": 179, + "target": 276, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e851", + "source": 276, + "target": 275, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e852", + "source": 277, + "target": 273, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -287.78607177734375 + }, + { + "id": "e853", + "source": 273, + "target": 275, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -452.4705810546875 + }, + { + "id": "e854", + "source": 275, + "target": 278, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -201.01658630371094 + }, + { + "id": "e855", + "source": 278, + "target": 277, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -379.99847412109375 + }, + { + "id": "e856", + "source": 181, + "target": 274, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.7264404296875 + }, + { + "id": "e857", + "source": 274, + "target": 277, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.7264404296875 + }, + { + "id": "e858", + "source": 277, + "target": 279, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 101.62273406982422 + }, + { + "id": "e859", + "source": 279, + "target": 181, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 101.62273406982422 + }, + { + "id": "e860", + "source": 278, + "target": 276, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -413.82373046875 + }, + { + "id": "e861", + "source": 276, + "target": 182, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -413.82373046875 + }, + { + "id": "e862", + "source": 182, + "target": 279, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.1542053222656 + }, + { + "id": "e863", + "source": 279, + "target": 278, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.1542053222656 + }, + { + "id": "e864", + "source": 280, + "target": 281, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.4554138183594 + }, + { + "id": "e865", + "source": 281, + "target": 255, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -271.6195983886719 + }, + { + "id": "e866", + "source": 255, + "target": 282, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -397.9407653808594 + }, + { + "id": "e867", + "source": 282, + "target": 280, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.81890869140625 + }, + { + "id": "e868", + "source": 184, + "target": 283, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 136.22769165039062 + }, + { + "id": "e869", + "source": 283, + "target": 280, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 136.22769165039062 + }, + { + "id": "e870", + "source": 280, + "target": 284, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 201.18243408203125 + }, + { + "id": "e871", + "source": 284, + "target": 184, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 201.18243408203125 + }, + { + "id": "e872", + "source": 283, + "target": 185, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -356.1022644042969 + }, + { + "id": "e873", + "source": 185, + "target": 258, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.4112854003906 + }, + { + "id": "e874", + "source": 258, + "target": 281, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.4112854003906 + }, + { + "id": "e875", + "source": 281, + "target": 283, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -356.1022644042969 + }, + { + "id": "e876", + "source": 282, + "target": 259, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -366.1112365722656 + }, + { + "id": "e877", + "source": 259, + "target": 186, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -366.1112365722656 + }, + { + "id": "e878", + "source": 186, + "target": 284, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -368.5475158691406 + }, + { + "id": "e879", + "source": 284, + "target": 282, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -368.5475158691406 + }, + { + "id": "e880", + "source": 285, + "target": 282, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.5644836425781 + }, + { + "id": "e881", + "source": 282, + "target": 262, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -355.328369140625 + }, + { + "id": "e882", + "source": 262, + "target": 286, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.84735107421875 + }, + { + "id": "e883", + "source": 286, + "target": 285, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.3588562011719 + }, + { + "id": "e884", + "source": 189, + "target": 284, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.40902709960938 + }, + { + "id": "e885", + "source": 284, + "target": 285, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.40902709960938 + }, + { + "id": "e886", + "source": 285, + "target": 287, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.4073028564453 + }, + { + "id": "e887", + "source": 287, + "target": 189, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.4073028564453 + }, + { + "id": "e888", + "source": 286, + "target": 264, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.52484130859375 + }, + { + "id": "e889", + "source": 264, + "target": 190, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.52484130859375 + }, + { + "id": "e890", + "source": 190, + "target": 287, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.0869140625 + }, + { + "id": "e891", + "source": 287, + "target": 286, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.0869140625 + }, + { + "id": "e892", + "source": 288, + "target": 286, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.7879638671875 + }, + { + "id": "e893", + "source": 286, + "target": 267, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -378.4365539550781 + }, + { + "id": "e894", + "source": 267, + "target": 289, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -378.4365539550781 + }, + { + "id": "e895", + "source": 289, + "target": 288, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.7879638671875 + }, + { + "id": "e896", + "source": 192, + "target": 287, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 195.49838256835938 + }, + { + "id": "e897", + "source": 287, + "target": 288, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 195.49838256835938 + }, + { + "id": "e898", + "source": 288, + "target": 290, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 195.49838256835938 + }, + { + "id": "e899", + "source": 290, + "target": 192, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 195.49838256835938 + }, + { + "id": "e900", + "source": 289, + "target": 269, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.52484130859375 + }, + { + "id": "e901", + "source": 269, + "target": 193, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.52484130859375 + }, + { + "id": "e902", + "source": 193, + "target": 290, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.0869140625 + }, + { + "id": "e903", + "source": 290, + "target": 289, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.0869140625 + }, + { + "id": "e904", + "source": 291, + "target": 289, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.3588562011719 + }, + { + "id": "e905", + "source": 289, + "target": 272, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.84735107421875 + }, + { + "id": "e906", + "source": 272, + "target": 292, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -355.328369140625 + }, + { + "id": "e907", + "source": 292, + "target": 291, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.5644836425781 + }, + { + "id": "e908", + "source": 195, + "target": 290, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.4073028564453 + }, + { + "id": "e909", + "source": 290, + "target": 291, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.4073028564453 + }, + { + "id": "e910", + "source": 291, + "target": 293, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.40902709960938 + }, + { + "id": "e911", + "source": 293, + "target": 195, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.40902709960938 + }, + { + "id": "e912", + "source": 292, + "target": 274, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -366.1112365722656 + }, + { + "id": "e913", + "source": 274, + "target": 196, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -366.1112365722656 + }, + { + "id": "e914", + "source": 196, + "target": 293, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -368.5475158691406 + }, + { + "id": "e915", + "source": 293, + "target": 292, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -368.5475158691406 + }, + { + "id": "e916", + "source": 294, + "target": 292, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.81890869140625 + }, + { + "id": "e917", + "source": 292, + "target": 277, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -397.9407653808594 + }, + { + "id": "e918", + "source": 277, + "target": 295, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -271.6195983886719 + }, + { + "id": "e919", + "source": 295, + "target": 294, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.4554138183594 + }, + { + "id": "e920", + "source": 198, + "target": 293, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 201.18243408203125 + }, + { + "id": "e921", + "source": 293, + "target": 294, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 201.18243408203125 + }, + { + "id": "e922", + "source": 294, + "target": 296, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 136.22769165039062 + }, + { + "id": "e923", + "source": 296, + "target": 198, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 136.22769165039062 + }, + { + "id": "e924", + "source": 295, + "target": 279, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.4112854003906 + }, + { + "id": "e925", + "source": 279, + "target": 199, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.4112854003906 + }, + { + "id": "e926", + "source": 199, + "target": 296, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -356.1022644042969 + }, + { + "id": "e927", + "source": 296, + "target": 295, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -356.1022644042969 + }, + { + "id": "e928", + "source": 297, + "target": 298, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -299.03411865234375 + }, + { + "id": "e929", + "source": 298, + "target": 280, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.3849182128906 + }, + { + "id": "e930", + "source": 280, + "target": 299, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.5876770019531 + }, + { + "id": "e931", + "source": 299, + "target": 297, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.2357482910156 + }, + { + "id": "e932", + "source": 201, + "target": 300, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 143.3675079345703 + }, + { + "id": "e933", + "source": 300, + "target": 297, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 143.3675079345703 + }, + { + "id": "e934", + "source": 297, + "target": 301, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 213.49395751953125 + }, + { + "id": "e935", + "source": 301, + "target": 201, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 213.49395751953125 + }, + { + "id": "e936", + "source": 300, + "target": 202, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.7435302734375 + }, + { + "id": "e937", + "source": 202, + "target": 283, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -346.97991943359375 + }, + { + "id": "e938", + "source": 283, + "target": 298, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -346.97991943359375 + }, + { + "id": "e939", + "source": 298, + "target": 300, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.7435302734375 + }, + { + "id": "e940", + "source": 299, + "target": 284, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -360.27294921875 + }, + { + "id": "e941", + "source": 284, + "target": 203, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -360.27294921875 + }, + { + "id": "e942", + "source": 203, + "target": 301, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -347.9295654296875 + }, + { + "id": "e943", + "source": 301, + "target": 299, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -347.9295654296875 + }, + { + "id": "e944", + "source": 302, + "target": 299, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.63922119140625 + }, + { + "id": "e945", + "source": 299, + "target": 285, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.93658447265625 + }, + { + "id": "e946", + "source": 285, + "target": 303, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.5587158203125 + }, + { + "id": "e947", + "source": 303, + "target": 302, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.7561950683594 + }, + { + "id": "e948", + "source": 206, + "target": 301, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 211.68797302246094 + }, + { + "id": "e949", + "source": 301, + "target": 302, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 211.68797302246094 + }, + { + "id": "e950", + "source": 302, + "target": 304, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 214.77549743652344 + }, + { + "id": "e951", + "source": 304, + "target": 206, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 214.77549743652344 + }, + { + "id": "e952", + "source": 303, + "target": 287, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -366.44012451171875 + }, + { + "id": "e953", + "source": 287, + "target": 207, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -366.44012451171875 + }, + { + "id": "e954", + "source": 207, + "target": 304, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -354.40863037109375 + }, + { + "id": "e955", + "source": 304, + "target": 303, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -354.40863037109375 + }, + { + "id": "e956", + "source": 305, + "target": 303, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.6018371582031 + }, + { + "id": "e957", + "source": 303, + "target": 288, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -391.6108093261719 + }, + { + "id": "e958", + "source": 288, + "target": 306, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -391.6108093261719 + }, + { + "id": "e959", + "source": 306, + "target": 305, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.6018371582031 + }, + { + "id": "e960", + "source": 209, + "target": 304, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 212.1629180908203 + }, + { + "id": "e961", + "source": 304, + "target": 305, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 212.1629180908203 + }, + { + "id": "e962", + "source": 305, + "target": 307, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 212.1629180908203 + }, + { + "id": "e963", + "source": 307, + "target": 209, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 212.1629180908203 + }, + { + "id": "e964", + "source": 306, + "target": 290, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -366.44012451171875 + }, + { + "id": "e965", + "source": 290, + "target": 210, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -366.44012451171875 + }, + { + "id": "e966", + "source": 210, + "target": 307, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -354.40863037109375 + }, + { + "id": "e967", + "source": 307, + "target": 306, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -354.40863037109375 + }, + { + "id": "e968", + "source": 308, + "target": 306, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.7561950683594 + }, + { + "id": "e969", + "source": 306, + "target": 291, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.5587158203125 + }, + { + "id": "e970", + "source": 291, + "target": 309, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.93658447265625 + }, + { + "id": "e971", + "source": 309, + "target": 308, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.63922119140625 + }, + { + "id": "e972", + "source": 212, + "target": 307, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 214.77549743652344 + }, + { + "id": "e973", + "source": 307, + "target": 308, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 214.77549743652344 + }, + { + "id": "e974", + "source": 308, + "target": 310, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 211.68797302246094 + }, + { + "id": "e975", + "source": 310, + "target": 212, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 211.68797302246094 + }, + { + "id": "e976", + "source": 309, + "target": 293, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -360.27294921875 + }, + { + "id": "e977", + "source": 293, + "target": 213, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -360.27294921875 + }, + { + "id": "e978", + "source": 213, + "target": 310, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -347.9295654296875 + }, + { + "id": "e979", + "source": 310, + "target": 309, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -347.9295654296875 + }, + { + "id": "e980", + "source": 311, + "target": 309, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -392.2357482910156 + }, + { + "id": "e981", + "source": 309, + "target": 294, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.5876770019531 + }, + { + "id": "e982", + "source": 294, + "target": 312, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.3849182128906 + }, + { + "id": "e983", + "source": 312, + "target": 311, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -299.03411865234375 + }, + { + "id": "e984", + "source": 215, + "target": 310, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 213.49395751953125 + }, + { + "id": "e985", + "source": 310, + "target": 311, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 213.49395751953125 + }, + { + "id": "e986", + "source": 311, + "target": 313, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 143.3675079345703 + }, + { + "id": "e987", + "source": 313, + "target": 215, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 143.3675079345703 + }, + { + "id": "e988", + "source": 312, + "target": 296, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -346.97991943359375 + }, + { + "id": "e989", + "source": 296, + "target": 216, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -346.97991943359375 + }, + { + "id": "e990", + "source": 216, + "target": 313, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.7435302734375 + }, + { + "id": "e991", + "source": 313, + "target": 312, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.7435302734375 + }, + { + "id": "e992", + "source": 314, + "target": 315, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -279.6291809082031 + }, + { + "id": "e993", + "source": 315, + "target": 297, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.2821350097656 + }, + { + "id": "e994", + "source": 297, + "target": 316, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.518798828125 + }, + { + "id": "e995", + "source": 316, + "target": 314, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -400.9755554199219 + }, + { + "id": "e996", + "source": 218, + "target": 317, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.18502807617188 + }, + { + "id": "e997", + "source": 317, + "target": 314, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.18502807617188 + }, + { + "id": "e998", + "source": 314, + "target": 318, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.25535583496094 + }, + { + "id": "e999", + "source": 318, + "target": 218, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.25535583496094 + }, + { + "id": "e1000", + "source": 317, + "target": 219, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.0556945800781 + }, + { + "id": "e1001", + "source": 219, + "target": 300, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.9953308105469 + }, + { + "id": "e1002", + "source": 300, + "target": 315, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.9953308105469 + }, + { + "id": "e1003", + "source": 315, + "target": 317, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.0556945800781 + }, + { + "id": "e1004", + "source": 316, + "target": 301, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.65289306640625 + }, + { + "id": "e1005", + "source": 301, + "target": 220, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.65289306640625 + }, + { + "id": "e1006", + "source": 220, + "target": 318, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.7375183105469 + }, + { + "id": "e1007", + "source": 318, + "target": 316, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.7375183105469 + }, + { + "id": "e1008", + "source": 319, + "target": 316, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.16912841796875 + }, + { + "id": "e1009", + "source": 316, + "target": 302, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -404.7060546875 + }, + { + "id": "e1010", + "source": 302, + "target": 320, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.461669921875 + }, + { + "id": "e1011", + "source": 320, + "target": 319, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.9808349609375 + }, + { + "id": "e1012", + "source": 223, + "target": 318, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 196.44801330566406 + }, + { + "id": "e1013", + "source": 318, + "target": 319, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 196.44801330566406 + }, + { + "id": "e1014", + "source": 319, + "target": 321, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.9594268798828 + }, + { + "id": "e1015", + "source": 321, + "target": 223, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.9594268798828 + }, + { + "id": "e1016", + "source": 320, + "target": 304, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.6539611816406 + }, + { + "id": "e1017", + "source": 304, + "target": 224, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.6539611816406 + }, + { + "id": "e1018", + "source": 224, + "target": 321, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.8214111328125 + }, + { + "id": "e1019", + "source": 321, + "target": 320, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.8214111328125 + }, + { + "id": "e1020", + "source": 322, + "target": 320, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.5453186035156 + }, + { + "id": "e1021", + "source": 320, + "target": 305, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.9278259277344 + }, + { + "id": "e1022", + "source": 305, + "target": 323, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.9278259277344 + }, + { + "id": "e1023", + "source": 323, + "target": 322, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.5453186035156 + }, + { + "id": "e1024", + "source": 226, + "target": 321, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.09463500976562 + }, + { + "id": "e1025", + "source": 321, + "target": 322, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.09463500976562 + }, + { + "id": "e1026", + "source": 322, + "target": 324, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.09463500976562 + }, + { + "id": "e1027", + "source": 324, + "target": 226, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.09463500976562 + }, + { + "id": "e1028", + "source": 323, + "target": 307, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.6539611816406 + }, + { + "id": "e1029", + "source": 307, + "target": 227, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.6539611816406 + }, + { + "id": "e1030", + "source": 227, + "target": 324, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.8214111328125 + }, + { + "id": "e1031", + "source": 324, + "target": 323, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.8214111328125 + }, + { + "id": "e1032", + "source": 325, + "target": 323, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.9808349609375 + }, + { + "id": "e1033", + "source": 323, + "target": 308, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.461669921875 + }, + { + "id": "e1034", + "source": 308, + "target": 326, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -404.7060546875 + }, + { + "id": "e1035", + "source": 326, + "target": 325, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.16912841796875 + }, + { + "id": "e1036", + "source": 229, + "target": 324, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.9594268798828 + }, + { + "id": "e1037", + "source": 324, + "target": 325, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.9594268798828 + }, + { + "id": "e1038", + "source": 325, + "target": 327, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 196.44801330566406 + }, + { + "id": "e1039", + "source": 327, + "target": 229, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 196.44801330566406 + }, + { + "id": "e1040", + "source": 326, + "target": 310, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.65289306640625 + }, + { + "id": "e1041", + "source": 310, + "target": 230, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.65289306640625 + }, + { + "id": "e1042", + "source": 230, + "target": 327, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.7375183105469 + }, + { + "id": "e1043", + "source": 327, + "target": 326, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.7375183105469 + }, + { + "id": "e1044", + "source": 328, + "target": 326, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -400.9755554199219 + }, + { + "id": "e1045", + "source": 326, + "target": 311, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.518798828125 + }, + { + "id": "e1046", + "source": 311, + "target": 329, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.2821350097656 + }, + { + "id": "e1047", + "source": 329, + "target": 328, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -279.6291809082031 + }, + { + "id": "e1048", + "source": 232, + "target": 327, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.25535583496094 + }, + { + "id": "e1049", + "source": 327, + "target": 328, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.25535583496094 + }, + { + "id": "e1050", + "source": 328, + "target": 330, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.18502807617188 + }, + { + "id": "e1051", + "source": 330, + "target": 232, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.18502807617188 + }, + { + "id": "e1052", + "source": 329, + "target": 313, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.9953308105469 + }, + { + "id": "e1053", + "source": 313, + "target": 233, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.9953308105469 + }, + { + "id": "e1054", + "source": 233, + "target": 330, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.0556945800781 + }, + { + "id": "e1055", + "source": 330, + "target": 329, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.0556945800781 + }, + { + "id": "e1056", + "source": 331, + "target": 332, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -153.95716857910156 + }, + { + "id": "e1057", + "source": 332, + "target": 314, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.2704162597656 + }, + { + "id": "e1058", + "source": 314, + "target": 333, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.0303039550781 + }, + { + "id": "e1059", + "source": 333, + "target": 331, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -306.6153564453125 + }, + { + "id": "e1060", + "source": 235, + "target": 334, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 89.3890380859375 + }, + { + "id": "e1061", + "source": 334, + "target": 331, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 89.3890380859375 + }, + { + "id": "e1062", + "source": 331, + "target": 335, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 175.84262084960938 + }, + { + "id": "e1063", + "source": 335, + "target": 235, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 175.84262084960938 + }, + { + "id": "e1064", + "source": 334, + "target": 236, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.80191040039062 + }, + { + "id": "e1065", + "source": 236, + "target": 317, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -337.0556640625 + }, + { + "id": "e1066", + "source": 317, + "target": 332, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -337.0556640625 + }, + { + "id": "e1067", + "source": 332, + "target": 334, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.80191040039062 + }, + { + "id": "e1068", + "source": 333, + "target": 318, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -327.0177001953125 + }, + { + "id": "e1069", + "source": 318, + "target": 237, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -327.0177001953125 + }, + { + "id": "e1070", + "source": 237, + "target": 335, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -182.88095092773438 + }, + { + "id": "e1071", + "source": 335, + "target": 333, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -182.88095092773438 + }, + { + "id": "e1072", + "source": 336, + "target": 333, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.3822479248047 + }, + { + "id": "e1073", + "source": 333, + "target": 319, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -406.8560485839844 + }, + { + "id": "e1074", + "source": 319, + "target": 337, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.3282470703125 + }, + { + "id": "e1075", + "source": 337, + "target": 336, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -248.18795776367188 + }, + { + "id": "e1076", + "source": 240, + "target": 335, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 176.56747436523438 + }, + { + "id": "e1077", + "source": 335, + "target": 336, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 176.56747436523438 + }, + { + "id": "e1078", + "source": 336, + "target": 338, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 202.2714385986328 + }, + { + "id": "e1079", + "source": 338, + "target": 240, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 202.2714385986328 + }, + { + "id": "e1080", + "source": 337, + "target": 321, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -323.7554626464844 + }, + { + "id": "e1081", + "source": 321, + "target": 241, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -323.7554626464844 + }, + { + "id": "e1082", + "source": 241, + "target": 338, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -181.08335876464844 + }, + { + "id": "e1083", + "source": 338, + "target": 337, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -181.08335876464844 + }, + { + "id": "e1084", + "source": 339, + "target": 337, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -226.17967224121094 + }, + { + "id": "e1085", + "source": 337, + "target": 322, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.7297668457031 + }, + { + "id": "e1086", + "source": 322, + "target": 340, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.7297668457031 + }, + { + "id": "e1087", + "source": 340, + "target": 339, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -226.17967224121094 + }, + { + "id": "e1088", + "source": 243, + "target": 338, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.15391540527344 + }, + { + "id": "e1089", + "source": 338, + "target": 339, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.15391540527344 + }, + { + "id": "e1090", + "source": 339, + "target": 341, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.15391540527344 + }, + { + "id": "e1091", + "source": 341, + "target": 243, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.15391540527344 + }, + { + "id": "e1092", + "source": 340, + "target": 324, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -323.7554626464844 + }, + { + "id": "e1093", + "source": 324, + "target": 244, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -323.7554626464844 + }, + { + "id": "e1094", + "source": 244, + "target": 341, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -181.08335876464844 + }, + { + "id": "e1095", + "source": 341, + "target": 340, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -181.08335876464844 + }, + { + "id": "e1096", + "source": 342, + "target": 340, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -248.18795776367188 + }, + { + "id": "e1097", + "source": 340, + "target": 325, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.3282470703125 + }, + { + "id": "e1098", + "source": 325, + "target": 343, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -406.8560485839844 + }, + { + "id": "e1099", + "source": 343, + "target": 342, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.3822479248047 + }, + { + "id": "e1100", + "source": 246, + "target": 341, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 202.2714385986328 + }, + { + "id": "e1101", + "source": 341, + "target": 342, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 202.2714385986328 + }, + { + "id": "e1102", + "source": 342, + "target": 344, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 176.56747436523438 + }, + { + "id": "e1103", + "source": 344, + "target": 246, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 176.56747436523438 + }, + { + "id": "e1104", + "source": 343, + "target": 327, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -327.0177001953125 + }, + { + "id": "e1105", + "source": 327, + "target": 247, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -327.0177001953125 + }, + { + "id": "e1106", + "source": 247, + "target": 344, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -182.88095092773438 + }, + { + "id": "e1107", + "source": 344, + "target": 343, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -182.88095092773438 + }, + { + "id": "e1108", + "source": 345, + "target": 343, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -306.6153564453125 + }, + { + "id": "e1109", + "source": 343, + "target": 328, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.0303039550781 + }, + { + "id": "e1110", + "source": 328, + "target": 346, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.2704162597656 + }, + { + "id": "e1111", + "source": 346, + "target": 345, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -153.95716857910156 + }, + { + "id": "e1112", + "source": 249, + "target": 344, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 175.84262084960938 + }, + { + "id": "e1113", + "source": 344, + "target": 345, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 175.84262084960938 + }, + { + "id": "e1114", + "source": 345, + "target": 347, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 89.3890380859375 + }, + { + "id": "e1115", + "source": 347, + "target": 249, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 89.3890380859375 + }, + { + "id": "e1116", + "source": 346, + "target": 330, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -337.0556640625 + }, + { + "id": "e1117", + "source": 330, + "target": 250, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -337.0556640625 + }, + { + "id": "e1118", + "source": 250, + "target": 347, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.80191040039062 + }, + { + "id": "e1119", + "source": 347, + "target": 346, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -164.80191040039062 + }, + { + "id": "e1120", + "source": 348, + "target": 349, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1121", + "source": 349, + "target": 252, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1122", + "source": 252, + "target": 350, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1123", + "source": 350, + "target": 348, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1124", + "source": 351, + "target": 352, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -401.7049560546875 + }, + { + "id": "e1125", + "source": 352, + "target": 348, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.17774963378906 + }, + { + "id": "e1126", + "source": 348, + "target": 353, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -472.5869140625 + }, + { + "id": "e1127", + "source": 353, + "target": 351, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.939697265625 + }, + { + "id": "e1128", + "source": 255, + "target": 354, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 106.49797058105469 + }, + { + "id": "e1129", + "source": 354, + "target": 351, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.36783599853516 + }, + { + "id": "e1130", + "source": 351, + "target": 355, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 186.04214477539062 + }, + { + "id": "e1131", + "source": 355, + "target": 255, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 132.876953125 + }, + { + "id": "e1132", + "source": 354, + "target": 256, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -322.75506591796875 + }, + { + "id": "e1133", + "source": 256, + "target": 349, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -474.7087707519531 + }, + { + "id": "e1134", + "source": 349, + "target": 352, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.46551513671875 + }, + { + "id": "e1135", + "source": 352, + "target": 354, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -440.4598388671875 + }, + { + "id": "e1136", + "source": 353, + "target": 350, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -284.8054504394531 + }, + { + "id": "e1137", + "source": 350, + "target": 257, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -409.5457458496094 + }, + { + "id": "e1138", + "source": 257, + "target": 355, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -313.4544982910156 + }, + { + "id": "e1139", + "source": 355, + "target": 353, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -448.890380859375 + }, + { + "id": "e1140", + "source": 356, + "target": 350, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1141", + "source": 350, + "target": 260, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1142", + "source": 260, + "target": 357, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1143", + "source": 357, + "target": 356, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1144", + "source": 358, + "target": 353, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -451.0946044921875 + }, + { + "id": "e1145", + "source": 353, + "target": 356, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -306.20843505859375 + }, + { + "id": "e1146", + "source": 356, + "target": 359, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -405.9900207519531 + }, + { + "id": "e1147", + "source": 359, + "target": 358, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -335.16192626953125 + }, + { + "id": "e1148", + "source": 262, + "target": 355, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 147.25387573242188 + }, + { + "id": "e1149", + "source": 355, + "target": 358, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 153.10464477539062 + }, + { + "id": "e1150", + "source": 358, + "target": 360, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 157.53778076171875 + }, + { + "id": "e1151", + "source": 360, + "target": 262, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 115.9503402709961 + }, + { + "id": "e1152", + "source": 359, + "target": 357, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -280.0675354003906 + }, + { + "id": "e1153", + "source": 357, + "target": 263, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -400.2062683105469 + }, + { + "id": "e1154", + "source": 263, + "target": 360, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.185546875 + }, + { + "id": "e1155", + "source": 360, + "target": 359, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -439.4637756347656 + }, + { + "id": "e1156", + "source": 361, + "target": 357, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1157", + "source": 357, + "target": 265, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1158", + "source": 265, + "target": 362, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1159", + "source": 362, + "target": 361, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1160", + "source": 363, + "target": 359, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -391.7324523925781 + }, + { + "id": "e1161", + "source": 359, + "target": 361, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -352.5620422363281 + }, + { + "id": "e1162", + "source": 361, + "target": 364, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -352.5620422363281 + }, + { + "id": "e1163", + "source": 364, + "target": 363, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -391.7324523925781 + }, + { + "id": "e1164", + "source": 267, + "target": 360, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.23261260986328 + }, + { + "id": "e1165", + "source": 360, + "target": 363, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 142.31558227539062 + }, + { + "id": "e1166", + "source": 363, + "target": 365, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 142.31558227539062 + }, + { + "id": "e1167", + "source": 365, + "target": 267, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.23261260986328 + }, + { + "id": "e1168", + "source": 364, + "target": 362, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -280.0675354003906 + }, + { + "id": "e1169", + "source": 362, + "target": 268, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -400.2062683105469 + }, + { + "id": "e1170", + "source": 268, + "target": 365, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.185546875 + }, + { + "id": "e1171", + "source": 365, + "target": 364, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -439.4637756347656 + }, + { + "id": "e1172", + "source": 366, + "target": 362, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1173", + "source": 362, + "target": 270, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1174", + "source": 270, + "target": 367, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1175", + "source": 367, + "target": 366, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1176", + "source": 368, + "target": 364, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -335.16192626953125 + }, + { + "id": "e1177", + "source": 364, + "target": 366, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -405.9900207519531 + }, + { + "id": "e1178", + "source": 366, + "target": 369, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -306.20843505859375 + }, + { + "id": "e1179", + "source": 369, + "target": 368, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -451.0946044921875 + }, + { + "id": "e1180", + "source": 272, + "target": 365, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 115.9503402709961 + }, + { + "id": "e1181", + "source": 365, + "target": 368, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 157.53778076171875 + }, + { + "id": "e1182", + "source": 368, + "target": 370, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 153.10464477539062 + }, + { + "id": "e1183", + "source": 370, + "target": 272, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 147.25387573242188 + }, + { + "id": "e1184", + "source": 369, + "target": 367, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -284.8054504394531 + }, + { + "id": "e1185", + "source": 367, + "target": 273, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -409.5457458496094 + }, + { + "id": "e1186", + "source": 273, + "target": 370, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -313.4544982910156 + }, + { + "id": "e1187", + "source": 370, + "target": 369, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -448.890380859375 + }, + { + "id": "e1188", + "source": 371, + "target": 367, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1189", + "source": 367, + "target": 275, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1190", + "source": 275, + "target": 372, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1191", + "source": 372, + "target": 371, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1192", + "source": 373, + "target": 369, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.939697265625 + }, + { + "id": "e1193", + "source": 369, + "target": 371, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -472.5869140625 + }, + { + "id": "e1194", + "source": 371, + "target": 374, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.17774963378906 + }, + { + "id": "e1195", + "source": 374, + "target": 373, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -401.7049560546875 + }, + { + "id": "e1196", + "source": 277, + "target": 370, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 132.876953125 + }, + { + "id": "e1197", + "source": 370, + "target": 373, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 186.04214477539062 + }, + { + "id": "e1198", + "source": 373, + "target": 375, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 124.36783599853516 + }, + { + "id": "e1199", + "source": 375, + "target": 277, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 106.49797058105469 + }, + { + "id": "e1200", + "source": 374, + "target": 372, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.46551513671875 + }, + { + "id": "e1201", + "source": 372, + "target": 278, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -474.7087707519531 + }, + { + "id": "e1202", + "source": 278, + "target": 375, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -322.75506591796875 + }, + { + "id": "e1203", + "source": 375, + "target": 374, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -440.4598388671875 + }, + { + "id": "e1204", + "source": 376, + "target": 377, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.3009948730469 + }, + { + "id": "e1205", + "source": 377, + "target": 351, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -284.59722900390625 + }, + { + "id": "e1206", + "source": 351, + "target": 378, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -403.1513671875 + }, + { + "id": "e1207", + "source": 378, + "target": 376, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.2358703613281 + }, + { + "id": "e1208", + "source": 280, + "target": 379, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 151.50775146484375 + }, + { + "id": "e1209", + "source": 379, + "target": 376, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 135.75743103027344 + }, + { + "id": "e1210", + "source": 376, + "target": 380, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 242.25247192382812 + }, + { + "id": "e1211", + "source": 380, + "target": 280, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 187.51873779296875 + }, + { + "id": "e1212", + "source": 379, + "target": 281, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -334.2796630859375 + }, + { + "id": "e1213", + "source": 281, + "target": 354, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.798583984375 + }, + { + "id": "e1214", + "source": 354, + "target": 377, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -316.4200744628906 + }, + { + "id": "e1215", + "source": 377, + "target": 379, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -329.5719909667969 + }, + { + "id": "e1216", + "source": 378, + "target": 355, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -332.7845153808594 + }, + { + "id": "e1217", + "source": 355, + "target": 282, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -396.20904541015625 + }, + { + "id": "e1218", + "source": 282, + "target": 380, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -344.542236328125 + }, + { + "id": "e1219", + "source": 380, + "target": 378, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.4205017089844 + }, + { + "id": "e1220", + "source": 381, + "target": 378, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.936767578125 + }, + { + "id": "e1221", + "source": 378, + "target": 358, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -360.0229187011719 + }, + { + "id": "e1222", + "source": 358, + "target": 382, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -410.7134704589844 + }, + { + "id": "e1223", + "source": 382, + "target": 381, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.88006591796875 + }, + { + "id": "e1224", + "source": 285, + "target": 380, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 217.52716064453125 + }, + { + "id": "e1225", + "source": 380, + "target": 381, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.7158966064453 + }, + { + "id": "e1226", + "source": 381, + "target": 383, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 224.97789001464844 + }, + { + "id": "e1227", + "source": 383, + "target": 285, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 184.69715881347656 + }, + { + "id": "e1228", + "source": 382, + "target": 360, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.7752990722656 + }, + { + "id": "e1229", + "source": 360, + "target": 286, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -391.6830749511719 + }, + { + "id": "e1230", + "source": 286, + "target": 383, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.5722351074219 + }, + { + "id": "e1231", + "source": 383, + "target": 382, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.7701721191406 + }, + { + "id": "e1232", + "source": 384, + "target": 382, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -388.15087890625 + }, + { + "id": "e1233", + "source": 382, + "target": 363, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.113525390625 + }, + { + "id": "e1234", + "source": 363, + "target": 385, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.113525390625 + }, + { + "id": "e1235", + "source": 385, + "target": 384, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -388.15087890625 + }, + { + "id": "e1236", + "source": 288, + "target": 383, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.2138671875 + }, + { + "id": "e1237", + "source": 383, + "target": 384, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 204.4996795654297 + }, + { + "id": "e1238", + "source": 384, + "target": 386, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 204.4996795654297 + }, + { + "id": "e1239", + "source": 386, + "target": 288, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 198.2138671875 + }, + { + "id": "e1240", + "source": 385, + "target": 365, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.7752990722656 + }, + { + "id": "e1241", + "source": 365, + "target": 289, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -391.6830749511719 + }, + { + "id": "e1242", + "source": 289, + "target": 386, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.5722351074219 + }, + { + "id": "e1243", + "source": 386, + "target": 385, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.7701721191406 + }, + { + "id": "e1244", + "source": 387, + "target": 385, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.88006591796875 + }, + { + "id": "e1245", + "source": 385, + "target": 368, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -410.7134704589844 + }, + { + "id": "e1246", + "source": 368, + "target": 388, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -360.0229187011719 + }, + { + "id": "e1247", + "source": 388, + "target": 387, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.936767578125 + }, + { + "id": "e1248", + "source": 291, + "target": 386, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 184.69715881347656 + }, + { + "id": "e1249", + "source": 386, + "target": 387, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 224.97789001464844 + }, + { + "id": "e1250", + "source": 387, + "target": 389, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.7158966064453 + }, + { + "id": "e1251", + "source": 389, + "target": 291, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 217.52716064453125 + }, + { + "id": "e1252", + "source": 388, + "target": 370, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -332.7845153808594 + }, + { + "id": "e1253", + "source": 370, + "target": 292, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -396.20904541015625 + }, + { + "id": "e1254", + "source": 292, + "target": 389, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -344.542236328125 + }, + { + "id": "e1255", + "source": 389, + "target": 388, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.4205017089844 + }, + { + "id": "e1256", + "source": 390, + "target": 388, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.2358703613281 + }, + { + "id": "e1257", + "source": 388, + "target": 373, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -403.1513671875 + }, + { + "id": "e1258", + "source": 373, + "target": 391, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -284.59722900390625 + }, + { + "id": "e1259", + "source": 391, + "target": 390, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.3009948730469 + }, + { + "id": "e1260", + "source": 294, + "target": 389, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 187.51873779296875 + }, + { + "id": "e1261", + "source": 389, + "target": 390, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 242.25247192382812 + }, + { + "id": "e1262", + "source": 390, + "target": 392, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 135.75743103027344 + }, + { + "id": "e1263", + "source": 392, + "target": 294, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 151.50775146484375 + }, + { + "id": "e1264", + "source": 391, + "target": 375, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -316.4200744628906 + }, + { + "id": "e1265", + "source": 375, + "target": 295, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.798583984375 + }, + { + "id": "e1266", + "source": 295, + "target": 392, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -334.2796630859375 + }, + { + "id": "e1267", + "source": 392, + "target": 391, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -329.5719909667969 + }, + { + "id": "e1268", + "source": 393, + "target": 394, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -295.2023620605469 + }, + { + "id": "e1269", + "source": 394, + "target": 376, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -308.8236389160156 + }, + { + "id": "e1270", + "source": 376, + "target": 395, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -363.21502685546875 + }, + { + "id": "e1271", + "source": 395, + "target": 393, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -382.387451171875 + }, + { + "id": "e1272", + "source": 297, + "target": 396, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 157.63160705566406 + }, + { + "id": "e1273", + "source": 396, + "target": 393, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 140.8145294189453 + }, + { + "id": "e1274", + "source": 393, + "target": 397, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 250.51260375976562 + }, + { + "id": "e1275", + "source": 397, + "target": 297, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.53433227539062 + }, + { + "id": "e1276", + "source": 396, + "target": 298, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -354.0624084472656 + }, + { + "id": "e1277", + "source": 298, + "target": 379, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.17742919921875 + }, + { + "id": "e1278", + "source": 379, + "target": 394, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.040283203125 + }, + { + "id": "e1279", + "source": 394, + "target": 396, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -298.8392639160156 + }, + { + "id": "e1280", + "source": 395, + "target": 380, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.4838562011719 + }, + { + "id": "e1281", + "source": 380, + "target": 299, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.1856384277344 + }, + { + "id": "e1282", + "source": 299, + "target": 397, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.0893859863281 + }, + { + "id": "e1283", + "source": 397, + "target": 395, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -329.63543701171875 + }, + { + "id": "e1284", + "source": 398, + "target": 395, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -363.38641357421875 + }, + { + "id": "e1285", + "source": 395, + "target": 381, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -382.2891540527344 + }, + { + "id": "e1286", + "source": 381, + "target": 399, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.40301513671875 + }, + { + "id": "e1287", + "source": 399, + "target": 398, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.4752502441406 + }, + { + "id": "e1288", + "source": 302, + "target": 397, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 231.13621520996094 + }, + { + "id": "e1289", + "source": 397, + "target": 398, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 207.65541076660156 + }, + { + "id": "e1290", + "source": 398, + "target": 400, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 237.10772705078125 + }, + { + "id": "e1291", + "source": 400, + "target": 302, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.91021728515625 + }, + { + "id": "e1292", + "source": 399, + "target": 383, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.0514221191406 + }, + { + "id": "e1293", + "source": 383, + "target": 303, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.16650390625 + }, + { + "id": "e1294", + "source": 303, + "target": 400, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -367.2653503417969 + }, + { + "id": "e1295", + "source": 400, + "target": 399, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -342.9756774902344 + }, + { + "id": "e1296", + "source": 401, + "target": 399, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.4401550292969 + }, + { + "id": "e1297", + "source": 399, + "target": 384, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.10009765625 + }, + { + "id": "e1298", + "source": 384, + "target": 402, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.10009765625 + }, + { + "id": "e1299", + "source": 402, + "target": 401, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.4401550292969 + }, + { + "id": "e1300", + "source": 305, + "target": 400, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 214.50914001464844 + }, + { + "id": "e1301", + "source": 400, + "target": 401, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 216.1576385498047 + }, + { + "id": "e1302", + "source": 401, + "target": 403, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 216.1576385498047 + }, + { + "id": "e1303", + "source": 403, + "target": 305, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 214.50914001464844 + }, + { + "id": "e1304", + "source": 402, + "target": 386, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.0514221191406 + }, + { + "id": "e1305", + "source": 386, + "target": 306, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.16650390625 + }, + { + "id": "e1306", + "source": 306, + "target": 403, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -367.2653503417969 + }, + { + "id": "e1307", + "source": 403, + "target": 402, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -342.9756774902344 + }, + { + "id": "e1308", + "source": 404, + "target": 402, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -385.4752502441406 + }, + { + "id": "e1309", + "source": 402, + "target": 387, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.40301513671875 + }, + { + "id": "e1310", + "source": 387, + "target": 405, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -382.2891540527344 + }, + { + "id": "e1311", + "source": 405, + "target": 404, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -363.38641357421875 + }, + { + "id": "e1312", + "source": 308, + "target": 403, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.91021728515625 + }, + { + "id": "e1313", + "source": 403, + "target": 404, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 237.10772705078125 + }, + { + "id": "e1314", + "source": 404, + "target": 406, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 207.65541076660156 + }, + { + "id": "e1315", + "source": 406, + "target": 308, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 231.13621520996094 + }, + { + "id": "e1316", + "source": 405, + "target": 389, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -357.4838562011719 + }, + { + "id": "e1317", + "source": 389, + "target": 309, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.1856384277344 + }, + { + "id": "e1318", + "source": 309, + "target": 406, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.0893859863281 + }, + { + "id": "e1319", + "source": 406, + "target": 405, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -329.63543701171875 + }, + { + "id": "e1320", + "source": 407, + "target": 405, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -382.387451171875 + }, + { + "id": "e1321", + "source": 405, + "target": 390, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -363.21502685546875 + }, + { + "id": "e1322", + "source": 390, + "target": 408, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -308.8236389160156 + }, + { + "id": "e1323", + "source": 408, + "target": 407, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -295.2023620605469 + }, + { + "id": "e1324", + "source": 311, + "target": 406, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.53433227539062 + }, + { + "id": "e1325", + "source": 406, + "target": 407, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 250.51260375976562 + }, + { + "id": "e1326", + "source": 407, + "target": 409, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 140.8145294189453 + }, + { + "id": "e1327", + "source": 409, + "target": 311, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 157.63160705566406 + }, + { + "id": "e1328", + "source": 408, + "target": 392, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.040283203125 + }, + { + "id": "e1329", + "source": 392, + "target": 312, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -328.17742919921875 + }, + { + "id": "e1330", + "source": 312, + "target": 409, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -354.0624084472656 + }, + { + "id": "e1331", + "source": 409, + "target": 408, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -298.8392639160156 + }, + { + "id": "e1332", + "source": 410, + "target": 411, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -285.26171875 + }, + { + "id": "e1333", + "source": 411, + "target": 393, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.9801940917969 + }, + { + "id": "e1334", + "source": 393, + "target": 412, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.5188903808594 + }, + { + "id": "e1335", + "source": 412, + "target": 410, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -401.4304504394531 + }, + { + "id": "e1336", + "source": 314, + "target": 413, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 146.5185089111328 + }, + { + "id": "e1337", + "source": 413, + "target": 410, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 128.50323486328125 + }, + { + "id": "e1338", + "source": 410, + "target": 414, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 229.29518127441406 + }, + { + "id": "e1339", + "source": 414, + "target": 314, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 185.5278778076172 + }, + { + "id": "e1340", + "source": 413, + "target": 315, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -367.93829345703125 + }, + { + "id": "e1341", + "source": 315, + "target": 396, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -305.961181640625 + }, + { + "id": "e1342", + "source": 396, + "target": 411, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -355.06256103515625 + }, + { + "id": "e1343", + "source": 411, + "target": 413, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -297.6817932128906 + }, + { + "id": "e1344", + "source": 412, + "target": 397, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.3345642089844 + }, + { + "id": "e1345", + "source": 397, + "target": 316, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.6925048828125 + }, + { + "id": "e1346", + "source": 316, + "target": 414, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.9497985839844 + }, + { + "id": "e1347", + "source": 414, + "target": 412, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.8504333496094 + }, + { + "id": "e1348", + "source": 415, + "target": 412, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -347.255615234375 + }, + { + "id": "e1349", + "source": 412, + "target": 398, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -397.0319519042969 + }, + { + "id": "e1350", + "source": 398, + "target": 416, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.9858703613281 + }, + { + "id": "e1351", + "source": 416, + "target": 415, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.5323791503906 + }, + { + "id": "e1352", + "source": 319, + "target": 414, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 214.8092498779297 + }, + { + "id": "e1353", + "source": 414, + "target": 415, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 187.82078552246094 + }, + { + "id": "e1354", + "source": 415, + "target": 417, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 216.6497344970703 + }, + { + "id": "e1355", + "source": 417, + "target": 319, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 184.42279052734375 + }, + { + "id": "e1356", + "source": 416, + "target": 400, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.1105651855469 + }, + { + "id": "e1357", + "source": 400, + "target": 320, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -324.8084716796875 + }, + { + "id": "e1358", + "source": 320, + "target": 417, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.52044677734375 + }, + { + "id": "e1359", + "source": 417, + "target": 416, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -312.5748596191406 + }, + { + "id": "e1360", + "source": 418, + "target": 416, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.768310546875 + }, + { + "id": "e1361", + "source": 416, + "target": 401, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.68853759765625 + }, + { + "id": "e1362", + "source": 401, + "target": 419, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -377.68853759765625 + }, + { + "id": "e1363", + "source": 419, + "target": 418, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.768310546875 + }, + { + "id": "e1364", + "source": 322, + "target": 417, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.53651428222656 + }, + { + "id": "e1365", + "source": 417, + "target": 418, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 196.76100158691406 + }, + { + "id": "e1366", + "source": 418, + "target": 420, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 196.76100158691406 + }, + { + "id": "e1367", + "source": 420, + "target": 322, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.53651428222656 + }, + { + "id": "e1368", + "source": 419, + "target": 403, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.1105651855469 + }, + { + "id": "e1369", + "source": 403, + "target": 323, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -324.8084716796875 + }, + { + "id": "e1370", + "source": 323, + "target": 420, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -361.52044677734375 + }, + { + "id": "e1371", + "source": 420, + "target": 419, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -312.5748596191406 + }, + { + "id": "e1372", + "source": 421, + "target": 419, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -390.5323791503906 + }, + { + "id": "e1373", + "source": 419, + "target": 404, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.9858703613281 + }, + { + "id": "e1374", + "source": 404, + "target": 422, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -397.0319519042969 + }, + { + "id": "e1375", + "source": 422, + "target": 421, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -347.255615234375 + }, + { + "id": "e1376", + "source": 325, + "target": 420, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 184.42279052734375 + }, + { + "id": "e1377", + "source": 420, + "target": 421, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 216.6497344970703 + }, + { + "id": "e1378", + "source": 421, + "target": 423, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 187.82078552246094 + }, + { + "id": "e1379", + "source": 423, + "target": 325, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 214.8092498779297 + }, + { + "id": "e1380", + "source": 422, + "target": 406, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.3345642089844 + }, + { + "id": "e1381", + "source": 406, + "target": 326, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.6925048828125 + }, + { + "id": "e1382", + "source": 326, + "target": 423, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.9497985839844 + }, + { + "id": "e1383", + "source": 423, + "target": 422, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -309.8504333496094 + }, + { + "id": "e1384", + "source": 424, + "target": 422, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -401.4304504394531 + }, + { + "id": "e1385", + "source": 422, + "target": 407, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.5188903808594 + }, + { + "id": "e1386", + "source": 407, + "target": 425, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -326.9801940917969 + }, + { + "id": "e1387", + "source": 425, + "target": 424, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -285.26171875 + }, + { + "id": "e1388", + "source": 328, + "target": 423, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 185.5278778076172 + }, + { + "id": "e1389", + "source": 423, + "target": 424, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 229.29518127441406 + }, + { + "id": "e1390", + "source": 424, + "target": 426, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 128.50323486328125 + }, + { + "id": "e1391", + "source": 426, + "target": 328, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 146.5185089111328 + }, + { + "id": "e1392", + "source": 425, + "target": 409, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -355.06256103515625 + }, + { + "id": "e1393", + "source": 409, + "target": 329, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -305.961181640625 + }, + { + "id": "e1394", + "source": 329, + "target": 426, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -367.93829345703125 + }, + { + "id": "e1395", + "source": 426, + "target": 425, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -297.6817932128906 + }, + { + "id": "e1396", + "source": 427, + "target": 428, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -158.86463928222656 + }, + { + "id": "e1397", + "source": 428, + "target": 410, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -351.5798034667969 + }, + { + "id": "e1398", + "source": 410, + "target": 429, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.33392333984375 + }, + { + "id": "e1399", + "source": 429, + "target": 427, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -301.51080322265625 + }, + { + "id": "e1400", + "source": 331, + "target": 430, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 111.14207458496094 + }, + { + "id": "e1401", + "source": 430, + "target": 427, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 64.19703674316406 + }, + { + "id": "e1402", + "source": 427, + "target": 431, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 197.77662658691406 + }, + { + "id": "e1403", + "source": 431, + "target": 331, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 152.8832244873047 + }, + { + "id": "e1404", + "source": 430, + "target": 332, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -190.6639404296875 + }, + { + "id": "e1405", + "source": 332, + "target": 413, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -308.98809814453125 + }, + { + "id": "e1406", + "source": 413, + "target": 428, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.57525634765625 + }, + { + "id": "e1407", + "source": 428, + "target": 430, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -140.8271026611328 + }, + { + "id": "e1408", + "source": 429, + "target": 414, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.3465881347656 + }, + { + "id": "e1409", + "source": 414, + "target": 333, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -304.08978271484375 + }, + { + "id": "e1410", + "source": 333, + "target": 431, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.4993896484375 + }, + { + "id": "e1411", + "source": 431, + "target": 429, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -175.351806640625 + }, + { + "id": "e1412", + "source": 432, + "target": 429, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -215.4828338623047 + }, + { + "id": "e1413", + "source": 429, + "target": 415, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -403.1134338378906 + }, + { + "id": "e1414", + "source": 415, + "target": 433, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.9307861328125 + }, + { + "id": "e1415", + "source": 433, + "target": 432, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -245.0057373046875 + }, + { + "id": "e1416", + "source": 336, + "target": 431, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.1289825439453 + }, + { + "id": "e1417", + "source": 431, + "target": 432, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 143.72354125976562 + }, + { + "id": "e1418", + "source": 432, + "target": 434, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.70770263671875 + }, + { + "id": "e1419", + "source": 434, + "target": 336, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 181.09156799316406 + }, + { + "id": "e1420", + "source": 433, + "target": 417, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.9460144042969 + }, + { + "id": "e1421", + "source": 417, + "target": 337, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -301.1527099609375 + }, + { + "id": "e1422", + "source": 337, + "target": 434, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -202.66616821289062 + }, + { + "id": "e1423", + "source": 434, + "target": 433, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -177.08837890625 + }, + { + "id": "e1424", + "source": 435, + "target": 433, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -224.99798583984375 + }, + { + "id": "e1425", + "source": 433, + "target": 418, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.2207946777344 + }, + { + "id": "e1426", + "source": 418, + "target": 436, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.2207946777344 + }, + { + "id": "e1427", + "source": 436, + "target": 435, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -224.99798583984375 + }, + { + "id": "e1428", + "source": 339, + "target": 434, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 201.37924194335938 + }, + { + "id": "e1429", + "source": 434, + "target": 435, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 174.64768981933594 + }, + { + "id": "e1430", + "source": 435, + "target": 437, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 174.64768981933594 + }, + { + "id": "e1431", + "source": 437, + "target": 339, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 201.37924194335938 + }, + { + "id": "e1432", + "source": 436, + "target": 420, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.9460144042969 + }, + { + "id": "e1433", + "source": 420, + "target": 340, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -301.1527099609375 + }, + { + "id": "e1434", + "source": 340, + "target": 437, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -202.66616821289062 + }, + { + "id": "e1435", + "source": 437, + "target": 436, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -177.08837890625 + }, + { + "id": "e1436", + "source": 438, + "target": 436, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -245.0057373046875 + }, + { + "id": "e1437", + "source": 436, + "target": 421, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.9307861328125 + }, + { + "id": "e1438", + "source": 421, + "target": 439, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -403.1134338378906 + }, + { + "id": "e1439", + "source": 439, + "target": 438, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -215.4828338623047 + }, + { + "id": "e1440", + "source": 342, + "target": 437, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 181.09156799316406 + }, + { + "id": "e1441", + "source": 437, + "target": 438, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.70770263671875 + }, + { + "id": "e1442", + "source": 438, + "target": 440, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 143.72354125976562 + }, + { + "id": "e1443", + "source": 440, + "target": 342, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.1289825439453 + }, + { + "id": "e1444", + "source": 439, + "target": 423, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.3465881347656 + }, + { + "id": "e1445", + "source": 423, + "target": 343, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -304.08978271484375 + }, + { + "id": "e1446", + "source": 343, + "target": 440, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -203.4993896484375 + }, + { + "id": "e1447", + "source": 440, + "target": 439, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -175.351806640625 + }, + { + "id": "e1448", + "source": 441, + "target": 439, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -301.51080322265625 + }, + { + "id": "e1449", + "source": 439, + "target": 424, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.33392333984375 + }, + { + "id": "e1450", + "source": 424, + "target": 442, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -351.5798034667969 + }, + { + "id": "e1451", + "source": 442, + "target": 441, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -158.86463928222656 + }, + { + "id": "e1452", + "source": 345, + "target": 440, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 152.8832244873047 + }, + { + "id": "e1453", + "source": 440, + "target": 441, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 197.77662658691406 + }, + { + "id": "e1454", + "source": 441, + "target": 443, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 64.19703674316406 + }, + { + "id": "e1455", + "source": 443, + "target": 345, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 111.14207458496094 + }, + { + "id": "e1456", + "source": 442, + "target": 426, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -373.57525634765625 + }, + { + "id": "e1457", + "source": 426, + "target": 346, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -308.98809814453125 + }, + { + "id": "e1458", + "source": 346, + "target": 443, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -190.6639404296875 + }, + { + "id": "e1459", + "source": 443, + "target": 442, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -140.8271026611328 + }, + { + "id": "e1460", + "source": 444, + "target": 445, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1461", + "source": 445, + "target": 348, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1462", + "source": 348, + "target": 446, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1463", + "source": 446, + "target": 444, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1464", + "source": 447, + "target": 448, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -314.3655090332031 + }, + { + "id": "e1465", + "source": 448, + "target": 444, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.9940185546875 + }, + { + "id": "e1466", + "source": 444, + "target": 449, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -575.192626953125 + }, + { + "id": "e1467", + "source": 449, + "target": 447, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -286.51873779296875 + }, + { + "id": "e1468", + "source": 351, + "target": 450, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 181.6524658203125 + }, + { + "id": "e1469", + "source": 450, + "target": 447, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.3015251159668 + }, + { + "id": "e1470", + "source": 447, + "target": 451, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 166.3050079345703 + }, + { + "id": "e1471", + "source": 451, + "target": 351, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 145.8289337158203 + }, + { + "id": "e1472", + "source": 450, + "target": 352, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -258.7574768066406 + }, + { + "id": "e1473", + "source": 352, + "target": 445, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -567.5455322265625 + }, + { + "id": "e1474", + "source": 445, + "target": 448, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.99209594726562 + }, + { + "id": "e1475", + "source": 448, + "target": 450, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -283.128662109375 + }, + { + "id": "e1476", + "source": 449, + "target": 446, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -130.22816467285156 + }, + { + "id": "e1477", + "source": 446, + "target": 353, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -493.98992919921875 + }, + { + "id": "e1478", + "source": 353, + "target": 451, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -256.9091796875 + }, + { + "id": "e1479", + "source": 451, + "target": 449, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -365.04693603515625 + }, + { + "id": "e1480", + "source": 452, + "target": 446, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1481", + "source": 446, + "target": 356, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1482", + "source": 356, + "target": 453, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1483", + "source": 453, + "target": 452, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1484", + "source": 454, + "target": 449, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -444.2502136230469 + }, + { + "id": "e1485", + "source": 449, + "target": 452, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -398.817138671875 + }, + { + "id": "e1486", + "source": 452, + "target": 455, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -494.9745178222656 + }, + { + "id": "e1487", + "source": 455, + "target": 454, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.0864562988281 + }, + { + "id": "e1488", + "source": 358, + "target": 451, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.42361450195312 + }, + { + "id": "e1489", + "source": 451, + "target": 454, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 99.21932983398438 + }, + { + "id": "e1490", + "source": 454, + "target": 456, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 95.99263763427734 + }, + { + "id": "e1491", + "source": 456, + "target": 358, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.69595336914062 + }, + { + "id": "e1492", + "source": 455, + "target": 453, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -131.62808227539062 + }, + { + "id": "e1493", + "source": 453, + "target": 359, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -478.4845886230469 + }, + { + "id": "e1494", + "source": 359, + "target": 456, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.28709411621094 + }, + { + "id": "e1495", + "source": 456, + "target": 455, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.78045654296875 + }, + { + "id": "e1496", + "source": 457, + "target": 453, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1497", + "source": 453, + "target": 361, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1498", + "source": 361, + "target": 458, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1499", + "source": 458, + "target": 457, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1500", + "source": 459, + "target": 455, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.7646179199219 + }, + { + "id": "e1501", + "source": 455, + "target": 457, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -442.6197204589844 + }, + { + "id": "e1502", + "source": 457, + "target": 460, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -442.6197204589844 + }, + { + "id": "e1503", + "source": 460, + "target": 459, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -393.7646179199219 + }, + { + "id": "e1504", + "source": 363, + "target": 456, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 147.4529571533203 + }, + { + "id": "e1505", + "source": 456, + "target": 459, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 89.3107681274414 + }, + { + "id": "e1506", + "source": 459, + "target": 461, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 89.3107681274414 + }, + { + "id": "e1507", + "source": 461, + "target": 363, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 147.4529571533203 + }, + { + "id": "e1508", + "source": 460, + "target": 458, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -131.62808227539062 + }, + { + "id": "e1509", + "source": 458, + "target": 364, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -478.4845886230469 + }, + { + "id": "e1510", + "source": 364, + "target": 461, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.28709411621094 + }, + { + "id": "e1511", + "source": 461, + "target": 460, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.78045654296875 + }, + { + "id": "e1512", + "source": 462, + "target": 458, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1513", + "source": 458, + "target": 366, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1514", + "source": 366, + "target": 463, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1515", + "source": 463, + "target": 462, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1516", + "source": 464, + "target": 460, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -338.0864562988281 + }, + { + "id": "e1517", + "source": 460, + "target": 462, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -494.9745178222656 + }, + { + "id": "e1518", + "source": 462, + "target": 465, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -398.817138671875 + }, + { + "id": "e1519", + "source": 465, + "target": 464, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -444.2502136230469 + }, + { + "id": "e1520", + "source": 368, + "target": 461, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 137.69595336914062 + }, + { + "id": "e1521", + "source": 461, + "target": 464, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 95.99263763427734 + }, + { + "id": "e1522", + "source": 464, + "target": 466, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 99.21932983398438 + }, + { + "id": "e1523", + "source": 466, + "target": 368, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.42361450195312 + }, + { + "id": "e1524", + "source": 465, + "target": 463, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -130.22816467285156 + }, + { + "id": "e1525", + "source": 463, + "target": 369, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -493.98992919921875 + }, + { + "id": "e1526", + "source": 369, + "target": 466, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -256.9091796875 + }, + { + "id": "e1527", + "source": 466, + "target": 465, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -365.04693603515625 + }, + { + "id": "e1528", + "source": 467, + "target": 463, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1529", + "source": 463, + "target": 371, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1530", + "source": 371, + "target": 468, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1531", + "source": 468, + "target": 467, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1532", + "source": 469, + "target": 465, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -286.51873779296875 + }, + { + "id": "e1533", + "source": 465, + "target": 467, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -575.192626953125 + }, + { + "id": "e1534", + "source": 467, + "target": 470, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.9940185546875 + }, + { + "id": "e1535", + "source": 470, + "target": 469, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -314.3655090332031 + }, + { + "id": "e1536", + "source": 373, + "target": 466, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 145.8289337158203 + }, + { + "id": "e1537", + "source": 466, + "target": 469, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 166.3050079345703 + }, + { + "id": "e1538", + "source": 469, + "target": 471, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 44.3015251159668 + }, + { + "id": "e1539", + "source": 471, + "target": 373, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 181.6524658203125 + }, + { + "id": "e1540", + "source": 470, + "target": 468, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -220.99209594726562 + }, + { + "id": "e1541", + "source": 468, + "target": 374, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -567.5455322265625 + }, + { + "id": "e1542", + "source": 374, + "target": 471, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -258.7574768066406 + }, + { + "id": "e1543", + "source": 471, + "target": 470, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -283.128662109375 + }, + { + "id": "e1544", + "source": 472, + "target": 473, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -250.0814971923828 + }, + { + "id": "e1545", + "source": 473, + "target": 447, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -241.38722229003906 + }, + { + "id": "e1546", + "source": 447, + "target": 474, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.5205993652344 + }, + { + "id": "e1547", + "source": 474, + "target": 472, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.7974548339844 + }, + { + "id": "e1548", + "source": 376, + "target": 475, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 203.0487060546875 + }, + { + "id": "e1549", + "source": 475, + "target": 472, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.416481018066406 + }, + { + "id": "e1550", + "source": 472, + "target": 476, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 180.49227905273438 + }, + { + "id": "e1551", + "source": 476, + "target": 376, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 184.2433319091797 + }, + { + "id": "e1552", + "source": 475, + "target": 377, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -299.2804260253906 + }, + { + "id": "e1553", + "source": 377, + "target": 450, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -333.8799743652344 + }, + { + "id": "e1554", + "source": 450, + "target": 473, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -204.31982421875 + }, + { + "id": "e1555", + "source": 473, + "target": 475, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.9500732421875 + }, + { + "id": "e1556", + "source": 474, + "target": 451, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -225.43670654296875 + }, + { + "id": "e1557", + "source": 451, + "target": 378, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -381.0902099609375 + }, + { + "id": "e1558", + "source": 378, + "target": 476, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.3759460449219 + }, + { + "id": "e1559", + "source": 476, + "target": 474, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -259.5942687988281 + }, + { + "id": "e1560", + "source": 477, + "target": 474, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.0825500488281 + }, + { + "id": "e1561", + "source": 474, + "target": 454, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.497314453125 + }, + { + "id": "e1562", + "source": 454, + "target": 478, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.9957580566406 + }, + { + "id": "e1563", + "source": 478, + "target": 477, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -351.6517639160156 + }, + { + "id": "e1564", + "source": 381, + "target": 476, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 245.49436950683594 + }, + { + "id": "e1565", + "source": 476, + "target": 477, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.02445983886719 + }, + { + "id": "e1566", + "source": 477, + "target": 479, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 129.7095947265625 + }, + { + "id": "e1567", + "source": 479, + "target": 381, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.0060272216797 + }, + { + "id": "e1568", + "source": 478, + "target": 456, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.4929962158203 + }, + { + "id": "e1569", + "source": 456, + "target": 382, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.1078186035156 + }, + { + "id": "e1570", + "source": 382, + "target": 479, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -339.60443115234375 + }, + { + "id": "e1571", + "source": 479, + "target": 478, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -274.1460876464844 + }, + { + "id": "e1572", + "source": 480, + "target": 478, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.69696044921875 + }, + { + "id": "e1573", + "source": 478, + "target": 459, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.5155029296875 + }, + { + "id": "e1574", + "source": 459, + "target": 481, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -375.5155029296875 + }, + { + "id": "e1575", + "source": 481, + "target": 480, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.69696044921875 + }, + { + "id": "e1576", + "source": 384, + "target": 479, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 207.50411987304688 + }, + { + "id": "e1577", + "source": 479, + "target": 480, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 111.53241729736328 + }, + { + "id": "e1578", + "source": 480, + "target": 482, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 111.53241729736328 + }, + { + "id": "e1579", + "source": 482, + "target": 384, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 207.50411987304688 + }, + { + "id": "e1580", + "source": 481, + "target": 461, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -216.4929962158203 + }, + { + "id": "e1581", + "source": 461, + "target": 385, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -383.1078186035156 + }, + { + "id": "e1582", + "source": 385, + "target": 482, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -339.60443115234375 + }, + { + "id": "e1583", + "source": 482, + "target": 481, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -274.1460876464844 + }, + { + "id": "e1584", + "source": 483, + "target": 481, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -351.6517639160156 + }, + { + "id": "e1585", + "source": 481, + "target": 464, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -402.9957580566406 + }, + { + "id": "e1586", + "source": 464, + "target": 484, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -336.497314453125 + }, + { + "id": "e1587", + "source": 484, + "target": 483, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -348.0825500488281 + }, + { + "id": "e1588", + "source": 387, + "target": 482, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.0060272216797 + }, + { + "id": "e1589", + "source": 482, + "target": 483, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 129.7095947265625 + }, + { + "id": "e1590", + "source": 483, + "target": 485, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.02445983886719 + }, + { + "id": "e1591", + "source": 485, + "target": 387, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 245.49436950683594 + }, + { + "id": "e1592", + "source": 484, + "target": 466, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -225.43670654296875 + }, + { + "id": "e1593", + "source": 466, + "target": 388, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -381.0902099609375 + }, + { + "id": "e1594", + "source": 388, + "target": 485, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.3759460449219 + }, + { + "id": "e1595", + "source": 485, + "target": 484, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -259.5942687988281 + }, + { + "id": "e1596", + "source": 486, + "target": 484, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.7974548339844 + }, + { + "id": "e1597", + "source": 484, + "target": 469, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -353.5205993652344 + }, + { + "id": "e1598", + "source": 469, + "target": 487, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -241.38722229003906 + }, + { + "id": "e1599", + "source": 487, + "target": 486, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -250.0814971923828 + }, + { + "id": "e1600", + "source": 390, + "target": 485, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 184.2433319091797 + }, + { + "id": "e1601", + "source": 485, + "target": 486, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 180.49227905273438 + }, + { + "id": "e1602", + "source": 486, + "target": 488, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 32.416481018066406 + }, + { + "id": "e1603", + "source": 488, + "target": 390, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 203.0487060546875 + }, + { + "id": "e1604", + "source": 487, + "target": 471, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -204.31982421875 + }, + { + "id": "e1605", + "source": 471, + "target": 391, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -333.8799743652344 + }, + { + "id": "e1606", + "source": 391, + "target": 488, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -299.2804260253906 + }, + { + "id": "e1607", + "source": 488, + "target": 487, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -212.9500732421875 + }, + { + "id": "e1608", + "source": 489, + "target": 490, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.54400634765625 + }, + { + "id": "e1609", + "source": 490, + "target": 472, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -249.13690185546875 + }, + { + "id": "e1610", + "source": 472, + "target": 491, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -314.42059326171875 + }, + { + "id": "e1611", + "source": 491, + "target": 489, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -341.2582092285156 + }, + { + "id": "e1612", + "source": 393, + "target": 492, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 210.07814025878906 + }, + { + "id": "e1613", + "source": 492, + "target": 489, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.374813079833984 + }, + { + "id": "e1614", + "source": 489, + "target": 493, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 186.21340942382812 + }, + { + "id": "e1615", + "source": 493, + "target": 393, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 193.01165771484375 + }, + { + "id": "e1616", + "source": 492, + "target": 394, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -323.2729187011719 + }, + { + "id": "e1617", + "source": 394, + "target": 475, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -286.6039123535156 + }, + { + "id": "e1618", + "source": 475, + "target": 490, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -217.84075927734375 + }, + { + "id": "e1619", + "source": 490, + "target": 492, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -209.42283630371094 + }, + { + "id": "e1620", + "source": 491, + "target": 476, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.65353393554688 + }, + { + "id": "e1621", + "source": 476, + "target": 395, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.42816162109375 + }, + { + "id": "e1622", + "source": 395, + "target": 493, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -356.5154113769531 + }, + { + "id": "e1623", + "source": 493, + "target": 491, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -237.49928283691406 + }, + { + "id": "e1624", + "source": 494, + "target": 491, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.9383850097656 + }, + { + "id": "e1625", + "source": 491, + "target": 477, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.0404968261719 + }, + { + "id": "e1626", + "source": 477, + "target": 495, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.43157958984375 + }, + { + "id": "e1627", + "source": 495, + "target": 494, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.56866455078125 + }, + { + "id": "e1628", + "source": 398, + "target": 493, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 254.7412109375 + }, + { + "id": "e1629", + "source": 493, + "target": 494, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 105.96690368652344 + }, + { + "id": "e1630", + "source": 494, + "target": 496, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.5289306640625 + }, + { + "id": "e1631", + "source": 496, + "target": 398, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.04141235351562 + }, + { + "id": "e1632", + "source": 495, + "target": 479, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -264.96295166015625 + }, + { + "id": "e1633", + "source": 479, + "target": 399, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -345.94110107421875 + }, + { + "id": "e1634", + "source": 399, + "target": 496, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.111572265625 + }, + { + "id": "e1635", + "source": 496, + "target": 495, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -244.203369140625 + }, + { + "id": "e1636", + "source": 497, + "target": 495, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.0746154785156 + }, + { + "id": "e1637", + "source": 495, + "target": 480, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.3597106933594 + }, + { + "id": "e1638", + "source": 480, + "target": 498, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.3597106933594 + }, + { + "id": "e1639", + "source": 498, + "target": 497, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -362.0746154785156 + }, + { + "id": "e1640", + "source": 401, + "target": 496, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 218.94857788085938 + }, + { + "id": "e1641", + "source": 496, + "target": 497, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 116.04698181152344 + }, + { + "id": "e1642", + "source": 497, + "target": 499, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 116.04698181152344 + }, + { + "id": "e1643", + "source": 499, + "target": 401, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 218.94857788085938 + }, + { + "id": "e1644", + "source": 498, + "target": 482, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -264.96295166015625 + }, + { + "id": "e1645", + "source": 482, + "target": 402, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -345.94110107421875 + }, + { + "id": "e1646", + "source": 402, + "target": 499, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.111572265625 + }, + { + "id": "e1647", + "source": 499, + "target": 498, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -244.203369140625 + }, + { + "id": "e1648", + "source": 500, + "target": 498, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -372.56866455078125 + }, + { + "id": "e1649", + "source": 498, + "target": 483, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -350.43157958984375 + }, + { + "id": "e1650", + "source": 483, + "target": 501, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.0404968261719 + }, + { + "id": "e1651", + "source": 501, + "target": 500, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.9383850097656 + }, + { + "id": "e1652", + "source": 404, + "target": 499, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.04141235351562 + }, + { + "id": "e1653", + "source": 499, + "target": 500, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 133.5289306640625 + }, + { + "id": "e1654", + "source": 500, + "target": 502, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 105.96690368652344 + }, + { + "id": "e1655", + "source": 502, + "target": 404, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 254.7412109375 + }, + { + "id": "e1656", + "source": 501, + "target": 485, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.65353393554688 + }, + { + "id": "e1657", + "source": 485, + "target": 405, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -330.42816162109375 + }, + { + "id": "e1658", + "source": 405, + "target": 502, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -356.5154113769531 + }, + { + "id": "e1659", + "source": 502, + "target": 501, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -237.49928283691406 + }, + { + "id": "e1660", + "source": 503, + "target": 501, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -341.2582092285156 + }, + { + "id": "e1661", + "source": 501, + "target": 486, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -314.42059326171875 + }, + { + "id": "e1662", + "source": 486, + "target": 504, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -249.13690185546875 + }, + { + "id": "e1663", + "source": 504, + "target": 503, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -255.54400634765625 + }, + { + "id": "e1664", + "source": 407, + "target": 502, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 193.01165771484375 + }, + { + "id": "e1665", + "source": 502, + "target": 503, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 186.21340942382812 + }, + { + "id": "e1666", + "source": 503, + "target": 505, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.374813079833984 + }, + { + "id": "e1667", + "source": 505, + "target": 407, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 210.07814025878906 + }, + { + "id": "e1668", + "source": 504, + "target": 488, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -217.84075927734375 + }, + { + "id": "e1669", + "source": 488, + "target": 408, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -286.6039123535156 + }, + { + "id": "e1670", + "source": 408, + "target": 505, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -323.2729187011719 + }, + { + "id": "e1671", + "source": 505, + "target": 504, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -209.42283630371094 + }, + { + "id": "e1672", + "source": 506, + "target": 507, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -276.8791198730469 + }, + { + "id": "e1673", + "source": 507, + "target": 489, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -270.6961364746094 + }, + { + "id": "e1674", + "source": 489, + "target": 508, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.89007568359375 + }, + { + "id": "e1675", + "source": 508, + "target": 506, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -396.48272705078125 + }, + { + "id": "e1676", + "source": 410, + "target": 509, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.4701690673828 + }, + { + "id": "e1677", + "source": 509, + "target": 506, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.26524353027344 + }, + { + "id": "e1678", + "source": 506, + "target": 510, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 164.20742797851562 + }, + { + "id": "e1679", + "source": 510, + "target": 410, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 182.64556884765625 + }, + { + "id": "e1680", + "source": 509, + "target": 411, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.88519287109375 + }, + { + "id": "e1681", + "source": 411, + "target": 492, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -279.7339172363281 + }, + { + "id": "e1682", + "source": 492, + "target": 507, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -241.42416381835938 + }, + { + "id": "e1683", + "source": 507, + "target": 509, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -219.9418487548828 + }, + { + "id": "e1684", + "source": 508, + "target": 493, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -279.9124450683594 + }, + { + "id": "e1685", + "source": 493, + "target": 412, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -310.6617126464844 + }, + { + "id": "e1686", + "source": 412, + "target": 510, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.77264404296875 + }, + { + "id": "e1687", + "source": 510, + "target": 508, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -225.6521759033203 + }, + { + "id": "e1688", + "source": 511, + "target": 508, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.3307800292969 + }, + { + "id": "e1689", + "source": 508, + "target": 494, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.0900573730469 + }, + { + "id": "e1690", + "source": 494, + "target": 512, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -339.1669006347656 + }, + { + "id": "e1691", + "source": 512, + "target": 511, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -399.6603088378906 + }, + { + "id": "e1692", + "source": 415, + "target": 510, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 233.33139038085938 + }, + { + "id": "e1693", + "source": 510, + "target": 511, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 95.42484283447266 + }, + { + "id": "e1694", + "source": 511, + "target": 513, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 118.27772521972656 + }, + { + "id": "e1695", + "source": 513, + "target": 415, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 182.59603881835938 + }, + { + "id": "e1696", + "source": 512, + "target": 496, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -287.04473876953125 + }, + { + "id": "e1697", + "source": 496, + "target": 416, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.6211242675781 + }, + { + "id": "e1698", + "source": 416, + "target": 513, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -386.35736083984375 + }, + { + "id": "e1699", + "source": 513, + "target": 512, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -222.38546752929688 + }, + { + "id": "e1700", + "source": 514, + "target": 512, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.9008483886719 + }, + { + "id": "e1701", + "source": 512, + "target": 497, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -365.2146301269531 + }, + { + "id": "e1702", + "source": 497, + "target": 515, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -365.2146301269531 + }, + { + "id": "e1703", + "source": 515, + "target": 514, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.9008483886719 + }, + { + "id": "e1704", + "source": 418, + "target": 513, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.28053283691406 + }, + { + "id": "e1705", + "source": 513, + "target": 514, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.95960998535156 + }, + { + "id": "e1706", + "source": 514, + "target": 516, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 102.95960998535156 + }, + { + "id": "e1707", + "source": 516, + "target": 418, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 200.28053283691406 + }, + { + "id": "e1708", + "source": 515, + "target": 499, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -287.04473876953125 + }, + { + "id": "e1709", + "source": 499, + "target": 419, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -320.6211242675781 + }, + { + "id": "e1710", + "source": 419, + "target": 516, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -386.35736083984375 + }, + { + "id": "e1711", + "source": 516, + "target": 515, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -222.38546752929688 + }, + { + "id": "e1712", + "source": 517, + "target": 515, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -399.6603088378906 + }, + { + "id": "e1713", + "source": 515, + "target": 500, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -339.1669006347656 + }, + { + "id": "e1714", + "source": 500, + "target": 518, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -369.0900573730469 + }, + { + "id": "e1715", + "source": 518, + "target": 517, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -340.3307800292969 + }, + { + "id": "e1716", + "source": 421, + "target": 516, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 182.59603881835938 + }, + { + "id": "e1717", + "source": 516, + "target": 517, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 118.27772521972656 + }, + { + "id": "e1718", + "source": 517, + "target": 519, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 95.42484283447266 + }, + { + "id": "e1719", + "source": 519, + "target": 421, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 233.33139038085938 + }, + { + "id": "e1720", + "source": 518, + "target": 502, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -279.9124450683594 + }, + { + "id": "e1721", + "source": 502, + "target": 422, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -310.6617126464844 + }, + { + "id": "e1722", + "source": 422, + "target": 519, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -384.77264404296875 + }, + { + "id": "e1723", + "source": 519, + "target": 518, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -225.6521759033203 + }, + { + "id": "e1724", + "source": 520, + "target": 518, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -396.48272705078125 + }, + { + "id": "e1725", + "source": 518, + "target": 503, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.89007568359375 + }, + { + "id": "e1726", + "source": 503, + "target": 521, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -270.6961364746094 + }, + { + "id": "e1727", + "source": 521, + "target": 520, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -276.8791198730469 + }, + { + "id": "e1728", + "source": 424, + "target": 519, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 182.64556884765625 + }, + { + "id": "e1729", + "source": 519, + "target": 520, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 164.20742797851562 + }, + { + "id": "e1730", + "source": 520, + "target": 522, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 35.26524353027344 + }, + { + "id": "e1731", + "source": 522, + "target": 424, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 189.4701690673828 + }, + { + "id": "e1732", + "source": 521, + "target": 505, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -241.42416381835938 + }, + { + "id": "e1733", + "source": 505, + "target": 425, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -279.7339172363281 + }, + { + "id": "e1734", + "source": 425, + "target": 522, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.88519287109375 + }, + { + "id": "e1735", + "source": 522, + "target": 521, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -219.9418487548828 + }, + { + "id": "e1736", + "source": 523, + "target": 524, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -110.1958999633789 + }, + { + "id": "e1737", + "source": 524, + "target": 506, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -359.4593505859375 + }, + { + "id": "e1738", + "source": 506, + "target": 525, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -333.9443054199219 + }, + { + "id": "e1739", + "source": 525, + "target": 523, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -273.1029357910156 + }, + { + "id": "e1740", + "source": 427, + "target": 526, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 144.92771911621094 + }, + { + "id": "e1741", + "source": 526, + "target": 523, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -35.72393035888672 + }, + { + "id": "e1742", + "source": 523, + "target": 527, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 127.99420166015625 + }, + { + "id": "e1743", + "source": 527, + "target": 427, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 122.10501098632812 + }, + { + "id": "e1744", + "source": 526, + "target": 428, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -233.8688201904297 + }, + { + "id": "e1745", + "source": 428, + "target": 509, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.0865478515625 + }, + { + "id": "e1746", + "source": 509, + "target": 524, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.79852294921875 + }, + { + "id": "e1747", + "source": 524, + "target": 526, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -60.71269989013672 + }, + { + "id": "e1748", + "source": 525, + "target": 510, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -318.1784973144531 + }, + { + "id": "e1749", + "source": 510, + "target": 429, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -301.82147216796875 + }, + { + "id": "e1750", + "source": 429, + "target": 527, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -267.0370178222656 + }, + { + "id": "e1751", + "source": 527, + "target": 525, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -102.23804473876953 + }, + { + "id": "e1752", + "source": 528, + "target": 525, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -180.07997131347656 + }, + { + "id": "e1753", + "source": 525, + "target": 511, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -406.9765319824219 + }, + { + "id": "e1754", + "source": 511, + "target": 529, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -349.333251953125 + }, + { + "id": "e1755", + "source": 529, + "target": 528, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -233.24058532714844 + }, + { + "id": "e1756", + "source": 432, + "target": 527, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.76075744628906 + }, + { + "id": "e1757", + "source": 527, + "target": 528, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 34.10111618041992 + }, + { + "id": "e1758", + "source": 528, + "target": 530, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 87.09632873535156 + }, + { + "id": "e1759", + "source": 530, + "target": 432, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 146.64736938476562 + }, + { + "id": "e1760", + "source": 529, + "target": 513, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.9964904785156 + }, + { + "id": "e1761", + "source": 513, + "target": 433, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -300.4674377441406 + }, + { + "id": "e1762", + "source": 433, + "target": 530, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -271.845947265625 + }, + { + "id": "e1763", + "source": 530, + "target": 529, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -99.20890808105469 + }, + { + "id": "e1764", + "source": 531, + "target": 529, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -206.90562438964844 + }, + { + "id": "e1765", + "source": 529, + "target": 514, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.6365051269531 + }, + { + "id": "e1766", + "source": 514, + "target": 532, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -376.6365051269531 + }, + { + "id": "e1767", + "source": 532, + "target": 531, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -206.90562438964844 + }, + { + "id": "e1768", + "source": 435, + "target": 530, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 173.3158416748047 + }, + { + "id": "e1769", + "source": 530, + "target": 531, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 61.18206787109375 + }, + { + "id": "e1770", + "source": 531, + "target": 533, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 61.18206787109375 + }, + { + "id": "e1771", + "source": 533, + "target": 435, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 173.3158416748047 + }, + { + "id": "e1772", + "source": 532, + "target": 516, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -317.9964904785156 + }, + { + "id": "e1773", + "source": 516, + "target": 436, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -300.4674377441406 + }, + { + "id": "e1774", + "source": 436, + "target": 533, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -271.845947265625 + }, + { + "id": "e1775", + "source": 533, + "target": 532, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -99.20890808105469 + }, + { + "id": "e1776", + "source": 534, + "target": 532, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -233.24058532714844 + }, + { + "id": "e1777", + "source": 532, + "target": 517, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -349.333251953125 + }, + { + "id": "e1778", + "source": 517, + "target": 535, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -406.9765319824219 + }, + { + "id": "e1779", + "source": 535, + "target": 534, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -180.07997131347656 + }, + { + "id": "e1780", + "source": 438, + "target": 533, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 146.64736938476562 + }, + { + "id": "e1781", + "source": 533, + "target": 534, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 87.09632873535156 + }, + { + "id": "e1782", + "source": 534, + "target": 536, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 34.10111618041992 + }, + { + "id": "e1783", + "source": 536, + "target": 438, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 199.76075744628906 + }, + { + "id": "e1784", + "source": 535, + "target": 519, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -318.1784973144531 + }, + { + "id": "e1785", + "source": 519, + "target": 439, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -301.82147216796875 + }, + { + "id": "e1786", + "source": 439, + "target": 536, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -267.0370178222656 + }, + { + "id": "e1787", + "source": 536, + "target": 535, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -102.23804473876953 + }, + { + "id": "e1788", + "source": 537, + "target": 535, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -273.1029357910156 + }, + { + "id": "e1789", + "source": 535, + "target": 520, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -333.9443054199219 + }, + { + "id": "e1790", + "source": 520, + "target": 538, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -359.4593505859375 + }, + { + "id": "e1791", + "source": 538, + "target": 537, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -110.1958999633789 + }, + { + "id": "e1792", + "source": 441, + "target": 536, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 122.10501098632812 + }, + { + "id": "e1793", + "source": 536, + "target": 537, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 127.99420166015625 + }, + { + "id": "e1794", + "source": 537, + "target": 539, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -35.72393035888672 + }, + { + "id": "e1795", + "source": 539, + "target": 441, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 144.92771911621094 + }, + { + "id": "e1796", + "source": 538, + "target": 522, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -331.79852294921875 + }, + { + "id": "e1797", + "source": 522, + "target": 442, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -292.0865478515625 + }, + { + "id": "e1798", + "source": 442, + "target": 539, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -233.8688201904297 + }, + { + "id": "e1799", + "source": 539, + "target": 538, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": -60.71269989013672 + } + ], + "ndofs": 3240, + "animation": { + "showDisplacement": true, + "exageration": 2000, + "speed": 3 + }, + "viz": { + "minStress": -632.7118896484376, + "maxStress": 280.21533203125, + "colorMaps": [ + "coolwarm", + "YlGnBu", + "winter", + "jet" + ], + "colorMap": 0 + }, + "bar": false + } +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/setupTest.json b/01_Code/physical_computing_interface/simulation/json/setupTest.json new file mode 100644 index 0000000000000000000000000000000000000000..54dd5d8ce5dc3b758d5ac17c3dca6ba9a954b790 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/setupTest.json @@ -0,0 +1,722 @@ +{ + "setup": { + "nodes": [ + { + "id": "n0", + "parent": "11", + "degrees_of_freedom": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 5, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n1", + "parent": "11", + "degrees_of_freedom": [ + 6, + 7, + 8, + 9, + 10, + 11 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n2", + "parent": "11", + "degrees_of_freedom": [ + 12, + 13, + 14, + 15, + 16, + 17 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": -5, + "y": -5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n3", + "parent": "11", + "degrees_of_freedom": [ + 18, + 19, + 20, + 21, + 22, + 23 + ], + "restrained_degrees_of_freedom": [ + true, + true, + true, + true, + true, + true + ], + "position": { + "x": 0, + "y": -5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n4", + "parent": "11", + "degrees_of_freedom": [ + 24, + 25, + 26, + 27, + 28, + 29 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n5", + "parent": "11", + "degrees_of_freedom": [ + 30, + 31, + 32, + 33, + 34, + 35 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n6", + "parent": "11", + "degrees_of_freedom": [ + 36, + 37, + 38, + 39, + 40, + 41 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 5, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n7", + "parent": "11", + "degrees_of_freedom": [ + 42, + 43, + 44, + 45, + 46, + 47 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 5, + "z": 0 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n8", + "parent": "11", + "degrees_of_freedom": [ + 48, + 49, + 50, + 51, + 52, + 53 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n9", + "parent": "11", + "degrees_of_freedom": [ + 54, + 55, + 56, + 57, + 58, + 59 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": 0, + "y": 5, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n10", + "parent": "11", + "degrees_of_freedom": [ + 60, + 61, + 62, + 63, + 64, + 65 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": -5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "id": "n11", + "parent": "11", + "degrees_of_freedom": [ + 66, + 67, + 68, + 69, + 70, + 71 + ], + "restrained_degrees_of_freedom": [ + false, + false, + false, + false, + false, + false + ], + "position": { + "x": -5, + "y": 0, + "z": 5 + }, + "force": { + "x": 0, + "y": 0, + "z": 0 + }, + "displacement": { + "x": 0, + "y": 0, + "z": 0 + }, + "angle": { + "x": 0, + "y": 0, + "z": 0 + } + } + ], + "edges": [ + { + "id": "e0", + "source": 0, + "target": 1, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e1", + "source": 1, + "target": 2, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e2", + "source": 2, + "target": 3, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e3", + "source": 3, + "target": 0, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e4", + "source": 4, + "target": 5, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e5", + "source": 5, + "target": 0, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e6", + "source": 0, + "target": 6, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e7", + "source": 6, + "target": 4, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e8", + "source": 7, + "target": 8, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e9", + "source": 8, + "target": 4, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e10", + "source": 4, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e11", + "source": 9, + "target": 7, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e12", + "source": 2, + "target": 10, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e13", + "source": 10, + "target": 7, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e14", + "source": 7, + "target": 11, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e15", + "source": 11, + "target": 2, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e16", + "source": 8, + "target": 10, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e17", + "source": 10, + "target": 1, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e18", + "source": 1, + "target": 5, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e19", + "source": 5, + "target": 8, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e20", + "source": 6, + "target": 3, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e21", + "source": 3, + "target": 11, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e22", + "source": 11, + "target": 9, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + }, + { + "id": "e23", + "source": 9, + "target": 6, + "area": 1, + "density": 0.284, + "stiffness": 30000000, + "stress": 0 + } + ], + "ndofs": 72, + "animation": { + "showDisplacement": true, + "exageration": 2000, + "speed": 3 + }, + "viz": { + "minStress": 0, + "maxStress": 0, + "colorMaps": [ + "coolwarm", + "YlGnBu", + "winter", + "jet" + ], + "colorMap": 0 + }, + "bar": false + } +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/json/write_read.json b/01_Code/physical_computing_interface/simulation/json/write_read.json new file mode 100644 index 0000000000000000000000000000000000000000..bf70d9ab59941b0066647819f24d1b282a422c03 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/json/write_read.json @@ -0,0 +1 @@ +{"dict":{"d3":1.0,"d1":1.0,"d2":1.0},"param2":2,"param1":1} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/julia/counter.jl b/01_Code/physical_computing_interface/simulation/julia/counter.jl new file mode 100644 index 0000000000000000000000000000000000000000..8cb286ce6872aa413b51c10fd9038aaedbe2d1eb --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/julia/counter.jl @@ -0,0 +1,92 @@ +using WebIO +# using IJulia +using JSExpr # you may need to install this package + +# using Pkg +# Pkg.add("Mux") + +using Mux + + +# function myapp(req) +# return "<h1>Hello, $(req[:params][:user])!</h1>" +# end + +# function username(app, req) +# req[:params][:user] = req[:cookies][:user] +# return app(req) # We could also alter the response, but don't want to here +# end + +# username(myapp, req) + +# mux(username, myapp) + +# @app test = ( +# Mux.defaults, +# page(respond("<h1>Hello World!</h1>")), +# page("/about", probabilty(0.1, respond("<h1>Boo!</h1>")),respond("<h1>About Me</h1>")), +# page("/user/:user", req -> "<h1>Hello, $(req[:params][:user])!</h1>"),Mux.notfound()) + +# serve(test) + + +function counter(start=0) + println("sshshs") + scope = Scope() + + # updates to this update the UI + count = Observable(scope, "count", start) + + onjs(count, # listen on JavaScript + JSExpr.@js x->this.dom.querySelector("#count").textContent = x) + + on(count) do n # listen on Julia + println(n > 0 ? "+"^n : "-"^abs(n)) + end + + println("sjsjsjs") + + btn(label, d) = dom"button"( + label, + events=Dict( + "click" => JSExpr.@js () -> $count[] = $count[] + $d + ) + ) + + println("sss") + + scope.dom = dom"div"( + btn("increment", 1), + btn("decrement", -1), + dom"div#count"(string(count[])), + ) + + println("sjsjs") + + scope +end + +# Display in whatever frontend is avalaible +function main() + if @isdefined(IJulia) || @isdefined(Juno) + println("hersssee") + return counter(1) + elseif @isdefined(Blink) + println("heffggree") + win = Window() + body!(win, counter(1)) + elseif @isdefined(Mux) + println("herwwwee") + @sync webio_serve(page("/", req -> counter(1)), 8000) + else + println("hersssswwwee") + error("do one of using Mux, using Blink before running the + example, or run it from within IJulia or Juno") + end +end + +main() + +while true;sleep(1);end + + diff --git a/01_Code/physical_computing_interface/simulation/julia/p5.jl b/01_Code/physical_computing_interface/simulation/julia/p5.jl new file mode 100644 index 0000000000000000000000000000000000000000..6fc042a2a11350b23a23d0eaa954f33a82e74b97 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/julia/p5.jl @@ -0,0 +1,95 @@ +# using WebIO +# using JSExpr +# # using Mux + +# # function myapp(req) +# # return node(:p, "Hello, Mux!") +# # end + +# # webio_serve(page("/", req -> myapp(req)),8000) + +# function hue_app() +# scope = Scope() +# import!(scope, ["//cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.7/p5.js"]) + +# # Note: we explicitly qualify @js, @var, and @new with the JSExpr module +# # because Blink.jl exports macros with the same name. +# sketch = JSExpr.@js function (p5) +# JSExpr.@var s = function(p) +# JSExpr.@var barWidth = 20 +# JSExpr.@var lastBar = -1 + +# p.setup = function () +# p.createCanvas(720, 400) +# p.colorMode(p.HSB, p.height, p.height, p.height) +# p.noStroke() +# p.background(0) +# end + +# p.draw = function () +# JSExpr.@var whichBar = p.mouseX / barWidth +# JSExpr.@var barX = whichBar * barWidth; +# if whichBar != lastBar +# p.fill(p.mouseY, p.height, p.height) +# p.rect(barX, 0, barWidth, p.height) +# lastBar = whichBar +# end +# end +# end +# this.dom.querySelector("#p5container").innerText = ""; +# JSExpr.@new p5(s, "p5container"); +# end +# onimport(scope, sketch) + +# scope.dom = dom"div#p5container"("Loading p5...") + +# scope +# end + + + +# while true;sleep(1);end + +using WebSockets, WebIO +using WebIO, JSExpr +using Mux +function hue_app() + # import a javascript library + w = Scope(imports=["//cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.11/p5.js"]) + # Define a Julia function with the @js macro, that will get translated to javascript + onimport(w, @js function (p5) + function sketch(s) + s.setup = () -> s.createCanvas(640, 200) + + s.draw = function () + if s.mouseIsPressed + s.fill(0); s.stroke(255) + else + s.fill(255); s.stroke(0) + end + s.ellipse(s.mouseX, s.mouseY, 20, 20) + end + end + @new p5(sketch, this.dom.querySelector("#container")) + end) + + w(dom"div#container"()) +end + +# Display in whatever frontend is avalaible +function main() + if @isdefined(IJulia) || @isdefined(Juno) + return hue_app() + elseif @isdefined(Blink) + win = Window() + body!(win, hue_app()) + win + elseif @isdefined(Mux) + @sync webio_serve(page("/", req -> hue_app()), 9000) + else + error("do one of using Mux, using Blink before running the + example, or run it from within IJulia or Juno") + end +end + +main() \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/julia/readwrite.jl b/01_Code/physical_computing_interface/simulation/julia/readwrite.jl new file mode 100644 index 0000000000000000000000000000000000000000..d4057b967494be944dbe72746be603ba57307add --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/julia/readwrite.jl @@ -0,0 +1,34 @@ +import JSON +################### +### Write data #### +################### +# dictionary to write +dict1 = Dict("param1" => 1, "param2" => 2, + "dict" => Dict("d1"=>1.,"d2"=>1.,"d3"=>1.)) + +# pass data as a json string (how it shall be displayed in a file) +stringdata = JSON.json(dict1) + +# write the file with the stringdata variable information +open("../json/write_read.json", "w") do f + write(f, stringdata) + end + +################### +### Read data ##### +################### +# create variable to write the information +dict2 = Dict() +open("../json/setup.json", "r") do f + global dict2 + dicttxt = String(read(f)) # file information to string + dict2=JSON.parse(dicttxt) # parse and transform data +end + +# print both dictionaries +# println(dict1) +# println(dict1["dict"]["d3"]) +# println(dict2) + + +println(dict2["setup"]["viz"]["minStress"]) \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/lib/DragControls.js b/01_Code/physical_computing_interface/simulation/lib/DragControls.js new file mode 100644 index 0000000000000000000000000000000000000000..26cb43895746a448b85deacce33aa61d936a7933 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/DragControls.js @@ -0,0 +1,250 @@ +/** + * @author zz85 / https://github.com/zz85 + * @author mrdoob / http://mrdoob.com + * Running this will allow you to drag three.js objects around the screen. + */ + +THREE.DragControls = function ( _objects, _camera, _domElement ) { + + var _plane = new THREE.Plane(); + var _raycaster = new THREE.Raycaster(); + + var _mouse = new THREE.Vector2(); + var _offset = new THREE.Vector3(); + var _intersection = new THREE.Vector3(); + var _worldPosition = new THREE.Vector3(); + var _inverseMatrix = new THREE.Matrix4(); + + var _selected = null, _hovered = null; + + // + + var scope = this; + + function activate() { + + _domElement.addEventListener( 'mousemove', onDocumentMouseMove, false ); + _domElement.addEventListener( 'mousedown', onDocumentMouseDown, false ); + _domElement.addEventListener( 'mouseup', onDocumentMouseCancel, false ); + _domElement.addEventListener( 'mouseleave', onDocumentMouseCancel, false ); + _domElement.addEventListener( 'touchmove', onDocumentTouchMove, false ); + _domElement.addEventListener( 'touchstart', onDocumentTouchStart, false ); + _domElement.addEventListener( 'touchend', onDocumentTouchEnd, false ); + + } + + function deactivate() { + + _domElement.removeEventListener( 'mousemove', onDocumentMouseMove, false ); + _domElement.removeEventListener( 'mousedown', onDocumentMouseDown, false ); + _domElement.removeEventListener( 'mouseup', onDocumentMouseCancel, false ); + _domElement.removeEventListener( 'mouseleave', onDocumentMouseCancel, false ); + _domElement.removeEventListener( 'touchmove', onDocumentTouchMove, false ); + _domElement.removeEventListener( 'touchstart', onDocumentTouchStart, false ); + _domElement.removeEventListener( 'touchend', onDocumentTouchEnd, false ); + + } + + function dispose() { + + deactivate(); + + } + + function onDocumentMouseMove( event ) { + + event.preventDefault(); + + var rect = _domElement.getBoundingClientRect(); + + _mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1; + _mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1; + + _raycaster.setFromCamera( _mouse, _camera ); + + if ( _selected && scope.enabled ) { + + if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) { + + _selected.position.copy( _intersection.sub( _offset ).applyMatrix4( _inverseMatrix ) ); + + } + + scope.dispatchEvent( { type: 'drag', object: _selected } ); + + return; + + } + + _raycaster.setFromCamera( _mouse, _camera ); + + var intersects = _raycaster.intersectObjects( _objects, true ); + + if ( intersects.length > 0 ) { + + var object = intersects[ 0 ].object; + + _plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( object.matrixWorld ) ); + + if ( _hovered !== object ) { + + scope.dispatchEvent( { type: 'hoveron', object: object } ); + + _domElement.style.cursor = 'pointer'; + _hovered = object; + + } + + } else { + + if ( _hovered !== null ) { + + scope.dispatchEvent( { type: 'hoveroff', object: _hovered } ); + + _domElement.style.cursor = 'auto'; + _hovered = null; + + } + + } + + } + + function onDocumentMouseDown( event ) { + + event.preventDefault(); + + _raycaster.setFromCamera( _mouse, _camera ); + + var intersects = _raycaster.intersectObjects( _objects, true ); + + if ( intersects.length > 0 ) { + + _selected = intersects[ 0 ].object; + + if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) { + + _inverseMatrix.getInverse( _selected.parent.matrixWorld ); + _offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) ); + + } + + _domElement.style.cursor = 'move'; + + scope.dispatchEvent( { type: 'dragstart', object: _selected } ); + + } + + + } + + function onDocumentMouseCancel( event ) { + + event.preventDefault(); + + if ( _selected ) { + + scope.dispatchEvent( { type: 'dragend', object: _selected } ); + + _selected = null; + + } + + _domElement.style.cursor = _hovered ? 'pointer' : 'auto'; + + } + + function onDocumentTouchMove( event ) { + + event.preventDefault(); + event = event.changedTouches[ 0 ]; + + var rect = _domElement.getBoundingClientRect(); + + _mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1; + _mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1; + + _raycaster.setFromCamera( _mouse, _camera ); + + if ( _selected && scope.enabled ) { + + if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) { + + _selected.position.copy( _intersection.sub( _offset ).applyMatrix4( _inverseMatrix ) ); + + } + + scope.dispatchEvent( { type: 'drag', object: _selected } ); + + return; + + } + + } + + function onDocumentTouchStart( event ) { + + event.preventDefault(); + event = event.changedTouches[ 0 ]; + + var rect = _domElement.getBoundingClientRect(); + + _mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1; + _mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1; + + _raycaster.setFromCamera( _mouse, _camera ); + + var intersects = _raycaster.intersectObjects( _objects, true ); + + if ( intersects.length > 0 ) { + + _selected = intersects[ 0 ].object; + + _plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) ); + + if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) { + + _inverseMatrix.getInverse( _selected.parent.matrixWorld ); + _offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) ); + + } + + _domElement.style.cursor = 'move'; + + scope.dispatchEvent( { type: 'dragstart', object: _selected } ); + + } + + + } + + function onDocumentTouchEnd( event ) { + + event.preventDefault(); + + if ( _selected ) { + + scope.dispatchEvent( { type: 'dragend', object: _selected } ); + + _selected = null; + + } + + _domElement.style.cursor = 'auto'; + + } + + activate(); + + // API + + this.enabled = true; + + this.activate = activate; + this.deactivate = deactivate; + this.dispose = dispose; + +}; + +THREE.DragControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.DragControls.prototype.constructor = THREE.DragControls; diff --git a/01_Code/physical_computing_interface/simulation/lib/GeometryUtils.js b/01_Code/physical_computing_interface/simulation/lib/GeometryUtils.js new file mode 100644 index 0000000000000000000000000000000000000000..d16426fc17736eb2d283556130919387b62e3842 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/GeometryUtils.js @@ -0,0 +1,448 @@ +/** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + +THREE.GeometryUtils = { + + // Merge two geometries or geometry and geometry from object (using object's transform) + + merge: function ( geometry1, geometry2, materialIndexOffset ) { + + console.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' ); + + var matrix; + + if ( geometry2 instanceof THREE.Mesh ) { + + geometry2.matrixAutoUpdate && geometry2.updateMatrix(); + + matrix = geometry2.matrix; + geometry2 = geometry2.geometry; + + } + + geometry1.merge( geometry2, matrix, materialIndexOffset ); + + }, + + // Get random point in triangle (via barycentric coordinates) + // (uniform distribution) + // http://www.cgafaq.info/wiki/Random_Point_In_Triangle + + randomPointInTriangle: function () { + + var vector = new THREE.Vector3(); + + return function ( vectorA, vectorB, vectorC ) { + + var point = new THREE.Vector3(); + + var a = Math.random(); + var b = Math.random(); + + if ( ( a + b ) > 1 ) { + + a = 1 - a; + b = 1 - b; + + } + + var c = 1 - a - b; + + point.copy( vectorA ); + point.multiplyScalar( a ); + + vector.copy( vectorB ); + vector.multiplyScalar( b ); + + point.add( vector ); + + vector.copy( vectorC ); + vector.multiplyScalar( c ); + + point.add( vector ); + + return point; + + }; + + }(), + + // Get random point in face (triangle) + // (uniform distribution) + + randomPointInFace: function ( face, geometry ) { + + var vA, vB, vC; + + vA = geometry.vertices[ face.a ]; + vB = geometry.vertices[ face.b ]; + vC = geometry.vertices[ face.c ]; + + return THREE.GeometryUtils.randomPointInTriangle( vA, vB, vC ); + + }, + + // Get uniformly distributed random points in mesh + // - create array with cumulative sums of face areas + // - pick random number from 0 to total area + // - find corresponding place in area array by binary search + // - get random point in face + + randomPointsInGeometry: function ( geometry, n ) { + + var face, i, + faces = geometry.faces, + vertices = geometry.vertices, + il = faces.length, + totalArea = 0, + cumulativeAreas = [], + vA, vB, vC; + + // precompute face areas + + for ( i = 0; i < il; i ++ ) { + + face = faces[ i ]; + + vA = vertices[ face.a ]; + vB = vertices[ face.b ]; + vC = vertices[ face.c ]; + + face._area = THREE.GeometryUtils.triangleArea( vA, vB, vC ); + + totalArea += face._area; + + cumulativeAreas[ i ] = totalArea; + + } + + // binary search cumulative areas array + + function binarySearchIndices( value ) { + + function binarySearch( start, end ) { + + // return closest larger index + // if exact number is not found + + if ( end < start ) + return start; + + var mid = start + Math.floor( ( end - start ) / 2 ); + + if ( cumulativeAreas[ mid ] > value ) { + + return binarySearch( start, mid - 1 ); + + } else if ( cumulativeAreas[ mid ] < value ) { + + return binarySearch( mid + 1, end ); + + } else { + + return mid; + + } + + } + + var result = binarySearch( 0, cumulativeAreas.length - 1 ); + return result; + + } + + // pick random face weighted by face area + + var r, index, + result = []; + + var stats = {}; + + for ( i = 0; i < n; i ++ ) { + + r = Math.random() * totalArea; + + index = binarySearchIndices( r ); + + result[ i ] = THREE.GeometryUtils.randomPointInFace( faces[ index ], geometry ); + + if ( ! stats[ index ] ) { + + stats[ index ] = 1; + + } else { + + stats[ index ] += 1; + + } + + } + + return result; + + }, + + randomPointsInBufferGeometry: function ( geometry, n ) { + + var i, + vertices = geometry.attributes.position.array, + totalArea = 0, + cumulativeAreas = [], + vA, vB, vC; + + // precompute face areas + vA = new THREE.Vector3(); + vB = new THREE.Vector3(); + vC = new THREE.Vector3(); + + // geometry._areas = []; + var il = vertices.length / 9; + + for ( i = 0; i < il; i ++ ) { + + vA.set( vertices[ i * 9 + 0 ], vertices[ i * 9 + 1 ], vertices[ i * 9 + 2 ] ); + vB.set( vertices[ i * 9 + 3 ], vertices[ i * 9 + 4 ], vertices[ i * 9 + 5 ] ); + vC.set( vertices[ i * 9 + 6 ], vertices[ i * 9 + 7 ], vertices[ i * 9 + 8 ] ); + + totalArea += THREE.GeometryUtils.triangleArea( vA, vB, vC ); + + cumulativeAreas.push( totalArea ); + + } + + // binary search cumulative areas array + + function binarySearchIndices( value ) { + + function binarySearch( start, end ) { + + // return closest larger index + // if exact number is not found + + if ( end < start ) + return start; + + var mid = start + Math.floor( ( end - start ) / 2 ); + + if ( cumulativeAreas[ mid ] > value ) { + + return binarySearch( start, mid - 1 ); + + } else if ( cumulativeAreas[ mid ] < value ) { + + return binarySearch( mid + 1, end ); + + } else { + + return mid; + + } + + } + + var result = binarySearch( 0, cumulativeAreas.length - 1 ); + return result; + + } + + // pick random face weighted by face area + + var r, index, + result = []; + + for ( i = 0; i < n; i ++ ) { + + r = Math.random() * totalArea; + + index = binarySearchIndices( r ); + + // result[ i ] = THREE.GeometryUtils.randomPointInFace( faces[ index ], geometry, true ); + vA.set( vertices[ index * 9 + 0 ], vertices[ index * 9 + 1 ], vertices[ index * 9 + 2 ] ); + vB.set( vertices[ index * 9 + 3 ], vertices[ index * 9 + 4 ], vertices[ index * 9 + 5 ] ); + vC.set( vertices[ index * 9 + 6 ], vertices[ index * 9 + 7 ], vertices[ index * 9 + 8 ] ); + result[ i ] = THREE.GeometryUtils.randomPointInTriangle( vA, vB, vC ); + + } + + return result; + + }, + + // Get triangle area (half of parallelogram) + // http://mathworld.wolfram.com/TriangleArea.html + + triangleArea: function () { + + var vector1 = new THREE.Vector3(); + var vector2 = new THREE.Vector3(); + + return function ( vectorA, vectorB, vectorC ) { + + vector1.subVectors( vectorB, vectorA ); + vector2.subVectors( vectorC, vectorA ); + vector1.cross( vector2 ); + + return 0.5 * vector1.length(); + + }; + + }(), + + center: function ( geometry ) { + + console.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' ); + return geometry.center(); + + }, + + /** + * Generates 2D-Coordinates in a very fast way. + * + * @author Dylan Grafmyre + * + * Based on work by: + * @author Thomas Diewald + * @link http://www.openprocessing.org/sketch/15493 + * + * @param center Center of Hilbert curve. + * @param size Total width of Hilbert curve. + * @param iterations Number of subdivisions. + * @param v0 Corner index -X, -Z. + * @param v1 Corner index -X, +Z. + * @param v2 Corner index +X, +Z. + * @param v3 Corner index +X, -Z. + */ + hilbert2D: function ( center, size, iterations, v0, v1, v2, v3 ) { + + // Default Vars + var center = center !== undefined ? center : new THREE.Vector3( 0, 0, 0 ), + size = size !== undefined ? size : 10, + half = size / 2, + iterations = iterations !== undefined ? iterations : 1, + v0 = v0 !== undefined ? v0 : 0, + v1 = v1 !== undefined ? v1 : 1, + v2 = v2 !== undefined ? v2 : 2, + v3 = v3 !== undefined ? v3 : 3 + ; + + var vec_s = [ + new THREE.Vector3( center.x - half, center.y, center.z - half ), + new THREE.Vector3( center.x - half, center.y, center.z + half ), + new THREE.Vector3( center.x + half, center.y, center.z + half ), + new THREE.Vector3( center.x + half, center.y, center.z - half ) + ]; + + var vec = [ + vec_s[ v0 ], + vec_s[ v1 ], + vec_s[ v2 ], + vec_s[ v3 ] + ]; + + // Recurse iterations + if ( 0 <= -- iterations ) { + + var tmp = []; + + Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert2D( vec[ 0 ], half, iterations, v0, v3, v2, v1 ) ); + Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert2D( vec[ 1 ], half, iterations, v0, v1, v2, v3 ) ); + Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert2D( vec[ 2 ], half, iterations, v0, v1, v2, v3 ) ); + Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert2D( vec[ 3 ], half, iterations, v2, v1, v0, v3 ) ); + + // Return recursive call + return tmp; + + } + + // Return complete Hilbert Curve. + return vec; + + }, + + /** + * Generates 3D-Coordinates in a very fast way. + * + * @author Dylan Grafmyre + * + * Based on work by: + * @author Thomas Diewald + * @link http://www.openprocessing.org/visuals/?visualID=15599 + * + * @param center Center of Hilbert curve. + * @param size Total width of Hilbert curve. + * @param iterations Number of subdivisions. + * @param v0 Corner index -X, +Y, -Z. + * @param v1 Corner index -X, +Y, +Z. + * @param v2 Corner index -X, -Y, +Z. + * @param v3 Corner index -X, -Y, -Z. + * @param v4 Corner index +X, -Y, -Z. + * @param v5 Corner index +X, -Y, +Z. + * @param v6 Corner index +X, +Y, +Z. + * @param v7 Corner index +X, +Y, -Z. + */ + hilbert3D: function ( center, size, iterations, v0, v1, v2, v3, v4, v5, v6, v7 ) { + + // Default Vars + var center = center !== undefined ? center : new THREE.Vector3( 0, 0, 0 ), + size = size !== undefined ? size : 10, + half = size / 2, + iterations = iterations !== undefined ? iterations : 1, + v0 = v0 !== undefined ? v0 : 0, + v1 = v1 !== undefined ? v1 : 1, + v2 = v2 !== undefined ? v2 : 2, + v3 = v3 !== undefined ? v3 : 3, + v4 = v4 !== undefined ? v4 : 4, + v5 = v5 !== undefined ? v5 : 5, + v6 = v6 !== undefined ? v6 : 6, + v7 = v7 !== undefined ? v7 : 7 + ; + + var vec_s = [ + new THREE.Vector3( center.x - half, center.y + half, center.z - half ), + new THREE.Vector3( center.x - half, center.y + half, center.z + half ), + new THREE.Vector3( center.x - half, center.y - half, center.z + half ), + new THREE.Vector3( center.x - half, center.y - half, center.z - half ), + new THREE.Vector3( center.x + half, center.y - half, center.z - half ), + new THREE.Vector3( center.x + half, center.y - half, center.z + half ), + new THREE.Vector3( center.x + half, center.y + half, center.z + half ), + new THREE.Vector3( center.x + half, center.y + half, center.z - half ) + ]; + + var vec = [ + vec_s[ v0 ], + vec_s[ v1 ], + vec_s[ v2 ], + vec_s[ v3 ], + vec_s[ v4 ], + vec_s[ v5 ], + vec_s[ v6 ], + vec_s[ v7 ] + ]; + + // Recurse iterations + if ( -- iterations >= 0 ) { + + var tmp = []; + + Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 0 ], half, iterations, v0, v3, v4, v7, v6, v5, v2, v1 ) ); + Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 1 ], half, iterations, v0, v7, v6, v1, v2, v5, v4, v3 ) ); + Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 2 ], half, iterations, v0, v7, v6, v1, v2, v5, v4, v3 ) ); + Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 3 ], half, iterations, v2, v3, v0, v1, v6, v7, v4, v5 ) ); + Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 4 ], half, iterations, v2, v3, v0, v1, v6, v7, v4, v5 ) ); + Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 5 ], half, iterations, v4, v3, v2, v5, v6, v1, v0, v7 ) ); + Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 6 ], half, iterations, v4, v3, v2, v5, v6, v1, v0, v7 ) ); + Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 7 ], half, iterations, v6, v5, v2, v1, v0, v3, v4, v7 ) ); + + // Return recursive call + return tmp; + + } + + // Return complete Hilbert Curve. + return vec; + + } + +}; diff --git a/01_Code/physical_computing_interface/simulation/lib/Line2.js b/01_Code/physical_computing_interface/simulation/lib/Line2.js new file mode 100644 index 0000000000000000000000000000000000000000..28e0445264af8299a0bfee537c1cdcb156671808 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/Line2.js @@ -0,0 +1,23 @@ +/** + * @author WestLangley / http://github.com/WestLangley + * + */ + +THREE.Line2 = function ( geometry, material ) { + + THREE.LineSegments2.call( this ); + + this.type = 'Line2'; + + this.geometry = geometry !== undefined ? geometry : new THREE.LineGeometry(); + this.material = material !== undefined ? material : new THREE.LineMaterial( { color: Math.random() * 0xffffff } ); + +}; + +THREE.Line2.prototype = Object.assign( Object.create( THREE.LineSegments2.prototype ), { + + constructor: THREE.Line2, + + isLine2: true + +} ); diff --git a/01_Code/physical_computing_interface/simulation/lib/LineGeometry.js b/01_Code/physical_computing_interface/simulation/lib/LineGeometry.js new file mode 100644 index 0000000000000000000000000000000000000000..77f2cfb0a5b91a24d6423cd61b37587b510982de --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/LineGeometry.js @@ -0,0 +1,98 @@ +/** + * @author WestLangley / http://github.com/WestLangley + * + */ + +THREE.LineGeometry = function () { + + THREE.LineSegmentsGeometry.call( this ); + + this.type = 'LineGeometry'; + +}; + +THREE.LineGeometry.prototype = Object.assign( Object.create( THREE.LineSegmentsGeometry.prototype ), { + + constructor: THREE.LineGeometry, + + isLineGeometry: true, + + setPositions: function ( array ) { + + // converts [ x1, y1, z1, x2, y2, z2, ... ] to pairs format + + var length = array.length - 3; + var points = new Float32Array( 2 * length ); + + for ( var i = 0; i < length; i += 3 ) { + + points[ 2 * i ] = array[ i ]; + points[ 2 * i + 1 ] = array[ i + 1 ]; + points[ 2 * i + 2 ] = array[ i + 2 ]; + + points[ 2 * i + 3 ] = array[ i + 3 ]; + points[ 2 * i + 4 ] = array[ i + 4 ]; + points[ 2 * i + 5 ] = array[ i + 5 ]; + + } + + THREE.LineSegmentsGeometry.prototype.setPositions.call( this, points ); + + return this; + + }, + + setColors: function ( array ) { + + // converts [ r1, g1, b1, r2, g2, b2, ... ] to pairs format + + var length = array.length - 3; + var colors = new Float32Array( 2 * length ); + + for ( var i = 0; i < length; i += 3 ) { + + colors[ 2 * i ] = array[ i ]; + colors[ 2 * i + 1 ] = array[ i + 1 ]; + colors[ 2 * i + 2 ] = array[ i + 2 ]; + + colors[ 2 * i + 3 ] = array[ i + 3 ]; + colors[ 2 * i + 4 ] = array[ i + 4 ]; + colors[ 2 * i + 5 ] = array[ i + 5 ]; + + } + + THREE.LineSegmentsGeometry.prototype.setColors.call( this, colors ); + + return this; + + }, + + fromLine: function ( line ) { + + var geometry = line.geometry; + + if ( geometry.isGeometry ) { + + this.setPositions( geometry.vertices ); + + } else if ( geometry.isBufferGeometry ) { + + this.setPositions( geometry.position.array ); // assumes non-indexed + + } + + // set colors, maybe + + return this; + + }, + + copy: function ( /* source */ ) { + + // todo + + return this; + + } + +} ); diff --git a/01_Code/physical_computing_interface/simulation/lib/LineMaterial.js b/01_Code/physical_computing_interface/simulation/lib/LineMaterial.js new file mode 100644 index 0000000000000000000000000000000000000000..308be0fa2ba99d9a9cfff63db140e4a62ae13b1d --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/LineMaterial.js @@ -0,0 +1,375 @@ +/** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * color: <hex>, + * linewidth: <float>, + * dashed: <boolean>, + * dashScale: <float>, + * dashSize: <float>, + * gapSize: <float>, + * resolution: <Vector2>, // to be set by renderer + * } + */ + +THREE.UniformsLib.line = { + + linewidth: { value: 1 }, + resolution: { value: new THREE.Vector2( 1, 1 ) }, + dashScale: { value: 1 }, + dashSize: { value: 1 }, + gapSize: { value: 1 } // todo FIX - maybe change to totalSize + +}; + +THREE.ShaderLib[ 'line' ] = { + + uniforms: THREE.UniformsUtils.merge( [ + THREE.UniformsLib.common, + THREE.UniformsLib.fog, + THREE.UniformsLib.line + ] ), + + vertexShader: + ` + #include <common> + #include <color_pars_vertex> + #include <fog_pars_vertex> + #include <logdepthbuf_pars_vertex> + #include <clipping_planes_pars_vertex> + + uniform float linewidth; + uniform vec2 resolution; + + attribute vec3 instanceStart; + attribute vec3 instanceEnd; + + attribute vec3 instanceColorStart; + attribute vec3 instanceColorEnd; + + varying vec2 vUv; + + #ifdef USE_DASH + + uniform float dashScale; + attribute float instanceDistanceStart; + attribute float instanceDistanceEnd; + varying float vLineDistance; + + #endif + + void trimSegment( const in vec4 start, inout vec4 end ) { + + // trim end segment so it terminates between the camera plane and the near plane + + // conservative estimate of the near plane + float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column + float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column + float nearEstimate = - 0.5 * b / a; + + float alpha = ( nearEstimate - start.z ) / ( end.z - start.z ); + + end.xyz = mix( start.xyz, end.xyz, alpha ); + + } + + void main() { + + #ifdef USE_COLOR + + vColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd; + + #endif + + #ifdef USE_DASH + + vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd; + + #endif + + float aspect = resolution.x / resolution.y; + + vUv = uv; + + // camera space + vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 ); + vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 ); + + // special case for perspective projection, and segments that terminate either in, or behind, the camera plane + // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space + // but we need to perform ndc-space calculations in the shader, so we must address this issue directly + // perhaps there is a more elegant solution -- WestLangley + + bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column + + if ( perspective ) { + + if ( start.z < 0.0 && end.z >= 0.0 ) { + + trimSegment( start, end ); + + } else if ( end.z < 0.0 && start.z >= 0.0 ) { + + trimSegment( end, start ); + + } + + } + + // clip space + vec4 clipStart = projectionMatrix * start; + vec4 clipEnd = projectionMatrix * end; + + // ndc space + vec2 ndcStart = clipStart.xy / clipStart.w; + vec2 ndcEnd = clipEnd.xy / clipEnd.w; + + // direction + vec2 dir = ndcEnd - ndcStart; + + // account for clip-space aspect ratio + dir.x *= aspect; + dir = normalize( dir ); + + // perpendicular to dir + vec2 offset = vec2( dir.y, - dir.x ); + + // undo aspect ratio adjustment + dir.x /= aspect; + offset.x /= aspect; + + // sign flip + if ( position.x < 0.0 ) offset *= - 1.0; + + // endcaps + if ( position.y < 0.0 ) { + + offset += - dir; + + } else if ( position.y > 1.0 ) { + + offset += dir; + + } + + // adjust for linewidth + offset *= linewidth; + + // adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ... + offset /= resolution.y; + + // select end + vec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd; + + // back to clip space + offset *= clip.w; + + clip.xy += offset; + + gl_Position = clip; + + vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation + + #include <logdepthbuf_vertex> + #include <clipping_planes_vertex> + #include <fog_vertex> + + } + `, + + fragmentShader: + ` + uniform vec3 diffuse; + uniform float opacity; + + #ifdef USE_DASH + + uniform float dashSize; + uniform float gapSize; + + #endif + + varying float vLineDistance; + + #include <common> + #include <color_pars_fragment> + #include <fog_pars_fragment> + #include <logdepthbuf_pars_fragment> + #include <clipping_planes_pars_fragment> + + varying vec2 vUv; + + void main() { + + #include <clipping_planes_fragment> + + #ifdef USE_DASH + + if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps + + if ( mod( vLineDistance, dashSize + gapSize ) > dashSize ) discard; // todo - FIX + + #endif + + if ( abs( vUv.y ) > 1.0 ) { + + float a = vUv.x; + float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; + float len2 = a * a + b * b; + + if ( len2 > 1.0 ) discard; + + } + + vec4 diffuseColor = vec4( diffuse, opacity ); + + #include <logdepthbuf_fragment> + #include <color_fragment> + + gl_FragColor = vec4( diffuseColor.rgb, diffuseColor.a ); + + #include <premultiplied_alpha_fragment> + #include <tonemapping_fragment> + #include <encodings_fragment> + #include <fog_fragment> + + } + ` +}; + +THREE.LineMaterial = function ( parameters ) { + + THREE.ShaderMaterial.call( this, { + + type: 'LineMaterial', + + uniforms: THREE.UniformsUtils.clone( THREE.ShaderLib[ 'line' ].uniforms ), + + vertexShader: THREE.ShaderLib[ 'line' ].vertexShader, + fragmentShader: THREE.ShaderLib[ 'line' ].fragmentShader + + } ); + + this.dashed = false; + + Object.defineProperties( this, { + + color: { + + enumerable: true, + + get: function () { + + return this.uniforms.diffuse.value; + + }, + + set: function ( value ) { + + this.uniforms.diffuse.value = value; + + } + + }, + + linewidth: { + + enumerable: true, + + get: function () { + + return this.uniforms.linewidth.value; + + }, + + set: function ( value ) { + + this.uniforms.linewidth.value = value; + + } + + }, + + dashScale: { + + enumerable: true, + + get: function () { + + return this.uniforms.dashScale.value; + + }, + + set: function ( value ) { + + this.uniforms.dashScale.value = value; + + } + + }, + + dashSize: { + + enumerable: true, + + get: function () { + + return this.uniforms.dashSize.value; + + }, + + set: function ( value ) { + + this.uniforms.dashSize.value = value; + + } + + }, + + gapSize: { + + enumerable: true, + + get: function () { + + return this.uniforms.gapSize.value; + + }, + + set: function ( value ) { + + this.uniforms.gapSize.value = value; + + } + + }, + + resolution: { + + enumerable: true, + + get: function () { + + return this.uniforms.resolution.value; + + }, + + set: function ( value ) { + + this.uniforms.resolution.value.copy( value ); + + } + + } + + } ); + + this.setValues( parameters ); + +}; + +THREE.LineMaterial.prototype = Object.create( THREE.ShaderMaterial.prototype ); +THREE.LineMaterial.prototype.constructor = THREE.LineMaterial; + +THREE.LineMaterial.prototype.isLineMaterial = true; + diff --git a/01_Code/physical_computing_interface/simulation/lib/LineSegments2.js b/01_Code/physical_computing_interface/simulation/lib/LineSegments2.js new file mode 100644 index 0000000000000000000000000000000000000000..fd17bb39bd26300ef780b0a7d9f1dd2be9503225 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/LineSegments2.js @@ -0,0 +1,57 @@ +/** + * @author WestLangley / http://github.com/WestLangley + * + */ + +THREE.LineSegments2 = function ( geometry, material ) { + + THREE.Mesh.call( this ); + + this.type = 'LineSegments2'; + + this.geometry = geometry !== undefined ? geometry : new THREE.LineSegmentsGeometry(); + this.material = material !== undefined ? material : new THREE.LineMaterial( { color: Math.random() * 0xffffff } ); + +}; + +THREE.LineSegments2.prototype = Object.assign( Object.create( THREE.Mesh.prototype ), { + + constructor: THREE.LineSegments2, + + isLineSegments2: true, + + computeLineDistances: ( function () { // for backwards-compatability, but could be a method of LineSegmentsGeometry... + + var start = new THREE.Vector3(); + var end = new THREE.Vector3(); + + return function computeLineDistances() { + + var geometry = this.geometry; + + var instanceStart = geometry.attributes.instanceStart; + var instanceEnd = geometry.attributes.instanceEnd; + var lineDistances = new Float32Array( 2 * instanceStart.data.count ); + + for ( var i = 0, j = 0, l = instanceStart.data.count; i < l; i ++, j += 2 ) { + + start.fromBufferAttribute( instanceStart, i ); + end.fromBufferAttribute( instanceEnd, i ); + + lineDistances[ j ] = ( j === 0 ) ? 0 : lineDistances[ j - 1 ]; + lineDistances[ j + 1 ] = lineDistances[ j ] + start.distanceTo( end ); + + } + + var instanceDistanceBuffer = new THREE.InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1 + + geometry.setAttribute( 'instanceDistanceStart', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0 + geometry.setAttribute( 'instanceDistanceEnd', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1 + + return this; + + }; + + }() ) + +} ); diff --git a/01_Code/physical_computing_interface/simulation/lib/LineSegmentsGeometry.js b/01_Code/physical_computing_interface/simulation/lib/LineSegmentsGeometry.js new file mode 100644 index 0000000000000000000000000000000000000000..6ccb2f77ab6aeedf23e634e58803fbcc61eb5655 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/LineSegmentsGeometry.js @@ -0,0 +1,244 @@ +/** + * @author WestLangley / http://github.com/WestLangley + * + */ + +THREE.LineSegmentsGeometry = function () { + + THREE.InstancedBufferGeometry.call( this ); + + this.type = 'LineSegmentsGeometry'; + + var positions = [ - 1, 2, 0, 1, 2, 0, - 1, 1, 0, 1, 1, 0, - 1, 0, 0, 1, 0, 0, - 1, - 1, 0, 1, - 1, 0 ]; + var uvs = [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 2, 1, - 2 ]; + var index = [ 0, 2, 1, 2, 3, 1, 2, 4, 3, 4, 5, 3, 4, 6, 5, 6, 7, 5 ]; + + this.setIndex( index ); + this.setAttribute( 'position', new THREE.Float32BufferAttribute( positions, 3 ) ); + this.setAttribute( 'uv', new THREE.Float32BufferAttribute( uvs, 2 ) ); + +}; + +THREE.LineSegmentsGeometry.prototype = Object.assign( Object.create( THREE.InstancedBufferGeometry.prototype ), { + + constructor: THREE.LineSegmentsGeometry, + + isLineSegmentsGeometry: true, + + applyMatrix: function ( matrix ) { + + var start = this.attributes.instanceStart; + var end = this.attributes.instanceEnd; + + if ( start !== undefined ) { + + matrix.applyToBufferAttribute( start ); + + matrix.applyToBufferAttribute( end ); + + start.data.needsUpdate = true; + + } + + if ( this.boundingBox !== null ) { + + this.computeBoundingBox(); + + } + + if ( this.boundingSphere !== null ) { + + this.computeBoundingSphere(); + + } + + return this; + + }, + + setPositions: function ( array ) { + + var lineSegments; + + if ( array instanceof Float32Array ) { + + lineSegments = array; + + } else if ( Array.isArray( array ) ) { + + lineSegments = new Float32Array( array ); + + } + + var instanceBuffer = new THREE.InstancedInterleavedBuffer( lineSegments, 6, 1 ); // xyz, xyz + + this.setAttribute( 'instanceStart', new THREE.InterleavedBufferAttribute( instanceBuffer, 3, 0 ) ); // xyz + this.setAttribute( 'instanceEnd', new THREE.InterleavedBufferAttribute( instanceBuffer, 3, 3 ) ); // xyz + + // + + this.computeBoundingBox(); + this.computeBoundingSphere(); + + return this; + + }, + + setColors: function ( array ) { + + var colors; + + if ( array instanceof Float32Array ) { + + colors = array; + + } else if ( Array.isArray( array ) ) { + + colors = new Float32Array( array ); + + } + + var instanceColorBuffer = new THREE.InstancedInterleavedBuffer( colors, 6, 1 ); // rgb, rgb + + this.setAttribute( 'instanceColorStart', new THREE.InterleavedBufferAttribute( instanceColorBuffer, 3, 0 ) ); // rgb + this.setAttribute( 'instanceColorEnd', new THREE.InterleavedBufferAttribute( instanceColorBuffer, 3, 3 ) ); // rgb + + return this; + + }, + + fromWireframeGeometry: function ( geometry ) { + + this.setPositions( geometry.attributes.position.array ); + + return this; + + }, + + fromEdgesGeometry: function ( geometry ) { + + this.setPositions( geometry.attributes.position.array ); + + return this; + + }, + + fromMesh: function ( mesh ) { + + this.fromWireframeGeometry( new THREE.WireframeGeometry( mesh.geometry ) ); + + // set colors, maybe + + return this; + + }, + + fromLineSegements: function ( lineSegments ) { + + var geometry = lineSegments.geometry; + + if ( geometry.isGeometry ) { + + this.setPositions( geometry.vertices ); + + } else if ( geometry.isBufferGeometry ) { + + this.setPositions( geometry.position.array ); // assumes non-indexed + + } + + // set colors, maybe + + return this; + + }, + + computeBoundingBox: function () { + + var box = new THREE.Box3(); + + return function computeBoundingBox() { + + if ( this.boundingBox === null ) { + + this.boundingBox = new THREE.Box3(); + + } + + var start = this.attributes.instanceStart; + var end = this.attributes.instanceEnd; + + if ( start !== undefined && end !== undefined ) { + + this.boundingBox.setFromBufferAttribute( start ); + + box.setFromBufferAttribute( end ); + + this.boundingBox.union( box ); + + } + + }; + + }(), + + computeBoundingSphere: function () { + + var vector = new THREE.Vector3(); + + return function computeBoundingSphere() { + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new THREE.Sphere(); + + } + + if ( this.boundingBox === null ) { + + this.computeBoundingBox(); + + } + + var start = this.attributes.instanceStart; + var end = this.attributes.instanceEnd; + + if ( start !== undefined && end !== undefined ) { + + var center = this.boundingSphere.center; + + this.boundingBox.getCenter( center ); + + var maxRadiusSq = 0; + + for ( var i = 0, il = start.count; i < il; i ++ ) { + + vector.fromBufferAttribute( start, i ); + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) ); + + vector.fromBufferAttribute( end, i ); + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) ); + + } + + this.boundingSphere.radius = Math.sqrt( maxRadiusSq ); + + if ( isNaN( this.boundingSphere.radius ) ) { + + console.error( 'THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.', this ); + + } + + } + + }; + + }(), + + toJSON: function () { + + // todo + + } + +} ); diff --git a/01_Code/physical_computing_interface/simulation/lib/OrbitControls.js b/01_Code/physical_computing_interface/simulation/lib/OrbitControls.js new file mode 100644 index 0000000000000000000000000000000000000000..82a9a85c0b48b3c56e835c471dcd8763604d5a67 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/OrbitControls.js @@ -0,0 +1,1180 @@ +/** + * @author qiao / https://github.com/qiao + * @author mrdoob / http://mrdoob.com + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author erich666 / http://erichaines.com + * @author ScieCode / http://github.com/sciecode + */ + +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// +// Orbit - left mouse / touch: one-finger move +// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish +// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move + +THREE.OrbitControls = function ( object, domElement ) { + + if ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter "domElement" is now mandatory.' ); + if ( domElement === document ) console.error( 'THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' ); + + this.object = object; + this.domElement = domElement; + + // Set to false to disable this control + this.enabled = true; + + // "target" sets the location of focus, where the object orbits around + this.target = new THREE.Vector3(); + + // How far you can dolly in and out ( PerspectiveCamera only ) + this.minDistance = 0; + this.maxDistance = Infinity; + + // How far you can zoom in and out ( OrthographicCamera only ) + this.minZoom = 0; + this.maxZoom = Infinity; + + // How far you can orbit vertically, upper and lower limits. + // Range is 0 to Math.PI radians. + this.minPolarAngle = 0; // radians + this.maxPolarAngle = Math.PI; // radians + + // How far you can orbit horizontally, upper and lower limits. + // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ]. + this.minAzimuthAngle = - Infinity; // radians + this.maxAzimuthAngle = Infinity; // radians + + // Set to true to enable damping (inertia) + // If damping is enabled, you must call controls.update() in your animation loop + this.enableDamping = false; + this.dampingFactor = 0.05; + + // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. + // Set to false to disable zooming + this.enableZoom = true; + this.zoomSpeed = 1.0; + + // Set to false to disable rotating + this.enableRotate = true; + this.rotateSpeed = 1.0; + + // Set to false to disable panning + this.enablePan = true; + this.panSpeed = 1.0; + this.screenSpacePanning = false; // if true, pan in screen-space + this.keyPanSpeed = 7.0; // pixels moved per arrow key push + + // Set to true to automatically rotate around the target + // If auto-rotate is enabled, you must call controls.update() in your animation loop + this.autoRotate = false; + this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 + + // Set to false to disable use of the keys + this.enableKeys = true; + + // The four arrow keys + this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; + + // Mouse buttons + this.mouseButtons = { LEFT: THREE.MOUSE.ROTATE, MIDDLE: THREE.MOUSE.DOLLY, RIGHT: THREE.MOUSE.PAN }; + + // Touch fingers + this.touches = { ONE: THREE.TOUCH.ROTATE, TWO: THREE.TOUCH.DOLLY_PAN }; + + // for reset + this.target0 = this.target.clone(); + this.position0 = this.object.position.clone(); + this.zoom0 = this.object.zoom; + + // + // public methods + // + + this.getPolarAngle = function () { + + return spherical.phi; + + }; + + this.getAzimuthalAngle = function () { + + return spherical.theta; + + }; + + this.saveState = function () { + + scope.target0.copy( scope.target ); + scope.position0.copy( scope.object.position ); + scope.zoom0 = scope.object.zoom; + + }; + + this.reset = function () { + + scope.target.copy( scope.target0 ); + scope.object.position.copy( scope.position0 ); + scope.object.zoom = scope.zoom0; + + scope.object.updateProjectionMatrix(); + scope.dispatchEvent( changeEvent ); + + scope.update(); + + state = STATE.NONE; + + }; + + // this method is exposed, but perhaps it would be better if we can make it private... + this.update = function () { + + var offset = new THREE.Vector3(); + + // so camera.up is the orbit axis + var quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) ); + var quatInverse = quat.clone().inverse(); + + var lastPosition = new THREE.Vector3(); + var lastQuaternion = new THREE.Quaternion(); + + return function update() { + + var position = scope.object.position; + + offset.copy( position ).sub( scope.target ); + + // rotate offset to "y-axis-is-up" space + offset.applyQuaternion( quat ); + + // angle from z-axis around y-axis + spherical.setFromVector3( offset ); + + if ( scope.autoRotate && state === STATE.NONE ) { + + rotateLeft( getAutoRotationAngle() ); + + } + + if ( scope.enableDamping ) { + + spherical.theta += sphericalDelta.theta * scope.dampingFactor; + spherical.phi += sphericalDelta.phi * scope.dampingFactor; + + } else { + + spherical.theta += sphericalDelta.theta; + spherical.phi += sphericalDelta.phi; + + } + + // restrict theta to be between desired limits + spherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) ); + + // restrict phi to be between desired limits + spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) ); + + spherical.makeSafe(); + + + spherical.radius *= scale; + + // restrict radius to be between desired limits + spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) ); + + // move target to panned location + + if ( scope.enableDamping === true ) { + + scope.target.addScaledVector( panOffset, scope.dampingFactor ); + + } else { + + scope.target.add( panOffset ); + + } + + offset.setFromSpherical( spherical ); + + // rotate offset back to "camera-up-vector-is-up" space + offset.applyQuaternion( quatInverse ); + + position.copy( scope.target ).add( offset ); + + scope.object.lookAt( scope.target ); + + if ( scope.enableDamping === true ) { + + sphericalDelta.theta *= ( 1 - scope.dampingFactor ); + sphericalDelta.phi *= ( 1 - scope.dampingFactor ); + + panOffset.multiplyScalar( 1 - scope.dampingFactor ); + + } else { + + sphericalDelta.set( 0, 0, 0 ); + + panOffset.set( 0, 0, 0 ); + + } + + scale = 1; + + // update condition is: + // min(camera displacement, camera rotation in radians)^2 > EPS + // using small-angle approximation cos(x/2) = 1 - x^2 / 8 + + if ( zoomChanged || + lastPosition.distanceToSquared( scope.object.position ) > EPS || + 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) { + + scope.dispatchEvent( changeEvent ); + + lastPosition.copy( scope.object.position ); + lastQuaternion.copy( scope.object.quaternion ); + zoomChanged = false; + + return true; + + } + + return false; + + }; + + }(); + + this.dispose = function () { + + scope.domElement.removeEventListener( 'contextmenu', onContextMenu, false ); + scope.domElement.removeEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.removeEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.removeEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.removeEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.removeEventListener( 'touchmove', onTouchMove, false ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + scope.domElement.removeEventListener( 'keydown', onKeyDown, false ); + + //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? + + }; + + // + // internals + // + + var scope = this; + + var changeEvent = { type: 'change' }; + var startEvent = { type: 'start' }; + var endEvent = { type: 'end' }; + + var STATE = { + NONE: - 1, + ROTATE: 0, + DOLLY: 1, + PAN: 2, + TOUCH_ROTATE: 3, + TOUCH_PAN: 4, + TOUCH_DOLLY_PAN: 5, + TOUCH_DOLLY_ROTATE: 6 + }; + + var state = STATE.NONE; + + var EPS = 0.000001; + + // current position in spherical coordinates + var spherical = new THREE.Spherical(); + var sphericalDelta = new THREE.Spherical(); + + var scale = 1; + var panOffset = new THREE.Vector3(); + var zoomChanged = false; + + var rotateStart = new THREE.Vector2(); + var rotateEnd = new THREE.Vector2(); + var rotateDelta = new THREE.Vector2(); + + var panStart = new THREE.Vector2(); + var panEnd = new THREE.Vector2(); + var panDelta = new THREE.Vector2(); + + var dollyStart = new THREE.Vector2(); + var dollyEnd = new THREE.Vector2(); + var dollyDelta = new THREE.Vector2(); + + function getAutoRotationAngle() { + + return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; + + } + + function getZoomScale() { + + return Math.pow( 0.95, scope.zoomSpeed ); + + } + + function rotateLeft( angle ) { + + sphericalDelta.theta -= angle; + + } + + function rotateUp( angle ) { + + sphericalDelta.phi -= angle; + + } + + var panLeft = function () { + + var v = new THREE.Vector3(); + + return function panLeft( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix + v.multiplyScalar( - distance ); + + panOffset.add( v ); + + }; + + }(); + + var panUp = function () { + + var v = new THREE.Vector3(); + + return function panUp( distance, objectMatrix ) { + + if ( scope.screenSpacePanning === true ) { + + v.setFromMatrixColumn( objectMatrix, 1 ); + + } else { + + v.setFromMatrixColumn( objectMatrix, 0 ); + v.crossVectors( scope.object.up, v ); + + } + + v.multiplyScalar( distance ); + + panOffset.add( v ); + + }; + + }(); + + // deltaX and deltaY are in pixels; right and down are positive + var pan = function () { + + var offset = new THREE.Vector3(); + + return function pan( deltaX, deltaY ) { + + var element = scope.domElement; + + if ( scope.object.isPerspectiveCamera ) { + + // perspective + var position = scope.object.position; + offset.copy( position ).sub( scope.target ); + var targetDistance = offset.length(); + + // half of the fov is center to top of screen + targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); + + // we use only clientHeight here so aspect ratio does not distort speed + panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); + panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); + + } else if ( scope.object.isOrthographicCamera ) { + + // orthographic + panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); + panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); + + } else { + + // camera neither orthographic nor perspective + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); + scope.enablePan = false; + + } + + }; + + }(); + + function dollyIn( dollyScale ) { + + if ( scope.object.isPerspectiveCamera ) { + + scale /= dollyScale; + + } else if ( scope.object.isOrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + function dollyOut( dollyScale ) { + + if ( scope.object.isPerspectiveCamera ) { + + scale *= dollyScale; + + } else if ( scope.object.isOrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + // + // event callbacks - update the object state + // + + function handleMouseDownRotate( event ) { + + rotateStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownDolly( event ) { + + dollyStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownPan( event ) { + + panStart.set( event.clientX, event.clientY ); + + } + + function handleMouseMoveRotate( event ) { + + rotateEnd.set( event.clientX, event.clientY ); + + rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); + + var element = scope.domElement; + + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height + + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleMouseMoveDolly( event ) { + + dollyEnd.set( event.clientX, event.clientY ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyIn( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyOut( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleMouseMovePan( event ) { + + panEnd.set( event.clientX, event.clientY ); + + panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleMouseUp( /*event*/ ) { + + // no-op + + } + + function handleMouseWheel( event ) { + + if ( event.deltaY < 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( event.deltaY > 0 ) { + + dollyIn( getZoomScale() ); + + } + + scope.update(); + + } + + function handleKeyDown( event ) { + + var needsUpdate = false; + + switch ( event.keyCode ) { + + case scope.keys.UP: + pan( 0, scope.keyPanSpeed ); + needsUpdate = true; + break; + + case scope.keys.BOTTOM: + pan( 0, - scope.keyPanSpeed ); + needsUpdate = true; + break; + + case scope.keys.LEFT: + pan( scope.keyPanSpeed, 0 ); + needsUpdate = true; + break; + + case scope.keys.RIGHT: + pan( - scope.keyPanSpeed, 0 ); + needsUpdate = true; + break; + + } + + if ( needsUpdate ) { + + // prevent the browser from scrolling on cursor keys + event.preventDefault(); + + scope.update(); + + } + + + } + + function handleTouchStartRotate( event ) { + + if ( event.touches.length == 1 ) { + + rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } else { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + rotateStart.set( x, y ); + + } + + } + + function handleTouchStartPan( event ) { + + if ( event.touches.length == 1 ) { + + panStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } else { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + panStart.set( x, y ); + + } + + } + + function handleTouchStartDolly( event ) { + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyStart.set( 0, distance ); + + } + + function handleTouchStartDollyPan( event ) { + + if ( scope.enableZoom ) handleTouchStartDolly( event ); + + if ( scope.enablePan ) handleTouchStartPan( event ); + + } + + function handleTouchStartDollyRotate( event ) { + + if ( scope.enableZoom ) handleTouchStartDolly( event ); + + if ( scope.enableRotate ) handleTouchStartRotate( event ); + + } + + function handleTouchMoveRotate( event ) { + + if ( event.touches.length == 1 ) { + + rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } else { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + rotateEnd.set( x, y ); + + } + + rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); + + var element = scope.domElement; + + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height + + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); + + rotateStart.copy( rotateEnd ); + + } + + function handleTouchMovePan( event ) { + + if ( event.touches.length == 1 ) { + + panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } else { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + panEnd.set( x, y ); + + } + + panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + } + + function handleTouchMoveDolly( event ) { + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyEnd.set( 0, distance ); + + dollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) ); + + dollyIn( dollyDelta.y ); + + dollyStart.copy( dollyEnd ); + + } + + function handleTouchMoveDollyPan( event ) { + + if ( scope.enableZoom ) handleTouchMoveDolly( event ); + + if ( scope.enablePan ) handleTouchMovePan( event ); + + } + + function handleTouchMoveDollyRotate( event ) { + + if ( scope.enableZoom ) handleTouchMoveDolly( event ); + + if ( scope.enableRotate ) handleTouchMoveRotate( event ); + + } + + function handleTouchEnd( /*event*/ ) { + + // no-op + + } + + // + // event handlers - FSM: listen for events and reset state + // + + function onMouseDown( event ) { + + if ( scope.enabled === false ) return; + + // Prevent the browser from scrolling. + + event.preventDefault(); + + // Manually set the focus since calling preventDefault above + // prevents the browser from setting it automatically. + + scope.domElement.focus ? scope.domElement.focus() : window.focus(); + + switch ( event.button ) { + + case 0: + + switch ( scope.mouseButtons.LEFT ) { + + case THREE.MOUSE.ROTATE: + + if ( event.ctrlKey || event.metaKey || event.shiftKey ) { + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + } else { + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + } + + break; + + case THREE.MOUSE.PAN: + + if ( event.ctrlKey || event.metaKey || event.shiftKey ) { + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + } else { + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + } + + break; + + default: + + state = STATE.NONE; + + } + + break; + + + case 1: + + switch ( scope.mouseButtons.MIDDLE ) { + + case THREE.MOUSE.DOLLY: + + if ( scope.enableZoom === false ) return; + + handleMouseDownDolly( event ); + + state = STATE.DOLLY; + + break; + + + default: + + state = STATE.NONE; + + } + + break; + + case 2: + + switch ( scope.mouseButtons.RIGHT ) { + + case THREE.MOUSE.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + break; + + case THREE.MOUSE.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + break; + + default: + + state = STATE.NONE; + + } + + break; + + } + + if ( state !== STATE.NONE ) { + + document.addEventListener( 'mousemove', onMouseMove, false ); + document.addEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( startEvent ); + + } + + } + + function onMouseMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( state ) { + + case STATE.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleMouseMoveRotate( event ); + + break; + + case STATE.DOLLY: + + if ( scope.enableZoom === false ) return; + + handleMouseMoveDolly( event ); + + break; + + case STATE.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseMovePan( event ); + + break; + + } + + } + + function onMouseUp( event ) { + + if ( scope.enabled === false ) return; + + handleMouseUp( event ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onMouseWheel( event ) { + + if ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return; + + event.preventDefault(); + event.stopPropagation(); + + scope.dispatchEvent( startEvent ); + + handleMouseWheel( event ); + + scope.dispatchEvent( endEvent ); + + } + + function onKeyDown( event ) { + + if ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return; + + handleKeyDown( event ); + + } + + function onTouchStart( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( event.touches.length ) { + + case 1: + + switch ( scope.touches.ONE ) { + + case THREE.TOUCH.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleTouchStartRotate( event ); + + state = STATE.TOUCH_ROTATE; + + break; + + case THREE.TOUCH.PAN: + + if ( scope.enablePan === false ) return; + + handleTouchStartPan( event ); + + state = STATE.TOUCH_PAN; + + break; + + default: + + state = STATE.NONE; + + } + + break; + + case 2: + + switch ( scope.touches.TWO ) { + + case THREE.TOUCH.DOLLY_PAN: + + if ( scope.enableZoom === false && scope.enablePan === false ) return; + + handleTouchStartDollyPan( event ); + + state = STATE.TOUCH_DOLLY_PAN; + + break; + + case THREE.TOUCH.DOLLY_ROTATE: + + if ( scope.enableZoom === false && scope.enableRotate === false ) return; + + handleTouchStartDollyRotate( event ); + + state = STATE.TOUCH_DOLLY_ROTATE; + + break; + + default: + + state = STATE.NONE; + + } + + break; + + default: + + state = STATE.NONE; + + } + + if ( state !== STATE.NONE ) { + + scope.dispatchEvent( startEvent ); + + } + + } + + function onTouchMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + event.stopPropagation(); + + switch ( state ) { + + case STATE.TOUCH_ROTATE: + + if ( scope.enableRotate === false ) return; + + handleTouchMoveRotate( event ); + + scope.update(); + + break; + + case STATE.TOUCH_PAN: + + if ( scope.enablePan === false ) return; + + handleTouchMovePan( event ); + + scope.update(); + + break; + + case STATE.TOUCH_DOLLY_PAN: + + if ( scope.enableZoom === false && scope.enablePan === false ) return; + + handleTouchMoveDollyPan( event ); + + scope.update(); + + break; + + case STATE.TOUCH_DOLLY_ROTATE: + + if ( scope.enableZoom === false && scope.enableRotate === false ) return; + + handleTouchMoveDollyRotate( event ); + + scope.update(); + + break; + + default: + + state = STATE.NONE; + + } + + } + + function onTouchEnd( event ) { + + if ( scope.enabled === false ) return; + + handleTouchEnd( event ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onContextMenu( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + } + + // + + scope.domElement.addEventListener( 'contextmenu', onContextMenu, false ); + + scope.domElement.addEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.addEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.addEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.addEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.addEventListener( 'touchmove', onTouchMove, false ); + + scope.domElement.addEventListener( 'keydown', onKeyDown, false ); + + // make sure element can receive keys. + + if ( scope.domElement.tabIndex === - 1 ) { + + scope.domElement.tabIndex = 0; + + } + + // force an update at start + + this.update(); + +}; + +THREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.OrbitControls.prototype.constructor = THREE.OrbitControls; + + +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// This is very similar to OrbitControls, another set of touch behavior +// +// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate +// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish +// Pan - left mouse, or arrow keys / touch: one-finger move + +THREE.MapControls = function ( object, domElement ) { + + THREE.OrbitControls.call( this, object, domElement ); + + this.mouseButtons.LEFT = THREE.MOUSE.PAN; + this.mouseButtons.RIGHT = THREE.MOUSE.ROTATE; + + this.touches.ONE = THREE.TOUCH.PAN; + this.touches.TWO = THREE.TOUCH.DOLLY_ROTATE; + +}; + +THREE.MapControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.MapControls.prototype.constructor = THREE.MapControls; diff --git a/01_Code/physical_computing_interface/simulation/lib/SVGRenderer.js b/01_Code/physical_computing_interface/simulation/lib/SVGRenderer.js new file mode 100644 index 0000000000000000000000000000000000000000..4cab4c927a0be03b44a480a2533f2497a2f44eed --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/SVGRenderer.js @@ -0,0 +1,533 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +THREE.SVGObject = function ( node ) { + + THREE.Object3D.call( this ); + + this.node = node; + +}; + +THREE.SVGObject.prototype = Object.create( THREE.Object3D.prototype ); +THREE.SVGObject.prototype.constructor = THREE.SVGObject; + +THREE.SVGRenderer = function () { + + var _this = this, + _renderData, _elements, _lights, + _projector = new THREE.Projector(), + _svg = document.createElementNS( 'http://www.w3.org/2000/svg', 'svg' ), + _svgWidth, _svgHeight, _svgWidthHalf, _svgHeightHalf, + + _v1, _v2, _v3, + + _clipBox = new THREE.Box2(), + _elemBox = new THREE.Box2(), + + _color = new THREE.Color(), + _diffuseColor = new THREE.Color(), + _ambientLight = new THREE.Color(), + _directionalLights = new THREE.Color(), + _pointLights = new THREE.Color(), + _clearColor = new THREE.Color(), + _clearAlpha = 1, + + _vector3 = new THREE.Vector3(), // Needed for PointLight + _centroid = new THREE.Vector3(), + _normal = new THREE.Vector3(), + _normalViewMatrix = new THREE.Matrix3(), + + _viewMatrix = new THREE.Matrix4(), + _viewProjectionMatrix = new THREE.Matrix4(), + + _svgPathPool = [], + _svgNode, _pathCount = 0, + + _currentPath, _currentStyle, + + _quality = 1, _precision = null; + + this.domElement = _svg; + + this.autoClear = true; + this.sortObjects = true; + this.sortElements = true; + + this.overdraw = 0.5; + + this.info = { + + render: { + + vertices: 0, + faces: 0 + + } + + }; + + this.setQuality = function ( quality ) { + + switch ( quality ) { + + case "high": _quality = 1; break; + case "low": _quality = 0; break; + + } + + }; + + this.setClearColor = function ( color, alpha ) { + + _clearColor.set( color ); + _clearAlpha = alpha !== undefined ? alpha : 1; + + }; + + this.setPixelRatio = function () {}; + + this.setSize = function ( width, height ) { + + _svgWidth = width; _svgHeight = height; + _svgWidthHalf = _svgWidth / 2; _svgHeightHalf = _svgHeight / 2; + + _svg.setAttribute( 'viewBox', ( - _svgWidthHalf ) + ' ' + ( - _svgHeightHalf ) + ' ' + _svgWidth + ' ' + _svgHeight ); + _svg.setAttribute( 'width', _svgWidth ); + _svg.setAttribute( 'height', _svgHeight ); + + _clipBox.min.set( - _svgWidthHalf, - _svgHeightHalf ); + _clipBox.max.set( _svgWidthHalf, _svgHeightHalf ); + + }; + + this.setPrecision = function ( precision ) { + + _precision = precision; + + }; + + function removeChildNodes() { + + _pathCount = 0; + + while ( _svg.childNodes.length > 0 ) { + + _svg.removeChild( _svg.childNodes[ 0 ] ); + + } + + } + + function getSvgColor( color, opacity, asStroke ) { + + var arg = Math.floor( color.r * 255 ) + ',' + Math.floor( color.g * 255 ) + ',' + Math.floor( color.b * 255 ); + + if ( opacity === undefined || opacity === 1 ) return 'rgb(' + arg + ')'; + + return 'rgb(' + arg + ');' + ( asStroke ? 'stroke-opacity' : 'fill-opacity' ) + ':' + opacity; + + } + + function convert( c ) { + + return _precision !== null ? c.toFixed( _precision ) : c; + + } + + this.clear = function () { + + removeChildNodes(); + _svg.style.backgroundColor = getSvgColor( _clearColor, _clearAlpha ); + + }; + + this.render = function ( scene, camera ) { + + if ( camera instanceof THREE.Camera === false ) { + + console.error( 'THREE.SVGRenderer.render: camera is not an instance of THREE.Camera.' ); + return; + + } + + var background = scene.background; + + if ( background && background.isColor ) { + + removeChildNodes(); + _svg.style.backgroundColor = getSvgColor( background ); + + } else if ( this.autoClear === true ) { + + this.clear(); + + } + + _this.info.render.vertices = 0; + _this.info.render.faces = 0; + + _viewMatrix.copy( camera.matrixWorldInverse ); + _viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, _viewMatrix ); + + _renderData = _projector.projectScene( scene, camera, this.sortObjects, this.sortElements ); + _elements = _renderData.elements; + _lights = _renderData.lights; + + _normalViewMatrix.getNormalMatrix( camera.matrixWorldInverse ); + + calculateLights( _lights ); + + // reset accumulated path + + _currentPath = ''; + _currentStyle = ''; + + for ( var e = 0, el = _elements.length; e < el; e ++ ) { + + var element = _elements[ e ]; + var material = element.material; + + if ( material === undefined || material.opacity === 0 ) continue; + + _elemBox.makeEmpty(); + + if ( element instanceof THREE.RenderableSprite ) { + + _v1 = element; + _v1.x *= _svgWidthHalf; _v1.y *= - _svgHeightHalf; + + renderSprite( _v1, element, material ); + + } else if ( element instanceof THREE.RenderableLine ) { + + _v1 = element.v1; _v2 = element.v2; + + _v1.positionScreen.x *= _svgWidthHalf; _v1.positionScreen.y *= - _svgHeightHalf; + _v2.positionScreen.x *= _svgWidthHalf; _v2.positionScreen.y *= - _svgHeightHalf; + + _elemBox.setFromPoints( [ _v1.positionScreen, _v2.positionScreen ] ); + + if ( _clipBox.intersectsBox( _elemBox ) === true ) { + + renderLine( _v1, _v2, element, material ); + + } + + } else if ( element instanceof THREE.RenderableFace ) { + + _v1 = element.v1; _v2 = element.v2; _v3 = element.v3; + + if ( _v1.positionScreen.z < - 1 || _v1.positionScreen.z > 1 ) continue; + if ( _v2.positionScreen.z < - 1 || _v2.positionScreen.z > 1 ) continue; + if ( _v3.positionScreen.z < - 1 || _v3.positionScreen.z > 1 ) continue; + + _v1.positionScreen.x *= _svgWidthHalf; _v1.positionScreen.y *= - _svgHeightHalf; + _v2.positionScreen.x *= _svgWidthHalf; _v2.positionScreen.y *= - _svgHeightHalf; + _v3.positionScreen.x *= _svgWidthHalf; _v3.positionScreen.y *= - _svgHeightHalf; + + if ( this.overdraw > 0 ) { + + expand( _v1.positionScreen, _v2.positionScreen, this.overdraw ); + expand( _v2.positionScreen, _v3.positionScreen, this.overdraw ); + expand( _v3.positionScreen, _v1.positionScreen, this.overdraw ); + + } + + _elemBox.setFromPoints( [ + _v1.positionScreen, + _v2.positionScreen, + _v3.positionScreen + ] ); + + if ( _clipBox.intersectsBox( _elemBox ) === true ) { + + renderFace3( _v1, _v2, _v3, element, material ); + + } + + } + + } + + flushPath(); // just to flush last svg:path + + scene.traverseVisible( function ( object ) { + + if ( object instanceof THREE.SVGObject ) { + + _vector3.setFromMatrixPosition( object.matrixWorld ); + _vector3.applyMatrix4( _viewProjectionMatrix ); + + if ( _vector3.z < - 1 || _vector3.z > 1 ) return; + + var x = _vector3.x * _svgWidthHalf; + var y = - _vector3.y * _svgHeightHalf; + + var node = object.node; + node.setAttribute( 'transform', 'translate(' + x + ',' + y + ')' ); + + _svg.appendChild( node ); + + } + + } ); + + }; + + function calculateLights( lights ) { + + _ambientLight.setRGB( 0, 0, 0 ); + _directionalLights.setRGB( 0, 0, 0 ); + _pointLights.setRGB( 0, 0, 0 ); + + for ( var l = 0, ll = lights.length; l < ll; l ++ ) { + + var light = lights[ l ]; + var lightColor = light.color; + + if ( light.isAmbientLight ) { + + _ambientLight.r += lightColor.r; + _ambientLight.g += lightColor.g; + _ambientLight.b += lightColor.b; + + } else if ( light.isDirectionalLight ) { + + _directionalLights.r += lightColor.r; + _directionalLights.g += lightColor.g; + _directionalLights.b += lightColor.b; + + } else if ( light.isPointLight ) { + + _pointLights.r += lightColor.r; + _pointLights.g += lightColor.g; + _pointLights.b += lightColor.b; + + } + + } + + } + + function calculateLight( lights, position, normal, color ) { + + for ( var l = 0, ll = lights.length; l < ll; l ++ ) { + + var light = lights[ l ]; + var lightColor = light.color; + + if ( light.isDirectionalLight ) { + + var lightPosition = _vector3.setFromMatrixPosition( light.matrixWorld ).normalize(); + + var amount = normal.dot( lightPosition ); + + if ( amount <= 0 ) continue; + + amount *= light.intensity; + + color.r += lightColor.r * amount; + color.g += lightColor.g * amount; + color.b += lightColor.b * amount; + + } else if ( light.isPointLight ) { + + var lightPosition = _vector3.setFromMatrixPosition( light.matrixWorld ); + + var amount = normal.dot( _vector3.subVectors( lightPosition, position ).normalize() ); + + if ( amount <= 0 ) continue; + + amount *= light.distance == 0 ? 1 : 1 - Math.min( position.distanceTo( lightPosition ) / light.distance, 1 ); + + if ( amount == 0 ) continue; + + amount *= light.intensity; + + color.r += lightColor.r * amount; + color.g += lightColor.g * amount; + color.b += lightColor.b * amount; + + } + + } + + } + + function renderSprite( v1, element, material ) { + + var scaleX = element.scale.x * _svgWidthHalf; + var scaleY = element.scale.y * _svgHeightHalf; + + if ( material.isPointsMaterial ) { + + scaleX *= material.size; + scaleY *= material.size; + + } + + var path = 'M' + convert( v1.x - scaleX * 0.5 ) + ',' + convert( v1.y - scaleY * 0.5 ) + 'h' + convert( scaleX ) + 'v' + convert( scaleY ) + 'h' + convert( - scaleX ) + 'z'; + var style = ""; + + if ( material.isSpriteMaterial || material.isPointsMaterial ) { + + style = 'fill:' + getSvgColor( material.color, material.opacity ); + + } + + addPath( style, path ); + + } + + function renderLine( v1, v2, element, material ) { + + var path = 'M' + convert( v1.positionScreen.x ) + ',' + convert( v1.positionScreen.y ) + 'L' + convert( v2.positionScreen.x ) + ',' + convert( v2.positionScreen.y ); + + if ( material.isLineBasicMaterial ) { + + var style = 'fill:none;stroke:' + getSvgColor( material.color, material.opacity, true ) + ';stroke-width:' + material.linewidth + ';stroke-linecap:' + material.linecap; + + if ( material.isLineDashedMaterial ) { + + style = style + ';stroke-dasharray:' + material.dashSize + "," + material.gapSize; + + } + + addPath( style, path ); + + } + + } + + function renderFace3( v1, v2, v3, element, material ) { + + _this.info.render.vertices += 3; + _this.info.render.faces ++; + + var path = 'M' + convert( v1.positionScreen.x ) + ',' + convert( v1.positionScreen.y ) + 'L' + convert( v2.positionScreen.x ) + ',' + convert( v2.positionScreen.y ) + 'L' + convert( v3.positionScreen.x ) + ',' + convert( v3.positionScreen.y ) + 'z'; + var style = ''; + + if ( material.isMeshBasicMaterial ) { + + _color.copy( material.color ); + + if ( material.vertexColors === THREE.FaceColors || material.vertexColors === THREE.VertexColors ) { + + _color.multiply( element.color ); + + } + + } else if ( material.isMeshLambertMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial ) { + + _diffuseColor.copy( material.color ); + + if ( material.vertexColors === THREE.FaceColors || material.vertexColors === THREE.VertexColors ) { + + _diffuseColor.multiply( element.color ); + + } + + _color.copy( _ambientLight ); + + _centroid.copy( v1.positionWorld ).add( v2.positionWorld ).add( v3.positionWorld ).divideScalar( 3 ); + + calculateLight( _lights, _centroid, element.normalModel, _color ); + + _color.multiply( _diffuseColor ).add( material.emissive ); + + } else if ( material.isMeshNormalMaterial ) { + + _normal.copy( element.normalModel ).applyMatrix3( _normalViewMatrix ); + + _color.setRGB( _normal.x, _normal.y, _normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 ); + + } + + if ( material.wireframe ) { + + style = 'fill:none;stroke:' + getSvgColor( _color, material.opacity, true ) + ';stroke-width:' + material.wireframeLinewidth + ';stroke-linecap:' + material.wireframeLinecap + ';stroke-linejoin:' + material.wireframeLinejoin; + + } else { + + style = 'fill:' + getSvgColor( _color, material.opacity ); + + } + + addPath( style, path ); + + } + + // Hide anti-alias gaps + + function expand( v1, v2, pixels ) { + + var x = v2.x - v1.x, y = v2.y - v1.y, + det = x * x + y * y, idet; + + if ( det === 0 ) return; + + idet = pixels / Math.sqrt( det ); + + x *= idet; y *= idet; + + v2.x += x; v2.y += y; + v1.x -= x; v1.y -= y; + + } + + function addPath( style, path ) { + + if ( _currentStyle === style ) { + + _currentPath += path; + + } else { + + flushPath(); + + _currentStyle = style; + _currentPath = path; + + } + + } + + function flushPath() { + + if ( _currentPath ) { + + _svgNode = getPathNode( _pathCount ++ ); + _svgNode.setAttribute( 'd', _currentPath ); + _svgNode.setAttribute( 'style', _currentStyle ); + _svg.appendChild( _svgNode ); + + } + + _currentPath = ''; + _currentStyle = ''; + + } + + function getPathNode( id ) { + + if ( _svgPathPool[ id ] == null ) { + + _svgPathPool[ id ] = document.createElementNS( 'http://www.w3.org/2000/svg', 'path' ); + + if ( _quality == 0 ) { + + _svgPathPool[ id ].setAttribute( 'shape-rendering', 'crispEdges' ); //optimizeSpeed + + } + + return _svgPathPool[ id ]; + + } + + return _svgPathPool[ id ]; + + } + +}; diff --git a/01_Code/physical_computing_interface/simulation/lib/TransformControls.js b/01_Code/physical_computing_interface/simulation/lib/TransformControls.js new file mode 100644 index 0000000000000000000000000000000000000000..15595d6442ba58a11c07e5cd847bfccea43709f1 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/TransformControls.js @@ -0,0 +1,1590 @@ +/** + * @author arodic / https://github.com/arodic + */ + +THREE.TransformControls = function ( camera, domElement ) { + + if ( domElement === undefined ) { + + console.warn( 'THREE.TransformControls: The second parameter "domElement" is now mandatory.' ); + domElement = document; + + } + + THREE.Object3D.call( this ); + + this.visible = false; + + var _gizmo = new THREE.TransformControlsGizmo(); + this.add( _gizmo ); + + var _plane = new THREE.TransformControlsPlane(); + this.add( _plane ); + + var scope = this; + + // Define properties with getters/setter + // Setting the defined property will automatically trigger change event + // Defined properties are passed down to gizmo and plane + + defineProperty( "camera", camera ); + defineProperty( "object", undefined ); + defineProperty( "enabled", true ); + defineProperty( "axis", null ); + defineProperty( "mode", "translate" ); + defineProperty( "translationSnap", null ); + defineProperty( "rotationSnap", null ); + defineProperty( "space", "world" ); + defineProperty( "size", 1 ); + defineProperty( "dragging", false ); + defineProperty( "showX", true ); + defineProperty( "showY", true ); + defineProperty( "showZ", true ); + + var changeEvent = { type: "change" }; + var mouseDownEvent = { type: "mouseDown" }; + var mouseUpEvent = { type: "mouseUp", mode: scope.mode }; + var objectChangeEvent = { type: "objectChange" }; + + // Reusable utility variables + + var ray = new THREE.Raycaster(); + + var _tempVector = new THREE.Vector3(); + var _tempVector2 = new THREE.Vector3(); + var _tempQuaternion = new THREE.Quaternion(); + var _unit = { + X: new THREE.Vector3( 1, 0, 0 ), + Y: new THREE.Vector3( 0, 1, 0 ), + Z: new THREE.Vector3( 0, 0, 1 ) + }; + + var pointStart = new THREE.Vector3(); + var pointEnd = new THREE.Vector3(); + var offset = new THREE.Vector3(); + var rotationAxis = new THREE.Vector3(); + var startNorm = new THREE.Vector3(); + var endNorm = new THREE.Vector3(); + var rotationAngle = 0; + + var cameraPosition = new THREE.Vector3(); + var cameraQuaternion = new THREE.Quaternion(); + var cameraScale = new THREE.Vector3(); + + var parentPosition = new THREE.Vector3(); + var parentQuaternion = new THREE.Quaternion(); + var parentQuaternionInv = new THREE.Quaternion(); + var parentScale = new THREE.Vector3(); + + var worldPositionStart = new THREE.Vector3(); + var worldQuaternionStart = new THREE.Quaternion(); + var worldScaleStart = new THREE.Vector3(); + + var worldPosition = new THREE.Vector3(); + var worldQuaternion = new THREE.Quaternion(); + var worldQuaternionInv = new THREE.Quaternion(); + var worldScale = new THREE.Vector3(); + + var eye = new THREE.Vector3(); + + var positionStart = new THREE.Vector3(); + var quaternionStart = new THREE.Quaternion(); + var scaleStart = new THREE.Vector3(); + + // TODO: remove properties unused in plane and gizmo + + defineProperty( "worldPosition", worldPosition ); + defineProperty( "worldPositionStart", worldPositionStart ); + defineProperty( "worldQuaternion", worldQuaternion ); + defineProperty( "worldQuaternionStart", worldQuaternionStart ); + defineProperty( "cameraPosition", cameraPosition ); + defineProperty( "cameraQuaternion", cameraQuaternion ); + defineProperty( "pointStart", pointStart ); + defineProperty( "pointEnd", pointEnd ); + defineProperty( "rotationAxis", rotationAxis ); + defineProperty( "rotationAngle", rotationAngle ); + defineProperty( "eye", eye ); + + { + + domElement.addEventListener( "mousedown", onPointerDown, false ); + domElement.addEventListener( "touchstart", onPointerDown, false ); + domElement.addEventListener( "mousemove", onPointerHover, false ); + domElement.addEventListener( "touchmove", onPointerHover, false ); + domElement.addEventListener( "touchmove", onPointerMove, false ); + document.addEventListener( "mouseup", onPointerUp, false ); + domElement.addEventListener( "touchend", onPointerUp, false ); + domElement.addEventListener( "touchcancel", onPointerUp, false ); + domElement.addEventListener( "touchleave", onPointerUp, false ); + + } + + this.dispose = function () { + + domElement.removeEventListener( "mousedown", onPointerDown ); + domElement.removeEventListener( "touchstart", onPointerDown ); + domElement.removeEventListener( "mousemove", onPointerHover ); + document.removeEventListener( "mousemove", onPointerMove ); + domElement.removeEventListener( "touchmove", onPointerHover ); + domElement.removeEventListener( "touchmove", onPointerMove ); + document.removeEventListener( "mouseup", onPointerUp ); + domElement.removeEventListener( "touchend", onPointerUp ); + domElement.removeEventListener( "touchcancel", onPointerUp ); + domElement.removeEventListener( "touchleave", onPointerUp ); + + this.traverse( function ( child ) { + + if ( child.geometry ) child.geometry.dispose(); + if ( child.material ) child.material.dispose(); + + } ); + + }; + + // Set current object + this.attach = function ( object ) { + + this.object = object; + this.visible = true; + + return this; + + }; + + // Detatch from object + this.detach = function () { + + this.object = undefined; + this.visible = false; + this.axis = null; + + return this; + + }; + + // Defined getter, setter and store for a property + function defineProperty( propName, defaultValue ) { + + var propValue = defaultValue; + + Object.defineProperty( scope, propName, { + + get: function () { + + return propValue !== undefined ? propValue : defaultValue; + + }, + + set: function ( value ) { + + if ( propValue !== value ) { + + propValue = value; + _plane[ propName ] = value; + _gizmo[ propName ] = value; + + scope.dispatchEvent( { type: propName + "-changed", value: value } ); + scope.dispatchEvent( changeEvent ); + + } + + } + + } ); + + scope[ propName ] = defaultValue; + _plane[ propName ] = defaultValue; + _gizmo[ propName ] = defaultValue; + + } + + // updateMatrixWorld updates key transformation variables + this.updateMatrixWorld = function () { + + if ( this.object !== undefined ) { + + this.object.updateMatrixWorld(); + this.object.parent.matrixWorld.decompose( parentPosition, parentQuaternion, parentScale ); + this.object.matrixWorld.decompose( worldPosition, worldQuaternion, worldScale ); + + parentQuaternionInv.copy( parentQuaternion ).inverse(); + worldQuaternionInv.copy( worldQuaternion ).inverse(); + + } + + this.camera.updateMatrixWorld(); + this.camera.matrixWorld.decompose( cameraPosition, cameraQuaternion, cameraScale ); + + eye.copy( cameraPosition ).sub( worldPosition ).normalize(); + + THREE.Object3D.prototype.updateMatrixWorld.call( this ); + + }; + + this.pointerHover = function ( pointer ) { + + if ( this.object === undefined || this.dragging === true || ( pointer.button !== undefined && pointer.button !== 0 ) ) return; + + ray.setFromCamera( pointer, this.camera ); + + var intersect = ray.intersectObjects( _gizmo.picker[ this.mode ].children, true )[ 0 ] || false; + + if ( intersect ) { + + this.axis = intersect.object.name; + + } else { + + this.axis = null; + + } + + }; + + this.pointerDown = function ( pointer ) { + + if ( this.object === undefined || this.dragging === true || ( pointer.button !== undefined && pointer.button !== 0 ) ) return; + + if ( ( pointer.button === 0 || pointer.button === undefined ) && this.axis !== null ) { + + ray.setFromCamera( pointer, this.camera ); + + var planeIntersect = ray.intersectObjects( [ _plane ], true )[ 0 ] || false; + + if ( planeIntersect ) { + + var space = this.space; + + if ( this.mode === 'scale' ) { + + space = 'local'; + + } else if ( this.axis === 'E' || this.axis === 'XYZE' || this.axis === 'XYZ' ) { + + space = 'world'; + + } + + if ( space === 'local' && this.mode === 'rotate' ) { + + var snap = this.rotationSnap; + + if ( this.axis === 'X' && snap ) this.object.rotation.x = Math.round( this.object.rotation.x / snap ) * snap; + if ( this.axis === 'Y' && snap ) this.object.rotation.y = Math.round( this.object.rotation.y / snap ) * snap; + if ( this.axis === 'Z' && snap ) this.object.rotation.z = Math.round( this.object.rotation.z / snap ) * snap; + + } + + this.object.updateMatrixWorld(); + this.object.parent.updateMatrixWorld(); + + positionStart.copy( this.object.position ); + quaternionStart.copy( this.object.quaternion ); + scaleStart.copy( this.object.scale ); + + this.object.matrixWorld.decompose( worldPositionStart, worldQuaternionStart, worldScaleStart ); + + pointStart.copy( planeIntersect.point ).sub( worldPositionStart ); + + } + + this.dragging = true; + mouseDownEvent.mode = this.mode; + this.dispatchEvent( mouseDownEvent ); + + } + + }; + + this.pointerMove = function ( pointer ) { + + var axis = this.axis; + var mode = this.mode; + var object = this.object; + var space = this.space; + + if ( mode === 'scale' ) { + + space = 'local'; + + } else if ( axis === 'E' || axis === 'XYZE' || axis === 'XYZ' ) { + + space = 'world'; + + } + + if ( object === undefined || axis === null || this.dragging === false || ( pointer.button !== undefined && pointer.button !== 0 ) ) return; + + ray.setFromCamera( pointer, this.camera ); + + var planeIntersect = ray.intersectObjects( [ _plane ], true )[ 0 ] || false; + + if ( planeIntersect === false ) return; + + pointEnd.copy( planeIntersect.point ).sub( worldPositionStart ); + + if ( mode === 'translate' ) { + + // Apply translate + + offset.copy( pointEnd ).sub( pointStart ); + + if ( space === 'local' && axis !== 'XYZ' ) { + + offset.applyQuaternion( worldQuaternionInv ); + + } + + if ( axis.indexOf( 'X' ) === - 1 ) offset.x = 0; + if ( axis.indexOf( 'Y' ) === - 1 ) offset.y = 0; + if ( axis.indexOf( 'Z' ) === - 1 ) offset.z = 0; + + if ( space === 'local' && axis !== 'XYZ' ) { + + offset.applyQuaternion( quaternionStart ).divide( parentScale ); + + } else { + + offset.applyQuaternion( parentQuaternionInv ).divide( parentScale ); + + } + + object.position.copy( offset ).add( positionStart ); + + // Apply translation snap + + if ( this.translationSnap ) { + + if ( space === 'local' ) { + + object.position.applyQuaternion( _tempQuaternion.copy( quaternionStart ).inverse() ); + + if ( axis.search( 'X' ) !== - 1 ) { + + object.position.x = Math.round( object.position.x / this.translationSnap ) * this.translationSnap; + + } + + if ( axis.search( 'Y' ) !== - 1 ) { + + object.position.y = Math.round( object.position.y / this.translationSnap ) * this.translationSnap; + + } + + if ( axis.search( 'Z' ) !== - 1 ) { + + object.position.z = Math.round( object.position.z / this.translationSnap ) * this.translationSnap; + + } + + object.position.applyQuaternion( quaternionStart ); + + } + + if ( space === 'world' ) { + + if ( object.parent ) { + + object.position.add( _tempVector.setFromMatrixPosition( object.parent.matrixWorld ) ); + + } + + if ( axis.search( 'X' ) !== - 1 ) { + + object.position.x = Math.round( object.position.x / this.translationSnap ) * this.translationSnap; + + } + + if ( axis.search( 'Y' ) !== - 1 ) { + + object.position.y = Math.round( object.position.y / this.translationSnap ) * this.translationSnap; + + } + + if ( axis.search( 'Z' ) !== - 1 ) { + + object.position.z = Math.round( object.position.z / this.translationSnap ) * this.translationSnap; + + } + + if ( object.parent ) { + + object.position.sub( _tempVector.setFromMatrixPosition( object.parent.matrixWorld ) ); + + } + + } + + } + + } else if ( mode === 'scale' ) { + + if ( axis.search( 'XYZ' ) !== - 1 ) { + + var d = pointEnd.length() / pointStart.length(); + + if ( pointEnd.dot( pointStart ) < 0 ) d *= - 1; + + _tempVector2.set( d, d, d ); + + } else { + + _tempVector.copy( pointStart ); + _tempVector2.copy( pointEnd ); + + _tempVector.applyQuaternion( worldQuaternionInv ); + _tempVector2.applyQuaternion( worldQuaternionInv ); + + _tempVector2.divide( _tempVector ); + + if ( axis.search( 'X' ) === - 1 ) { + + _tempVector2.x = 1; + + } + if ( axis.search( 'Y' ) === - 1 ) { + + _tempVector2.y = 1; + + } + if ( axis.search( 'Z' ) === - 1 ) { + + _tempVector2.z = 1; + + } + + } + + // Apply scale + + object.scale.copy( scaleStart ).multiply( _tempVector2 ); + + } else if ( mode === 'rotate' ) { + + offset.copy( pointEnd ).sub( pointStart ); + + var ROTATION_SPEED = 20 / worldPosition.distanceTo( _tempVector.setFromMatrixPosition( this.camera.matrixWorld ) ); + + if ( axis === 'E' ) { + + rotationAxis.copy( eye ); + rotationAngle = pointEnd.angleTo( pointStart ); + + startNorm.copy( pointStart ).normalize(); + endNorm.copy( pointEnd ).normalize(); + + rotationAngle *= ( endNorm.cross( startNorm ).dot( eye ) < 0 ? 1 : - 1 ); + + } else if ( axis === 'XYZE' ) { + + rotationAxis.copy( offset ).cross( eye ).normalize(); + rotationAngle = offset.dot( _tempVector.copy( rotationAxis ).cross( this.eye ) ) * ROTATION_SPEED; + + } else if ( axis === 'X' || axis === 'Y' || axis === 'Z' ) { + + rotationAxis.copy( _unit[ axis ] ); + + _tempVector.copy( _unit[ axis ] ); + + if ( space === 'local' ) { + + _tempVector.applyQuaternion( worldQuaternion ); + + } + + rotationAngle = offset.dot( _tempVector.cross( eye ).normalize() ) * ROTATION_SPEED; + + } + + // Apply rotation snap + + if ( this.rotationSnap ) rotationAngle = Math.round( rotationAngle / this.rotationSnap ) * this.rotationSnap; + + this.rotationAngle = rotationAngle; + + // Apply rotate + if ( space === 'local' && axis !== 'E' && axis !== 'XYZE' ) { + + object.quaternion.copy( quaternionStart ); + object.quaternion.multiply( _tempQuaternion.setFromAxisAngle( rotationAxis, rotationAngle ) ).normalize(); + + } else { + + rotationAxis.applyQuaternion( parentQuaternionInv ); + object.quaternion.copy( _tempQuaternion.setFromAxisAngle( rotationAxis, rotationAngle ) ); + object.quaternion.multiply( quaternionStart ).normalize(); + + } + + } + + this.dispatchEvent( changeEvent ); + this.dispatchEvent( objectChangeEvent ); + + }; + + this.pointerUp = function ( pointer ) { + + if ( pointer.button !== undefined && pointer.button !== 0 ) return; + + if ( this.dragging && ( this.axis !== null ) ) { + + mouseUpEvent.mode = this.mode; + this.dispatchEvent( mouseUpEvent ); + + } + + this.dragging = false; + + if ( pointer.button === undefined ) this.axis = null; + + }; + + // normalize mouse / touch pointer and remap {x,y} to view space. + + function getPointer( event ) { + + if ( document.pointerLockElement ) { + + return { + x: 0, + y: 0, + button: event.button + }; + + } else { + + var pointer = event.changedTouches ? event.changedTouches[ 0 ] : event; + + var rect = domElement.getBoundingClientRect(); + + return { + x: ( pointer.clientX - rect.left ) / rect.width * 2 - 1, + y: - ( pointer.clientY - rect.top ) / rect.height * 2 + 1, + button: event.button + }; + + } + + } + + // mouse / touch event handlers + + function onPointerHover( event ) { + + if ( ! scope.enabled ) return; + + scope.pointerHover( getPointer( event ) ); + + } + + function onPointerDown( event ) { + + if ( ! scope.enabled ) return; + + document.addEventListener( "mousemove", onPointerMove, false ); + + scope.pointerHover( getPointer( event ) ); + scope.pointerDown( getPointer( event ) ); + + } + + function onPointerMove( event ) { + + if ( ! scope.enabled ) return; + + scope.pointerMove( getPointer( event ) ); + + } + + function onPointerUp( event ) { + + if ( ! scope.enabled ) return; + + document.removeEventListener( "mousemove", onPointerMove, false ); + + scope.pointerUp( getPointer( event ) ); + + } + + // TODO: deprecate + + this.getMode = function () { + + return scope.mode; + + }; + + this.setMode = function ( mode ) { + + scope.mode = mode; + + }; + + this.setTranslationSnap = function ( translationSnap ) { + + scope.translationSnap = translationSnap; + + }; + + this.setRotationSnap = function ( rotationSnap ) { + + scope.rotationSnap = rotationSnap; + + }; + + this.setSize = function ( size ) { + + scope.size = size; + + }; + + this.setSpace = function ( space ) { + + scope.space = space; + + }; + + this.update = function () { + + console.warn( 'THREE.TransformControls: update function has no more functionality and therefore has been deprecated.' ); + + }; + +}; + +THREE.TransformControls.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), { + + constructor: THREE.TransformControls, + + isTransformControls: true + +} ); + + +THREE.TransformControlsGizmo = function () { + + 'use strict'; + + THREE.Object3D.call( this ); + + this.type = 'TransformControlsGizmo'; + + // shared materials + + var gizmoMaterial = new THREE.MeshBasicMaterial( { + depthTest: false, + depthWrite: false, + transparent: true, + side: THREE.DoubleSide, + fog: false + } ); + + var gizmoLineMaterial = new THREE.LineBasicMaterial( { + depthTest: false, + depthWrite: false, + transparent: true, + linewidth: 1, + fog: false + } ); + + // Make unique material for each axis/color + + var matInvisible = gizmoMaterial.clone(); + matInvisible.opacity = 0.15; + + var matHelper = gizmoMaterial.clone(); + matHelper.opacity = 0.33; + + var matRed = gizmoMaterial.clone(); + matRed.color.set( 0xff0000 ); + + var matGreen = gizmoMaterial.clone(); + matGreen.color.set( 0x00ff00 ); + + var matBlue = gizmoMaterial.clone(); + matBlue.color.set( 0x0000ff ); + + var matWhiteTransparent = gizmoMaterial.clone(); + matWhiteTransparent.opacity = 0.25; + + var matYellowTransparent = matWhiteTransparent.clone(); + matYellowTransparent.color.set( 0xffff00 ); + + var matCyanTransparent = matWhiteTransparent.clone(); + matCyanTransparent.color.set( 0x00ffff ); + + var matMagentaTransparent = matWhiteTransparent.clone(); + matMagentaTransparent.color.set( 0xff00ff ); + + var matYellow = gizmoMaterial.clone(); + matYellow.color.set( 0xffff00 ); + + var matLineRed = gizmoLineMaterial.clone(); + matLineRed.color.set( 0xff0000 ); + + var matLineGreen = gizmoLineMaterial.clone(); + matLineGreen.color.set( 0x00ff00 ); + + var matLineBlue = gizmoLineMaterial.clone(); + matLineBlue.color.set( 0x0000ff ); + + var matLineCyan = gizmoLineMaterial.clone(); + matLineCyan.color.set( 0x00ffff ); + + var matLineMagenta = gizmoLineMaterial.clone(); + matLineMagenta.color.set( 0xff00ff ); + + var matLineYellow = gizmoLineMaterial.clone(); + matLineYellow.color.set( 0xffff00 ); + + var matLineGray = gizmoLineMaterial.clone(); + matLineGray.color.set( 0x787878 ); + + var matLineYellowTransparent = matLineYellow.clone(); + matLineYellowTransparent.opacity = 0.25; + + // reusable geometry + + var arrowGeometry = new THREE.CylinderBufferGeometry( 0, 0.05, 0.2, 12, 1, false ); + + var scaleHandleGeometry = new THREE.BoxBufferGeometry( 0.125, 0.125, 0.125 ); + + var lineGeometry = new THREE.BufferGeometry( ); + lineGeometry.setAttribute( 'position', new THREE.Float32BufferAttribute( [ 0, 0, 0, 1, 0, 0 ], 3 ) ); + + var CircleGeometry = function ( radius, arc ) { + + var geometry = new THREE.BufferGeometry( ); + var vertices = []; + + for ( var i = 0; i <= 64 * arc; ++ i ) { + + vertices.push( 0, Math.cos( i / 32 * Math.PI ) * radius, Math.sin( i / 32 * Math.PI ) * radius ); + + } + + geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) ); + + return geometry; + + }; + + // Special geometry for transform helper. If scaled with position vector it spans from [0,0,0] to position + + var TranslateHelperGeometry = function () { + + var geometry = new THREE.BufferGeometry(); + + geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( [ 0, 0, 0, 1, 1, 1 ], 3 ) ); + + return geometry; + + }; + + // Gizmo definitions - custom hierarchy definitions for setupGizmo() function + + var gizmoTranslate = { + X: [ + [ new THREE.Mesh( arrowGeometry, matRed ), [ 1, 0, 0 ], [ 0, 0, - Math.PI / 2 ], null, 'fwd' ], + [ new THREE.Mesh( arrowGeometry, matRed ), [ 1, 0, 0 ], [ 0, 0, Math.PI / 2 ], null, 'bwd' ], + [ new THREE.Line( lineGeometry, matLineRed ) ] + ], + Y: [ + [ new THREE.Mesh( arrowGeometry, matGreen ), [ 0, 1, 0 ], null, null, 'fwd' ], + [ new THREE.Mesh( arrowGeometry, matGreen ), [ 0, 1, 0 ], [ Math.PI, 0, 0 ], null, 'bwd' ], + [ new THREE.Line( lineGeometry, matLineGreen ), null, [ 0, 0, Math.PI / 2 ]] + ], + Z: [ + [ new THREE.Mesh( arrowGeometry, matBlue ), [ 0, 0, 1 ], [ Math.PI / 2, 0, 0 ], null, 'fwd' ], + [ new THREE.Mesh( arrowGeometry, matBlue ), [ 0, 0, 1 ], [ - Math.PI / 2, 0, 0 ], null, 'bwd' ], + [ new THREE.Line( lineGeometry, matLineBlue ), null, [ 0, - Math.PI / 2, 0 ]] + ], + XYZ: [ + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.1, 0 ), matWhiteTransparent.clone() ), [ 0, 0, 0 ], [ 0, 0, 0 ]] + ], + XY: [ + [ new THREE.Mesh( new THREE.PlaneBufferGeometry( 0.295, 0.295 ), matYellowTransparent.clone() ), [ 0.15, 0.15, 0 ]], + [ new THREE.Line( lineGeometry, matLineYellow ), [ 0.18, 0.3, 0 ], null, [ 0.125, 1, 1 ]], + [ new THREE.Line( lineGeometry, matLineYellow ), [ 0.3, 0.18, 0 ], [ 0, 0, Math.PI / 2 ], [ 0.125, 1, 1 ]] + ], + YZ: [ + [ new THREE.Mesh( new THREE.PlaneBufferGeometry( 0.295, 0.295 ), matCyanTransparent.clone() ), [ 0, 0.15, 0.15 ], [ 0, Math.PI / 2, 0 ]], + [ new THREE.Line( lineGeometry, matLineCyan ), [ 0, 0.18, 0.3 ], [ 0, 0, Math.PI / 2 ], [ 0.125, 1, 1 ]], + [ new THREE.Line( lineGeometry, matLineCyan ), [ 0, 0.3, 0.18 ], [ 0, - Math.PI / 2, 0 ], [ 0.125, 1, 1 ]] + ], + XZ: [ + [ new THREE.Mesh( new THREE.PlaneBufferGeometry( 0.295, 0.295 ), matMagentaTransparent.clone() ), [ 0.15, 0, 0.15 ], [ - Math.PI / 2, 0, 0 ]], + [ new THREE.Line( lineGeometry, matLineMagenta ), [ 0.18, 0, 0.3 ], null, [ 0.125, 1, 1 ]], + [ new THREE.Line( lineGeometry, matLineMagenta ), [ 0.3, 0, 0.18 ], [ 0, - Math.PI / 2, 0 ], [ 0.125, 1, 1 ]] + ] + }; + + var pickerTranslate = { + X: [ + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.2, 0, 1, 4, 1, false ), matInvisible ), [ 0.6, 0, 0 ], [ 0, 0, - Math.PI / 2 ]] + ], + Y: [ + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.2, 0, 1, 4, 1, false ), matInvisible ), [ 0, 0.6, 0 ]] + ], + Z: [ + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.2, 0, 1, 4, 1, false ), matInvisible ), [ 0, 0, 0.6 ], [ Math.PI / 2, 0, 0 ]] + ], + XYZ: [ + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.2, 0 ), matInvisible ) ] + ], + XY: [ + [ new THREE.Mesh( new THREE.PlaneBufferGeometry( 0.4, 0.4 ), matInvisible ), [ 0.2, 0.2, 0 ]] + ], + YZ: [ + [ new THREE.Mesh( new THREE.PlaneBufferGeometry( 0.4, 0.4 ), matInvisible ), [ 0, 0.2, 0.2 ], [ 0, Math.PI / 2, 0 ]] + ], + XZ: [ + [ new THREE.Mesh( new THREE.PlaneBufferGeometry( 0.4, 0.4 ), matInvisible ), [ 0.2, 0, 0.2 ], [ - Math.PI / 2, 0, 0 ]] + ] + }; + + var helperTranslate = { + START: [ + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.01, 2 ), matHelper ), null, null, null, 'helper' ] + ], + END: [ + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.01, 2 ), matHelper ), null, null, null, 'helper' ] + ], + DELTA: [ + [ new THREE.Line( TranslateHelperGeometry(), matHelper ), null, null, null, 'helper' ] + ], + X: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ] + ], + Y: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ 0, - 1e3, 0 ], [ 0, 0, Math.PI / 2 ], [ 1e6, 1, 1 ], 'helper' ] + ], + Z: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ 0, 0, - 1e3 ], [ 0, - Math.PI / 2, 0 ], [ 1e6, 1, 1 ], 'helper' ] + ] + }; + + var gizmoRotate = { + X: [ + [ new THREE.Line( CircleGeometry( 1, 0.5 ), matLineRed ) ], + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.04, 0 ), matRed ), [ 0, 0, 0.99 ], null, [ 1, 3, 1 ]], + ], + Y: [ + [ new THREE.Line( CircleGeometry( 1, 0.5 ), matLineGreen ), null, [ 0, 0, - Math.PI / 2 ]], + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.04, 0 ), matGreen ), [ 0, 0, 0.99 ], null, [ 3, 1, 1 ]], + ], + Z: [ + [ new THREE.Line( CircleGeometry( 1, 0.5 ), matLineBlue ), null, [ 0, Math.PI / 2, 0 ]], + [ new THREE.Mesh( new THREE.OctahedronBufferGeometry( 0.04, 0 ), matBlue ), [ 0.99, 0, 0 ], null, [ 1, 3, 1 ]], + ], + E: [ + [ new THREE.Line( CircleGeometry( 1.25, 1 ), matLineYellowTransparent ), null, [ 0, Math.PI / 2, 0 ]], + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.03, 0, 0.15, 4, 1, false ), matLineYellowTransparent ), [ 1.17, 0, 0 ], [ 0, 0, - Math.PI / 2 ], [ 1, 1, 0.001 ]], + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.03, 0, 0.15, 4, 1, false ), matLineYellowTransparent ), [ - 1.17, 0, 0 ], [ 0, 0, Math.PI / 2 ], [ 1, 1, 0.001 ]], + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.03, 0, 0.15, 4, 1, false ), matLineYellowTransparent ), [ 0, - 1.17, 0 ], [ Math.PI, 0, 0 ], [ 1, 1, 0.001 ]], + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.03, 0, 0.15, 4, 1, false ), matLineYellowTransparent ), [ 0, 1.17, 0 ], [ 0, 0, 0 ], [ 1, 1, 0.001 ]], + ], + XYZE: [ + [ new THREE.Line( CircleGeometry( 1, 1 ), matLineGray ), null, [ 0, Math.PI / 2, 0 ]] + ] + }; + + var helperRotate = { + AXIS: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ] + ] + }; + + var pickerRotate = { + X: [ + [ new THREE.Mesh( new THREE.TorusBufferGeometry( 1, 0.1, 4, 24 ), matInvisible ), [ 0, 0, 0 ], [ 0, - Math.PI / 2, - Math.PI / 2 ]], + ], + Y: [ + [ new THREE.Mesh( new THREE.TorusBufferGeometry( 1, 0.1, 4, 24 ), matInvisible ), [ 0, 0, 0 ], [ Math.PI / 2, 0, 0 ]], + ], + Z: [ + [ new THREE.Mesh( new THREE.TorusBufferGeometry( 1, 0.1, 4, 24 ), matInvisible ), [ 0, 0, 0 ], [ 0, 0, - Math.PI / 2 ]], + ], + E: [ + [ new THREE.Mesh( new THREE.TorusBufferGeometry( 1.25, 0.1, 2, 24 ), matInvisible ) ] + ], + XYZE: [ + [ new THREE.Mesh( new THREE.SphereBufferGeometry( 0.7, 10, 8 ), matInvisible ) ] + ] + }; + + var gizmoScale = { + X: [ + [ new THREE.Mesh( scaleHandleGeometry, matRed ), [ 0.8, 0, 0 ], [ 0, 0, - Math.PI / 2 ]], + [ new THREE.Line( lineGeometry, matLineRed ), null, null, [ 0.8, 1, 1 ]] + ], + Y: [ + [ new THREE.Mesh( scaleHandleGeometry, matGreen ), [ 0, 0.8, 0 ]], + [ new THREE.Line( lineGeometry, matLineGreen ), null, [ 0, 0, Math.PI / 2 ], [ 0.8, 1, 1 ]] + ], + Z: [ + [ new THREE.Mesh( scaleHandleGeometry, matBlue ), [ 0, 0, 0.8 ], [ Math.PI / 2, 0, 0 ]], + [ new THREE.Line( lineGeometry, matLineBlue ), null, [ 0, - Math.PI / 2, 0 ], [ 0.8, 1, 1 ]] + ], + XY: [ + [ new THREE.Mesh( scaleHandleGeometry, matYellowTransparent ), [ 0.85, 0.85, 0 ], null, [ 2, 2, 0.2 ]], + [ new THREE.Line( lineGeometry, matLineYellow ), [ 0.855, 0.98, 0 ], null, [ 0.125, 1, 1 ]], + [ new THREE.Line( lineGeometry, matLineYellow ), [ 0.98, 0.855, 0 ], [ 0, 0, Math.PI / 2 ], [ 0.125, 1, 1 ]] + ], + YZ: [ + [ new THREE.Mesh( scaleHandleGeometry, matCyanTransparent ), [ 0, 0.85, 0.85 ], null, [ 0.2, 2, 2 ]], + [ new THREE.Line( lineGeometry, matLineCyan ), [ 0, 0.855, 0.98 ], [ 0, 0, Math.PI / 2 ], [ 0.125, 1, 1 ]], + [ new THREE.Line( lineGeometry, matLineCyan ), [ 0, 0.98, 0.855 ], [ 0, - Math.PI / 2, 0 ], [ 0.125, 1, 1 ]] + ], + XZ: [ + [ new THREE.Mesh( scaleHandleGeometry, matMagentaTransparent ), [ 0.85, 0, 0.85 ], null, [ 2, 0.2, 2 ]], + [ new THREE.Line( lineGeometry, matLineMagenta ), [ 0.855, 0, 0.98 ], null, [ 0.125, 1, 1 ]], + [ new THREE.Line( lineGeometry, matLineMagenta ), [ 0.98, 0, 0.855 ], [ 0, - Math.PI / 2, 0 ], [ 0.125, 1, 1 ]] + ], + XYZX: [ + [ new THREE.Mesh( new THREE.BoxBufferGeometry( 0.125, 0.125, 0.125 ), matWhiteTransparent.clone() ), [ 1.1, 0, 0 ]], + ], + XYZY: [ + [ new THREE.Mesh( new THREE.BoxBufferGeometry( 0.125, 0.125, 0.125 ), matWhiteTransparent.clone() ), [ 0, 1.1, 0 ]], + ], + XYZZ: [ + [ new THREE.Mesh( new THREE.BoxBufferGeometry( 0.125, 0.125, 0.125 ), matWhiteTransparent.clone() ), [ 0, 0, 1.1 ]], + ] + }; + + var pickerScale = { + X: [ + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.2, 0, 0.8, 4, 1, false ), matInvisible ), [ 0.5, 0, 0 ], [ 0, 0, - Math.PI / 2 ]] + ], + Y: [ + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.2, 0, 0.8, 4, 1, false ), matInvisible ), [ 0, 0.5, 0 ]] + ], + Z: [ + [ new THREE.Mesh( new THREE.CylinderBufferGeometry( 0.2, 0, 0.8, 4, 1, false ), matInvisible ), [ 0, 0, 0.5 ], [ Math.PI / 2, 0, 0 ]] + ], + XY: [ + [ new THREE.Mesh( scaleHandleGeometry, matInvisible ), [ 0.85, 0.85, 0 ], null, [ 3, 3, 0.2 ]], + ], + YZ: [ + [ new THREE.Mesh( scaleHandleGeometry, matInvisible ), [ 0, 0.85, 0.85 ], null, [ 0.2, 3, 3 ]], + ], + XZ: [ + [ new THREE.Mesh( scaleHandleGeometry, matInvisible ), [ 0.85, 0, 0.85 ], null, [ 3, 0.2, 3 ]], + ], + XYZX: [ + [ new THREE.Mesh( new THREE.BoxBufferGeometry( 0.2, 0.2, 0.2 ), matInvisible ), [ 1.1, 0, 0 ]], + ], + XYZY: [ + [ new THREE.Mesh( new THREE.BoxBufferGeometry( 0.2, 0.2, 0.2 ), matInvisible ), [ 0, 1.1, 0 ]], + ], + XYZZ: [ + [ new THREE.Mesh( new THREE.BoxBufferGeometry( 0.2, 0.2, 0.2 ), matInvisible ), [ 0, 0, 1.1 ]], + ] + }; + + var helperScale = { + X: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ] + ], + Y: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ 0, - 1e3, 0 ], [ 0, 0, Math.PI / 2 ], [ 1e6, 1, 1 ], 'helper' ] + ], + Z: [ + [ new THREE.Line( lineGeometry, matHelper.clone() ), [ 0, 0, - 1e3 ], [ 0, - Math.PI / 2, 0 ], [ 1e6, 1, 1 ], 'helper' ] + ] + }; + + // Creates an Object3D with gizmos described in custom hierarchy definition. + + var setupGizmo = function ( gizmoMap ) { + + var gizmo = new THREE.Object3D(); + + for ( var name in gizmoMap ) { + + for ( var i = gizmoMap[ name ].length; i --; ) { + + var object = gizmoMap[ name ][ i ][ 0 ].clone(); + var position = gizmoMap[ name ][ i ][ 1 ]; + var rotation = gizmoMap[ name ][ i ][ 2 ]; + var scale = gizmoMap[ name ][ i ][ 3 ]; + var tag = gizmoMap[ name ][ i ][ 4 ]; + + // name and tag properties are essential for picking and updating logic. + object.name = name; + object.tag = tag; + + if ( position ) { + + object.position.set( position[ 0 ], position[ 1 ], position[ 2 ] ); + + } + if ( rotation ) { + + object.rotation.set( rotation[ 0 ], rotation[ 1 ], rotation[ 2 ] ); + + } + if ( scale ) { + + object.scale.set( scale[ 0 ], scale[ 1 ], scale[ 2 ] ); + + } + + object.updateMatrix(); + + var tempGeometry = object.geometry.clone(); + tempGeometry.applyMatrix( object.matrix ); + object.geometry = tempGeometry; + object.renderOrder = Infinity; + + object.position.set( 0, 0, 0 ); + object.rotation.set( 0, 0, 0 ); + object.scale.set( 1, 1, 1 ); + + gizmo.add( object ); + + } + + } + + return gizmo; + + }; + + // Reusable utility variables + + var tempVector = new THREE.Vector3( 0, 0, 0 ); + var tempEuler = new THREE.Euler(); + var alignVector = new THREE.Vector3( 0, 1, 0 ); + var zeroVector = new THREE.Vector3( 0, 0, 0 ); + var lookAtMatrix = new THREE.Matrix4(); + var tempQuaternion = new THREE.Quaternion(); + var tempQuaternion2 = new THREE.Quaternion(); + var identityQuaternion = new THREE.Quaternion(); + + var unitX = new THREE.Vector3( 1, 0, 0 ); + var unitY = new THREE.Vector3( 0, 1, 0 ); + var unitZ = new THREE.Vector3( 0, 0, 1 ); + + // Gizmo creation + + this.gizmo = {}; + this.picker = {}; + this.helper = {}; + + this.add( this.gizmo[ "translate" ] = setupGizmo( gizmoTranslate ) ); + this.add( this.gizmo[ "rotate" ] = setupGizmo( gizmoRotate ) ); + this.add( this.gizmo[ "scale" ] = setupGizmo( gizmoScale ) ); + this.add( this.picker[ "translate" ] = setupGizmo( pickerTranslate ) ); + this.add( this.picker[ "rotate" ] = setupGizmo( pickerRotate ) ); + this.add( this.picker[ "scale" ] = setupGizmo( pickerScale ) ); + this.add( this.helper[ "translate" ] = setupGizmo( helperTranslate ) ); + this.add( this.helper[ "rotate" ] = setupGizmo( helperRotate ) ); + this.add( this.helper[ "scale" ] = setupGizmo( helperScale ) ); + + // Pickers should be hidden always + + this.picker[ "translate" ].visible = false; + this.picker[ "rotate" ].visible = false; + this.picker[ "scale" ].visible = false; + + // updateMatrixWorld will update transformations and appearance of individual handles + + this.updateMatrixWorld = function () { + + var space = this.space; + + if ( this.mode === 'scale' ) space = 'local'; // scale always oriented to local rotation + + var quaternion = space === "local" ? this.worldQuaternion : identityQuaternion; + + // Show only gizmos for current transform mode + + this.gizmo[ "translate" ].visible = this.mode === "translate"; + this.gizmo[ "rotate" ].visible = this.mode === "rotate"; + this.gizmo[ "scale" ].visible = this.mode === "scale"; + + this.helper[ "translate" ].visible = this.mode === "translate"; + this.helper[ "rotate" ].visible = this.mode === "rotate"; + this.helper[ "scale" ].visible = this.mode === "scale"; + + + var handles = []; + handles = handles.concat( this.picker[ this.mode ].children ); + handles = handles.concat( this.gizmo[ this.mode ].children ); + handles = handles.concat( this.helper[ this.mode ].children ); + + for ( var i = 0; i < handles.length; i ++ ) { + + var handle = handles[ i ]; + + // hide aligned to camera + + handle.visible = true; + handle.rotation.set( 0, 0, 0 ); + handle.position.copy( this.worldPosition ); + + var eyeDistance = this.worldPosition.distanceTo( this.cameraPosition ); + handle.scale.set( 1, 1, 1 ).multiplyScalar( eyeDistance * this.size / 7 ); + + // TODO: simplify helpers and consider decoupling from gizmo + + if ( handle.tag === 'helper' ) { + + handle.visible = false; + + if ( handle.name === 'AXIS' ) { + + handle.position.copy( this.worldPositionStart ); + handle.visible = !! this.axis; + + if ( this.axis === 'X' ) { + + tempQuaternion.setFromEuler( tempEuler.set( 0, 0, 0 ) ); + handle.quaternion.copy( quaternion ).multiply( tempQuaternion ); + + if ( Math.abs( alignVector.copy( unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) > 0.9 ) { + + handle.visible = false; + + } + + } + + if ( this.axis === 'Y' ) { + + tempQuaternion.setFromEuler( tempEuler.set( 0, 0, Math.PI / 2 ) ); + handle.quaternion.copy( quaternion ).multiply( tempQuaternion ); + + if ( Math.abs( alignVector.copy( unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) > 0.9 ) { + + handle.visible = false; + + } + + } + + if ( this.axis === 'Z' ) { + + tempQuaternion.setFromEuler( tempEuler.set( 0, Math.PI / 2, 0 ) ); + handle.quaternion.copy( quaternion ).multiply( tempQuaternion ); + + if ( Math.abs( alignVector.copy( unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) > 0.9 ) { + + handle.visible = false; + + } + + } + + if ( this.axis === 'XYZE' ) { + + tempQuaternion.setFromEuler( tempEuler.set( 0, Math.PI / 2, 0 ) ); + alignVector.copy( this.rotationAxis ); + handle.quaternion.setFromRotationMatrix( lookAtMatrix.lookAt( zeroVector, alignVector, unitY ) ); + handle.quaternion.multiply( tempQuaternion ); + handle.visible = this.dragging; + + } + + if ( this.axis === 'E' ) { + + handle.visible = false; + + } + + + } else if ( handle.name === 'START' ) { + + handle.position.copy( this.worldPositionStart ); + handle.visible = this.dragging; + + } else if ( handle.name === 'END' ) { + + handle.position.copy( this.worldPosition ); + handle.visible = this.dragging; + + } else if ( handle.name === 'DELTA' ) { + + handle.position.copy( this.worldPositionStart ); + handle.quaternion.copy( this.worldQuaternionStart ); + tempVector.set( 1e-10, 1e-10, 1e-10 ).add( this.worldPositionStart ).sub( this.worldPosition ).multiplyScalar( - 1 ); + tempVector.applyQuaternion( this.worldQuaternionStart.clone().inverse() ); + handle.scale.copy( tempVector ); + handle.visible = this.dragging; + + } else { + + handle.quaternion.copy( quaternion ); + + if ( this.dragging ) { + + handle.position.copy( this.worldPositionStart ); + + } else { + + handle.position.copy( this.worldPosition ); + + } + + if ( this.axis ) { + + handle.visible = this.axis.search( handle.name ) !== - 1; + + } + + } + + // If updating helper, skip rest of the loop + continue; + + } + + // Align handles to current local or world rotation + + handle.quaternion.copy( quaternion ); + + if ( this.mode === 'translate' || this.mode === 'scale' ) { + + // Hide translate and scale axis facing the camera + + var AXIS_HIDE_TRESHOLD = 0.99; + var PLANE_HIDE_TRESHOLD = 0.2; + var AXIS_FLIP_TRESHOLD = 0.0; + + + if ( handle.name === 'X' || handle.name === 'XYZX' ) { + + if ( Math.abs( alignVector.copy( unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_TRESHOLD ) { + + handle.scale.set( 1e-10, 1e-10, 1e-10 ); + handle.visible = false; + + } + + } + if ( handle.name === 'Y' || handle.name === 'XYZY' ) { + + if ( Math.abs( alignVector.copy( unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_TRESHOLD ) { + + handle.scale.set( 1e-10, 1e-10, 1e-10 ); + handle.visible = false; + + } + + } + if ( handle.name === 'Z' || handle.name === 'XYZZ' ) { + + if ( Math.abs( alignVector.copy( unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_TRESHOLD ) { + + handle.scale.set( 1e-10, 1e-10, 1e-10 ); + handle.visible = false; + + } + + } + if ( handle.name === 'XY' ) { + + if ( Math.abs( alignVector.copy( unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_TRESHOLD ) { + + handle.scale.set( 1e-10, 1e-10, 1e-10 ); + handle.visible = false; + + } + + } + if ( handle.name === 'YZ' ) { + + if ( Math.abs( alignVector.copy( unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_TRESHOLD ) { + + handle.scale.set( 1e-10, 1e-10, 1e-10 ); + handle.visible = false; + + } + + } + if ( handle.name === 'XZ' ) { + + if ( Math.abs( alignVector.copy( unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_TRESHOLD ) { + + handle.scale.set( 1e-10, 1e-10, 1e-10 ); + handle.visible = false; + + } + + } + + // Flip translate and scale axis ocluded behind another axis + + if ( handle.name.search( 'X' ) !== - 1 ) { + + if ( alignVector.copy( unitX ).applyQuaternion( quaternion ).dot( this.eye ) < AXIS_FLIP_TRESHOLD ) { + + if ( handle.tag === 'fwd' ) { + + handle.visible = false; + + } else { + + handle.scale.x *= - 1; + + } + + } else if ( handle.tag === 'bwd' ) { + + handle.visible = false; + + } + + } + + if ( handle.name.search( 'Y' ) !== - 1 ) { + + if ( alignVector.copy( unitY ).applyQuaternion( quaternion ).dot( this.eye ) < AXIS_FLIP_TRESHOLD ) { + + if ( handle.tag === 'fwd' ) { + + handle.visible = false; + + } else { + + handle.scale.y *= - 1; + + } + + } else if ( handle.tag === 'bwd' ) { + + handle.visible = false; + + } + + } + + if ( handle.name.search( 'Z' ) !== - 1 ) { + + if ( alignVector.copy( unitZ ).applyQuaternion( quaternion ).dot( this.eye ) < AXIS_FLIP_TRESHOLD ) { + + if ( handle.tag === 'fwd' ) { + + handle.visible = false; + + } else { + + handle.scale.z *= - 1; + + } + + } else if ( handle.tag === 'bwd' ) { + + handle.visible = false; + + } + + } + + } else if ( this.mode === 'rotate' ) { + + // Align handles to current local or world rotation + + tempQuaternion2.copy( quaternion ); + alignVector.copy( this.eye ).applyQuaternion( tempQuaternion.copy( quaternion ).inverse() ); + + if ( handle.name.search( "E" ) !== - 1 ) { + + handle.quaternion.setFromRotationMatrix( lookAtMatrix.lookAt( this.eye, zeroVector, unitY ) ); + + } + + if ( handle.name === 'X' ) { + + tempQuaternion.setFromAxisAngle( unitX, Math.atan2( - alignVector.y, alignVector.z ) ); + tempQuaternion.multiplyQuaternions( tempQuaternion2, tempQuaternion ); + handle.quaternion.copy( tempQuaternion ); + + } + + if ( handle.name === 'Y' ) { + + tempQuaternion.setFromAxisAngle( unitY, Math.atan2( alignVector.x, alignVector.z ) ); + tempQuaternion.multiplyQuaternions( tempQuaternion2, tempQuaternion ); + handle.quaternion.copy( tempQuaternion ); + + } + + if ( handle.name === 'Z' ) { + + tempQuaternion.setFromAxisAngle( unitZ, Math.atan2( alignVector.y, alignVector.x ) ); + tempQuaternion.multiplyQuaternions( tempQuaternion2, tempQuaternion ); + handle.quaternion.copy( tempQuaternion ); + + } + + } + + // Hide disabled axes + handle.visible = handle.visible && ( handle.name.indexOf( "X" ) === - 1 || this.showX ); + handle.visible = handle.visible && ( handle.name.indexOf( "Y" ) === - 1 || this.showY ); + handle.visible = handle.visible && ( handle.name.indexOf( "Z" ) === - 1 || this.showZ ); + handle.visible = handle.visible && ( handle.name.indexOf( "E" ) === - 1 || ( this.showX && this.showY && this.showZ ) ); + + // highlight selected axis + + handle.material._opacity = handle.material._opacity || handle.material.opacity; + handle.material._color = handle.material._color || handle.material.color.clone(); + + handle.material.color.copy( handle.material._color ); + handle.material.opacity = handle.material._opacity; + + if ( ! this.enabled ) { + + handle.material.opacity *= 0.5; + handle.material.color.lerp( new THREE.Color( 1, 1, 1 ), 0.5 ); + + } else if ( this.axis ) { + + if ( handle.name === this.axis ) { + + handle.material.opacity = 1.0; + handle.material.color.lerp( new THREE.Color( 1, 1, 1 ), 0.5 ); + + } else if ( this.axis.split( '' ).some( function ( a ) { + + return handle.name === a; + + } ) ) { + + handle.material.opacity = 1.0; + handle.material.color.lerp( new THREE.Color( 1, 1, 1 ), 0.5 ); + + } else { + + handle.material.opacity *= 0.25; + handle.material.color.lerp( new THREE.Color( 1, 1, 1 ), 0.5 ); + + } + + } + + } + + THREE.Object3D.prototype.updateMatrixWorld.call( this ); + + }; + +}; + +THREE.TransformControlsGizmo.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), { + + constructor: THREE.TransformControlsGizmo, + + isTransformControlsGizmo: true + +} ); + + +THREE.TransformControlsPlane = function () { + + 'use strict'; + + THREE.Mesh.call( this, + new THREE.PlaneBufferGeometry( 100000, 100000, 2, 2 ), + new THREE.MeshBasicMaterial( { visible: false, wireframe: true, side: THREE.DoubleSide, transparent: true, opacity: 0.1 } ) + ); + + this.type = 'TransformControlsPlane'; + + var unitX = new THREE.Vector3( 1, 0, 0 ); + var unitY = new THREE.Vector3( 0, 1, 0 ); + var unitZ = new THREE.Vector3( 0, 0, 1 ); + + var tempVector = new THREE.Vector3(); + var dirVector = new THREE.Vector3(); + var alignVector = new THREE.Vector3(); + var tempMatrix = new THREE.Matrix4(); + var identityQuaternion = new THREE.Quaternion(); + + this.updateMatrixWorld = function () { + + var space = this.space; + + this.position.copy( this.worldPosition ); + + if ( this.mode === 'scale' ) space = 'local'; // scale always oriented to local rotation + + unitX.set( 1, 0, 0 ).applyQuaternion( space === "local" ? this.worldQuaternion : identityQuaternion ); + unitY.set( 0, 1, 0 ).applyQuaternion( space === "local" ? this.worldQuaternion : identityQuaternion ); + unitZ.set( 0, 0, 1 ).applyQuaternion( space === "local" ? this.worldQuaternion : identityQuaternion ); + + // Align the plane for current transform mode, axis and space. + + alignVector.copy( unitY ); + + switch ( this.mode ) { + + case 'translate': + case 'scale': + switch ( this.axis ) { + + case 'X': + alignVector.copy( this.eye ).cross( unitX ); + dirVector.copy( unitX ).cross( alignVector ); + break; + case 'Y': + alignVector.copy( this.eye ).cross( unitY ); + dirVector.copy( unitY ).cross( alignVector ); + break; + case 'Z': + alignVector.copy( this.eye ).cross( unitZ ); + dirVector.copy( unitZ ).cross( alignVector ); + break; + case 'XY': + dirVector.copy( unitZ ); + break; + case 'YZ': + dirVector.copy( unitX ); + break; + case 'XZ': + alignVector.copy( unitZ ); + dirVector.copy( unitY ); + break; + case 'XYZ': + case 'E': + dirVector.set( 0, 0, 0 ); + break; + + } + break; + case 'rotate': + default: + // special case for rotate + dirVector.set( 0, 0, 0 ); + + } + + if ( dirVector.length() === 0 ) { + + // If in rotate mode, make the plane parallel to camera + this.quaternion.copy( this.cameraQuaternion ); + + } else { + + tempMatrix.lookAt( tempVector.set( 0, 0, 0 ), dirVector, alignVector ); + + this.quaternion.setFromRotationMatrix( tempMatrix ); + + } + + THREE.Object3D.prototype.updateMatrixWorld.call( this ); + + }; + +}; + +THREE.TransformControlsPlane.prototype = Object.assign( Object.create( THREE.Mesh.prototype ), { + + constructor: THREE.TransformControlsPlane, + + isTransformControlsPlane: true + +} ); diff --git a/01_Code/physical_computing_interface/simulation/lib/compute.rhino3d.js b/01_Code/physical_computing_interface/simulation/lib/compute.rhino3d.js new file mode 100644 index 0000000000000000000000000000000000000000..21bb36091a3261e3b6f651c80393283184052a8b --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/compute.rhino3d.js @@ -0,0 +1,3353 @@ +var RhinoCompute = { + version: "0.5.1", + + url: "https://compute.rhino3d.com/", + + authToken: null, + + getAuthToken: function(useLocalStorage=true) { + var auth = null; + if( useLocalStorage ) + auth = localStorage["compute_auth"]; + if (auth == null) { + auth = window.prompt("Rhino Accounts auth token\nVisit https://www.rhino3d.com/compute/login"); + if (auth != null && auth.length>20) { + auth = "Bearer " + auth; + localStorage.setItem("compute_auth", auth); + } + } + return auth; + }, + + computeFetch: function(endpoint, arglist) { + return fetch(RhinoCompute.url+endpoint, { + "method":"POST", + "body": JSON.stringify(arglist), + "headers": { + "Authorization": RhinoCompute.authToken, + "User-Agent": `compute.rhino3d.js/${RhinoCompute.version}` + }, + }).then(r=>r.json()); + }, + + zipArgs: function(multiple, ...args) { + if(!multiple) + return args; + + if(args.length==1) + return args[0].map(function(_,i) { return [args[0][i]]; }); + if(args.length==2) + return args[0].map(function(_,i) { + return [args[0][i],args[1][i]]; } + ); + if(args.length==3) + return args[0].map(function(_,i) { + return [args[0][i],args[1][i],args[2][i]]; } + ); + if(args.length==4) + return args[0].map(function(_,i) { + return [args[0][i],args[1][i],args[2][i],args[3][i]]; } + ); + if(args.length==5) + return args[0].map(function(_,i) { + return [args[0][i],args[1][i],args[2][i],args[3][i],args[4][i]]; } + ); + if(args.length==6) + return args[0].map(function(_,i) { + return [args[0][i],args[1][i],args[2][i],args[3][i],args[4][i],args[5][i]]; } + ); + if(args.length==7) + return args[0].map(function(_,i) { + return [args[0][i],args[1][i],args[2][i],args[3][i],args[4][i],args[5][i],args[6][i]]; } + ); + return args[0].map(function(_,i) { + return [args[0][i],args[1][i],args[2][i],args[3][i],args[4][i],args[5][i],args[6][i],args[7][i]]; } + ); + }, + + Extrusion : { + getWireframe : function(extrusion, multiple=false) { + let url="rhino/geometry/extrusion/getwireframe-extrusion"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, extrusion); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + }, + + BezierCurve : { + createCubicBeziers : function(sourceCurve, distanceTolerance, kinkTolerance, multiple=false) { + let url="rhino/geometry/beziercurve/createcubicbeziers-curve_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, sourceCurve, distanceTolerance, kinkTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBeziers : function(sourceCurve, multiple=false) { + let url="rhino/geometry/beziercurve/createbeziers-curve"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, sourceCurve); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + }, + + Brep : { + changeSeam : function(face, direction, parameter, tolerance, multiple=false) { + let url="rhino/geometry/brep/changeseam-brepface_int_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, face, direction, parameter, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + copyTrimCurves : function(trimSource, surfaceSource, tolerance, multiple=false) { + let url="rhino/geometry/brep/copytrimcurves-brepface_surface_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, trimSource, surfaceSource, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBaseballSphere : function(center, radius, tolerance, multiple=false) { + let url="rhino/geometry/brep/createbaseballsphere-point3d_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, center, radius, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createDevelopableLoft : function(crv0, crv1, reverse0, reverse1, density, multiple=false) { + let url="rhino/geometry/brep/createdevelopableloft-curve_curve_bool_bool_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, crv0, crv1, reverse0, reverse1, density); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createDevelopableLoft1 : function(rail0, rail1, fixedRulings, multiple=false) { + let url="rhino/geometry/brep/createdevelopableloft-nurbscurve_nurbscurve_point2darray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, rail0, rail1, fixedRulings); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPlanarBreps : function(inputLoops, multiple=false) { + let url="rhino/geometry/brep/createplanarbreps-curvearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, inputLoops); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPlanarBreps1 : function(inputLoops, tolerance, multiple=false) { + let url="rhino/geometry/brep/createplanarbreps-curvearray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, inputLoops, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPlanarBreps2 : function(inputLoop, multiple=false) { + let url="rhino/geometry/brep/createplanarbreps-curve"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, inputLoop); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPlanarBreps3 : function(inputLoop, tolerance, multiple=false) { + let url="rhino/geometry/brep/createplanarbreps-curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, inputLoop, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createTrimmedSurface : function(trimSource, surfaceSource, multiple=false) { + let url="rhino/geometry/brep/createtrimmedsurface-brepface_surface"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, trimSource, surfaceSource); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createTrimmedSurface1 : function(trimSource, surfaceSource, tolerance, multiple=false) { + let url="rhino/geometry/brep/createtrimmedsurface-brepface_surface_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, trimSource, surfaceSource, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromCornerPoints : function(corner1, corner2, corner3, tolerance, multiple=false) { + let url="rhino/geometry/brep/createfromcornerpoints-point3d_point3d_point3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, corner1, corner2, corner3, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromCornerPoints1 : function(corner1, corner2, corner3, corner4, tolerance, multiple=false) { + let url="rhino/geometry/brep/createfromcornerpoints-point3d_point3d_point3d_point3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, corner1, corner2, corner3, corner4, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createEdgeSurface : function(curves, multiple=false) { + let url="rhino/geometry/brep/createedgesurface-curvearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curves); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPlanarBreps4 : function(inputLoops, multiple=false) { + let url="rhino/geometry/brep/createplanarbreps-rhino.collections.curvelist"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, inputLoops); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPlanarBreps5 : function(inputLoops, tolerance, multiple=false) { + let url="rhino/geometry/brep/createplanarbreps-rhino.collections.curvelist_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, inputLoops, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromOffsetFace : function(face, offsetDistance, offsetTolerance, bothSides, createSolid, multiple=false) { + let url="rhino/geometry/brep/createfromoffsetface-brepface_double_double_bool_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, face, offsetDistance, offsetTolerance, bothSides, createSolid); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createSolid : function(breps, tolerance, multiple=false) { + let url="rhino/geometry/brep/createsolid-breparray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, breps, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + mergeSurfaces : function(surface0, surface1, tolerance, angleToleranceRadians, multiple=false) { + let url="rhino/geometry/brep/mergesurfaces-surface_surface_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface0, surface1, tolerance, angleToleranceRadians); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + mergeSurfaces1 : function(brep0, brep1, tolerance, angleToleranceRadians, multiple=false) { + let url="rhino/geometry/brep/mergesurfaces-brep_brep_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep0, brep1, tolerance, angleToleranceRadians); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + mergeSurfaces2 : function(brep0, brep1, tolerance, angleToleranceRadians, point0, point1, roundness, smooth, multiple=false) { + let url="rhino/geometry/brep/mergesurfaces-brep_brep_double_double_point2d_point2d_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep0, brep1, tolerance, angleToleranceRadians, point0, point1, roundness, smooth); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPatch : function(geometry, startingSurface, tolerance, multiple=false) { + let url="rhino/geometry/brep/createpatch-geometrybasearray_surface_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, geometry, startingSurface, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPatch1 : function(geometry, uSpans, vSpans, tolerance, multiple=false) { + let url="rhino/geometry/brep/createpatch-geometrybasearray_int_int_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, geometry, uSpans, vSpans, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPatch2 : function(geometry, startingSurface, uSpans, vSpans, trim, tangency, pointSpacing, flexibility, surfacePull, fixEdges, tolerance, multiple=false) { + let url="rhino/geometry/brep/createpatch-geometrybasearray_surface_int_int_bool_bool_double_double_double_boolarray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, geometry, startingSurface, uSpans, vSpans, trim, tangency, pointSpacing, flexibility, surfacePull, fixEdges, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPipe : function(rail, radius, localBlending, cap, fitRail, absoluteTolerance, angleToleranceRadians, multiple=false) { + let url="rhino/geometry/brep/createpipe-curve_double_bool_pipecapmode_bool_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, rail, radius, localBlending, cap, fitRail, absoluteTolerance, angleToleranceRadians); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPipe1 : function(rail, railRadiiParameters, radii, localBlending, cap, fitRail, absoluteTolerance, angleToleranceRadians, multiple=false) { + let url="rhino/geometry/brep/createpipe-curve_doublearray_doublearray_bool_pipecapmode_bool_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, rail, railRadiiParameters, radii, localBlending, cap, fitRail, absoluteTolerance, angleToleranceRadians); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromSweep : function(rail, shape, closed, tolerance, multiple=false) { + let url="rhino/geometry/brep/createfromsweep-curve_curve_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, rail, shape, closed, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromSweep1 : function(rail, shapes, closed, tolerance, multiple=false) { + let url="rhino/geometry/brep/createfromsweep-curve_curvearray_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, rail, shapes, closed, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromSweep2 : function(rail1, rail2, shape, closed, tolerance, multiple=false) { + let url="rhino/geometry/brep/createfromsweep-curve_curve_curve_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, rail1, rail2, shape, closed, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromSweep3 : function(rail1, rail2, shapes, closed, tolerance, multiple=false) { + let url="rhino/geometry/brep/createfromsweep-curve_curve_curvearray_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, rail1, rail2, shapes, closed, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromSweepSegmented : function(rail, shape, closed, tolerance, multiple=false) { + let url="rhino/geometry/brep/createfromsweepsegmented-curve_curve_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, rail, shape, closed, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromSweepSegmented1 : function(rail, shapes, closed, tolerance, multiple=false) { + let url="rhino/geometry/brep/createfromsweepsegmented-curve_curvearray_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, rail, shapes, closed, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromSweepInParts : function(rail1, rail2, shapes, rail_params, closed, tolerance, multiple=false) { + let url="rhino/geometry/brep/createfromsweepinparts-curve_curve_curvearray_point2darray_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, rail1, rail2, shapes, rail_params, closed, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromTaperedExtrude : function(curveToExtrude, distance, direction, basePoint, draftAngleRadians, cornerType, tolerance, angleToleranceRadians, multiple=false) { + let url="rhino/geometry/brep/createfromtaperedextrude-curve_double_vector3d_point3d_double_extrudecornertype_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveToExtrude, distance, direction, basePoint, draftAngleRadians, cornerType, tolerance, angleToleranceRadians); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromTaperedExtrude1 : function(curveToExtrude, distance, direction, basePoint, draftAngleRadians, cornerType, multiple=false) { + let url="rhino/geometry/brep/createfromtaperedextrude-curve_double_vector3d_point3d_double_extrudecornertype"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveToExtrude, distance, direction, basePoint, draftAngleRadians, cornerType); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBlendSurface : function(face0, edge0, domain0, rev0, continuity0, face1, edge1, domain1, rev1, continuity1, multiple=false) { + let url="rhino/geometry/brep/createblendsurface-brepface_brepedge_interval_bool_blendcontinuity_brepface_brepedge_interval_bool_blendcontinuity"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, face0, edge0, domain0, rev0, continuity0, face1, edge1, domain1, rev1, continuity1); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBlendShape : function(face0, edge0, t0, rev0, continuity0, face1, edge1, t1, rev1, continuity1, multiple=false) { + let url="rhino/geometry/brep/createblendshape-brepface_brepedge_double_bool_blendcontinuity_brepface_brepedge_double_bool_blendcontinuity"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, face0, edge0, t0, rev0, continuity0, face1, edge1, t1, rev1, continuity1); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFilletSurface : function(face0, uv0, face1, uv1, radius, extend, tolerance, multiple=false) { + let url="rhino/geometry/brep/createfilletsurface-brepface_point2d_brepface_point2d_double_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, face0, uv0, face1, uv1, radius, extend, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFilletSurface1 : function(face0, uv0, face1, uv1, radius, trim, extend, tolerance, multiple=false) { + let url="rhino/geometry/brep/createfilletsurface-brepface_point2d_brepface_point2d_double_bool_bool_double_breparray_breparray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, face0, uv0, face1, uv1, radius, trim, extend, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createChamferSurface : function(face0, uv0, radius0, face1, uv1, radius1, extend, tolerance, multiple=false) { + let url="rhino/geometry/brep/createchamfersurface-brepface_point2d_double_brepface_point2d_double_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, face0, uv0, radius0, face1, uv1, radius1, extend, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createChamferSurface1 : function(face0, uv0, radius0, face1, uv1, radius1, trim, extend, tolerance, multiple=false) { + let url="rhino/geometry/brep/createchamfersurface-brepface_point2d_double_brepface_point2d_double_bool_bool_double_breparray_breparray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, face0, uv0, radius0, face1, uv1, radius1, trim, extend, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFilletEdges : function(brep, edgeIndices, startRadii, endRadii, blendType, railType, tolerance, multiple=false) { + let url="rhino/geometry/brep/createfilletedges-brep_intarray_doublearray_doublearray_blendtype_railtype_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, edgeIndices, startRadii, endRadii, blendType, railType, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createOffsetBrep : function(brep, distance, solid, extend, tolerance, multiple=false) { + let url="rhino/geometry/brep/createoffsetbrep-brep_double_bool_bool_double_breparray_breparray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, distance, solid, extend, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromJoinedEdges : function(brep0, edgeIndex0, brep1, edgeIndex1, joinTolerance, multiple=false) { + let url="rhino/geometry/brep/createfromjoinededges-brep_int_brep_int_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep0, edgeIndex0, brep1, edgeIndex1, joinTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromLoft : function(curves, start, end, loftType, closed, multiple=false) { + let url="rhino/geometry/brep/createfromloft-curvearray_point3d_point3d_lofttype_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curves, start, end, loftType, closed); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromLoftRebuild : function(curves, start, end, loftType, closed, rebuildPointCount, multiple=false) { + let url="rhino/geometry/brep/createfromloftrebuild-curvearray_point3d_point3d_lofttype_bool_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curves, start, end, loftType, closed, rebuildPointCount); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromLoftRefit : function(curves, start, end, loftType, closed, refitTolerance, multiple=false) { + let url="rhino/geometry/brep/createfromloftrefit-curvearray_point3d_point3d_lofttype_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curves, start, end, loftType, closed, refitTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanUnion : function(breps, tolerance, multiple=false) { + let url="rhino/geometry/brep/createbooleanunion-breparray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, breps, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanUnion1 : function(breps, tolerance, manifoldOnly, multiple=false) { + let url="rhino/geometry/brep/createbooleanunion-breparray_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, breps, tolerance, manifoldOnly); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanIntersection : function(firstSet, secondSet, tolerance, multiple=false) { + let url="rhino/geometry/brep/createbooleanintersection-breparray_breparray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, firstSet, secondSet, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanIntersection1 : function(firstSet, secondSet, tolerance, manifoldOnly, multiple=false) { + let url="rhino/geometry/brep/createbooleanintersection-breparray_breparray_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, firstSet, secondSet, tolerance, manifoldOnly); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanIntersection2 : function(firstBrep, secondBrep, tolerance, multiple=false) { + let url="rhino/geometry/brep/createbooleanintersection-brep_brep_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, firstBrep, secondBrep, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanIntersection3 : function(firstBrep, secondBrep, tolerance, manifoldOnly, multiple=false) { + let url="rhino/geometry/brep/createbooleanintersection-brep_brep_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, firstBrep, secondBrep, tolerance, manifoldOnly); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanDifference : function(firstSet, secondSet, tolerance, multiple=false) { + let url="rhino/geometry/brep/createbooleandifference-breparray_breparray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, firstSet, secondSet, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanDifference1 : function(firstSet, secondSet, tolerance, manifoldOnly, multiple=false) { + let url="rhino/geometry/brep/createbooleandifference-breparray_breparray_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, firstSet, secondSet, tolerance, manifoldOnly); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanDifference2 : function(firstBrep, secondBrep, tolerance, multiple=false) { + let url="rhino/geometry/brep/createbooleandifference-brep_brep_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, firstBrep, secondBrep, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanDifference3 : function(firstBrep, secondBrep, tolerance, manifoldOnly, multiple=false) { + let url="rhino/geometry/brep/createbooleandifference-brep_brep_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, firstBrep, secondBrep, tolerance, manifoldOnly); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createShell : function(brep, facesToRemove, distance, tolerance, multiple=false) { + let url="rhino/geometry/brep/createshell-brep_intarray_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, facesToRemove, distance, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + joinBreps : function(brepsToJoin, tolerance, multiple=false) { + let url="rhino/geometry/brep/joinbreps-breparray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepsToJoin, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + mergeBreps : function(brepsToMerge, tolerance, multiple=false) { + let url="rhino/geometry/brep/mergebreps-breparray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepsToMerge, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createContourCurves : function(brepToContour, contourStart, contourEnd, interval, multiple=false) { + let url="rhino/geometry/brep/createcontourcurves-brep_point3d_point3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepToContour, contourStart, contourEnd, interval); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createContourCurves1 : function(brepToContour, sectionPlane, multiple=false) { + let url="rhino/geometry/brep/createcontourcurves-brep_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepToContour, sectionPlane); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createCurvatureAnalysisMesh : function(brep, state, multiple=false) { + let url="rhino/geometry/brep/createcurvatureanalysismesh-brep_rhino.applicationsettings.curvatureanalysissettingsstate"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, state); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getRegions : function(brep, multiple=false) { + let url="rhino/geometry/brep/getregions-brep"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getWireframe : function(brep, density, multiple=false) { + let url="rhino/geometry/brep/getwireframe-brep_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, density); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + closestPoint : function(brep, testPoint, multiple=false) { + let url="rhino/geometry/brep/closestpoint-brep_point3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, testPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + isPointInside : function(brep, point, tolerance, strictlyIn, multiple=false) { + let url="rhino/geometry/brep/ispointinside-brep_point3d_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, point, tolerance, strictlyIn); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + capPlanarHoles : function(brep, tolerance, multiple=false) { + let url="rhino/geometry/brep/capplanarholes-brep_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + join : function(brep, otherBrep, tolerance, compact, multiple=false) { + let url="rhino/geometry/brep/join-brep_brep_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, otherBrep, tolerance, compact); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + joinNakedEdges : function(brep, tolerance, multiple=false) { + let url="rhino/geometry/brep/joinnakededges-brep_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + mergeCoplanarFaces : function(brep, tolerance, multiple=false) { + let url="rhino/geometry/brep/mergecoplanarfaces-brep_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + mergeCoplanarFaces1 : function(brep, tolerance, angleTolerance, multiple=false) { + let url="rhino/geometry/brep/mergecoplanarfaces-brep_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, tolerance, angleTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split : function(brep, cutter, intersectionTolerance, multiple=false) { + let url="rhino/geometry/brep/split-brep_brep_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, cutter, intersectionTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split1 : function(brep, cutter, intersectionTolerance, multiple=false) { + let url="rhino/geometry/brep/split-brep_brep_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, cutter, intersectionTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split2 : function(brep, cutters, intersectionTolerance, multiple=false) { + let url="rhino/geometry/brep/split-brep_breparray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, cutters, intersectionTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split3 : function(brep, cutters, intersectionTolerance, multiple=false) { + let url="rhino/geometry/brep/split-brep_curvearray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, cutters, intersectionTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split4 : function(brep, cutters, normal, planView, intersectionTolerance, multiple=false) { + let url="rhino/geometry/brep/split-brep_geometrybasearray_vector3d_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, cutters, normal, planView, intersectionTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + trim : function(brep, cutter, intersectionTolerance, multiple=false) { + let url="rhino/geometry/brep/trim-brep_brep_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, cutter, intersectionTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + trim1 : function(brep, cutter, intersectionTolerance, multiple=false) { + let url="rhino/geometry/brep/trim-brep_plane_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, cutter, intersectionTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + unjoinEdges : function(brep, edgesToUnjoin, multiple=false) { + let url="rhino/geometry/brep/unjoinedges-brep_intarray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, edgesToUnjoin); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + joinEdges : function(brep, edgeIndex0, edgeIndex1, joinTolerance, compact, multiple=false) { + let url="rhino/geometry/brep/joinedges-brep_int_int_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, edgeIndex0, edgeIndex1, joinTolerance, compact); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + transformComponent : function(brep, components, xform, tolerance, timeLimit, useMultipleThreads, multiple=false) { + let url="rhino/geometry/brep/transformcomponent-brep_componentindexarray_transform_double_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, components, xform, tolerance, timeLimit, useMultipleThreads); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getArea : function(brep, multiple=false) { + let url="rhino/geometry/brep/getarea-brep"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getArea1 : function(brep, relativeTolerance, absoluteTolerance, multiple=false) { + let url="rhino/geometry/brep/getarea-brep_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, relativeTolerance, absoluteTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getVolume : function(brep, multiple=false) { + let url="rhino/geometry/brep/getvolume-brep"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getVolume1 : function(brep, relativeTolerance, absoluteTolerance, multiple=false) { + let url="rhino/geometry/brep/getvolume-brep_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, relativeTolerance, absoluteTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + rebuildTrimsForV2 : function(brep, face, nurbsSurface, multiple=false) { + let url="rhino/geometry/brep/rebuildtrimsforv2-brep_brepface_nurbssurface"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, face, nurbsSurface); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + makeValidForV2 : function(brep, multiple=false) { + let url="rhino/geometry/brep/makevalidforv2-brep"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + repair : function(brep, tolerance, multiple=false) { + let url="rhino/geometry/brep/repair-brep_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + removeHoles : function(brep, tolerance, multiple=false) { + let url="rhino/geometry/brep/removeholes-brep_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + removeHoles1 : function(brep, loops, tolerance, multiple=false) { + let url="rhino/geometry/brep/removeholes-brep_componentindexarray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, loops, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + }, + + BrepFace : { + pullPointsToFace : function(brepface, points, tolerance, multiple=false) { + let url="rhino/geometry/brepface/pullpointstoface-brepface_point3darray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepface, points, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + draftAnglePoint : function(brepface, testPoint, testAngle, pullDirection, edge, multiple=false) { + let url="rhino/geometry/brepface/draftanglepoint-brepface_point2d_double_vector3d_bool_point3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepface, testPoint, testAngle, pullDirection, edge); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + removeHoles : function(brepface, tolerance, multiple=false) { + let url="rhino/geometry/brepface/removeholes-brepface_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepface, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split : function(brepface, curves, tolerance, multiple=false) { + let url="rhino/geometry/brepface/split-brepface_curvearray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepface, curves, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + isPointOnFace : function(brepface, u, v, multiple=false) { + let url="rhino/geometry/brepface/ispointonface-brepface_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepface, u, v); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + trimAwareIsoIntervals : function(brepface, direction, constantParameter, multiple=false) { + let url="rhino/geometry/brepface/trimawareisointervals-brepface_int_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepface, direction, constantParameter); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + trimAwareIsoCurve : function(brepface, direction, constantParameter, multiple=false) { + let url="rhino/geometry/brepface/trimawareisocurve-brepface_int_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepface, direction, constantParameter); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + changeSurface : function(brepface, surfaceIndex, multiple=false) { + let url="rhino/geometry/brepface/changesurface-brepface_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepface, surfaceIndex); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + rebuildEdges : function(brepface, tolerance, rebuildSharedEdges, rebuildVertices, multiple=false) { + let url="rhino/geometry/brepface/rebuildedges-brepface_double_bool_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepface, tolerance, rebuildSharedEdges, rebuildVertices); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + }, + + Curve : { + getConicSectionType : function(curve, multiple=false) { + let url="rhino/geometry/curve/getconicsectiontype-curve"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createInterpolatedCurve : function(points, degree, multiple=false) { + let url="rhino/geometry/curve/createinterpolatedcurve-point3darray_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, points, degree); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createInterpolatedCurve1 : function(points, degree, knots, multiple=false) { + let url="rhino/geometry/curve/createinterpolatedcurve-point3darray_int_curveknotstyle"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, points, degree, knots); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createInterpolatedCurve2 : function(points, degree, knots, startTangent, endTangent, multiple=false) { + let url="rhino/geometry/curve/createinterpolatedcurve-point3darray_int_curveknotstyle_vector3d_vector3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, points, degree, knots, startTangent, endTangent); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createSoftEditCurve : function(curve, t, delta, length, fixEnds, multiple=false) { + let url="rhino/geometry/curve/createsofteditcurve-curve_double_vector3d_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, t, delta, length, fixEnds); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFilletCornersCurve : function(curve, radius, tolerance, angleTolerance, multiple=false) { + let url="rhino/geometry/curve/createfilletcornerscurve-curve_double_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, radius, tolerance, angleTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createArcBlend : function(startPt, startDir, endPt, endDir, controlPointLengthRatio, multiple=false) { + let url="rhino/geometry/curve/createarcblend-point3d_vector3d_point3d_vector3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, startPt, startDir, endPt, endDir, controlPointLengthRatio); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createMeanCurve : function(curveA, curveB, angleToleranceRadians, multiple=false) { + let url="rhino/geometry/curve/createmeancurve-curve_curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB, angleToleranceRadians); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createMeanCurve1 : function(curveA, curveB, multiple=false) { + let url="rhino/geometry/curve/createmeancurve-curve_curve"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBlendCurve : function(curveA, curveB, continuity, multiple=false) { + let url="rhino/geometry/curve/createblendcurve-curve_curve_blendcontinuity"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB, continuity); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBlendCurve1 : function(curveA, curveB, continuity, bulgeA, bulgeB, multiple=false) { + let url="rhino/geometry/curve/createblendcurve-curve_curve_blendcontinuity_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB, continuity, bulgeA, bulgeB); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBlendCurve2 : function(curve0, t0, reverse0, continuity0, curve1, t1, reverse1, continuity1, multiple=false) { + let url="rhino/geometry/curve/createblendcurve-curve_double_bool_blendcontinuity_curve_double_bool_blendcontinuity"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve0, t0, reverse0, continuity0, curve1, t1, reverse1, continuity1); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createTweenCurves : function(curve0, curve1, numCurves, multiple=false) { + let url="rhino/geometry/curve/createtweencurves-curve_curve_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve0, curve1, numCurves); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createTweenCurves1 : function(curve0, curve1, numCurves, tolerance, multiple=false) { + let url="rhino/geometry/curve/createtweencurves-curve_curve_int_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve0, curve1, numCurves, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createTweenCurvesWithMatching : function(curve0, curve1, numCurves, multiple=false) { + let url="rhino/geometry/curve/createtweencurveswithmatching-curve_curve_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve0, curve1, numCurves); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createTweenCurvesWithMatching1 : function(curve0, curve1, numCurves, tolerance, multiple=false) { + let url="rhino/geometry/curve/createtweencurveswithmatching-curve_curve_int_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve0, curve1, numCurves, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createTweenCurvesWithSampling : function(curve0, curve1, numCurves, numSamples, multiple=false) { + let url="rhino/geometry/curve/createtweencurveswithsampling-curve_curve_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve0, curve1, numCurves, numSamples); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createTweenCurvesWithSampling1 : function(curve0, curve1, numCurves, numSamples, tolerance, multiple=false) { + let url="rhino/geometry/curve/createtweencurveswithsampling-curve_curve_int_int_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve0, curve1, numCurves, numSamples, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + joinCurves : function(inputCurves, multiple=false) { + let url="rhino/geometry/curve/joincurves-curvearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, inputCurves); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + joinCurves1 : function(inputCurves, joinTolerance, multiple=false) { + let url="rhino/geometry/curve/joincurves-curvearray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, inputCurves, joinTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + joinCurves2 : function(inputCurves, joinTolerance, preserveDirection, multiple=false) { + let url="rhino/geometry/curve/joincurves-curvearray_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, inputCurves, joinTolerance, preserveDirection); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + makeEndsMeet : function(curveA, adjustStartCurveA, curveB, adjustStartCurveB, multiple=false) { + let url="rhino/geometry/curve/makeendsmeet-curve_bool_curve_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, adjustStartCurveA, curveB, adjustStartCurveB); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFillet : function(curve0, curve1, radius, t0Base, t1Base, multiple=false) { + let url="rhino/geometry/curve/createfillet-curve_curve_double_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve0, curve1, radius, t0Base, t1Base); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFilletCurves : function(curve0, point0, curve1, point1, radius, join, trim, arcExtension, tolerance, angleTolerance, multiple=false) { + let url="rhino/geometry/curve/createfilletcurves-curve_point3d_curve_point3d_double_bool_bool_bool_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve0, point0, curve1, point1, radius, join, trim, arcExtension, tolerance, angleTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanUnion : function(curves, multiple=false) { + let url="rhino/geometry/curve/createbooleanunion-curvearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curves); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanUnion1 : function(curves, tolerance, multiple=false) { + let url="rhino/geometry/curve/createbooleanunion-curvearray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curves, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanIntersection : function(curveA, curveB, multiple=false) { + let url="rhino/geometry/curve/createbooleanintersection-curve_curve"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanIntersection1 : function(curveA, curveB, tolerance, multiple=false) { + let url="rhino/geometry/curve/createbooleanintersection-curve_curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanDifference : function(curveA, curveB, multiple=false) { + let url="rhino/geometry/curve/createbooleandifference-curve_curve"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanDifference1 : function(curveA, curveB, tolerance, multiple=false) { + let url="rhino/geometry/curve/createbooleandifference-curve_curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanDifference2 : function(curveA, subtractors, multiple=false) { + let url="rhino/geometry/curve/createbooleandifference-curve_curvearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, subtractors); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanDifference3 : function(curveA, subtractors, tolerance, multiple=false) { + let url="rhino/geometry/curve/createbooleandifference-curve_curvearray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, subtractors, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createTextOutlines : function(text, font, textHeight, textStyle, closeLoops, plane, smallCapsScale, tolerance, multiple=false) { + let url="rhino/geometry/curve/createtextoutlines-string_string_double_int_bool_plane_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, text, font, textHeight, textStyle, closeLoops, plane, smallCapsScale, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createCurve2View : function(curveA, curveB, vectorA, vectorB, tolerance, angleTolerance, multiple=false) { + let url="rhino/geometry/curve/createcurve2view-curve_curve_vector3d_vector3d_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB, vectorA, vectorB, tolerance, angleTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + doDirectionsMatch : function(curveA, curveB, multiple=false) { + let url="rhino/geometry/curve/dodirectionsmatch-curve_curve"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectToMesh : function(curve, mesh, direction, tolerance, multiple=false) { + let url="rhino/geometry/curve/projecttomesh-curve_mesh_vector3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, mesh, direction, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectToMesh1 : function(curve, meshes, direction, tolerance, multiple=false) { + let url="rhino/geometry/curve/projecttomesh-curve_mesharray_vector3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, meshes, direction, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectToMesh2 : function(curves, meshes, direction, tolerance, multiple=false) { + let url="rhino/geometry/curve/projecttomesh-curvearray_mesharray_vector3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curves, meshes, direction, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectToBrep : function(curve, brep, direction, tolerance, multiple=false) { + let url="rhino/geometry/curve/projecttobrep-curve_brep_vector3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, brep, direction, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectToBrep1 : function(curve, breps, direction, tolerance, multiple=false) { + let url="rhino/geometry/curve/projecttobrep-curve_breparray_vector3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, breps, direction, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectToBrep2 : function(curve, breps, direction, tolerance, multiple=false) { + let url="rhino/geometry/curve/projecttobrep-curve_breparray_vector3d_double_intarray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, breps, direction, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectToBrep3 : function(curves, breps, direction, tolerance, multiple=false) { + let url="rhino/geometry/curve/projecttobrep-curvearray_breparray_vector3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curves, breps, direction, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectToBrep4 : function(curves, breps, direction, tolerance, multiple=false) { + let url="rhino/geometry/curve/projecttobrep-curvearray_breparray_vector3d_double_intarray_intarray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curves, breps, direction, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectToPlane : function(curve, plane, multiple=false) { + let url="rhino/geometry/curve/projecttoplane-curve_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, plane); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + pullToBrepFace : function(curve, face, tolerance, multiple=false) { + let url="rhino/geometry/curve/pulltobrepface-curve_brepface_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, face, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + planarClosedCurveRelationship : function(curveA, curveB, testPlane, tolerance, multiple=false) { + let url="rhino/geometry/curve/planarclosedcurverelationship-curve_curve_plane_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB, testPlane, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + planarCurveCollision : function(curveA, curveB, testPlane, tolerance, multiple=false) { + let url="rhino/geometry/curve/planarcurvecollision-curve_curve_plane_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB, testPlane, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + duplicateSegments : function(curve, multiple=false) { + let url="rhino/geometry/curve/duplicatesegments-curve"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + smooth : function(curve, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem, multiple=false) { + let url="rhino/geometry/curve/smooth-curve_double_bool_bool_bool_bool_smoothingcoordinatesystem"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + smooth1 : function(curve, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem, plane, multiple=false) { + let url="rhino/geometry/curve/smooth-curve_double_bool_bool_bool_bool_smoothingcoordinatesystem_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem, plane); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getLocalPerpPoint : function(curve, testPoint, seedParmameter, multiple=false) { + let url="rhino/geometry/curve/getlocalperppoint-curve_point3d_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, testPoint, seedParmameter); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getLocalPerpPoint1 : function(curve, testPoint, seedParmameter, subDomain, multiple=false) { + let url="rhino/geometry/curve/getlocalperppoint-curve_point3d_double_interval_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, testPoint, seedParmameter, subDomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getLocalTangentPoint : function(curve, testPoint, seedParmameter, multiple=false) { + let url="rhino/geometry/curve/getlocaltangentpoint-curve_point3d_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, testPoint, seedParmameter); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getLocalTangentPoint1 : function(curve, testPoint, seedParmameter, subDomain, multiple=false) { + let url="rhino/geometry/curve/getlocaltangentpoint-curve_point3d_double_interval_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, testPoint, seedParmameter, subDomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + makeClosed : function(curve, tolerance, multiple=false) { + let url="rhino/geometry/curve/makeclosed-curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + lcoalClosestPoint : function(curve, testPoint, seed, multiple=false) { + let url="rhino/geometry/curve/lcoalclosestpoint-curve_point3d_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, testPoint, seed); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + closestPoint : function(curve, testPoint, multiple=false) { + let url="rhino/geometry/curve/closestpoint-curve_point3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, testPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + closestPoint1 : function(curve, testPoint, maximumDistance, multiple=false) { + let url="rhino/geometry/curve/closestpoint-curve_point3d_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, testPoint, maximumDistance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + closestPoints : function(curve, otherCurve, multiple=false) { + let url="rhino/geometry/curve/closestpoints-curve_curve_point3d_point3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, otherCurve); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + contains : function(curve, testPoint, multiple=false) { + let url="rhino/geometry/curve/contains-curve_point3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, testPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + contains1 : function(curve, testPoint, plane, multiple=false) { + let url="rhino/geometry/curve/contains-curve_point3d_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, testPoint, plane); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + contains2 : function(curve, testPoint, plane, tolerance, multiple=false) { + let url="rhino/geometry/curve/contains-curve_point3d_plane_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, testPoint, plane, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + extremeParameters : function(curve, direction, multiple=false) { + let url="rhino/geometry/curve/extremeparameters-curve_vector3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, direction); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPeriodicCurve : function(curve, multiple=false) { + let url="rhino/geometry/curve/createperiodiccurve-curve"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPeriodicCurve1 : function(curve, smooth, multiple=false) { + let url="rhino/geometry/curve/createperiodiccurve-curve_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, smooth); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + pointAtLength : function(curve, length, multiple=false) { + let url="rhino/geometry/curve/pointatlength-curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, length); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + pointAtNormalizedLength : function(curve, length, multiple=false) { + let url="rhino/geometry/curve/pointatnormalizedlength-curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, length); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + perpendicularFrameAt : function(curve, t, multiple=false) { + let url="rhino/geometry/curve/perpendicularframeat-curve_double_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, t); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getPerpendicularFrames : function(curve, parameters, multiple=false) { + let url="rhino/geometry/curve/getperpendicularframes-curve_doublearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, parameters); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getLength : function(curve, multiple=false) { + let url="rhino/geometry/curve/getlength-curve"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getLength1 : function(curve, fractionalTolerance, multiple=false) { + let url="rhino/geometry/curve/getlength-curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, fractionalTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getLength2 : function(curve, subdomain, multiple=false) { + let url="rhino/geometry/curve/getlength-curve_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, subdomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getLength3 : function(curve, fractionalTolerance, subdomain, multiple=false) { + let url="rhino/geometry/curve/getlength-curve_double_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, fractionalTolerance, subdomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + isShort : function(curve, tolerance, multiple=false) { + let url="rhino/geometry/curve/isshort-curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + isShort1 : function(curve, tolerance, subdomain, multiple=false) { + let url="rhino/geometry/curve/isshort-curve_double_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, tolerance, subdomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + removeShortSegments : function(curve, tolerance, multiple=false) { + let url="rhino/geometry/curve/removeshortsegments-curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + lengthParameter : function(curve, segmentLength, multiple=false) { + let url="rhino/geometry/curve/lengthparameter-curve_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, segmentLength); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + lengthParameter1 : function(curve, segmentLength, fractionalTolerance, multiple=false) { + let url="rhino/geometry/curve/lengthparameter-curve_double_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, segmentLength, fractionalTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + lengthParameter2 : function(curve, segmentLength, subdomain, multiple=false) { + let url="rhino/geometry/curve/lengthparameter-curve_double_double_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, segmentLength, subdomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + lengthParameter3 : function(curve, segmentLength, fractionalTolerance, subdomain, multiple=false) { + let url="rhino/geometry/curve/lengthparameter-curve_double_double_double_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, segmentLength, fractionalTolerance, subdomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + normalizedLengthParameter : function(curve, s, multiple=false) { + let url="rhino/geometry/curve/normalizedlengthparameter-curve_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, s); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + normalizedLengthParameter1 : function(curve, s, fractionalTolerance, multiple=false) { + let url="rhino/geometry/curve/normalizedlengthparameter-curve_double_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, s, fractionalTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + normalizedLengthParameter2 : function(curve, s, subdomain, multiple=false) { + let url="rhino/geometry/curve/normalizedlengthparameter-curve_double_double_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, s, subdomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + normalizedLengthParameter3 : function(curve, s, fractionalTolerance, subdomain, multiple=false) { + let url="rhino/geometry/curve/normalizedlengthparameter-curve_double_double_double_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, s, fractionalTolerance, subdomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + normalizedLengthParameters : function(curve, s, absoluteTolerance, multiple=false) { + let url="rhino/geometry/curve/normalizedlengthparameters-curve_doublearray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, s, absoluteTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + normalizedLengthParameters1 : function(curve, s, absoluteTolerance, fractionalTolerance, multiple=false) { + let url="rhino/geometry/curve/normalizedlengthparameters-curve_doublearray_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, s, absoluteTolerance, fractionalTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + normalizedLengthParameters2 : function(curve, s, absoluteTolerance, subdomain, multiple=false) { + let url="rhino/geometry/curve/normalizedlengthparameters-curve_doublearray_double_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, s, absoluteTolerance, subdomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + normalizedLengthParameters3 : function(curve, s, absoluteTolerance, fractionalTolerance, subdomain, multiple=false) { + let url="rhino/geometry/curve/normalizedlengthparameters-curve_doublearray_double_double_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, s, absoluteTolerance, fractionalTolerance, subdomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + divideByCount : function(curve, segmentCount, includeEnds, multiple=false) { + let url="rhino/geometry/curve/dividebycount-curve_int_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, segmentCount, includeEnds); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + divideByCount1 : function(curve, segmentCount, includeEnds, multiple=false) { + let url="rhino/geometry/curve/dividebycount-curve_int_bool_point3darray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, segmentCount, includeEnds); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + divideByLength : function(curve, segmentLength, includeEnds, multiple=false) { + let url="rhino/geometry/curve/dividebylength-curve_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, segmentLength, includeEnds); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + divideByLength1 : function(curve, segmentLength, includeEnds, reverse, multiple=false) { + let url="rhino/geometry/curve/dividebylength-curve_double_bool_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, segmentLength, includeEnds, reverse); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + divideByLength2 : function(curve, segmentLength, includeEnds, multiple=false) { + let url="rhino/geometry/curve/dividebylength-curve_double_bool_point3darray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, segmentLength, includeEnds); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + divideByLength3 : function(curve, segmentLength, includeEnds, reverse, multiple=false) { + let url="rhino/geometry/curve/dividebylength-curve_double_bool_bool_point3darray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, segmentLength, includeEnds, reverse); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + divideEquidistant : function(curve, distance, multiple=false) { + let url="rhino/geometry/curve/divideequidistant-curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, distance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + divideAsContour : function(curve, contourStart, contourEnd, interval, multiple=false) { + let url="rhino/geometry/curve/divideascontour-curve_point3d_point3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, contourStart, contourEnd, interval); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + trim : function(curve, side, length, multiple=false) { + let url="rhino/geometry/curve/trim-curve_curveend_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, side, length); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split : function(curve, cutter, tolerance, multiple=false) { + let url="rhino/geometry/curve/split-curve_brep_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, cutter, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split1 : function(curve, cutter, tolerance, angleToleranceRadians, multiple=false) { + let url="rhino/geometry/curve/split-curve_brep_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, cutter, tolerance, angleToleranceRadians); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split2 : function(curve, cutter, tolerance, multiple=false) { + let url="rhino/geometry/curve/split-curve_surface_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, cutter, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split3 : function(curve, cutter, tolerance, angleToleranceRadians, multiple=false) { + let url="rhino/geometry/curve/split-curve_surface_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, cutter, tolerance, angleToleranceRadians); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + extend : function(curve, t0, t1, multiple=false) { + let url="rhino/geometry/curve/extend-curve_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, t0, t1); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + extend1 : function(curve, domain, multiple=false) { + let url="rhino/geometry/curve/extend-curve_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, domain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + extend2 : function(curve, side, length, style, multiple=false) { + let url="rhino/geometry/curve/extend-curve_curveend_double_curveextensionstyle"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, side, length, style); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + extend3 : function(curve, side, style, geometry, multiple=false) { + let url="rhino/geometry/curve/extend-curve_curveend_curveextensionstyle_geometrybasearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, side, style, geometry); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + extend4 : function(curve, side, style, endPoint, multiple=false) { + let url="rhino/geometry/curve/extend-curve_curveend_curveextensionstyle_point3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, side, style, endPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + extendOnSurface : function(curve, side, surface, multiple=false) { + let url="rhino/geometry/curve/extendonsurface-curve_curveend_surface"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, side, surface); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + extendOnSurface1 : function(curve, side, face, multiple=false) { + let url="rhino/geometry/curve/extendonsurface-curve_curveend_brepface"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, side, face); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + extendByLine : function(curve, side, geometry, multiple=false) { + let url="rhino/geometry/curve/extendbyline-curve_curveend_geometrybasearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, side, geometry); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + extendByArc : function(curve, side, geometry, multiple=false) { + let url="rhino/geometry/curve/extendbyarc-curve_curveend_geometrybasearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, side, geometry); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + simplify : function(curve, options, distanceTolerance, angleToleranceRadians, multiple=false) { + let url="rhino/geometry/curve/simplify-curve_curvesimplifyoptions_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, options, distanceTolerance, angleToleranceRadians); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + simplifyEnd : function(curve, end, options, distanceTolerance, angleToleranceRadians, multiple=false) { + let url="rhino/geometry/curve/simplifyend-curve_curveend_curvesimplifyoptions_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, end, options, distanceTolerance, angleToleranceRadians); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + fair : function(curve, distanceTolerance, angleTolerance, clampStart, clampEnd, iterations, multiple=false) { + let url="rhino/geometry/curve/fair-curve_double_double_int_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, distanceTolerance, angleTolerance, clampStart, clampEnd, iterations); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + fit : function(curve, degree, fitTolerance, angleTolerance, multiple=false) { + let url="rhino/geometry/curve/fit-curve_int_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, degree, fitTolerance, angleTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + rebuild : function(curve, pointCount, degree, preserveTangents, multiple=false) { + let url="rhino/geometry/curve/rebuild-curve_int_int_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, pointCount, degree, preserveTangents); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + toPolyline : function(curve, mainSegmentCount, subSegmentCount, maxAngleRadians, maxChordLengthRatio, maxAspectRatio, tolerance, minEdgeLength, maxEdgeLength, keepStartPoint, multiple=false) { + let url="rhino/geometry/curve/topolyline-curve_int_int_double_double_double_double_double_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, mainSegmentCount, subSegmentCount, maxAngleRadians, maxChordLengthRatio, maxAspectRatio, tolerance, minEdgeLength, maxEdgeLength, keepStartPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + toPolyline1 : function(curve, mainSegmentCount, subSegmentCount, maxAngleRadians, maxChordLengthRatio, maxAspectRatio, tolerance, minEdgeLength, maxEdgeLength, keepStartPoint, curveDomain, multiple=false) { + let url="rhino/geometry/curve/topolyline-curve_int_int_double_double_double_double_double_double_bool_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, mainSegmentCount, subSegmentCount, maxAngleRadians, maxChordLengthRatio, maxAspectRatio, tolerance, minEdgeLength, maxEdgeLength, keepStartPoint, curveDomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + toPolyline2 : function(curve, tolerance, angleTolerance, minimumLength, maximumLength, multiple=false) { + let url="rhino/geometry/curve/topolyline-curve_double_double_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, tolerance, angleTolerance, minimumLength, maximumLength); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + toArcsAndLines : function(curve, tolerance, angleTolerance, minimumLength, maximumLength, multiple=false) { + let url="rhino/geometry/curve/toarcsandlines-curve_double_double_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, tolerance, angleTolerance, minimumLength, maximumLength); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + pullToMesh : function(curve, mesh, tolerance, multiple=false) { + let url="rhino/geometry/curve/pulltomesh-curve_mesh_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, mesh, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offset : function(curve, plane, distance, tolerance, cornerStyle, multiple=false) { + let url="rhino/geometry/curve/offset-curve_plane_double_double_curveoffsetcornerstyle"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, plane, distance, tolerance, cornerStyle); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offset1 : function(curve, directionPoint, normal, distance, tolerance, cornerStyle, multiple=false) { + let url="rhino/geometry/curve/offset-curve_point3d_vector3d_double_double_curveoffsetcornerstyle"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, directionPoint, normal, distance, tolerance, cornerStyle); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + ribbonOffset : function(curve, distance, blendRadius, directionPoint, normal, tolerance, multiple=false) { + let url="rhino/geometry/curve/ribbonoffset-curve_double_double_point3d_vector3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, distance, blendRadius, directionPoint, normal, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offsetOnSurface : function(curve, face, distance, fittingTolerance, multiple=false) { + let url="rhino/geometry/curve/offsetonsurface-curve_brepface_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, face, distance, fittingTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offsetOnSurface1 : function(curve, face, throughPoint, fittingTolerance, multiple=false) { + let url="rhino/geometry/curve/offsetonsurface-curve_brepface_point2d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, face, throughPoint, fittingTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offsetOnSurface2 : function(curve, face, curveParameters, offsetDistances, fittingTolerance, multiple=false) { + let url="rhino/geometry/curve/offsetonsurface-curve_brepface_doublearray_doublearray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, face, curveParameters, offsetDistances, fittingTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offsetOnSurface3 : function(curve, surface, distance, fittingTolerance, multiple=false) { + let url="rhino/geometry/curve/offsetonsurface-curve_surface_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, surface, distance, fittingTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offsetOnSurface4 : function(curve, surface, throughPoint, fittingTolerance, multiple=false) { + let url="rhino/geometry/curve/offsetonsurface-curve_surface_point2d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, surface, throughPoint, fittingTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offsetOnSurface5 : function(curve, surface, curveParameters, offsetDistances, fittingTolerance, multiple=false) { + let url="rhino/geometry/curve/offsetonsurface-curve_surface_doublearray_doublearray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, surface, curveParameters, offsetDistances, fittingTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + pullToBrepFace1 : function(curve, face, tolerance, multiple=false) { + let url="rhino/geometry/curve/pulltobrepface-curve_brepface_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, face, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offsetNormalToSurface : function(curve, surface, height, multiple=false) { + let url="rhino/geometry/curve/offsetnormaltosurface-curve_surface_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, surface, height); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + }, + + AreaMassProperties : { + compute : function(closedPlanarCurve, multiple=false) { + let url="rhino/geometry/areamassproperties/compute-curve"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, closedPlanarCurve); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute1 : function(closedPlanarCurve, planarTolerance, multiple=false) { + let url="rhino/geometry/areamassproperties/compute-curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, closedPlanarCurve, planarTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute2 : function(hatch, multiple=false) { + let url="rhino/geometry/areamassproperties/compute-hatch"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, hatch); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute3 : function(mesh, multiple=false) { + let url="rhino/geometry/areamassproperties/compute-mesh"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute4 : function(mesh, area, firstMoments, secondMoments, productMoments, multiple=false) { + let url="rhino/geometry/areamassproperties/compute-mesh_bool_bool_bool_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, area, firstMoments, secondMoments, productMoments); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute5 : function(brep, multiple=false) { + let url="rhino/geometry/areamassproperties/compute-brep"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute6 : function(brep, area, firstMoments, secondMoments, productMoments, multiple=false) { + let url="rhino/geometry/areamassproperties/compute-brep_bool_bool_bool_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, area, firstMoments, secondMoments, productMoments); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute7 : function(surface, multiple=false) { + let url="rhino/geometry/areamassproperties/compute-surface"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute8 : function(surface, area, firstMoments, secondMoments, productMoments, multiple=false) { + let url="rhino/geometry/areamassproperties/compute-surface_bool_bool_bool_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, area, firstMoments, secondMoments, productMoments); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute9 : function(geometry, multiple=false) { + let url="rhino/geometry/areamassproperties/compute-geometrybasearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, geometry); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute10 : function(geometry, area, firstMoments, secondMoments, productMoments, multiple=false) { + let url="rhino/geometry/areamassproperties/compute-geometrybasearray_bool_bool_bool_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, geometry, area, firstMoments, secondMoments, productMoments); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + }, + + VolumeMassProperties : { + compute : function(mesh, multiple=false) { + let url="rhino/geometry/volumemassproperties/compute-mesh"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute1 : function(mesh, volume, firstMoments, secondMoments, productMoments, multiple=false) { + let url="rhino/geometry/volumemassproperties/compute-mesh_bool_bool_bool_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, volume, firstMoments, secondMoments, productMoments); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute2 : function(brep, multiple=false) { + let url="rhino/geometry/volumemassproperties/compute-brep"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute3 : function(brep, volume, firstMoments, secondMoments, productMoments, multiple=false) { + let url="rhino/geometry/volumemassproperties/compute-brep_bool_bool_bool_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, volume, firstMoments, secondMoments, productMoments); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute4 : function(surface, multiple=false) { + let url="rhino/geometry/volumemassproperties/compute-surface"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute5 : function(surface, volume, firstMoments, secondMoments, productMoments, multiple=false) { + let url="rhino/geometry/volumemassproperties/compute-surface_bool_bool_bool_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, volume, firstMoments, secondMoments, productMoments); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute6 : function(geometry, multiple=false) { + let url="rhino/geometry/volumemassproperties/compute-geometrybasearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, geometry); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + compute7 : function(geometry, volume, firstMoments, secondMoments, productMoments, multiple=false) { + let url="rhino/geometry/volumemassproperties/compute-geometrybasearray_bool_bool_bool_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, geometry, volume, firstMoments, secondMoments, productMoments); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + sum : function(volumemassproperties, summand, multiple=false) { + let url="rhino/geometry/volumemassproperties/sum-volumemassproperties_volumemassproperties"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, volumemassproperties, summand); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + }, + + Mesh : { + createFromPlane : function(plane, xInterval, yInterval, xCount, yCount, multiple=false) { + let url="rhino/geometry/mesh/createfromplane-plane_interval_interval_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, plane, xInterval, yInterval, xCount, yCount); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromBox : function(box, xCount, yCount, zCount, multiple=false) { + let url="rhino/geometry/mesh/createfrombox-boundingbox_int_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, box, xCount, yCount, zCount); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromBox1 : function(box, xCount, yCount, zCount, multiple=false) { + let url="rhino/geometry/mesh/createfrombox-box_int_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, box, xCount, yCount, zCount); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromBox2 : function(corners, xCount, yCount, zCount, multiple=false) { + let url="rhino/geometry/mesh/createfrombox-point3darray_int_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, corners, xCount, yCount, zCount); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromSphere : function(sphere, xCount, yCount, multiple=false) { + let url="rhino/geometry/mesh/createfromsphere-sphere_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, sphere, xCount, yCount); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createIcoSphere : function(sphere, subdivisions, multiple=false) { + let url="rhino/geometry/mesh/createicosphere-sphere_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, sphere, subdivisions); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createQuadSphere : function(sphere, subdivisions, multiple=false) { + let url="rhino/geometry/mesh/createquadsphere-sphere_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, sphere, subdivisions); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromCylinder : function(cylinder, vertical, around, multiple=false) { + let url="rhino/geometry/mesh/createfromcylinder-cylinder_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, cylinder, vertical, around); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromCone : function(cone, vertical, around, multiple=false) { + let url="rhino/geometry/mesh/createfromcone-cone_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, cone, vertical, around); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromCone1 : function(cone, vertical, around, solid, multiple=false) { + let url="rhino/geometry/mesh/createfromcone-cone_int_int_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, cone, vertical, around, solid); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromPlanarBoundary : function(boundary, parameters, multiple=false) { + let url="rhino/geometry/mesh/createfromplanarboundary-curve_meshingparameters"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, boundary, parameters); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromPlanarBoundary1 : function(boundary, parameters, tolerance, multiple=false) { + let url="rhino/geometry/mesh/createfromplanarboundary-curve_meshingparameters_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, boundary, parameters, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromClosedPolyline : function(polyline, multiple=false) { + let url="rhino/geometry/mesh/createfromclosedpolyline-polyline"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, polyline); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromTessellation : function(points, edges, plane, allowNewVertices, multiple=false) { + let url="rhino/geometry/mesh/createfromtessellation-point3darray_ienumerable<point3d>array_plane_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, points, edges, plane, allowNewVertices); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromBrep : function(brep, multiple=false) { + let url="rhino/geometry/mesh/createfrombrep-brep"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromBrep1 : function(brep, meshingParameters, multiple=false) { + let url="rhino/geometry/mesh/createfrombrep-brep_meshingparameters"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, meshingParameters); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromSurface : function(surface, multiple=false) { + let url="rhino/geometry/mesh/createfromsurface-surface"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromSurface1 : function(surface, meshingParameters, multiple=false) { + let url="rhino/geometry/mesh/createfromsurface-surface_meshingparameters"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, meshingParameters); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPatch : function(outerBoundary, angleToleranceRadians, pullbackSurface, innerBoundaryCurves, innerBothSideCurves, innerPoints, trimback, divisions, multiple=false) { + let url="rhino/geometry/mesh/createpatch-polyline_double_surface_curvearray_curvearray_point3darray_bool_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, outerBoundary, angleToleranceRadians, pullbackSurface, innerBoundaryCurves, innerBothSideCurves, innerPoints, trimback, divisions); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanUnion : function(meshes, multiple=false) { + let url="rhino/geometry/mesh/createbooleanunion-mesharray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, meshes); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanDifference : function(firstSet, secondSet, multiple=false) { + let url="rhino/geometry/mesh/createbooleandifference-mesharray_mesharray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, firstSet, secondSet); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanIntersection : function(firstSet, secondSet, multiple=false) { + let url="rhino/geometry/mesh/createbooleanintersection-mesharray_mesharray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, firstSet, secondSet); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createBooleanSplit : function(meshesToSplit, meshSplitters, multiple=false) { + let url="rhino/geometry/mesh/createbooleansplit-mesharray_mesharray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, meshesToSplit, meshSplitters); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromCurvePipe : function(curve, radius, segments, accuracy, capType, faceted, intervals, multiple=false) { + let url="rhino/geometry/mesh/createfromcurvepipe-curve_double_int_int_meshpipecapstyle_bool_intervalarray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, radius, segments, accuracy, capType, faceted, intervals); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + volume : function(mesh, multiple=false) { + let url="rhino/geometry/mesh/volume-mesh"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + smooth : function(mesh, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem, multiple=false) { + let url="rhino/geometry/mesh/smooth-mesh_double_bool_bool_bool_bool_smoothingcoordinatesystem"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + smooth1 : function(mesh, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem, plane, multiple=false) { + let url="rhino/geometry/mesh/smooth-mesh_double_bool_bool_bool_bool_smoothingcoordinatesystem_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem, plane); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + smooth2 : function(mesh, vertexIndices, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem, plane, multiple=false) { + let url="rhino/geometry/mesh/smooth-mesh_intarray_double_bool_bool_bool_bool_smoothingcoordinatesystem_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, vertexIndices, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem, plane); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + unweld : function(mesh, angleToleranceRadians, modifyNormals, multiple=false) { + let url="rhino/geometry/mesh/unweld-mesh_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, angleToleranceRadians, modifyNormals); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + unweldEdge : function(mesh, edgeIndices, modifyNormals, multiple=false) { + let url="rhino/geometry/mesh/unweldedge-mesh_intarray_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, edgeIndices, modifyNormals); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + weld : function(mesh, angleToleranceRadians, multiple=false) { + let url="rhino/geometry/mesh/weld-mesh_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, angleToleranceRadians); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + rebuildNormals : function(mesh, multiple=false) { + let url="rhino/geometry/mesh/rebuildnormals-mesh"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + extractNonManifoldEdges : function(mesh, selective, multiple=false) { + let url="rhino/geometry/mesh/extractnonmanifoldedges-mesh_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, selective); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + healNakedEdges : function(mesh, distance, multiple=false) { + let url="rhino/geometry/mesh/healnakededges-mesh_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, distance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + fillHoles : function(mesh, multiple=false) { + let url="rhino/geometry/mesh/fillholes-mesh"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + fileHole : function(mesh, topologyEdgeIndex, multiple=false) { + let url="rhino/geometry/mesh/filehole-mesh_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, topologyEdgeIndex); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + unifyNormals : function(mesh, multiple=false) { + let url="rhino/geometry/mesh/unifynormals-mesh"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + unifyNormals1 : function(mesh, countOnly, multiple=false) { + let url="rhino/geometry/mesh/unifynormals-mesh_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, countOnly); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + splitDisjointPieces : function(mesh, multiple=false) { + let url="rhino/geometry/mesh/splitdisjointpieces-mesh"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split : function(mesh, plane, multiple=false) { + let url="rhino/geometry/mesh/split-mesh_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, plane); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split1 : function(mesh, mesh2, multiple=false) { + let url="rhino/geometry/mesh/split-mesh_mesh"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, mesh2); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + split2 : function(mesh, meshes, multiple=false) { + let url="rhino/geometry/mesh/split-mesh_mesharray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, meshes); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getOutlines : function(mesh, plane, multiple=false) { + let url="rhino/geometry/mesh/getoutlines-mesh_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, plane); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getOutlines1 : function(mesh, viewport, multiple=false) { + let url="rhino/geometry/mesh/getoutlines-mesh_display.rhinoviewport"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, viewport); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getOutlines2 : function(mesh, viewportInfo, plane, multiple=false) { + let url="rhino/geometry/mesh/getoutlines-mesh_viewportinfo_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, viewportInfo, plane); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getNakedEdges : function(mesh, multiple=false) { + let url="rhino/geometry/mesh/getnakededges-mesh"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + explodeAtUnweldedEdges : function(mesh, multiple=false) { + let url="rhino/geometry/mesh/explodeatunweldededges-mesh"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + closestPoint : function(mesh, testPoint, multiple=false) { + let url="rhino/geometry/mesh/closestpoint-mesh_point3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, testPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + closestMeshPoint : function(mesh, testPoint, maximumDistance, multiple=false) { + let url="rhino/geometry/mesh/closestmeshpoint-mesh_point3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, testPoint, maximumDistance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + closestPoint1 : function(mesh, testPoint, maximumDistance, multiple=false) { + let url="rhino/geometry/mesh/closestpoint-mesh_point3d_point3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, testPoint, maximumDistance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + closestPoint2 : function(mesh, testPoint, maximumDistance, multiple=false) { + let url="rhino/geometry/mesh/closestpoint-mesh_point3d_point3d_vector3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, testPoint, maximumDistance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + pointAt : function(mesh, meshPoint, multiple=false) { + let url="rhino/geometry/mesh/pointat-mesh_meshpoint"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, meshPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + pointAt1 : function(mesh, faceIndex, t0, t1, t2, t3, multiple=false) { + let url="rhino/geometry/mesh/pointat-mesh_int_double_double_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, faceIndex, t0, t1, t2, t3); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + normalAt : function(mesh, meshPoint, multiple=false) { + let url="rhino/geometry/mesh/normalat-mesh_meshpoint"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, meshPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + normalAt1 : function(mesh, faceIndex, t0, t1, t2, t3, multiple=false) { + let url="rhino/geometry/mesh/normalat-mesh_int_double_double_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, faceIndex, t0, t1, t2, t3); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + colorAt : function(mesh, meshPoint, multiple=false) { + let url="rhino/geometry/mesh/colorat-mesh_meshpoint"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, meshPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + colorAt1 : function(mesh, faceIndex, t0, t1, t2, t3, multiple=false) { + let url="rhino/geometry/mesh/colorat-mesh_int_double_double_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, faceIndex, t0, t1, t2, t3); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + pullPointsToMesh : function(mesh, points, multiple=false) { + let url="rhino/geometry/mesh/pullpointstomesh-mesh_point3darray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, points); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offset : function(mesh, distance, multiple=false) { + let url="rhino/geometry/mesh/offset-mesh_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, distance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offset1 : function(mesh, distance, solidify, multiple=false) { + let url="rhino/geometry/mesh/offset-mesh_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, distance, solidify); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offset2 : function(mesh, distance, solidify, direction, multiple=false) { + let url="rhino/geometry/mesh/offset-mesh_double_bool_vector3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, distance, solidify, direction); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + collapseFacesByEdgeLength : function(mesh, bGreaterThan, edgeLength, multiple=false) { + let url="rhino/geometry/mesh/collapsefacesbyedgelength-mesh_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, bGreaterThan, edgeLength); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + collapseFacesByArea : function(mesh, lessThanArea, greaterThanArea, multiple=false) { + let url="rhino/geometry/mesh/collapsefacesbyarea-mesh_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, lessThanArea, greaterThanArea); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + collapseFacesByByAspectRatio : function(mesh, aspectRatio, multiple=false) { + let url="rhino/geometry/mesh/collapsefacesbybyaspectratio-mesh_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, aspectRatio); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getUnsafeLock : function(mesh, writable, multiple=false) { + let url="rhino/geometry/mesh/getunsafelock-mesh_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, writable); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + releaseUnsafeLock : function(mesh, meshData, multiple=false) { + let url="rhino/geometry/mesh/releaseunsafelock-mesh_meshunsafelock"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, meshData); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + withShutLining : function(mesh, faceted, tolerance, curves, multiple=false) { + let url="rhino/geometry/mesh/withshutlining-mesh_bool_double_shutliningcurveinfoarray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, faceted, tolerance, curves); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + withDisplacement : function(mesh, displacement, multiple=false) { + let url="rhino/geometry/mesh/withdisplacement-mesh_meshdisplacementinfo"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, displacement); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + withEdgeSoftening : function(mesh, softeningRadius, chamfer, faceted, force, angleThreshold, multiple=false) { + let url="rhino/geometry/mesh/withedgesoftening-mesh_double_bool_bool_bool_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, softeningRadius, chamfer, faceted, force, angleThreshold); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + reduce : function(mesh, desiredPolygonCount, allowDistortion, accuracy, normalizeSize, multiple=false) { + let url="rhino/geometry/mesh/reduce-mesh_int_bool_int_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, desiredPolygonCount, allowDistortion, accuracy, normalizeSize); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + reduce1 : function(mesh, desiredPolygonCount, allowDistortion, accuracy, normalizeSize, cancelToken, progress, multiple=false) { + let url="rhino/geometry/mesh/reduce-mesh_int_bool_int_bool_system.threading.cancellationtoken_doublearray_string"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, desiredPolygonCount, allowDistortion, accuracy, normalizeSize, cancelToken, progress); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + reduce2 : function(mesh, parameters, multiple=false) { + let url="rhino/geometry/mesh/reduce-mesh_reducemeshparameters"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, parameters); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + computeThickness : function(meshes, maximumThickness, multiple=false) { + let url="rhino/geometry/mesh/computethickness-mesharray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, meshes, maximumThickness); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + computeThickness1 : function(meshes, maximumThickness, cancelToken, multiple=false) { + let url="rhino/geometry/mesh/computethickness-mesharray_double_system.threading.cancellationtoken"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, meshes, maximumThickness, cancelToken); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + computeThickness2 : function(meshes, maximumThickness, sharpAngle, cancelToken, multiple=false) { + let url="rhino/geometry/mesh/computethickness-mesharray_double_double_system.threading.cancellationtoken"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, meshes, maximumThickness, sharpAngle, cancelToken); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createContourCurves : function(meshToContour, contourStart, contourEnd, interval, multiple=false) { + let url="rhino/geometry/mesh/createcontourcurves-mesh_point3d_point3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, meshToContour, contourStart, contourEnd, interval); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createContourCurves1 : function(meshToContour, sectionPlane, multiple=false) { + let url="rhino/geometry/mesh/createcontourcurves-mesh_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, meshToContour, sectionPlane); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + }, + + NurbsCurve : { + makeCompatible : function(curves, startPt, endPt, simplifyMethod, numPoints, refitTolerance, angleTolerance, multiple=false) { + let url="rhino/geometry/nurbscurve/makecompatible-curvearray_point3d_point3d_int_int_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curves, startPt, endPt, simplifyMethod, numPoints, refitTolerance, angleTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createParabolaFromVertex : function(vertex, startPoint, endPoint, multiple=false) { + let url="rhino/geometry/nurbscurve/createparabolafromvertex-point3d_point3d_point3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, vertex, startPoint, endPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createParabolaFromFocus : function(focus, startPoint, endPoint, multiple=false) { + let url="rhino/geometry/nurbscurve/createparabolafromfocus-point3d_point3d_point3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, focus, startPoint, endPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromArc : function(arc, degree, cvCount, multiple=false) { + let url="rhino/geometry/nurbscurve/createfromarc-arc_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, arc, degree, cvCount); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromCircle : function(circle, degree, cvCount, multiple=false) { + let url="rhino/geometry/nurbscurve/createfromcircle-circle_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, circle, degree, cvCount); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + setEndCondition : function(nurbscurve, bSetEnd, continuity, point, tangent, multiple=false) { + let url="rhino/geometry/nurbscurve/setendcondition-nurbscurve_bool_nurbscurveendconditiontype_point3d_vector3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, nurbscurve, bSetEnd, continuity, point, tangent); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + setEndCondition1 : function(nurbscurve, bSetEnd, continuity, point, tangent, curvature, multiple=false) { + let url="rhino/geometry/nurbscurve/setendcondition-nurbscurve_bool_nurbscurveendconditiontype_point3d_vector3d_vector3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, nurbscurve, bSetEnd, continuity, point, tangent, curvature); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + setGrevillePoints : function(nurbscurve, points, multiple=false) { + let url="rhino/geometry/nurbscurve/setgrevillepoints-nurbscurve_point3darray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, nurbscurve, points); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createSpiral : function(axisStart, axisDir, radiusPoint, pitch, turnCount, radius0, radius1, multiple=false) { + let url="rhino/geometry/nurbscurve/createspiral-point3d_vector3d_point3d_double_double_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, axisStart, axisDir, radiusPoint, pitch, turnCount, radius0, radius1); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createSpiral1 : function(railCurve, t0, t1, radiusPoint, pitch, turnCount, radius0, radius1, pointsPerTurn, multiple=false) { + let url="rhino/geometry/nurbscurve/createspiral-curve_double_double_point3d_double_double_double_double_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, railCurve, t0, t1, radiusPoint, pitch, turnCount, radius0, radius1, pointsPerTurn); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + }, + + NurbsSurface : { + createCurveOnSurfacePoints : function(surface, fixedPoints, tolerance, periodic, initCount, levels, multiple=false) { + let url="rhino/geometry/nurbssurface/createcurveonsurfacepoints-surface_point2darray_double_bool_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, fixedPoints, tolerance, periodic, initCount, levels); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createCurveOnSurface : function(surface, points, tolerance, periodic, multiple=false) { + let url="rhino/geometry/nurbssurface/createcurveonsurface-surface_point2darray_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, points, tolerance, periodic); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + makeCompatible : function(surface0, surface1, multiple=false) { + let url="rhino/geometry/nurbssurface/makecompatible-surface_surface_nurbssurface_nurbssurface"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface0, surface1); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromPoints : function(points, uCount, vCount, uDegree, vDegree, multiple=false) { + let url="rhino/geometry/nurbssurface/createfrompoints-point3darray_int_int_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, points, uCount, vCount, uDegree, vDegree); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createThroughPoints : function(points, uCount, vCount, uDegree, vDegree, uClosed, vClosed, multiple=false) { + let url="rhino/geometry/nurbssurface/createthroughpoints-point3darray_int_int_int_int_bool_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, points, uCount, vCount, uDegree, vDegree, uClosed, vClosed); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromCorners : function(corner1, corner2, corner3, corner4, multiple=false) { + let url="rhino/geometry/nurbssurface/createfromcorners-point3d_point3d_point3d_point3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, corner1, corner2, corner3, corner4); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromCorners1 : function(corner1, corner2, corner3, corner4, tolerance, multiple=false) { + let url="rhino/geometry/nurbssurface/createfromcorners-point3d_point3d_point3d_point3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, corner1, corner2, corner3, corner4, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createFromCorners2 : function(corner1, corner2, corner3, multiple=false) { + let url="rhino/geometry/nurbssurface/createfromcorners-point3d_point3d_point3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, corner1, corner2, corner3); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createRailRevolvedSurface : function(profile, rail, axis, scaleHeight, multiple=false) { + let url="rhino/geometry/nurbssurface/createrailrevolvedsurface-curve_curve_line_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, profile, rail, axis, scaleHeight); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createNetworkSurface : function(uCurves, uContinuityStart, uContinuityEnd, vCurves, vContinuityStart, vContinuityEnd, edgeTolerance, interiorTolerance, angleTolerance, multiple=false) { + let url="rhino/geometry/nurbssurface/createnetworksurface-curvearray_int_int_curvearray_int_int_double_double_double_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, uCurves, uContinuityStart, uContinuityEnd, vCurves, vContinuityStart, vContinuityEnd, edgeTolerance, interiorTolerance, angleTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createNetworkSurface1 : function(curves, continuity, edgeTolerance, interiorTolerance, angleTolerance, multiple=false) { + let url="rhino/geometry/nurbssurface/createnetworksurface-curvearray_int_double_double_double_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curves, continuity, edgeTolerance, interiorTolerance, angleTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + }, + + Surface : { + createRollingBallFillet : function(surfaceA, surfaceB, radius, tolerance, multiple=false) { + let url="rhino/geometry/surface/createrollingballfillet-surface_surface_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surfaceA, surfaceB, radius, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createRollingBallFillet1 : function(surfaceA, flipA, surfaceB, flipB, radius, tolerance, multiple=false) { + let url="rhino/geometry/surface/createrollingballfillet-surface_bool_surface_bool_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surfaceA, flipA, surfaceB, flipB, radius, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createRollingBallFillet2 : function(surfaceA, uvA, surfaceB, uvB, radius, tolerance, multiple=false) { + let url="rhino/geometry/surface/createrollingballfillet-surface_point2d_surface_point2d_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surfaceA, uvA, surfaceB, uvB, radius, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createExtrusion : function(profile, direction, multiple=false) { + let url="rhino/geometry/surface/createextrusion-curve_vector3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, profile, direction); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createExtrusionToPoint : function(profile, apexPoint, multiple=false) { + let url="rhino/geometry/surface/createextrusiontopoint-curve_point3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, profile, apexPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPeriodicSurface : function(surface, direction, multiple=false) { + let url="rhino/geometry/surface/createperiodicsurface-surface_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, direction); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createPeriodicSurface1 : function(surface, direction, bSmooth, multiple=false) { + let url="rhino/geometry/surface/createperiodicsurface-surface_int_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, direction, bSmooth); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + createSoftEditSurface : function(surface, uv, delta, uLength, vLength, tolerance, fixEnds, multiple=false) { + let url="rhino/geometry/surface/createsofteditsurface-surface_point2d_vector3d_double_double_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, uv, delta, uLength, vLength, tolerance, fixEnds); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + smooth : function(surface, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem, multiple=false) { + let url="rhino/geometry/surface/smooth-surface_double_bool_bool_bool_bool_smoothingcoordinatesystem"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + smooth1 : function(surface, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem, plane, multiple=false) { + let url="rhino/geometry/surface/smooth-surface_double_bool_bool_bool_bool_smoothingcoordinatesystem_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, smoothFactor, bXSmooth, bYSmooth, bZSmooth, bFixBoundaries, coordinateSystem, plane); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + variableOffset : function(surface, uMinvMin, uMinvMax, uMaxvMin, uMaxvMax, tolerance, multiple=false) { + let url="rhino/geometry/surface/variableoffset-surface_double_double_double_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, uMinvMin, uMinvMax, uMaxvMin, uMaxvMax, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + variableOffset1 : function(surface, uMinvMin, uMinvMax, uMaxvMin, uMaxvMax, interiorParameters, interiorDistances, tolerance, multiple=false) { + let url="rhino/geometry/surface/variableoffset-surface_double_double_double_double_point2darray_doublearray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, uMinvMin, uMinvMax, uMaxvMin, uMaxvMax, interiorParameters, interiorDistances, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + getSurfaceSize : function(surface, multiple=false) { + let url="rhino/geometry/surface/getsurfacesize-surface_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + closestSide : function(surface, u, v, multiple=false) { + let url="rhino/geometry/surface/closestside-surface_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, u, v); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + extend : function(surface, edge, extensionLength, smooth, multiple=false) { + let url="rhino/geometry/surface/extend-surface_isostatus_double_bool"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, edge, extensionLength, smooth); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + rebuild : function(surface, uDegree, vDegree, uPointCount, vPointCount, multiple=false) { + let url="rhino/geometry/surface/rebuild-surface_int_int_int_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, uDegree, vDegree, uPointCount, vPointCount); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + rebuildOneDirection : function(surface, direction, pointCount, loftType, refitTolerance, multiple=false) { + let url="rhino/geometry/surface/rebuildonedirection-surface_int_int_lofttype_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, direction, pointCount, loftType, refitTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + closestPoint : function(surface, testPoint, multiple=false) { + let url="rhino/geometry/surface/closestpoint-surface_point3d_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, testPoint); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + localClosestPoint : function(surface, testPoint, seedU, seedV, multiple=false) { + let url="rhino/geometry/surface/localclosestpoint-surface_point3d_double_double_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, testPoint, seedU, seedV); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + offset : function(surface, distance, tolerance, multiple=false) { + let url="rhino/geometry/surface/offset-surface_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, distance, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + fit : function(surface, uDegree, vDegree, fitTolerance, multiple=false) { + let url="rhino/geometry/surface/fit-surface_int_int_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, uDegree, vDegree, fitTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + interpolatedCurveOnSurfaceUV : function(surface, points, tolerance, multiple=false) { + let url="rhino/geometry/surface/interpolatedcurveonsurfaceuv-surface_point2darray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, points, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + interpolatedCurveOnSurface : function(surface, points, tolerance, multiple=false) { + let url="rhino/geometry/surface/interpolatedcurveonsurface-surface_point3darray_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, points, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + shortPath : function(surface, start, end, tolerance, multiple=false) { + let url="rhino/geometry/surface/shortpath-surface_point2d_point2d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, start, end, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + pushup : function(surface, curve2d, tolerance, curve2dSubdomain, multiple=false) { + let url="rhino/geometry/surface/pushup-surface_curve_double_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, curve2d, tolerance, curve2dSubdomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + pushup1 : function(surface, curve2d, tolerance, multiple=false) { + let url="rhino/geometry/surface/pushup-surface_curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, curve2d, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + pullback : function(surface, curve3d, tolerance, multiple=false) { + let url="rhino/geometry/surface/pullback-surface_curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, curve3d, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + pullback1 : function(surface, curve3d, tolerance, curve3dSubdomain, multiple=false) { + let url="rhino/geometry/surface/pullback-surface_curve_double_interval"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surface, curve3d, tolerance, curve3dSubdomain); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + }, + + Intersection : { + curvePlane : function(curve, plane, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/curveplane-curve_plane_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, plane, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + meshPlane : function(mesh, plane, multiple=false) { + let url="rhino/geometry/intersect/intersection/meshplane-mesh_plane"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, plane); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + meshPlane1 : function(mesh, planes, multiple=false) { + let url="rhino/geometry/intersect/intersection/meshplane-mesh_planearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, planes); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + brepPlane : function(brep, plane, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/brepplane-brep_plane_double_curvearray_point3darray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, plane, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + curveSelf : function(curve, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/curveself-curve_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + curveCurve : function(curveA, curveB, tolerance, overlapTolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/curvecurve-curve_curve_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curveA, curveB, tolerance, overlapTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + curveLine : function(curve, line, tolerance, overlapTolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/curveline-curve_line_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, line, tolerance, overlapTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + curveSurface : function(curve, surface, tolerance, overlapTolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/curvesurface-curve_surface_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, surface, tolerance, overlapTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + curveSurface1 : function(curve, curveDomain, surface, tolerance, overlapTolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/curvesurface-curve_interval_surface_double_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, curveDomain, surface, tolerance, overlapTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + curveBrep : function(curve, brep, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/curvebrep-curve_brep_double_curvearray_point3darray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, brep, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + curveBrep1 : function(curve, brep, tolerance, angleTolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/curvebrep-curve_brep_double_double_doublearray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, brep, tolerance, angleTolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + curveBrepFace : function(curve, face, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/curvebrepface-curve_brepface_double_curvearray_point3darray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, curve, face, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + surfaceSurface : function(surfaceA, surfaceB, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/surfacesurface-surface_surface_double_curvearray_point3darray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, surfaceA, surfaceB, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + brepBrep : function(brepA, brepB, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/brepbrep-brep_brep_double_curvearray_point3darray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brepA, brepB, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + brepSurface : function(brep, surface, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/brepsurface-brep_surface_double_curvearray_point3darray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, brep, surface, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + meshMeshFast : function(meshA, meshB, multiple=false) { + let url="rhino/geometry/intersect/intersection/meshmeshfast-mesh_mesh"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, meshA, meshB); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + meshMesh : function(meshes, tolerance, mode, multiple=false) { + let url="rhino/geometry/intersect/intersection/meshmesh-mesharray_double_setscombinations"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, meshes, tolerance, mode); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + meshMeshAccurate : function(meshA, meshB, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/meshmeshaccurate-mesh_mesh_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, meshA, meshB, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + meshRay : function(mesh, ray, multiple=false) { + let url="rhino/geometry/intersect/intersection/meshray-mesh_ray3d"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, ray); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + meshRay1 : function(mesh, ray, multiple=false) { + let url="rhino/geometry/intersect/intersection/meshray-mesh_ray3d_intarray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, ray); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + meshPolyline : function(mesh, curve, multiple=false) { + let url="rhino/geometry/intersect/intersection/meshpolyline-mesh_polylinecurve_intarray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, curve); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + meshLine : function(mesh, line, multiple=false) { + let url="rhino/geometry/intersect/intersection/meshline-mesh_line_intarray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, mesh, line); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + rayShoot : function(ray, geometry, maxReflections, multiple=false) { + let url="rhino/geometry/intersect/intersection/rayshoot-ray3d_geometrybasearray_int"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, ray, geometry, maxReflections); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectPointsToMeshes : function(meshes, points, direction, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/projectpointstomeshes-mesharray_point3darray_vector3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, meshes, points, direction, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectPointsToMeshesEx : function(meshes, points, direction, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/projectpointstomeshesex-mesharray_point3darray_vector3d_double_intarray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, meshes, points, direction, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectPointsToBreps : function(breps, points, direction, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/projectpointstobreps-breparray_point3darray_vector3d_double"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, breps, points, direction, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + + projectPointsToBrepsEx : function(breps, points, direction, tolerance, multiple=false) { + let url="rhino/geometry/intersect/intersection/projectpointstobrepsex-breparray_point3darray_vector3d_double_intarray"; + if(multiple) url = url + "?multiple=true" + let args = RhinoCompute.zipArgs(multiple, breps, points, direction, tolerance); + var promise = RhinoCompute.computeFetch(url, args); + return promise; + }, + }, +}; + +// export RhinoCompute object if node.js +if (typeof exports === 'object' && typeof module === 'object') + module.exports = RhinoCompute; \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/lib/dat.gui.js b/01_Code/physical_computing_interface/simulation/lib/dat.gui.js new file mode 100644 index 0000000000000000000000000000000000000000..85fadecc20e7bfefba7fd951227c73153ecb8705 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/dat.gui.js @@ -0,0 +1,2537 @@ +/** + * dat-gui JavaScript Controller Library + * http://code.google.com/p/dat-gui + * + * Copyright 2011 Data Arts Team, Google Creative Lab + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.dat = {}))); +}(this, (function (exports) { 'use strict'; + +function ___$insertStyle(css) { + if (!css) { + return; + } + if (typeof window === 'undefined') { + return; + } + + var style = document.createElement('style'); + + style.setAttribute('type', 'text/css'); + style.innerHTML = css; + document.head.appendChild(style); + + return css; +} + +function colorToString (color, forceCSSHex) { + var colorFormat = color.__state.conversionName.toString(); + var r = Math.round(color.r); + var g = Math.round(color.g); + var b = Math.round(color.b); + var a = color.a; + var h = Math.round(color.h); + var s = color.s.toFixed(1); + var v = color.v.toFixed(1); + if (forceCSSHex || colorFormat === 'THREE_CHAR_HEX' || colorFormat === 'SIX_CHAR_HEX') { + var str = color.hex.toString(16); + while (str.length < 6) { + str = '0' + str; + } + return '#' + str; + } else if (colorFormat === 'CSS_RGB') { + return 'rgb(' + r + ',' + g + ',' + b + ')'; + } else if (colorFormat === 'CSS_RGBA') { + return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; + } else if (colorFormat === 'HEX') { + return '0x' + color.hex.toString(16); + } else if (colorFormat === 'RGB_ARRAY') { + return '[' + r + ',' + g + ',' + b + ']'; + } else if (colorFormat === 'RGBA_ARRAY') { + return '[' + r + ',' + g + ',' + b + ',' + a + ']'; + } else if (colorFormat === 'RGB_OBJ') { + return '{r:' + r + ',g:' + g + ',b:' + b + '}'; + } else if (colorFormat === 'RGBA_OBJ') { + return '{r:' + r + ',g:' + g + ',b:' + b + ',a:' + a + '}'; + } else if (colorFormat === 'HSV_OBJ') { + return '{h:' + h + ',s:' + s + ',v:' + v + '}'; + } else if (colorFormat === 'HSVA_OBJ') { + return '{h:' + h + ',s:' + s + ',v:' + v + ',a:' + a + '}'; + } + return 'unknown format'; +} + +var ARR_EACH = Array.prototype.forEach; +var ARR_SLICE = Array.prototype.slice; +var Common = { + BREAK: {}, + extend: function extend(target) { + this.each(ARR_SLICE.call(arguments, 1), function (obj) { + var keys = this.isObject(obj) ? Object.keys(obj) : []; + keys.forEach(function (key) { + if (!this.isUndefined(obj[key])) { + target[key] = obj[key]; + } + }.bind(this)); + }, this); + return target; + }, + defaults: function defaults(target) { + this.each(ARR_SLICE.call(arguments, 1), function (obj) { + var keys = this.isObject(obj) ? Object.keys(obj) : []; + keys.forEach(function (key) { + if (this.isUndefined(target[key])) { + target[key] = obj[key]; + } + }.bind(this)); + }, this); + return target; + }, + compose: function compose() { + var toCall = ARR_SLICE.call(arguments); + return function () { + var args = ARR_SLICE.call(arguments); + for (var i = toCall.length - 1; i >= 0; i--) { + args = [toCall[i].apply(this, args)]; + } + return args[0]; + }; + }, + each: function each(obj, itr, scope) { + if (!obj) { + return; + } + if (ARR_EACH && obj.forEach && obj.forEach === ARR_EACH) { + obj.forEach(itr, scope); + } else if (obj.length === obj.length + 0) { + var key = void 0; + var l = void 0; + for (key = 0, l = obj.length; key < l; key++) { + if (key in obj && itr.call(scope, obj[key], key) === this.BREAK) { + return; + } + } + } else { + for (var _key in obj) { + if (itr.call(scope, obj[_key], _key) === this.BREAK) { + return; + } + } + } + }, + defer: function defer(fnc) { + setTimeout(fnc, 0); + }, + debounce: function debounce(func, threshold, callImmediately) { + var timeout = void 0; + return function () { + var obj = this; + var args = arguments; + function delayed() { + timeout = null; + if (!callImmediately) func.apply(obj, args); + } + var callNow = callImmediately || !timeout; + clearTimeout(timeout); + timeout = setTimeout(delayed, threshold); + if (callNow) { + func.apply(obj, args); + } + }; + }, + toArray: function toArray(obj) { + if (obj.toArray) return obj.toArray(); + return ARR_SLICE.call(obj); + }, + isUndefined: function isUndefined(obj) { + return obj === undefined; + }, + isNull: function isNull(obj) { + return obj === null; + }, + isNaN: function (_isNaN) { + function isNaN(_x) { + return _isNaN.apply(this, arguments); + } + isNaN.toString = function () { + return _isNaN.toString(); + }; + return isNaN; + }(function (obj) { + return isNaN(obj); + }), + isArray: Array.isArray || function (obj) { + return obj.constructor === Array; + }, + isObject: function isObject(obj) { + return obj === Object(obj); + }, + isNumber: function isNumber(obj) { + return obj === obj + 0; + }, + isString: function isString(obj) { + return obj === obj + ''; + }, + isBoolean: function isBoolean(obj) { + return obj === false || obj === true; + }, + isFunction: function isFunction(obj) { + return Object.prototype.toString.call(obj) === '[object Function]'; + } +}; + +var INTERPRETATIONS = [ +{ + litmus: Common.isString, + conversions: { + THREE_CHAR_HEX: { + read: function read(original) { + var test = original.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i); + if (test === null) { + return false; + } + return { + space: 'HEX', + hex: parseInt('0x' + test[1].toString() + test[1].toString() + test[2].toString() + test[2].toString() + test[3].toString() + test[3].toString(), 0) + }; + }, + write: colorToString + }, + SIX_CHAR_HEX: { + read: function read(original) { + var test = original.match(/^#([A-F0-9]{6})$/i); + if (test === null) { + return false; + } + return { + space: 'HEX', + hex: parseInt('0x' + test[1].toString(), 0) + }; + }, + write: colorToString + }, + CSS_RGB: { + read: function read(original) { + var test = original.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/); + if (test === null) { + return false; + } + return { + space: 'RGB', + r: parseFloat(test[1]), + g: parseFloat(test[2]), + b: parseFloat(test[3]) + }; + }, + write: colorToString + }, + CSS_RGBA: { + read: function read(original) { + var test = original.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/); + if (test === null) { + return false; + } + return { + space: 'RGB', + r: parseFloat(test[1]), + g: parseFloat(test[2]), + b: parseFloat(test[3]), + a: parseFloat(test[4]) + }; + }, + write: colorToString + } + } +}, +{ + litmus: Common.isNumber, + conversions: { + HEX: { + read: function read(original) { + return { + space: 'HEX', + hex: original, + conversionName: 'HEX' + }; + }, + write: function write(color) { + return color.hex; + } + } + } +}, +{ + litmus: Common.isArray, + conversions: { + RGB_ARRAY: { + read: function read(original) { + if (original.length !== 3) { + return false; + } + return { + space: 'RGB', + r: original[0], + g: original[1], + b: original[2] + }; + }, + write: function write(color) { + return [color.r, color.g, color.b]; + } + }, + RGBA_ARRAY: { + read: function read(original) { + if (original.length !== 4) return false; + return { + space: 'RGB', + r: original[0], + g: original[1], + b: original[2], + a: original[3] + }; + }, + write: function write(color) { + return [color.r, color.g, color.b, color.a]; + } + } + } +}, +{ + litmus: Common.isObject, + conversions: { + RGBA_OBJ: { + read: function read(original) { + if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b) && Common.isNumber(original.a)) { + return { + space: 'RGB', + r: original.r, + g: original.g, + b: original.b, + a: original.a + }; + } + return false; + }, + write: function write(color) { + return { + r: color.r, + g: color.g, + b: color.b, + a: color.a + }; + } + }, + RGB_OBJ: { + read: function read(original) { + if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b)) { + return { + space: 'RGB', + r: original.r, + g: original.g, + b: original.b + }; + } + return false; + }, + write: function write(color) { + return { + r: color.r, + g: color.g, + b: color.b + }; + } + }, + HSVA_OBJ: { + read: function read(original) { + if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v) && Common.isNumber(original.a)) { + return { + space: 'HSV', + h: original.h, + s: original.s, + v: original.v, + a: original.a + }; + } + return false; + }, + write: function write(color) { + return { + h: color.h, + s: color.s, + v: color.v, + a: color.a + }; + } + }, + HSV_OBJ: { + read: function read(original) { + if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v)) { + return { + space: 'HSV', + h: original.h, + s: original.s, + v: original.v + }; + } + return false; + }, + write: function write(color) { + return { + h: color.h, + s: color.s, + v: color.v + }; + } + } + } +}]; +var result = void 0; +var toReturn = void 0; +var interpret = function interpret() { + toReturn = false; + var original = arguments.length > 1 ? Common.toArray(arguments) : arguments[0]; + Common.each(INTERPRETATIONS, function (family) { + if (family.litmus(original)) { + Common.each(family.conversions, function (conversion, conversionName) { + result = conversion.read(original); + if (toReturn === false && result !== false) { + toReturn = result; + result.conversionName = conversionName; + result.conversion = conversion; + return Common.BREAK; + } + }); + return Common.BREAK; + } + }); + return toReturn; +}; + +var tmpComponent = void 0; +var ColorMath = { + hsv_to_rgb: function hsv_to_rgb(h, s, v) { + var hi = Math.floor(h / 60) % 6; + var f = h / 60 - Math.floor(h / 60); + var p = v * (1.0 - s); + var q = v * (1.0 - f * s); + var t = v * (1.0 - (1.0 - f) * s); + var c = [[v, t, p], [q, v, p], [p, v, t], [p, q, v], [t, p, v], [v, p, q]][hi]; + return { + r: c[0] * 255, + g: c[1] * 255, + b: c[2] * 255 + }; + }, + rgb_to_hsv: function rgb_to_hsv(r, g, b) { + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + var delta = max - min; + var h = void 0; + var s = void 0; + if (max !== 0) { + s = delta / max; + } else { + return { + h: NaN, + s: 0, + v: 0 + }; + } + if (r === max) { + h = (g - b) / delta; + } else if (g === max) { + h = 2 + (b - r) / delta; + } else { + h = 4 + (r - g) / delta; + } + h /= 6; + if (h < 0) { + h += 1; + } + return { + h: h * 360, + s: s, + v: max / 255 + }; + }, + rgb_to_hex: function rgb_to_hex(r, g, b) { + var hex = this.hex_with_component(0, 2, r); + hex = this.hex_with_component(hex, 1, g); + hex = this.hex_with_component(hex, 0, b); + return hex; + }, + component_from_hex: function component_from_hex(hex, componentIndex) { + return hex >> componentIndex * 8 & 0xFF; + }, + hex_with_component: function hex_with_component(hex, componentIndex, value) { + return value << (tmpComponent = componentIndex * 8) | hex & ~(0xFF << tmpComponent); + } +}; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; +} : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; +}; + + + + + + + + + + + +var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; + +var createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); + + + + + + + +var get = function get(object, property, receiver) { + if (object === null) object = Function.prototype; + var desc = Object.getOwnPropertyDescriptor(object, property); + + if (desc === undefined) { + var parent = Object.getPrototypeOf(object); + + if (parent === null) { + return undefined; + } else { + return get(parent, property, receiver); + } + } else if ("value" in desc) { + return desc.value; + } else { + var getter = desc.get; + + if (getter === undefined) { + return undefined; + } + + return getter.call(receiver); + } +}; + +var inherits = function (subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + }); + if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; +}; + + + + + + + + + + + +var possibleConstructorReturn = function (self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; +}; + +var Color = function () { + function Color() { + classCallCheck(this, Color); + this.__state = interpret.apply(this, arguments); + if (this.__state === false) { + throw new Error('Failed to interpret color arguments'); + } + this.__state.a = this.__state.a || 1; + } + createClass(Color, [{ + key: 'toString', + value: function toString() { + return colorToString(this); + } + }, { + key: 'toHexString', + value: function toHexString() { + return colorToString(this, true); + } + }, { + key: 'toOriginal', + value: function toOriginal() { + return this.__state.conversion.write(this); + } + }]); + return Color; +}(); +function defineRGBComponent(target, component, componentHexIndex) { + Object.defineProperty(target, component, { + get: function get$$1() { + if (this.__state.space === 'RGB') { + return this.__state[component]; + } + Color.recalculateRGB(this, component, componentHexIndex); + return this.__state[component]; + }, + set: function set$$1(v) { + if (this.__state.space !== 'RGB') { + Color.recalculateRGB(this, component, componentHexIndex); + this.__state.space = 'RGB'; + } + this.__state[component] = v; + } + }); +} +function defineHSVComponent(target, component) { + Object.defineProperty(target, component, { + get: function get$$1() { + if (this.__state.space === 'HSV') { + return this.__state[component]; + } + Color.recalculateHSV(this); + return this.__state[component]; + }, + set: function set$$1(v) { + if (this.__state.space !== 'HSV') { + Color.recalculateHSV(this); + this.__state.space = 'HSV'; + } + this.__state[component] = v; + } + }); +} +Color.recalculateRGB = function (color, component, componentHexIndex) { + if (color.__state.space === 'HEX') { + color.__state[component] = ColorMath.component_from_hex(color.__state.hex, componentHexIndex); + } else if (color.__state.space === 'HSV') { + Common.extend(color.__state, ColorMath.hsv_to_rgb(color.__state.h, color.__state.s, color.__state.v)); + } else { + throw new Error('Corrupted color state'); + } +}; +Color.recalculateHSV = function (color) { + var result = ColorMath.rgb_to_hsv(color.r, color.g, color.b); + Common.extend(color.__state, { + s: result.s, + v: result.v + }); + if (!Common.isNaN(result.h)) { + color.__state.h = result.h; + } else if (Common.isUndefined(color.__state.h)) { + color.__state.h = 0; + } +}; +Color.COMPONENTS = ['r', 'g', 'b', 'h', 's', 'v', 'hex', 'a']; +defineRGBComponent(Color.prototype, 'r', 2); +defineRGBComponent(Color.prototype, 'g', 1); +defineRGBComponent(Color.prototype, 'b', 0); +defineHSVComponent(Color.prototype, 'h'); +defineHSVComponent(Color.prototype, 's'); +defineHSVComponent(Color.prototype, 'v'); +Object.defineProperty(Color.prototype, 'a', { + get: function get$$1() { + return this.__state.a; + }, + set: function set$$1(v) { + this.__state.a = v; + } +}); +Object.defineProperty(Color.prototype, 'hex', { + get: function get$$1() { + if (!this.__state.space !== 'HEX') { + this.__state.hex = ColorMath.rgb_to_hex(this.r, this.g, this.b); + } + return this.__state.hex; + }, + set: function set$$1(v) { + this.__state.space = 'HEX'; + this.__state.hex = v; + } +}); + +var Controller = function () { + function Controller(object, property) { + classCallCheck(this, Controller); + this.initialValue = object[property]; + this.domElement = document.createElement('div'); + this.object = object; + this.property = property; + this.__onChange = undefined; + this.__onFinishChange = undefined; + } + createClass(Controller, [{ + key: 'onChange', + value: function onChange(fnc) { + this.__onChange = fnc; + return this; + } + }, { + key: 'onFinishChange', + value: function onFinishChange(fnc) { + this.__onFinishChange = fnc; + return this; + } + }, { + key: 'setValue', + value: function setValue(newValue) { + this.object[this.property] = newValue; + if (this.__onChange) { + this.__onChange.call(this, newValue); + } + this.updateDisplay(); + return this; + } + }, { + key: 'getValue', + value: function getValue() { + return this.object[this.property]; + } + }, { + key: 'updateDisplay', + value: function updateDisplay() { + return this; + } + }, { + key: 'isModified', + value: function isModified() { + return this.initialValue !== this.getValue(); + } + }]); + return Controller; +}(); + +var EVENT_MAP = { + HTMLEvents: ['change'], + MouseEvents: ['click', 'mousemove', 'mousedown', 'mouseup', 'mouseover'], + KeyboardEvents: ['keydown'] +}; +var EVENT_MAP_INV = {}; +Common.each(EVENT_MAP, function (v, k) { + Common.each(v, function (e) { + EVENT_MAP_INV[e] = k; + }); +}); +var CSS_VALUE_PIXELS = /(\d+(\.\d+)?)px/; +function cssValueToPixels(val) { + if (val === '0' || Common.isUndefined(val)) { + return 0; + } + var match = val.match(CSS_VALUE_PIXELS); + if (!Common.isNull(match)) { + return parseFloat(match[1]); + } + return 0; +} +var dom = { + makeSelectable: function makeSelectable(elem, selectable) { + if (elem === undefined || elem.style === undefined) return; + elem.onselectstart = selectable ? function () { + return false; + } : function () {}; + elem.style.MozUserSelect = selectable ? 'auto' : 'none'; + elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none'; + elem.unselectable = selectable ? 'on' : 'off'; + }, + makeFullscreen: function makeFullscreen(elem, hor, vert) { + var vertical = vert; + var horizontal = hor; + if (Common.isUndefined(horizontal)) { + horizontal = true; + } + if (Common.isUndefined(vertical)) { + vertical = true; + } + elem.style.position = 'absolute'; + if (horizontal) { + elem.style.left = 0; + elem.style.right = 0; + } + if (vertical) { + elem.style.top = 0; + elem.style.bottom = 0; + } + }, + fakeEvent: function fakeEvent(elem, eventType, pars, aux) { + var params = pars || {}; + var className = EVENT_MAP_INV[eventType]; + if (!className) { + throw new Error('Event type ' + eventType + ' not supported.'); + } + var evt = document.createEvent(className); + switch (className) { + case 'MouseEvents': + { + var clientX = params.x || params.clientX || 0; + var clientY = params.y || params.clientY || 0; + evt.initMouseEvent(eventType, params.bubbles || false, params.cancelable || true, window, params.clickCount || 1, 0, + 0, + clientX, + clientY, + false, false, false, false, 0, null); + break; + } + case 'KeyboardEvents': + { + var init = evt.initKeyboardEvent || evt.initKeyEvent; + Common.defaults(params, { + cancelable: true, + ctrlKey: false, + altKey: false, + shiftKey: false, + metaKey: false, + keyCode: undefined, + charCode: undefined + }); + init(eventType, params.bubbles || false, params.cancelable, window, params.ctrlKey, params.altKey, params.shiftKey, params.metaKey, params.keyCode, params.charCode); + break; + } + default: + { + evt.initEvent(eventType, params.bubbles || false, params.cancelable || true); + break; + } + } + Common.defaults(evt, aux); + elem.dispatchEvent(evt); + }, + bind: function bind(elem, event, func, newBool) { + var bool = newBool || false; + if (elem.addEventListener) { + elem.addEventListener(event, func, bool); + } else if (elem.attachEvent) { + elem.attachEvent('on' + event, func); + } + return dom; + }, + unbind: function unbind(elem, event, func, newBool) { + var bool = newBool || false; + if (elem.removeEventListener) { + elem.removeEventListener(event, func, bool); + } else if (elem.detachEvent) { + elem.detachEvent('on' + event, func); + } + return dom; + }, + addClass: function addClass(elem, className) { + if (elem.className === undefined) { + elem.className = className; + } else if (elem.className !== className) { + var classes = elem.className.split(/ +/); + if (classes.indexOf(className) === -1) { + classes.push(className); + elem.className = classes.join(' ').replace(/^\s+/, '').replace(/\s+$/, ''); + } + } + return dom; + }, + removeClass: function removeClass(elem, className) { + if (className) { + if (elem.className === className) { + elem.removeAttribute('class'); + } else { + var classes = elem.className.split(/ +/); + var index = classes.indexOf(className); + if (index !== -1) { + classes.splice(index, 1); + elem.className = classes.join(' '); + } + } + } else { + elem.className = undefined; + } + return dom; + }, + hasClass: function hasClass(elem, className) { + return new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)').test(elem.className) || false; + }, + getWidth: function getWidth(elem) { + var style = getComputedStyle(elem); + return cssValueToPixels(style['border-left-width']) + cssValueToPixels(style['border-right-width']) + cssValueToPixels(style['padding-left']) + cssValueToPixels(style['padding-right']) + cssValueToPixels(style.width); + }, + getHeight: function getHeight(elem) { + var style = getComputedStyle(elem); + return cssValueToPixels(style['border-top-width']) + cssValueToPixels(style['border-bottom-width']) + cssValueToPixels(style['padding-top']) + cssValueToPixels(style['padding-bottom']) + cssValueToPixels(style.height); + }, + getOffset: function getOffset(el) { + var elem = el; + var offset = { left: 0, top: 0 }; + if (elem.offsetParent) { + do { + offset.left += elem.offsetLeft; + offset.top += elem.offsetTop; + elem = elem.offsetParent; + } while (elem); + } + return offset; + }, + isActive: function isActive(elem) { + return elem === document.activeElement && (elem.type || elem.href); + } +}; + +var BooleanController = function (_Controller) { + inherits(BooleanController, _Controller); + function BooleanController(object, property) { + classCallCheck(this, BooleanController); + var _this2 = possibleConstructorReturn(this, (BooleanController.__proto__ || Object.getPrototypeOf(BooleanController)).call(this, object, property)); + var _this = _this2; + _this2.__prev = _this2.getValue(); + _this2.__checkbox = document.createElement('input'); + _this2.__checkbox.setAttribute('type', 'checkbox'); + function onChange() { + _this.setValue(!_this.__prev); + } + dom.bind(_this2.__checkbox, 'change', onChange, false); + _this2.domElement.appendChild(_this2.__checkbox); + _this2.updateDisplay(); + return _this2; + } + createClass(BooleanController, [{ + key: 'setValue', + value: function setValue(v) { + var toReturn = get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'setValue', this).call(this, v); + if (this.__onFinishChange) { + this.__onFinishChange.call(this, this.getValue()); + } + this.__prev = this.getValue(); + return toReturn; + } + }, { + key: 'updateDisplay', + value: function updateDisplay() { + if (this.getValue() === true) { + this.__checkbox.setAttribute('checked', 'checked'); + this.__checkbox.checked = true; + this.__prev = true; + } else { + this.__checkbox.checked = false; + this.__prev = false; + } + return get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'updateDisplay', this).call(this); + } + }]); + return BooleanController; +}(Controller); + +var OptionController = function (_Controller) { + inherits(OptionController, _Controller); + function OptionController(object, property, opts) { + classCallCheck(this, OptionController); + var _this2 = possibleConstructorReturn(this, (OptionController.__proto__ || Object.getPrototypeOf(OptionController)).call(this, object, property)); + var options = opts; + var _this = _this2; + _this2.__select = document.createElement('select'); + if (Common.isArray(options)) { + var map = {}; + Common.each(options, function (element) { + map[element] = element; + }); + options = map; + } + Common.each(options, function (value, key) { + var opt = document.createElement('option'); + opt.innerHTML = key; + opt.setAttribute('value', value); + _this.__select.appendChild(opt); + }); + _this2.updateDisplay(); + dom.bind(_this2.__select, 'change', function () { + var desiredValue = this.options[this.selectedIndex].value; + _this.setValue(desiredValue); + }); + _this2.domElement.appendChild(_this2.__select); + return _this2; + } + createClass(OptionController, [{ + key: 'setValue', + value: function setValue(v) { + var toReturn = get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'setValue', this).call(this, v); + if (this.__onFinishChange) { + this.__onFinishChange.call(this, this.getValue()); + } + return toReturn; + } + }, { + key: 'updateDisplay', + value: function updateDisplay() { + if (dom.isActive(this.__select)) return this; + this.__select.value = this.getValue(); + return get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'updateDisplay', this).call(this); + } + }]); + return OptionController; +}(Controller); + +var StringController = function (_Controller) { + inherits(StringController, _Controller); + function StringController(object, property) { + classCallCheck(this, StringController); + var _this2 = possibleConstructorReturn(this, (StringController.__proto__ || Object.getPrototypeOf(StringController)).call(this, object, property)); + var _this = _this2; + function onChange() { + _this.setValue(_this.__input.value); + } + function onBlur() { + if (_this.__onFinishChange) { + _this.__onFinishChange.call(_this, _this.getValue()); + } + } + _this2.__input = document.createElement('input'); + _this2.__input.setAttribute('type', 'text'); + dom.bind(_this2.__input, 'keyup', onChange); + dom.bind(_this2.__input, 'change', onChange); + dom.bind(_this2.__input, 'blur', onBlur); + dom.bind(_this2.__input, 'keydown', function (e) { + if (e.keyCode === 13) { + this.blur(); + } + }); + _this2.updateDisplay(); + _this2.domElement.appendChild(_this2.__input); + return _this2; + } + createClass(StringController, [{ + key: 'updateDisplay', + value: function updateDisplay() { + if (!dom.isActive(this.__input)) { + this.__input.value = this.getValue(); + } + return get(StringController.prototype.__proto__ || Object.getPrototypeOf(StringController.prototype), 'updateDisplay', this).call(this); + } + }]); + return StringController; +}(Controller); + +function numDecimals(x) { + var _x = x.toString(); + if (_x.indexOf('.') > -1) { + return _x.length - _x.indexOf('.') - 1; + } + return 0; +} +var NumberController = function (_Controller) { + inherits(NumberController, _Controller); + function NumberController(object, property, params) { + classCallCheck(this, NumberController); + var _this = possibleConstructorReturn(this, (NumberController.__proto__ || Object.getPrototypeOf(NumberController)).call(this, object, property)); + var _params = params || {}; + _this.__min = _params.min; + _this.__max = _params.max; + _this.__step = _params.step; + if (Common.isUndefined(_this.__step)) { + if (_this.initialValue === 0) { + _this.__impliedStep = 1; + } else { + _this.__impliedStep = Math.pow(10, Math.floor(Math.log(Math.abs(_this.initialValue)) / Math.LN10)) / 10; + } + } else { + _this.__impliedStep = _this.__step; + } + _this.__precision = numDecimals(_this.__impliedStep); + return _this; + } + createClass(NumberController, [{ + key: 'setValue', + value: function setValue(v) { + var _v = v; + if (this.__min !== undefined && _v < this.__min) { + _v = this.__min; + } else if (this.__max !== undefined && _v > this.__max) { + _v = this.__max; + } + if (this.__step !== undefined && _v % this.__step !== 0) { + _v = Math.round(_v / this.__step) * this.__step; + } + return get(NumberController.prototype.__proto__ || Object.getPrototypeOf(NumberController.prototype), 'setValue', this).call(this, _v); + } + }, { + key: 'min', + value: function min(minValue) { + this.__min = minValue; + return this; + } + }, { + key: 'max', + value: function max(maxValue) { + this.__max = maxValue; + return this; + } + }, { + key: 'step', + value: function step(stepValue) { + this.__step = stepValue; + this.__impliedStep = stepValue; + this.__precision = numDecimals(stepValue); + return this; + } + }]); + return NumberController; +}(Controller); + +function roundToDecimal(value, decimals) { + var tenTo = Math.pow(10, decimals); + return Math.round(value * tenTo) / tenTo; +} +var NumberControllerBox = function (_NumberController) { + inherits(NumberControllerBox, _NumberController); + function NumberControllerBox(object, property, params) { + classCallCheck(this, NumberControllerBox); + var _this2 = possibleConstructorReturn(this, (NumberControllerBox.__proto__ || Object.getPrototypeOf(NumberControllerBox)).call(this, object, property, params)); + _this2.__truncationSuspended = false; + var _this = _this2; + var prevY = void 0; + function onChange() { + var attempted = parseFloat(_this.__input.value); + if (!Common.isNaN(attempted)) { + _this.setValue(attempted); + } + } + function onFinish() { + if (_this.__onFinishChange) { + _this.__onFinishChange.call(_this, _this.getValue()); + } + } + function onBlur() { + onFinish(); + } + function onMouseDrag(e) { + var diff = prevY - e.clientY; + _this.setValue(_this.getValue() + diff * _this.__impliedStep); + prevY = e.clientY; + } + function onMouseUp() { + dom.unbind(window, 'mousemove', onMouseDrag); + dom.unbind(window, 'mouseup', onMouseUp); + onFinish(); + } + function onMouseDown(e) { + dom.bind(window, 'mousemove', onMouseDrag); + dom.bind(window, 'mouseup', onMouseUp); + prevY = e.clientY; + } + _this2.__input = document.createElement('input'); + _this2.__input.setAttribute('type', 'text'); + dom.bind(_this2.__input, 'change', onChange); + dom.bind(_this2.__input, 'blur', onBlur); + dom.bind(_this2.__input, 'mousedown', onMouseDown); + dom.bind(_this2.__input, 'keydown', function (e) { + if (e.keyCode === 13) { + _this.__truncationSuspended = true; + this.blur(); + _this.__truncationSuspended = false; + onFinish(); + } + }); + _this2.updateDisplay(); + _this2.domElement.appendChild(_this2.__input); + return _this2; + } + createClass(NumberControllerBox, [{ + key: 'updateDisplay', + value: function updateDisplay() { + this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision); + return get(NumberControllerBox.prototype.__proto__ || Object.getPrototypeOf(NumberControllerBox.prototype), 'updateDisplay', this).call(this); + } + }]); + return NumberControllerBox; +}(NumberController); + +function map(v, i1, i2, o1, o2) { + return o1 + (o2 - o1) * ((v - i1) / (i2 - i1)); +} +var NumberControllerSlider = function (_NumberController) { + inherits(NumberControllerSlider, _NumberController); + function NumberControllerSlider(object, property, min, max, step) { + classCallCheck(this, NumberControllerSlider); + var _this2 = possibleConstructorReturn(this, (NumberControllerSlider.__proto__ || Object.getPrototypeOf(NumberControllerSlider)).call(this, object, property, { min: min, max: max, step: step })); + var _this = _this2; + _this2.__background = document.createElement('div'); + _this2.__foreground = document.createElement('div'); + dom.bind(_this2.__background, 'mousedown', onMouseDown); + dom.bind(_this2.__background, 'touchstart', onTouchStart); + dom.addClass(_this2.__background, 'slider'); + dom.addClass(_this2.__foreground, 'slider-fg'); + function onMouseDown(e) { + document.activeElement.blur(); + dom.bind(window, 'mousemove', onMouseDrag); + dom.bind(window, 'mouseup', onMouseUp); + onMouseDrag(e); + } + function onMouseDrag(e) { + e.preventDefault(); + var bgRect = _this.__background.getBoundingClientRect(); + _this.setValue(map(e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max)); + return false; + } + function onMouseUp() { + dom.unbind(window, 'mousemove', onMouseDrag); + dom.unbind(window, 'mouseup', onMouseUp); + if (_this.__onFinishChange) { + _this.__onFinishChange.call(_this, _this.getValue()); + } + } + function onTouchStart(e) { + if (e.touches.length !== 1) { + return; + } + dom.bind(window, 'touchmove', onTouchMove); + dom.bind(window, 'touchend', onTouchEnd); + onTouchMove(e); + } + function onTouchMove(e) { + var clientX = e.touches[0].clientX; + var bgRect = _this.__background.getBoundingClientRect(); + _this.setValue(map(clientX, bgRect.left, bgRect.right, _this.__min, _this.__max)); + } + function onTouchEnd() { + dom.unbind(window, 'touchmove', onTouchMove); + dom.unbind(window, 'touchend', onTouchEnd); + if (_this.__onFinishChange) { + _this.__onFinishChange.call(_this, _this.getValue()); + } + } + _this2.updateDisplay(); + _this2.__background.appendChild(_this2.__foreground); + _this2.domElement.appendChild(_this2.__background); + return _this2; + } + createClass(NumberControllerSlider, [{ + key: 'updateDisplay', + value: function updateDisplay() { + var pct = (this.getValue() - this.__min) / (this.__max - this.__min); + this.__foreground.style.width = pct * 100 + '%'; + return get(NumberControllerSlider.prototype.__proto__ || Object.getPrototypeOf(NumberControllerSlider.prototype), 'updateDisplay', this).call(this); + } + }]); + return NumberControllerSlider; +}(NumberController); + +var FunctionController = function (_Controller) { + inherits(FunctionController, _Controller); + function FunctionController(object, property, text) { + classCallCheck(this, FunctionController); + var _this2 = possibleConstructorReturn(this, (FunctionController.__proto__ || Object.getPrototypeOf(FunctionController)).call(this, object, property)); + var _this = _this2; + _this2.__button = document.createElement('div'); + _this2.__button.innerHTML = text === undefined ? 'Fire' : text; + dom.bind(_this2.__button, 'click', function (e) { + e.preventDefault(); + _this.fire(); + return false; + }); + dom.addClass(_this2.__button, 'button'); + _this2.domElement.appendChild(_this2.__button); + return _this2; + } + createClass(FunctionController, [{ + key: 'fire', + value: function fire() { + if (this.__onChange) { + this.__onChange.call(this); + } + this.getValue().call(this.object); + if (this.__onFinishChange) { + this.__onFinishChange.call(this, this.getValue()); + } + } + }]); + return FunctionController; +}(Controller); + +var ColorController = function (_Controller) { + inherits(ColorController, _Controller); + function ColorController(object, property) { + classCallCheck(this, ColorController); + var _this2 = possibleConstructorReturn(this, (ColorController.__proto__ || Object.getPrototypeOf(ColorController)).call(this, object, property)); + _this2.__color = new Color(_this2.getValue()); + _this2.__temp = new Color(0); + var _this = _this2; + _this2.domElement = document.createElement('div'); + dom.makeSelectable(_this2.domElement, false); + _this2.__selector = document.createElement('div'); + _this2.__selector.className = 'selector'; + _this2.__saturation_field = document.createElement('div'); + _this2.__saturation_field.className = 'saturation-field'; + _this2.__field_knob = document.createElement('div'); + _this2.__field_knob.className = 'field-knob'; + _this2.__field_knob_border = '2px solid '; + _this2.__hue_knob = document.createElement('div'); + _this2.__hue_knob.className = 'hue-knob'; + _this2.__hue_field = document.createElement('div'); + _this2.__hue_field.className = 'hue-field'; + _this2.__input = document.createElement('input'); + _this2.__input.type = 'text'; + _this2.__input_textShadow = '0 1px 1px '; + dom.bind(_this2.__input, 'keydown', function (e) { + if (e.keyCode === 13) { + onBlur.call(this); + } + }); + dom.bind(_this2.__input, 'blur', onBlur); + dom.bind(_this2.__selector, 'mousedown', function () { + dom.addClass(this, 'drag').bind(window, 'mouseup', function () { + dom.removeClass(_this.__selector, 'drag'); + }); + }); + dom.bind(_this2.__selector, 'touchstart', function () { + dom.addClass(this, 'drag').bind(window, 'touchend', function () { + dom.removeClass(_this.__selector, 'drag'); + }); + }); + var valueField = document.createElement('div'); + Common.extend(_this2.__selector.style, { + width: '122px', + height: '102px', + padding: '3px', + backgroundColor: '#222', + boxShadow: '0px 1px 3px rgba(0,0,0,0.3)' + }); + Common.extend(_this2.__field_knob.style, { + position: 'absolute', + width: '12px', + height: '12px', + border: _this2.__field_knob_border + (_this2.__color.v < 0.5 ? '#fff' : '#000'), + boxShadow: '0px 1px 3px rgba(0,0,0,0.5)', + borderRadius: '12px', + zIndex: 1 + }); + Common.extend(_this2.__hue_knob.style, { + position: 'absolute', + width: '15px', + height: '2px', + borderRight: '4px solid #fff', + zIndex: 1 + }); + Common.extend(_this2.__saturation_field.style, { + width: '100px', + height: '100px', + border: '1px solid #555', + marginRight: '3px', + display: 'inline-block', + cursor: 'pointer' + }); + Common.extend(valueField.style, { + width: '100%', + height: '100%', + background: 'none' + }); + linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000'); + Common.extend(_this2.__hue_field.style, { + width: '15px', + height: '100px', + border: '1px solid #555', + cursor: 'ns-resize', + position: 'absolute', + top: '3px', + right: '3px' + }); + hueGradient(_this2.__hue_field); + Common.extend(_this2.__input.style, { + outline: 'none', + textAlign: 'center', + color: '#fff', + border: 0, + fontWeight: 'bold', + textShadow: _this2.__input_textShadow + 'rgba(0,0,0,0.7)' + }); + dom.bind(_this2.__saturation_field, 'mousedown', fieldDown); + dom.bind(_this2.__saturation_field, 'touchstart', fieldDown); + dom.bind(_this2.__field_knob, 'mousedown', fieldDown); + dom.bind(_this2.__field_knob, 'touchstart', fieldDown); + dom.bind(_this2.__hue_field, 'mousedown', fieldDownH); + dom.bind(_this2.__hue_field, 'touchstart', fieldDownH); + function fieldDown(e) { + setSV(e); + dom.bind(window, 'mousemove', setSV); + dom.bind(window, 'touchmove', setSV); + dom.bind(window, 'mouseup', fieldUpSV); + dom.bind(window, 'touchend', fieldUpSV); + } + function fieldDownH(e) { + setH(e); + dom.bind(window, 'mousemove', setH); + dom.bind(window, 'touchmove', setH); + dom.bind(window, 'mouseup', fieldUpH); + dom.bind(window, 'touchend', fieldUpH); + } + function fieldUpSV() { + dom.unbind(window, 'mousemove', setSV); + dom.unbind(window, 'touchmove', setSV); + dom.unbind(window, 'mouseup', fieldUpSV); + dom.unbind(window, 'touchend', fieldUpSV); + onFinish(); + } + function fieldUpH() { + dom.unbind(window, 'mousemove', setH); + dom.unbind(window, 'touchmove', setH); + dom.unbind(window, 'mouseup', fieldUpH); + dom.unbind(window, 'touchend', fieldUpH); + onFinish(); + } + function onBlur() { + var i = interpret(this.value); + if (i !== false) { + _this.__color.__state = i; + _this.setValue(_this.__color.toOriginal()); + } else { + this.value = _this.__color.toString(); + } + } + function onFinish() { + if (_this.__onFinishChange) { + _this.__onFinishChange.call(_this, _this.__color.toOriginal()); + } + } + _this2.__saturation_field.appendChild(valueField); + _this2.__selector.appendChild(_this2.__field_knob); + _this2.__selector.appendChild(_this2.__saturation_field); + _this2.__selector.appendChild(_this2.__hue_field); + _this2.__hue_field.appendChild(_this2.__hue_knob); + _this2.domElement.appendChild(_this2.__input); + _this2.domElement.appendChild(_this2.__selector); + _this2.updateDisplay(); + function setSV(e) { + if (e.type.indexOf('touch') === -1) { + e.preventDefault(); + } + var fieldRect = _this.__saturation_field.getBoundingClientRect(); + var _ref = e.touches && e.touches[0] || e, + clientX = _ref.clientX, + clientY = _ref.clientY; + var s = (clientX - fieldRect.left) / (fieldRect.right - fieldRect.left); + var v = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top); + if (v > 1) { + v = 1; + } else if (v < 0) { + v = 0; + } + if (s > 1) { + s = 1; + } else if (s < 0) { + s = 0; + } + _this.__color.v = v; + _this.__color.s = s; + _this.setValue(_this.__color.toOriginal()); + return false; + } + function setH(e) { + if (e.type.indexOf('touch') === -1) { + e.preventDefault(); + } + var fieldRect = _this.__hue_field.getBoundingClientRect(); + var _ref2 = e.touches && e.touches[0] || e, + clientY = _ref2.clientY; + var h = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top); + if (h > 1) { + h = 1; + } else if (h < 0) { + h = 0; + } + _this.__color.h = h * 360; + _this.setValue(_this.__color.toOriginal()); + return false; + } + return _this2; + } + createClass(ColorController, [{ + key: 'updateDisplay', + value: function updateDisplay() { + var i = interpret(this.getValue()); + if (i !== false) { + var mismatch = false; + Common.each(Color.COMPONENTS, function (component) { + if (!Common.isUndefined(i[component]) && !Common.isUndefined(this.__color.__state[component]) && i[component] !== this.__color.__state[component]) { + mismatch = true; + return {}; + } + }, this); + if (mismatch) { + Common.extend(this.__color.__state, i); + } + } + Common.extend(this.__temp.__state, this.__color.__state); + this.__temp.a = 1; + var flip = this.__color.v < 0.5 || this.__color.s > 0.5 ? 255 : 0; + var _flip = 255 - flip; + Common.extend(this.__field_knob.style, { + marginLeft: 100 * this.__color.s - 7 + 'px', + marginTop: 100 * (1 - this.__color.v) - 7 + 'px', + backgroundColor: this.__temp.toHexString(), + border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')' + }); + this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px'; + this.__temp.s = 1; + this.__temp.v = 1; + linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString()); + this.__input.value = this.__color.toString(); + Common.extend(this.__input.style, { + backgroundColor: this.__color.toHexString(), + color: 'rgb(' + flip + ',' + flip + ',' + flip + ')', + textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)' + }); + } + }]); + return ColorController; +}(Controller); +var vendors = ['-moz-', '-o-', '-webkit-', '-ms-', '']; +function linearGradient(elem, x, a, b) { + elem.style.background = ''; + Common.each(vendors, function (vendor) { + elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); '; + }); +} +function hueGradient(elem) { + elem.style.background = ''; + elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);'; + elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; + elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; + elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; + elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; +} + +var css = { + load: function load(url, indoc) { + var doc = indoc || document; + var link = doc.createElement('link'); + link.type = 'text/css'; + link.rel = 'stylesheet'; + link.href = url; + doc.getElementsByTagName('head')[0].appendChild(link); + }, + inject: function inject(cssContent, indoc) { + var doc = indoc || document; + var injected = document.createElement('style'); + injected.type = 'text/css'; + injected.innerHTML = cssContent; + var head = doc.getElementsByTagName('head')[0]; + try { + head.appendChild(injected); + } catch (e) { + } + } +}; + +var saveDialogContents = "<div id=\"dg-save\" class=\"dg dialogue\">\n\n Here's the new load parameter for your <code>GUI</code>'s constructor:\n\n <textarea id=\"dg-new-constructor\"></textarea>\n\n <div id=\"dg-save-locally\">\n\n <input id=\"dg-local-storage\" type=\"checkbox\"/> Automatically save\n values to <code>localStorage</code> on exit.\n\n <div id=\"dg-local-explain\">The values saved to <code>localStorage</code> will\n override those passed to <code>dat.GUI</code>'s constructor. This makes it\n easier to work incrementally, but <code>localStorage</code> is fragile,\n and your friends may not see the same values you do.\n\n </div>\n\n </div>\n\n</div>"; + +var ControllerFactory = function ControllerFactory(object, property) { + var initialValue = object[property]; + if (Common.isArray(arguments[2]) || Common.isObject(arguments[2])) { + return new OptionController(object, property, arguments[2]); + } + if (Common.isNumber(initialValue)) { + if (Common.isNumber(arguments[2]) && Common.isNumber(arguments[3])) { + if (Common.isNumber(arguments[4])) { + return new NumberControllerSlider(object, property, arguments[2], arguments[3], arguments[4]); + } + return new NumberControllerSlider(object, property, arguments[2], arguments[3]); + } + if (Common.isNumber(arguments[4])) { + return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3], step: arguments[4] }); + } + return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] }); + } + if (Common.isString(initialValue)) { + return new StringController(object, property); + } + if (Common.isFunction(initialValue)) { + return new FunctionController(object, property, ''); + } + if (Common.isBoolean(initialValue)) { + return new BooleanController(object, property); + } + return null; +}; + +function requestAnimationFrame(callback) { + setTimeout(callback, 1000 / 60); +} +var requestAnimationFrame$1 = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || requestAnimationFrame; + +var CenteredDiv = function () { + function CenteredDiv() { + classCallCheck(this, CenteredDiv); + this.backgroundElement = document.createElement('div'); + Common.extend(this.backgroundElement.style, { + backgroundColor: 'rgba(0,0,0,0.8)', + top: 0, + left: 0, + display: 'none', + zIndex: '1000', + opacity: 0, + WebkitTransition: 'opacity 0.2s linear', + transition: 'opacity 0.2s linear' + }); + dom.makeFullscreen(this.backgroundElement); + this.backgroundElement.style.position = 'fixed'; + this.domElement = document.createElement('div'); + Common.extend(this.domElement.style, { + position: 'fixed', + display: 'none', + zIndex: '1001', + opacity: 0, + WebkitTransition: '-webkit-transform 0.2s ease-out, opacity 0.2s linear', + transition: 'transform 0.2s ease-out, opacity 0.2s linear' + }); + document.body.appendChild(this.backgroundElement); + document.body.appendChild(this.domElement); + var _this = this; + dom.bind(this.backgroundElement, 'click', function () { + _this.hide(); + }); + } + createClass(CenteredDiv, [{ + key: 'show', + value: function show() { + var _this = this; + this.backgroundElement.style.display = 'block'; + this.domElement.style.display = 'block'; + this.domElement.style.opacity = 0; + this.domElement.style.webkitTransform = 'scale(1.1)'; + this.layout(); + Common.defer(function () { + _this.backgroundElement.style.opacity = 1; + _this.domElement.style.opacity = 1; + _this.domElement.style.webkitTransform = 'scale(1)'; + }); + } + }, { + key: 'hide', + value: function hide() { + var _this = this; + var hide = function hide() { + _this.domElement.style.display = 'none'; + _this.backgroundElement.style.display = 'none'; + dom.unbind(_this.domElement, 'webkitTransitionEnd', hide); + dom.unbind(_this.domElement, 'transitionend', hide); + dom.unbind(_this.domElement, 'oTransitionEnd', hide); + }; + dom.bind(this.domElement, 'webkitTransitionEnd', hide); + dom.bind(this.domElement, 'transitionend', hide); + dom.bind(this.domElement, 'oTransitionEnd', hide); + this.backgroundElement.style.opacity = 0; + this.domElement.style.opacity = 0; + this.domElement.style.webkitTransform = 'scale(1.1)'; + } + }, { + key: 'layout', + value: function layout() { + this.domElement.style.left = window.innerWidth / 2 - dom.getWidth(this.domElement) / 2 + 'px'; + this.domElement.style.top = window.innerHeight / 2 - dom.getHeight(this.domElement) / 2 + 'px'; + } + }]); + return CenteredDiv; +}(); + +var styleSheet = ___$insertStyle(".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\n"); + +css.inject(styleSheet); +var CSS_NAMESPACE = 'dg'; +var HIDE_KEY_CODE = 72; +var CLOSE_BUTTON_HEIGHT = 20; +var DEFAULT_DEFAULT_PRESET_NAME = 'Default'; +var SUPPORTS_LOCAL_STORAGE = function () { + try { + return !!window.localStorage; + } catch (e) { + return false; + } +}(); +var SAVE_DIALOGUE = void 0; +var autoPlaceVirgin = true; +var autoPlaceContainer = void 0; +var hide = false; +var hideableGuis = []; +var GUI = function GUI(pars) { + var _this = this; + var params = pars || {}; + this.domElement = document.createElement('div'); + this.__ul = document.createElement('ul'); + this.domElement.appendChild(this.__ul); + dom.addClass(this.domElement, CSS_NAMESPACE); + this.__folders = {}; + this.__controllers = []; + this.__rememberedObjects = []; + this.__rememberedObjectIndecesToControllers = []; + this.__listening = []; + params = Common.defaults(params, { + closeOnTop: false, + autoPlace: true, + width: GUI.DEFAULT_WIDTH + }); + params = Common.defaults(params, { + resizable: params.autoPlace, + hideable: params.autoPlace + }); + if (!Common.isUndefined(params.load)) { + if (params.preset) { + params.load.preset = params.preset; + } + } else { + params.load = { preset: DEFAULT_DEFAULT_PRESET_NAME }; + } + if (Common.isUndefined(params.parent) && params.hideable) { + hideableGuis.push(this); + } + params.resizable = Common.isUndefined(params.parent) && params.resizable; + if (params.autoPlace && Common.isUndefined(params.scrollable)) { + params.scrollable = true; + } + var useLocalStorage = SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(this, 'isLocal')) === 'true'; + var saveToLocalStorage = void 0; + var titleRow = void 0; + Object.defineProperties(this, + { + parent: { + get: function get$$1() { + return params.parent; + } + }, + scrollable: { + get: function get$$1() { + return params.scrollable; + } + }, + autoPlace: { + get: function get$$1() { + return params.autoPlace; + } + }, + closeOnTop: { + get: function get$$1() { + return params.closeOnTop; + } + }, + preset: { + get: function get$$1() { + if (_this.parent) { + return _this.getRoot().preset; + } + return params.load.preset; + }, + set: function set$$1(v) { + if (_this.parent) { + _this.getRoot().preset = v; + } else { + params.load.preset = v; + } + setPresetSelectIndex(this); + _this.revert(); + } + }, + width: { + get: function get$$1() { + return params.width; + }, + set: function set$$1(v) { + params.width = v; + setWidth(_this, v); + } + }, + name: { + get: function get$$1() { + return params.name; + }, + set: function set$$1(v) { + params.name = v; + if (titleRow) { + titleRow.innerHTML = params.name; + } + } + }, + closed: { + get: function get$$1() { + return params.closed; + }, + set: function set$$1(v) { + params.closed = v; + if (params.closed) { + dom.addClass(_this.__ul, GUI.CLASS_CLOSED); + } else { + dom.removeClass(_this.__ul, GUI.CLASS_CLOSED); + } + this.onResize(); + if (_this.__closeButton) { + _this.__closeButton.innerHTML = v ? GUI.TEXT_OPEN : GUI.TEXT_CLOSED; + } + } + }, + load: { + get: function get$$1() { + return params.load; + } + }, + useLocalStorage: { + get: function get$$1() { + return useLocalStorage; + }, + set: function set$$1(bool) { + if (SUPPORTS_LOCAL_STORAGE) { + useLocalStorage = bool; + if (bool) { + dom.bind(window, 'unload', saveToLocalStorage); + } else { + dom.unbind(window, 'unload', saveToLocalStorage); + } + localStorage.setItem(getLocalStorageHash(_this, 'isLocal'), bool); + } + } + } + }); + if (Common.isUndefined(params.parent)) { + this.closed = params.closed || false; + dom.addClass(this.domElement, GUI.CLASS_MAIN); + dom.makeSelectable(this.domElement, false); + if (SUPPORTS_LOCAL_STORAGE) { + if (useLocalStorage) { + _this.useLocalStorage = true; + var savedGui = localStorage.getItem(getLocalStorageHash(this, 'gui')); + if (savedGui) { + params.load = JSON.parse(savedGui); + } + } + } + this.__closeButton = document.createElement('div'); + this.__closeButton.innerHTML = GUI.TEXT_CLOSED; + dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BUTTON); + if (params.closeOnTop) { + dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_TOP); + this.domElement.insertBefore(this.__closeButton, this.domElement.childNodes[0]); + } else { + dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BOTTOM); + this.domElement.appendChild(this.__closeButton); + } + dom.bind(this.__closeButton, 'click', function () { + _this.closed = !_this.closed; + }); + } else { + if (params.closed === undefined) { + params.closed = true; + } + var titleRowName = document.createTextNode(params.name); + dom.addClass(titleRowName, 'controller-name'); + titleRow = addRow(_this, titleRowName); + var onClickTitle = function onClickTitle(e) { + e.preventDefault(); + _this.closed = !_this.closed; + return false; + }; + dom.addClass(this.__ul, GUI.CLASS_CLOSED); + dom.addClass(titleRow, 'title'); + dom.bind(titleRow, 'click', onClickTitle); + if (!params.closed) { + this.closed = false; + } + } + if (params.autoPlace) { + if (Common.isUndefined(params.parent)) { + if (autoPlaceVirgin) { + autoPlaceContainer = document.createElement('div'); + dom.addClass(autoPlaceContainer, CSS_NAMESPACE); + dom.addClass(autoPlaceContainer, GUI.CLASS_AUTO_PLACE_CONTAINER); + document.body.appendChild(autoPlaceContainer); + autoPlaceVirgin = false; + } + autoPlaceContainer.appendChild(this.domElement); + dom.addClass(this.domElement, GUI.CLASS_AUTO_PLACE); + } + if (!this.parent) { + setWidth(_this, params.width); + } + } + this.__resizeHandler = function () { + _this.onResizeDebounced(); + }; + dom.bind(window, 'resize', this.__resizeHandler); + dom.bind(this.__ul, 'webkitTransitionEnd', this.__resizeHandler); + dom.bind(this.__ul, 'transitionend', this.__resizeHandler); + dom.bind(this.__ul, 'oTransitionEnd', this.__resizeHandler); + this.onResize(); + if (params.resizable) { + addResizeHandle(this); + } + saveToLocalStorage = function saveToLocalStorage() { + if (SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(_this, 'isLocal')) === 'true') { + localStorage.setItem(getLocalStorageHash(_this, 'gui'), JSON.stringify(_this.getSaveObject())); + } + }; + this.saveToLocalStorageIfPossible = saveToLocalStorage; + function resetWidth() { + var root = _this.getRoot(); + root.width += 1; + Common.defer(function () { + root.width -= 1; + }); + } + if (!params.parent) { + resetWidth(); + } +}; +GUI.toggleHide = function () { + hide = !hide; + Common.each(hideableGuis, function (gui) { + gui.domElement.style.display = hide ? 'none' : ''; + }); +}; +GUI.CLASS_AUTO_PLACE = 'a'; +GUI.CLASS_AUTO_PLACE_CONTAINER = 'ac'; +GUI.CLASS_MAIN = 'main'; +GUI.CLASS_CONTROLLER_ROW = 'cr'; +GUI.CLASS_TOO_TALL = 'taller-than-window'; +GUI.CLASS_CLOSED = 'closed'; +GUI.CLASS_CLOSE_BUTTON = 'close-button'; +GUI.CLASS_CLOSE_TOP = 'close-top'; +GUI.CLASS_CLOSE_BOTTOM = 'close-bottom'; +GUI.CLASS_DRAG = 'drag'; +GUI.DEFAULT_WIDTH = 245; +GUI.TEXT_CLOSED = 'Close Controls'; +GUI.TEXT_OPEN = 'Open Controls'; +GUI._keydownHandler = function (e) { + if (document.activeElement.type !== 'text' && (e.which === HIDE_KEY_CODE || e.keyCode === HIDE_KEY_CODE)) { + GUI.toggleHide(); + } +}; +dom.bind(window, 'keydown', GUI._keydownHandler, false); +Common.extend(GUI.prototype, +{ + add: function add(object, property) { + return _add(this, object, property, { + factoryArgs: Array.prototype.slice.call(arguments, 2) + }); + }, + addColor: function addColor(object, property) { + return _add(this, object, property, { + color: true + }); + }, + remove: function remove(controller) { + this.__ul.removeChild(controller.__li); + this.__controllers.splice(this.__controllers.indexOf(controller), 1); + var _this = this; + Common.defer(function () { + _this.onResize(); + }); + }, + destroy: function destroy() { + if (this.parent) { + throw new Error('Only the root GUI should be removed with .destroy(). ' + 'For subfolders, use gui.removeFolder(folder) instead.'); + } + if (this.autoPlace) { + autoPlaceContainer.removeChild(this.domElement); + } + var _this = this; + Common.each(this.__folders, function (subfolder) { + _this.removeFolder(subfolder); + }); + dom.unbind(window, 'keydown', GUI._keydownHandler, false); + removeListeners(this); + }, + addFolder: function addFolder(name) { + if (this.__folders[name] !== undefined) { + throw new Error('You already have a folder in this GUI by the' + ' name "' + name + '"'); + } + var newGuiParams = { name: name, parent: this }; + newGuiParams.autoPlace = this.autoPlace; + if (this.load && + this.load.folders && + this.load.folders[name]) { + newGuiParams.closed = this.load.folders[name].closed; + newGuiParams.load = this.load.folders[name]; + } + var gui = new GUI(newGuiParams); + this.__folders[name] = gui; + var li = addRow(this, gui.domElement); + dom.addClass(li, 'folder'); + return gui; + }, + removeFolder: function removeFolder(folder) { + this.__ul.removeChild(folder.domElement.parentElement); + delete this.__folders[folder.name]; + if (this.load && + this.load.folders && + this.load.folders[folder.name]) { + delete this.load.folders[folder.name]; + } + removeListeners(folder); + var _this = this; + Common.each(folder.__folders, function (subfolder) { + folder.removeFolder(subfolder); + }); + Common.defer(function () { + _this.onResize(); + }); + }, + open: function open() { + this.closed = false; + }, + close: function close() { + this.closed = true; + }, + hide: function hide() { + this.domElement.style.display = 'none'; + }, + show: function show() { + this.domElement.style.display = ''; + }, + onResize: function onResize() { + var root = this.getRoot(); + if (root.scrollable) { + var top = dom.getOffset(root.__ul).top; + var h = 0; + Common.each(root.__ul.childNodes, function (node) { + if (!(root.autoPlace && node === root.__save_row)) { + h += dom.getHeight(node); + } + }); + if (window.innerHeight - top - CLOSE_BUTTON_HEIGHT < h) { + dom.addClass(root.domElement, GUI.CLASS_TOO_TALL); + root.__ul.style.height = window.innerHeight - top - CLOSE_BUTTON_HEIGHT + 'px'; + } else { + dom.removeClass(root.domElement, GUI.CLASS_TOO_TALL); + root.__ul.style.height = 'auto'; + } + } + if (root.__resize_handle) { + Common.defer(function () { + root.__resize_handle.style.height = root.__ul.offsetHeight + 'px'; + }); + } + if (root.__closeButton) { + root.__closeButton.style.width = root.width + 'px'; + } + }, + onResizeDebounced: Common.debounce(function () { + this.onResize(); + }, 50), + remember: function remember() { + if (Common.isUndefined(SAVE_DIALOGUE)) { + SAVE_DIALOGUE = new CenteredDiv(); + SAVE_DIALOGUE.domElement.innerHTML = saveDialogContents; + } + if (this.parent) { + throw new Error('You can only call remember on a top level GUI.'); + } + var _this = this; + Common.each(Array.prototype.slice.call(arguments), function (object) { + if (_this.__rememberedObjects.length === 0) { + addSaveMenu(_this); + } + if (_this.__rememberedObjects.indexOf(object) === -1) { + _this.__rememberedObjects.push(object); + } + }); + if (this.autoPlace) { + setWidth(this, this.width); + } + }, + getRoot: function getRoot() { + var gui = this; + while (gui.parent) { + gui = gui.parent; + } + return gui; + }, + getSaveObject: function getSaveObject() { + var toReturn = this.load; + toReturn.closed = this.closed; + if (this.__rememberedObjects.length > 0) { + toReturn.preset = this.preset; + if (!toReturn.remembered) { + toReturn.remembered = {}; + } + toReturn.remembered[this.preset] = getCurrentPreset(this); + } + toReturn.folders = {}; + Common.each(this.__folders, function (element, key) { + toReturn.folders[key] = element.getSaveObject(); + }); + return toReturn; + }, + save: function save() { + if (!this.load.remembered) { + this.load.remembered = {}; + } + this.load.remembered[this.preset] = getCurrentPreset(this); + markPresetModified(this, false); + this.saveToLocalStorageIfPossible(); + }, + saveAs: function saveAs(presetName) { + if (!this.load.remembered) { + this.load.remembered = {}; + this.load.remembered[DEFAULT_DEFAULT_PRESET_NAME] = getCurrentPreset(this, true); + } + this.load.remembered[presetName] = getCurrentPreset(this); + this.preset = presetName; + addPresetOption(this, presetName, true); + this.saveToLocalStorageIfPossible(); + }, + revert: function revert(gui) { + Common.each(this.__controllers, function (controller) { + if (!this.getRoot().load.remembered) { + controller.setValue(controller.initialValue); + } else { + recallSavedValue(gui || this.getRoot(), controller); + } + if (controller.__onFinishChange) { + controller.__onFinishChange.call(controller, controller.getValue()); + } + }, this); + Common.each(this.__folders, function (folder) { + folder.revert(folder); + }); + if (!gui) { + markPresetModified(this.getRoot(), false); + } + }, + listen: function listen(controller) { + var init = this.__listening.length === 0; + this.__listening.push(controller); + if (init) { + updateDisplays(this.__listening); + } + }, + updateDisplay: function updateDisplay() { + Common.each(this.__controllers, function (controller) { + controller.updateDisplay(); + }); + Common.each(this.__folders, function (folder) { + folder.updateDisplay(); + }); + } +}); +function addRow(gui, newDom, liBefore) { + var li = document.createElement('li'); + if (newDom) { + li.appendChild(newDom); + } + if (liBefore) { + gui.__ul.insertBefore(li, liBefore); + } else { + gui.__ul.appendChild(li); + } + gui.onResize(); + return li; +} +function removeListeners(gui) { + dom.unbind(window, 'resize', gui.__resizeHandler); + if (gui.saveToLocalStorageIfPossible) { + dom.unbind(window, 'unload', gui.saveToLocalStorageIfPossible); + } +} +function markPresetModified(gui, modified) { + var opt = gui.__preset_select[gui.__preset_select.selectedIndex]; + if (modified) { + opt.innerHTML = opt.value + '*'; + } else { + opt.innerHTML = opt.value; + } +} +function augmentController(gui, li, controller) { + controller.__li = li; + controller.__gui = gui; + Common.extend(controller, { + options: function options(_options) { + if (arguments.length > 1) { + var nextSibling = controller.__li.nextElementSibling; + controller.remove(); + return _add(gui, controller.object, controller.property, { + before: nextSibling, + factoryArgs: [Common.toArray(arguments)] + }); + } + if (Common.isArray(_options) || Common.isObject(_options)) { + var _nextSibling = controller.__li.nextElementSibling; + controller.remove(); + return _add(gui, controller.object, controller.property, { + before: _nextSibling, + factoryArgs: [_options] + }); + } + }, + name: function name(_name) { + controller.__li.firstElementChild.firstElementChild.innerHTML = _name; + return controller; + }, + listen: function listen() { + controller.__gui.listen(controller); + return controller; + }, + remove: function remove() { + controller.__gui.remove(controller); + return controller; + } + }); + if (controller instanceof NumberControllerSlider) { + var box = new NumberControllerBox(controller.object, controller.property, { min: controller.__min, max: controller.__max, step: controller.__step }); + Common.each(['updateDisplay', 'onChange', 'onFinishChange', 'step', 'min', 'max'], function (method) { + var pc = controller[method]; + var pb = box[method]; + controller[method] = box[method] = function () { + var args = Array.prototype.slice.call(arguments); + pb.apply(box, args); + return pc.apply(controller, args); + }; + }); + dom.addClass(li, 'has-slider'); + controller.domElement.insertBefore(box.domElement, controller.domElement.firstElementChild); + } else if (controller instanceof NumberControllerBox) { + var r = function r(returned) { + if (Common.isNumber(controller.__min) && Common.isNumber(controller.__max)) { + var oldName = controller.__li.firstElementChild.firstElementChild.innerHTML; + var wasListening = controller.__gui.__listening.indexOf(controller) > -1; + controller.remove(); + var newController = _add(gui, controller.object, controller.property, { + before: controller.__li.nextElementSibling, + factoryArgs: [controller.__min, controller.__max, controller.__step] + }); + newController.name(oldName); + if (wasListening) newController.listen(); + return newController; + } + return returned; + }; + controller.min = Common.compose(r, controller.min); + controller.max = Common.compose(r, controller.max); + } else if (controller instanceof BooleanController) { + dom.bind(li, 'click', function () { + dom.fakeEvent(controller.__checkbox, 'click'); + }); + dom.bind(controller.__checkbox, 'click', function (e) { + e.stopPropagation(); + }); + } else if (controller instanceof FunctionController) { + dom.bind(li, 'click', function () { + dom.fakeEvent(controller.__button, 'click'); + }); + dom.bind(li, 'mouseover', function () { + dom.addClass(controller.__button, 'hover'); + }); + dom.bind(li, 'mouseout', function () { + dom.removeClass(controller.__button, 'hover'); + }); + } else if (controller instanceof ColorController) { + dom.addClass(li, 'color'); + controller.updateDisplay = Common.compose(function (val) { + li.style.borderLeftColor = controller.__color.toString(); + return val; + }, controller.updateDisplay); + controller.updateDisplay(); + } + controller.setValue = Common.compose(function (val) { + if (gui.getRoot().__preset_select && controller.isModified()) { + markPresetModified(gui.getRoot(), true); + } + return val; + }, controller.setValue); +} +function recallSavedValue(gui, controller) { + var root = gui.getRoot(); + var matchedIndex = root.__rememberedObjects.indexOf(controller.object); + if (matchedIndex !== -1) { + var controllerMap = root.__rememberedObjectIndecesToControllers[matchedIndex]; + if (controllerMap === undefined) { + controllerMap = {}; + root.__rememberedObjectIndecesToControllers[matchedIndex] = controllerMap; + } + controllerMap[controller.property] = controller; + if (root.load && root.load.remembered) { + var presetMap = root.load.remembered; + var preset = void 0; + if (presetMap[gui.preset]) { + preset = presetMap[gui.preset]; + } else if (presetMap[DEFAULT_DEFAULT_PRESET_NAME]) { + preset = presetMap[DEFAULT_DEFAULT_PRESET_NAME]; + } else { + return; + } + if (preset[matchedIndex] && preset[matchedIndex][controller.property] !== undefined) { + var value = preset[matchedIndex][controller.property]; + controller.initialValue = value; + controller.setValue(value); + } + } + } +} +function _add(gui, object, property, params) { + if (object[property] === undefined) { + throw new Error('Object "' + object + '" has no property "' + property + '"'); + } + var controller = void 0; + if (params.color) { + controller = new ColorController(object, property); + } else { + var factoryArgs = [object, property].concat(params.factoryArgs); + controller = ControllerFactory.apply(gui, factoryArgs); + } + if (params.before instanceof Controller) { + params.before = params.before.__li; + } + recallSavedValue(gui, controller); + dom.addClass(controller.domElement, 'c'); + var name = document.createElement('span'); + dom.addClass(name, 'property-name'); + name.innerHTML = controller.property; + var container = document.createElement('div'); + container.appendChild(name); + container.appendChild(controller.domElement); + var li = addRow(gui, container, params.before); + dom.addClass(li, GUI.CLASS_CONTROLLER_ROW); + if (controller instanceof ColorController) { + dom.addClass(li, 'color'); + } else { + dom.addClass(li, _typeof(controller.getValue())); + } + augmentController(gui, li, controller); + gui.__controllers.push(controller); + return controller; +} +function getLocalStorageHash(gui, key) { + return document.location.href + '.' + key; +} +function addPresetOption(gui, name, setSelected) { + var opt = document.createElement('option'); + opt.innerHTML = name; + opt.value = name; + gui.__preset_select.appendChild(opt); + if (setSelected) { + gui.__preset_select.selectedIndex = gui.__preset_select.length - 1; + } +} +function showHideExplain(gui, explain) { + explain.style.display = gui.useLocalStorage ? 'block' : 'none'; +} +function addSaveMenu(gui) { + var div = gui.__save_row = document.createElement('li'); + dom.addClass(gui.domElement, 'has-save'); + gui.__ul.insertBefore(div, gui.__ul.firstChild); + dom.addClass(div, 'save-row'); + var gears = document.createElement('span'); + gears.innerHTML = ' '; + dom.addClass(gears, 'button gears'); + var button = document.createElement('span'); + button.innerHTML = 'Save'; + dom.addClass(button, 'button'); + dom.addClass(button, 'save'); + var button2 = document.createElement('span'); + button2.innerHTML = 'New'; + dom.addClass(button2, 'button'); + dom.addClass(button2, 'save-as'); + var button3 = document.createElement('span'); + button3.innerHTML = 'Revert'; + dom.addClass(button3, 'button'); + dom.addClass(button3, 'revert'); + var select = gui.__preset_select = document.createElement('select'); + if (gui.load && gui.load.remembered) { + Common.each(gui.load.remembered, function (value, key) { + addPresetOption(gui, key, key === gui.preset); + }); + } else { + addPresetOption(gui, DEFAULT_DEFAULT_PRESET_NAME, false); + } + dom.bind(select, 'change', function () { + for (var index = 0; index < gui.__preset_select.length; index++) { + gui.__preset_select[index].innerHTML = gui.__preset_select[index].value; + } + gui.preset = this.value; + }); + div.appendChild(select); + div.appendChild(gears); + div.appendChild(button); + div.appendChild(button2); + div.appendChild(button3); + if (SUPPORTS_LOCAL_STORAGE) { + var explain = document.getElementById('dg-local-explain'); + var localStorageCheckBox = document.getElementById('dg-local-storage'); + var saveLocally = document.getElementById('dg-save-locally'); + saveLocally.style.display = 'block'; + if (localStorage.getItem(getLocalStorageHash(gui, 'isLocal')) === 'true') { + localStorageCheckBox.setAttribute('checked', 'checked'); + } + showHideExplain(gui, explain); + dom.bind(localStorageCheckBox, 'change', function () { + gui.useLocalStorage = !gui.useLocalStorage; + showHideExplain(gui, explain); + }); + } + var newConstructorTextArea = document.getElementById('dg-new-constructor'); + dom.bind(newConstructorTextArea, 'keydown', function (e) { + if (e.metaKey && (e.which === 67 || e.keyCode === 67)) { + SAVE_DIALOGUE.hide(); + } + }); + dom.bind(gears, 'click', function () { + newConstructorTextArea.innerHTML = JSON.stringify(gui.getSaveObject(), undefined, 2); + SAVE_DIALOGUE.show(); + newConstructorTextArea.focus(); + newConstructorTextArea.select(); + }); + dom.bind(button, 'click', function () { + gui.save(); + }); + dom.bind(button2, 'click', function () { + var presetName = prompt('Enter a new preset name.'); + if (presetName) { + gui.saveAs(presetName); + } + }); + dom.bind(button3, 'click', function () { + gui.revert(); + }); +} +function addResizeHandle(gui) { + var pmouseX = void 0; + gui.__resize_handle = document.createElement('div'); + Common.extend(gui.__resize_handle.style, { + width: '6px', + marginLeft: '-3px', + height: '200px', + cursor: 'ew-resize', + position: 'absolute' + }); + function drag(e) { + e.preventDefault(); + gui.width += pmouseX - e.clientX; + gui.onResize(); + pmouseX = e.clientX; + return false; + } + function dragStop() { + dom.removeClass(gui.__closeButton, GUI.CLASS_DRAG); + dom.unbind(window, 'mousemove', drag); + dom.unbind(window, 'mouseup', dragStop); + } + function dragStart(e) { + e.preventDefault(); + pmouseX = e.clientX; + dom.addClass(gui.__closeButton, GUI.CLASS_DRAG); + dom.bind(window, 'mousemove', drag); + dom.bind(window, 'mouseup', dragStop); + return false; + } + dom.bind(gui.__resize_handle, 'mousedown', dragStart); + dom.bind(gui.__closeButton, 'mousedown', dragStart); + gui.domElement.insertBefore(gui.__resize_handle, gui.domElement.firstElementChild); +} +function setWidth(gui, w) { + gui.domElement.style.width = w + 'px'; + if (gui.__save_row && gui.autoPlace) { + gui.__save_row.style.width = w + 'px'; + } + if (gui.__closeButton) { + gui.__closeButton.style.width = w + 'px'; + } +} +function getCurrentPreset(gui, useInitialValues) { + var toReturn = {}; + Common.each(gui.__rememberedObjects, function (val, index) { + var savedValues = {}; + var controllerMap = gui.__rememberedObjectIndecesToControllers[index]; + Common.each(controllerMap, function (controller, property) { + savedValues[property] = useInitialValues ? controller.initialValue : controller.getValue(); + }); + toReturn[index] = savedValues; + }); + return toReturn; +} +function setPresetSelectIndex(gui) { + for (var index = 0; index < gui.__preset_select.length; index++) { + if (gui.__preset_select[index].value === gui.preset) { + gui.__preset_select.selectedIndex = index; + } + } +} +function updateDisplays(controllerArray) { + if (controllerArray.length !== 0) { + requestAnimationFrame$1.call(window, function () { + updateDisplays(controllerArray); + }); + } + Common.each(controllerArray, function (c) { + c.updateDisplay(); + }); +} + +var color = { + Color: Color, + math: ColorMath, + interpret: interpret +}; +var controllers = { + Controller: Controller, + BooleanController: BooleanController, + OptionController: OptionController, + StringController: StringController, + NumberController: NumberController, + NumberControllerBox: NumberControllerBox, + NumberControllerSlider: NumberControllerSlider, + FunctionController: FunctionController, + ColorController: ColorController +}; +var dom$1 = { dom: dom }; +var gui = { GUI: GUI }; +var GUI$1 = GUI; +var index = { + color: color, + controllers: controllers, + dom: dom$1, + gui: gui, + GUI: GUI$1 +}; + +exports.color = color; +exports.controllers = controllers; +exports.dom = dom$1; +exports.gui = gui; +exports.GUI = GUI$1; +exports['default'] = index; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=dat.gui.js.map diff --git a/01_Code/physical_computing_interface/simulation/lib/dat.gui.module.js b/01_Code/physical_computing_interface/simulation/lib/dat.gui.module.js new file mode 100644 index 0000000000000000000000000000000000000000..de2a05381c424fdb6f795aa59f28b3f86a7d3bb7 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/dat.gui.module.js @@ -0,0 +1,3574 @@ +/** + * dat-gui JavaScript Controller Library + * http://code.google.com/p/dat-gui + * + * Copyright 2011 Data Arts Team, Google Creative Lab + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + +function ___$insertStyle( css ) { + + if ( ! css ) { + + return; + + } + if ( typeof window === 'undefined' ) { + + return; + + } + + var style = document.createElement( 'style' ); + + style.setAttribute( 'type', 'text/css' ); + style.innerHTML = css; + document.head.appendChild( style ); + + return css; + +} + +function colorToString( color, forceCSSHex ) { + + var colorFormat = color.__state.conversionName.toString(); + var r = Math.round( color.r ); + var g = Math.round( color.g ); + var b = Math.round( color.b ); + var a = color.a; + var h = Math.round( color.h ); + var s = color.s.toFixed( 1 ); + var v = color.v.toFixed( 1 ); + if ( forceCSSHex || colorFormat === 'THREE_CHAR_HEX' || colorFormat === 'SIX_CHAR_HEX' ) { + + var str = color.hex.toString( 16 ); + while ( str.length < 6 ) { + + str = '0' + str; + + } + return '#' + str; + + } else if ( colorFormat === 'CSS_RGB' ) { + + return 'rgb(' + r + ',' + g + ',' + b + ')'; + + } else if ( colorFormat === 'CSS_RGBA' ) { + + return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; + + } else if ( colorFormat === 'HEX' ) { + + return '0x' + color.hex.toString( 16 ); + + } else if ( colorFormat === 'RGB_ARRAY' ) { + + return '[' + r + ',' + g + ',' + b + ']'; + + } else if ( colorFormat === 'RGBA_ARRAY' ) { + + return '[' + r + ',' + g + ',' + b + ',' + a + ']'; + + } else if ( colorFormat === 'RGB_OBJ' ) { + + return '{r:' + r + ',g:' + g + ',b:' + b + '}'; + + } else if ( colorFormat === 'RGBA_OBJ' ) { + + return '{r:' + r + ',g:' + g + ',b:' + b + ',a:' + a + '}'; + + } else if ( colorFormat === 'HSV_OBJ' ) { + + return '{h:' + h + ',s:' + s + ',v:' + v + '}'; + + } else if ( colorFormat === 'HSVA_OBJ' ) { + + return '{h:' + h + ',s:' + s + ',v:' + v + ',a:' + a + '}'; + + } + return 'unknown format'; + +} + +var ARR_EACH = Array.prototype.forEach; +var ARR_SLICE = Array.prototype.slice; +var Common = { + BREAK: {}, + extend: function extend( target ) { + + this.each( ARR_SLICE.call( arguments, 1 ), function ( obj ) { + + var keys = this.isObject( obj ) ? Object.keys( obj ) : []; + keys.forEach( function ( key ) { + + if ( ! this.isUndefined( obj[ key ] ) ) { + + target[ key ] = obj[ key ]; + + } + + }.bind( this ) ); + + }, this ); + return target; + + }, + defaults: function defaults( target ) { + + this.each( ARR_SLICE.call( arguments, 1 ), function ( obj ) { + + var keys = this.isObject( obj ) ? Object.keys( obj ) : []; + keys.forEach( function ( key ) { + + if ( this.isUndefined( target[ key ] ) ) { + + target[ key ] = obj[ key ]; + + } + + }.bind( this ) ); + + }, this ); + return target; + + }, + compose: function compose() { + + var toCall = ARR_SLICE.call( arguments ); + return function () { + + var args = ARR_SLICE.call( arguments ); + for ( var i = toCall.length - 1; i >= 0; i -- ) { + + args = [ toCall[ i ].apply( this, args ) ]; + + } + return args[ 0 ]; + + }; + + }, + each: function each( obj, itr, scope ) { + + if ( ! obj ) { + + return; + + } + if ( ARR_EACH && obj.forEach && obj.forEach === ARR_EACH ) { + + obj.forEach( itr, scope ); + + } else if ( obj.length === obj.length + 0 ) { + + var key = void 0; + var l = void 0; + for ( key = 0, l = obj.length; key < l; key ++ ) { + + if ( key in obj && itr.call( scope, obj[ key ], key ) === this.BREAK ) { + + return; + + } + + } + + } else { + + for ( var _key in obj ) { + + if ( itr.call( scope, obj[ _key ], _key ) === this.BREAK ) { + + return; + + } + + } + + } + + }, + defer: function defer( fnc ) { + + setTimeout( fnc, 0 ); + + }, + debounce: function debounce( func, threshold, callImmediately ) { + + var timeout = void 0; + return function () { + + var obj = this; + var args = arguments; + function delayed() { + + timeout = null; + if ( ! callImmediately ) func.apply( obj, args ); + + } + var callNow = callImmediately || ! timeout; + clearTimeout( timeout ); + timeout = setTimeout( delayed, threshold ); + if ( callNow ) { + + func.apply( obj, args ); + + } + + }; + + }, + toArray: function toArray( obj ) { + + if ( obj.toArray ) return obj.toArray(); + return ARR_SLICE.call( obj ); + + }, + isUndefined: function isUndefined( obj ) { + + return obj === undefined; + + }, + isNull: function isNull( obj ) { + + return obj === null; + + }, + isNaN: function ( _isNaN ) { + + function isNaN() { + + return _isNaN.apply( this, arguments ); + + } + isNaN.toString = function () { + + return _isNaN.toString(); + + }; + return isNaN; + + }( function ( obj ) { + + return isNaN( obj ); + + } ), + isArray: Array.isArray || function ( obj ) { + + return obj.constructor === Array; + + }, + isObject: function isObject( obj ) { + + return obj === Object( obj ); + + }, + isNumber: function isNumber( obj ) { + + return obj === obj + 0; + + }, + isString: function isString( obj ) { + + return obj === obj + ''; + + }, + isBoolean: function isBoolean( obj ) { + + return obj === false || obj === true; + + }, + isFunction: function isFunction( obj ) { + + return Object.prototype.toString.call( obj ) === '[object Function]'; + + } +}; + +var INTERPRETATIONS = [ + { + litmus: Common.isString, + conversions: { + THREE_CHAR_HEX: { + read: function read( original ) { + + var test = original.match( /^#([A-F0-9])([A-F0-9])([A-F0-9])$/i ); + if ( test === null ) { + + return false; + + } + return { + space: 'HEX', + hex: parseInt( '0x' + test[ 1 ].toString() + test[ 1 ].toString() + test[ 2 ].toString() + test[ 2 ].toString() + test[ 3 ].toString() + test[ 3 ].toString(), 0 ) + }; + + }, + write: colorToString + }, + SIX_CHAR_HEX: { + read: function read( original ) { + + var test = original.match( /^#([A-F0-9]{6})$/i ); + if ( test === null ) { + + return false; + + } + return { + space: 'HEX', + hex: parseInt( '0x' + test[ 1 ].toString(), 0 ) + }; + + }, + write: colorToString + }, + CSS_RGB: { + read: function read( original ) { + + var test = original.match( /^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/ ); + if ( test === null ) { + + return false; + + } + return { + space: 'RGB', + r: parseFloat( test[ 1 ] ), + g: parseFloat( test[ 2 ] ), + b: parseFloat( test[ 3 ] ) + }; + + }, + write: colorToString + }, + CSS_RGBA: { + read: function read( original ) { + + var test = original.match( /^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/ ); + if ( test === null ) { + + return false; + + } + return { + space: 'RGB', + r: parseFloat( test[ 1 ] ), + g: parseFloat( test[ 2 ] ), + b: parseFloat( test[ 3 ] ), + a: parseFloat( test[ 4 ] ) + }; + + }, + write: colorToString + } + } + }, + { + litmus: Common.isNumber, + conversions: { + HEX: { + read: function read( original ) { + + return { + space: 'HEX', + hex: original, + conversionName: 'HEX' + }; + + }, + write: function write( color ) { + + return color.hex; + + } + } + } + }, + { + litmus: Common.isArray, + conversions: { + RGB_ARRAY: { + read: function read( original ) { + + if ( original.length !== 3 ) { + + return false; + + } + return { + space: 'RGB', + r: original[ 0 ], + g: original[ 1 ], + b: original[ 2 ] + }; + + }, + write: function write( color ) { + + return [ color.r, color.g, color.b ]; + + } + }, + RGBA_ARRAY: { + read: function read( original ) { + + if ( original.length !== 4 ) return false; + return { + space: 'RGB', + r: original[ 0 ], + g: original[ 1 ], + b: original[ 2 ], + a: original[ 3 ] + }; + + }, + write: function write( color ) { + + return [ color.r, color.g, color.b, color.a ]; + + } + } + } + }, + { + litmus: Common.isObject, + conversions: { + RGBA_OBJ: { + read: function read( original ) { + + if ( Common.isNumber( original.r ) && Common.isNumber( original.g ) && Common.isNumber( original.b ) && Common.isNumber( original.a ) ) { + + return { + space: 'RGB', + r: original.r, + g: original.g, + b: original.b, + a: original.a + }; + + } + return false; + + }, + write: function write( color ) { + + return { + r: color.r, + g: color.g, + b: color.b, + a: color.a + }; + + } + }, + RGB_OBJ: { + read: function read( original ) { + + if ( Common.isNumber( original.r ) && Common.isNumber( original.g ) && Common.isNumber( original.b ) ) { + + return { + space: 'RGB', + r: original.r, + g: original.g, + b: original.b + }; + + } + return false; + + }, + write: function write( color ) { + + return { + r: color.r, + g: color.g, + b: color.b + }; + + } + }, + HSVA_OBJ: { + read: function read( original ) { + + if ( Common.isNumber( original.h ) && Common.isNumber( original.s ) && Common.isNumber( original.v ) && Common.isNumber( original.a ) ) { + + return { + space: 'HSV', + h: original.h, + s: original.s, + v: original.v, + a: original.a + }; + + } + return false; + + }, + write: function write( color ) { + + return { + h: color.h, + s: color.s, + v: color.v, + a: color.a + }; + + } + }, + HSV_OBJ: { + read: function read( original ) { + + if ( Common.isNumber( original.h ) && Common.isNumber( original.s ) && Common.isNumber( original.v ) ) { + + return { + space: 'HSV', + h: original.h, + s: original.s, + v: original.v + }; + + } + return false; + + }, + write: function write( color ) { + + return { + h: color.h, + s: color.s, + v: color.v + }; + + } + } + } + } ]; +var result = void 0; +var toReturn = void 0; +var interpret = function interpret() { + + toReturn = false; + var original = arguments.length > 1 ? Common.toArray( arguments ) : arguments[ 0 ]; + Common.each( INTERPRETATIONS, function ( family ) { + + if ( family.litmus( original ) ) { + + Common.each( family.conversions, function ( conversion, conversionName ) { + + result = conversion.read( original ); + if ( toReturn === false && result !== false ) { + + toReturn = result; + result.conversionName = conversionName; + result.conversion = conversion; + return Common.BREAK; + + } + + } ); + return Common.BREAK; + + } + + } ); + return toReturn; + +}; + +var tmpComponent = void 0; +var ColorMath = { + hsv_to_rgb: function hsv_to_rgb( h, s, v ) { + + var hi = Math.floor( h / 60 ) % 6; + var f = h / 60 - Math.floor( h / 60 ); + var p = v * ( 1.0 - s ); + var q = v * ( 1.0 - f * s ); + var t = v * ( 1.0 - ( 1.0 - f ) * s ); + var c = [[ v, t, p ], [ q, v, p ], [ p, v, t ], [ p, q, v ], [ t, p, v ], [ v, p, q ]][ hi ]; + return { + r: c[ 0 ] * 255, + g: c[ 1 ] * 255, + b: c[ 2 ] * 255 + }; + + }, + rgb_to_hsv: function rgb_to_hsv( r, g, b ) { + + var min = Math.min( r, g, b ); + var max = Math.max( r, g, b ); + var delta = max - min; + var h = void 0; + var s = void 0; + if ( max !== 0 ) { + + s = delta / max; + + } else { + + return { + h: NaN, + s: 0, + v: 0 + }; + + } + if ( r === max ) { + + h = ( g - b ) / delta; + + } else if ( g === max ) { + + h = 2 + ( b - r ) / delta; + + } else { + + h = 4 + ( r - g ) / delta; + + } + h /= 6; + if ( h < 0 ) { + + h += 1; + + } + return { + h: h * 360, + s: s, + v: max / 255 + }; + + }, + rgb_to_hex: function rgb_to_hex( r, g, b ) { + + var hex = this.hex_with_component( 0, 2, r ); + hex = this.hex_with_component( hex, 1, g ); + hex = this.hex_with_component( hex, 0, b ); + return hex; + + }, + component_from_hex: function component_from_hex( hex, componentIndex ) { + + return hex >> componentIndex * 8 & 0xFF; + + }, + hex_with_component: function hex_with_component( hex, componentIndex, value ) { + + return value << ( tmpComponent = componentIndex * 8 ) | hex & ~ ( 0xFF << tmpComponent ); + + } +}; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function ( obj ) { + + return typeof obj; + +} : function ( obj ) { + + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + +}; + + + + + + + + + + + +var classCallCheck = function ( instance, Constructor ) { + + if ( ! ( instance instanceof Constructor ) ) { + + throw new TypeError( "Cannot call a class as a function" ); + + } + +}; + +var createClass = function () { + + function defineProperties( target, props ) { + + for ( var i = 0; i < props.length; i ++ ) { + + var descriptor = props[ i ]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ( "value" in descriptor ) descriptor.writable = true; + Object.defineProperty( target, descriptor.key, descriptor ); + + } + + } + + return function ( Constructor, protoProps, staticProps ) { + + if ( protoProps ) defineProperties( Constructor.prototype, protoProps ); + if ( staticProps ) defineProperties( Constructor, staticProps ); + return Constructor; + + }; + +}(); + + + + + + + +var get = function get( object, property, receiver ) { + + if ( object === null ) object = Function.prototype; + var desc = Object.getOwnPropertyDescriptor( object, property ); + + if ( desc === undefined ) { + + var parent = Object.getPrototypeOf( object ); + + if ( parent === null ) { + + return undefined; + + } else { + + return get( parent, property, receiver ); + + } + + } else if ( "value" in desc ) { + + return desc.value; + + } else { + + var getter = desc.get; + + if ( getter === undefined ) { + + return undefined; + + } + + return getter.call( receiver ); + + } + +}; + +var inherits = function ( subClass, superClass ) { + + if ( typeof superClass !== "function" && superClass !== null ) { + + throw new TypeError( "Super expression must either be null or a function, not " + typeof superClass ); + + } + + subClass.prototype = Object.create( superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + } ); + if ( superClass ) Object.setPrototypeOf ? Object.setPrototypeOf( subClass, superClass ) : subClass.__proto__ = superClass; + +}; + + + + + + + + + + + +var possibleConstructorReturn = function ( self, call ) { + + if ( ! self ) { + + throw new ReferenceError( "this hasn't been initialised - super() hasn't been called" ); + + } + + return call && ( typeof call === "object" || typeof call === "function" ) ? call : self; + +}; + +var Color = function () { + + function Color() { + + classCallCheck( this, Color ); + this.__state = interpret.apply( this, arguments ); + if ( this.__state === false ) { + + throw new Error( 'Failed to interpret color arguments' ); + + } + this.__state.a = this.__state.a || 1; + + } + createClass( Color, [ { + key: 'toString', + value: function toString() { + + return colorToString( this ); + + } + }, { + key: 'toHexString', + value: function toHexString() { + + return colorToString( this, true ); + + } + }, { + key: 'toOriginal', + value: function toOriginal() { + + return this.__state.conversion.write( this ); + + } + } ] ); + return Color; + +}(); +function defineRGBComponent( target, component, componentHexIndex ) { + + Object.defineProperty( target, component, { + get: function get$$1() { + + if ( this.__state.space === 'RGB' ) { + + return this.__state[ component ]; + + } + Color.recalculateRGB( this, component, componentHexIndex ); + return this.__state[ component ]; + + }, + set: function set$$1( v ) { + + if ( this.__state.space !== 'RGB' ) { + + Color.recalculateRGB( this, component, componentHexIndex ); + this.__state.space = 'RGB'; + + } + this.__state[ component ] = v; + + } + } ); + +} +function defineHSVComponent( target, component ) { + + Object.defineProperty( target, component, { + get: function get$$1() { + + if ( this.__state.space === 'HSV' ) { + + return this.__state[ component ]; + + } + Color.recalculateHSV( this ); + return this.__state[ component ]; + + }, + set: function set$$1( v ) { + + if ( this.__state.space !== 'HSV' ) { + + Color.recalculateHSV( this ); + this.__state.space = 'HSV'; + + } + this.__state[ component ] = v; + + } + } ); + +} +Color.recalculateRGB = function ( color, component, componentHexIndex ) { + + if ( color.__state.space === 'HEX' ) { + + color.__state[ component ] = ColorMath.component_from_hex( color.__state.hex, componentHexIndex ); + + } else if ( color.__state.space === 'HSV' ) { + + Common.extend( color.__state, ColorMath.hsv_to_rgb( color.__state.h, color.__state.s, color.__state.v ) ); + + } else { + + throw new Error( 'Corrupted color state' ); + + } + +}; +Color.recalculateHSV = function ( color ) { + + var result = ColorMath.rgb_to_hsv( color.r, color.g, color.b ); + Common.extend( color.__state, { + s: result.s, + v: result.v + } ); + if ( ! Common.isNaN( result.h ) ) { + + color.__state.h = result.h; + + } else if ( Common.isUndefined( color.__state.h ) ) { + + color.__state.h = 0; + + } + +}; +Color.COMPONENTS = [ 'r', 'g', 'b', 'h', 's', 'v', 'hex', 'a' ]; +defineRGBComponent( Color.prototype, 'r', 2 ); +defineRGBComponent( Color.prototype, 'g', 1 ); +defineRGBComponent( Color.prototype, 'b', 0 ); +defineHSVComponent( Color.prototype, 'h' ); +defineHSVComponent( Color.prototype, 's' ); +defineHSVComponent( Color.prototype, 'v' ); +Object.defineProperty( Color.prototype, 'a', { + get: function get$$1() { + + return this.__state.a; + + }, + set: function set$$1( v ) { + + this.__state.a = v; + + } +} ); +Object.defineProperty( Color.prototype, 'hex', { + get: function get$$1() { + + if ( ! this.__state.space !== 'HEX' ) { + + this.__state.hex = ColorMath.rgb_to_hex( this.r, this.g, this.b ); + + } + return this.__state.hex; + + }, + set: function set$$1( v ) { + + this.__state.space = 'HEX'; + this.__state.hex = v; + + } +} ); + +var Controller = function () { + + function Controller( object, property ) { + + classCallCheck( this, Controller ); + this.initialValue = object[ property ]; + this.domElement = document.createElement( 'div' ); + this.object = object; + this.property = property; + this.__onChange = undefined; + this.__onFinishChange = undefined; + + } + createClass( Controller, [ { + key: 'onChange', + value: function onChange( fnc ) { + + this.__onChange = fnc; + return this; + + } + }, { + key: 'onFinishChange', + value: function onFinishChange( fnc ) { + + this.__onFinishChange = fnc; + return this; + + } + }, { + key: 'setValue', + value: function setValue( newValue ) { + + this.object[ this.property ] = newValue; + if ( this.__onChange ) { + + this.__onChange.call( this, newValue ); + + } + this.updateDisplay(); + return this; + + } + }, { + key: 'getValue', + value: function getValue() { + + return this.object[ this.property ]; + + } + }, { + key: 'updateDisplay', + value: function updateDisplay() { + + return this; + + } + }, { + key: 'isModified', + value: function isModified() { + + return this.initialValue !== this.getValue(); + + } + } ] ); + return Controller; + +}(); + +var EVENT_MAP = { + HTMLEvents: [ 'change' ], + MouseEvents: [ 'click', 'mousemove', 'mousedown', 'mouseup', 'mouseover' ], + KeyboardEvents: [ 'keydown' ] +}; +var EVENT_MAP_INV = {}; +Common.each( EVENT_MAP, function ( v, k ) { + + Common.each( v, function ( e ) { + + EVENT_MAP_INV[ e ] = k; + + } ); + +} ); +var CSS_VALUE_PIXELS = /(\d+(\.\d+)?)px/; +function cssValueToPixels( val ) { + + if ( val === '0' || Common.isUndefined( val ) ) { + + return 0; + + } + var match = val.match( CSS_VALUE_PIXELS ); + if ( ! Common.isNull( match ) ) { + + return parseFloat( match[ 1 ] ); + + } + return 0; + +} +var dom = { + makeSelectable: function makeSelectable( elem, selectable ) { + + if ( elem === undefined || elem.style === undefined ) return; + elem.onselectstart = selectable ? function () { + + return false; + + } : function () {}; + elem.style.MozUserSelect = selectable ? 'auto' : 'none'; + elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none'; + elem.unselectable = selectable ? 'on' : 'off'; + + }, + makeFullscreen: function makeFullscreen( elem, hor, vert ) { + + var vertical = vert; + var horizontal = hor; + if ( Common.isUndefined( horizontal ) ) { + + horizontal = true; + + } + if ( Common.isUndefined( vertical ) ) { + + vertical = true; + + } + elem.style.position = 'absolute'; + if ( horizontal ) { + + elem.style.left = 0; + elem.style.right = 0; + + } + if ( vertical ) { + + elem.style.top = 0; + elem.style.bottom = 0; + + } + + }, + fakeEvent: function fakeEvent( elem, eventType, pars, aux ) { + + var params = pars || {}; + var className = EVENT_MAP_INV[ eventType ]; + if ( ! className ) { + + throw new Error( 'Event type ' + eventType + ' not supported.' ); + + } + var evt = document.createEvent( className ); + switch ( className ) { + + case 'MouseEvents': + { + + var clientX = params.x || params.clientX || 0; + var clientY = params.y || params.clientY || 0; + evt.initMouseEvent( eventType, params.bubbles || false, params.cancelable || true, window, params.clickCount || 1, 0, + 0, + clientX, + clientY, + false, false, false, false, 0, null ); + break; + + } + case 'KeyboardEvents': + { + + var init = evt.initKeyboardEvent || evt.initKeyEvent; + Common.defaults( params, { + cancelable: true, + ctrlKey: false, + altKey: false, + shiftKey: false, + metaKey: false, + keyCode: undefined, + charCode: undefined + } ); + init( eventType, params.bubbles || false, params.cancelable, window, params.ctrlKey, params.altKey, params.shiftKey, params.metaKey, params.keyCode, params.charCode ); + break; + + } + default: + { + + evt.initEvent( eventType, params.bubbles || false, params.cancelable || true ); + break; + + } + + } + Common.defaults( evt, aux ); + elem.dispatchEvent( evt ); + + }, + bind: function bind( elem, event, func, newBool ) { + + var bool = newBool || false; + if ( elem.addEventListener ) { + + elem.addEventListener( event, func, bool ); + + } else if ( elem.attachEvent ) { + + elem.attachEvent( 'on' + event, func ); + + } + return dom; + + }, + unbind: function unbind( elem, event, func, newBool ) { + + var bool = newBool || false; + if ( elem.removeEventListener ) { + + elem.removeEventListener( event, func, bool ); + + } else if ( elem.detachEvent ) { + + elem.detachEvent( 'on' + event, func ); + + } + return dom; + + }, + addClass: function addClass( elem, className ) { + + if ( elem.className === undefined ) { + + elem.className = className; + + } else if ( elem.className !== className ) { + + var classes = elem.className.split( / +/ ); + if ( classes.indexOf( className ) === - 1 ) { + + classes.push( className ); + elem.className = classes.join( ' ' ).replace( /^\s+/, '' ).replace( /\s+$/, '' ); + + } + + } + return dom; + + }, + removeClass: function removeClass( elem, className ) { + + if ( className ) { + + if ( elem.className === className ) { + + elem.removeAttribute( 'class' ); + + } else { + + var classes = elem.className.split( / +/ ); + var index = classes.indexOf( className ); + if ( index !== - 1 ) { + + classes.splice( index, 1 ); + elem.className = classes.join( ' ' ); + + } + + } + + } else { + + elem.className = undefined; + + } + return dom; + + }, + hasClass: function hasClass( elem, className ) { + + return new RegExp( '(?:^|\\s+)' + className + '(?:\\s+|$)' ).test( elem.className ) || false; + + }, + getWidth: function getWidth( elem ) { + + var style = getComputedStyle( elem ); + return cssValueToPixels( style[ 'border-left-width' ] ) + cssValueToPixels( style[ 'border-right-width' ] ) + cssValueToPixels( style[ 'padding-left' ] ) + cssValueToPixels( style[ 'padding-right' ] ) + cssValueToPixels( style.width ); + + }, + getHeight: function getHeight( elem ) { + + var style = getComputedStyle( elem ); + return cssValueToPixels( style[ 'border-top-width' ] ) + cssValueToPixels( style[ 'border-bottom-width' ] ) + cssValueToPixels( style[ 'padding-top' ] ) + cssValueToPixels( style[ 'padding-bottom' ] ) + cssValueToPixels( style.height ); + + }, + getOffset: function getOffset( el ) { + + var elem = el; + var offset = { left: 0, top: 0 }; + if ( elem.offsetParent ) { + + do { + + offset.left += elem.offsetLeft; + offset.top += elem.offsetTop; + elem = elem.offsetParent; + + } while ( elem ); + + } + return offset; + + }, + isActive: function isActive( elem ) { + + return elem === document.activeElement && ( elem.type || elem.href ); + + } +}; + +var BooleanController = function ( _Controller ) { + + inherits( BooleanController, _Controller ); + function BooleanController( object, property ) { + + classCallCheck( this, BooleanController ); + var _this2 = possibleConstructorReturn( this, ( BooleanController.__proto__ || Object.getPrototypeOf( BooleanController ) ).call( this, object, property ) ); + var _this = _this2; + _this2.__prev = _this2.getValue(); + _this2.__checkbox = document.createElement( 'input' ); + _this2.__checkbox.setAttribute( 'type', 'checkbox' ); + function onChange() { + + _this.setValue( ! _this.__prev ); + + } + dom.bind( _this2.__checkbox, 'change', onChange, false ); + _this2.domElement.appendChild( _this2.__checkbox ); + _this2.updateDisplay(); + return _this2; + + } + createClass( BooleanController, [ { + key: 'setValue', + value: function setValue( v ) { + + var toReturn = get( BooleanController.prototype.__proto__ || Object.getPrototypeOf( BooleanController.prototype ), 'setValue', this ).call( this, v ); + if ( this.__onFinishChange ) { + + this.__onFinishChange.call( this, this.getValue() ); + + } + this.__prev = this.getValue(); + return toReturn; + + } + }, { + key: 'updateDisplay', + value: function updateDisplay() { + + if ( this.getValue() === true ) { + + this.__checkbox.setAttribute( 'checked', 'checked' ); + this.__checkbox.checked = true; + this.__prev = true; + + } else { + + this.__checkbox.checked = false; + this.__prev = false; + + } + return get( BooleanController.prototype.__proto__ || Object.getPrototypeOf( BooleanController.prototype ), 'updateDisplay', this ).call( this ); + + } + } ] ); + return BooleanController; + +}( Controller ); + +var OptionController = function ( _Controller ) { + + inherits( OptionController, _Controller ); + function OptionController( object, property, opts ) { + + classCallCheck( this, OptionController ); + var _this2 = possibleConstructorReturn( this, ( OptionController.__proto__ || Object.getPrototypeOf( OptionController ) ).call( this, object, property ) ); + var options = opts; + var _this = _this2; + _this2.__select = document.createElement( 'select' ); + if ( Common.isArray( options ) ) { + + var map = {}; + Common.each( options, function ( element ) { + + map[ element ] = element; + + } ); + options = map; + + } + Common.each( options, function ( value, key ) { + + var opt = document.createElement( 'option' ); + opt.innerHTML = key; + opt.setAttribute( 'value', value ); + _this.__select.appendChild( opt ); + + } ); + _this2.updateDisplay(); + dom.bind( _this2.__select, 'change', function () { + + var desiredValue = this.options[ this.selectedIndex ].value; + _this.setValue( desiredValue ); + + } ); + _this2.domElement.appendChild( _this2.__select ); + return _this2; + + } + createClass( OptionController, [ { + key: 'setValue', + value: function setValue( v ) { + + var toReturn = get( OptionController.prototype.__proto__ || Object.getPrototypeOf( OptionController.prototype ), 'setValue', this ).call( this, v ); + if ( this.__onFinishChange ) { + + this.__onFinishChange.call( this, this.getValue() ); + + } + return toReturn; + + } + }, { + key: 'updateDisplay', + value: function updateDisplay() { + + if ( dom.isActive( this.__select ) ) return this; + this.__select.value = this.getValue(); + return get( OptionController.prototype.__proto__ || Object.getPrototypeOf( OptionController.prototype ), 'updateDisplay', this ).call( this ); + + } + } ] ); + return OptionController; + +}( Controller ); + +var StringController = function ( _Controller ) { + + inherits( StringController, _Controller ); + function StringController( object, property ) { + + classCallCheck( this, StringController ); + var _this2 = possibleConstructorReturn( this, ( StringController.__proto__ || Object.getPrototypeOf( StringController ) ).call( this, object, property ) ); + var _this = _this2; + function onChange() { + + _this.setValue( _this.__input.value ); + + } + function onBlur() { + + if ( _this.__onFinishChange ) { + + _this.__onFinishChange.call( _this, _this.getValue() ); + + } + + } + _this2.__input = document.createElement( 'input' ); + _this2.__input.setAttribute( 'type', 'text' ); + dom.bind( _this2.__input, 'keyup', onChange ); + dom.bind( _this2.__input, 'change', onChange ); + dom.bind( _this2.__input, 'blur', onBlur ); + dom.bind( _this2.__input, 'keydown', function ( e ) { + + if ( e.keyCode === 13 ) { + + this.blur(); + + } + + } ); + _this2.updateDisplay(); + _this2.domElement.appendChild( _this2.__input ); + return _this2; + + } + createClass( StringController, [ { + key: 'updateDisplay', + value: function updateDisplay() { + + if ( ! dom.isActive( this.__input ) ) { + + this.__input.value = this.getValue(); + + } + return get( StringController.prototype.__proto__ || Object.getPrototypeOf( StringController.prototype ), 'updateDisplay', this ).call( this ); + + } + } ] ); + return StringController; + +}( Controller ); + +function numDecimals( x ) { + + var _x = x.toString(); + if ( _x.indexOf( '.' ) > - 1 ) { + + return _x.length - _x.indexOf( '.' ) - 1; + + } + return 0; + +} +var NumberController = function ( _Controller ) { + + inherits( NumberController, _Controller ); + function NumberController( object, property, params ) { + + classCallCheck( this, NumberController ); + var _this = possibleConstructorReturn( this, ( NumberController.__proto__ || Object.getPrototypeOf( NumberController ) ).call( this, object, property ) ); + var _params = params || {}; + _this.__min = _params.min; + _this.__max = _params.max; + _this.__step = _params.step; + if ( Common.isUndefined( _this.__step ) ) { + + if ( _this.initialValue === 0 ) { + + _this.__impliedStep = 1; + + } else { + + _this.__impliedStep = Math.pow( 10, Math.floor( Math.log( Math.abs( _this.initialValue ) ) / Math.LN10 ) ) / 10; + + } + + } else { + + _this.__impliedStep = _this.__step; + + } + _this.__precision = numDecimals( _this.__impliedStep ); + return _this; + + } + createClass( NumberController, [ { + key: 'setValue', + value: function setValue( v ) { + + var _v = v; + if ( this.__min !== undefined && _v < this.__min ) { + + _v = this.__min; + + } else if ( this.__max !== undefined && _v > this.__max ) { + + _v = this.__max; + + } + if ( this.__step !== undefined && _v % this.__step !== 0 ) { + + _v = Math.round( _v / this.__step ) * this.__step; + + } + return get( NumberController.prototype.__proto__ || Object.getPrototypeOf( NumberController.prototype ), 'setValue', this ).call( this, _v ); + + } + }, { + key: 'min', + value: function min( minValue ) { + + this.__min = minValue; + return this; + + } + }, { + key: 'max', + value: function max( maxValue ) { + + this.__max = maxValue; + return this; + + } + }, { + key: 'step', + value: function step( stepValue ) { + + this.__step = stepValue; + this.__impliedStep = stepValue; + this.__precision = numDecimals( stepValue ); + return this; + + } + } ] ); + return NumberController; + +}( Controller ); + +function roundToDecimal( value, decimals ) { + + var tenTo = Math.pow( 10, decimals ); + return Math.round( value * tenTo ) / tenTo; + +} +var NumberControllerBox = function ( _NumberController ) { + + inherits( NumberControllerBox, _NumberController ); + function NumberControllerBox( object, property, params ) { + + classCallCheck( this, NumberControllerBox ); + var _this2 = possibleConstructorReturn( this, ( NumberControllerBox.__proto__ || Object.getPrototypeOf( NumberControllerBox ) ).call( this, object, property, params ) ); + _this2.__truncationSuspended = false; + var _this = _this2; + var prevY = void 0; + function onChange() { + + var attempted = parseFloat( _this.__input.value ); + if ( ! Common.isNaN( attempted ) ) { + + _this.setValue( attempted ); + + } + + } + function onFinish() { + + if ( _this.__onFinishChange ) { + + _this.__onFinishChange.call( _this, _this.getValue() ); + + } + + } + function onBlur() { + + onFinish(); + + } + function onMouseDrag( e ) { + + var diff = prevY - e.clientY; + _this.setValue( _this.getValue() + diff * _this.__impliedStep ); + prevY = e.clientY; + + } + function onMouseUp() { + + dom.unbind( window, 'mousemove', onMouseDrag ); + dom.unbind( window, 'mouseup', onMouseUp ); + onFinish(); + + } + function onMouseDown( e ) { + + dom.bind( window, 'mousemove', onMouseDrag ); + dom.bind( window, 'mouseup', onMouseUp ); + prevY = e.clientY; + + } + _this2.__input = document.createElement( 'input' ); + _this2.__input.setAttribute( 'type', 'text' ); + dom.bind( _this2.__input, 'change', onChange ); + dom.bind( _this2.__input, 'blur', onBlur ); + dom.bind( _this2.__input, 'mousedown', onMouseDown ); + dom.bind( _this2.__input, 'keydown', function ( e ) { + + if ( e.keyCode === 13 ) { + + _this.__truncationSuspended = true; + this.blur(); + _this.__truncationSuspended = false; + onFinish(); + + } + + } ); + _this2.updateDisplay(); + _this2.domElement.appendChild( _this2.__input ); + return _this2; + + } + createClass( NumberControllerBox, [ { + key: 'updateDisplay', + value: function updateDisplay() { + + this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal( this.getValue(), this.__precision ); + return get( NumberControllerBox.prototype.__proto__ || Object.getPrototypeOf( NumberControllerBox.prototype ), 'updateDisplay', this ).call( this ); + + } + } ] ); + return NumberControllerBox; + +}( NumberController ); + +function map( v, i1, i2, o1, o2 ) { + + return o1 + ( o2 - o1 ) * ( ( v - i1 ) / ( i2 - i1 ) ); + +} +var NumberControllerSlider = function ( _NumberController ) { + + inherits( NumberControllerSlider, _NumberController ); + function NumberControllerSlider( object, property, min, max, step ) { + + classCallCheck( this, NumberControllerSlider ); + var _this2 = possibleConstructorReturn( this, ( NumberControllerSlider.__proto__ || Object.getPrototypeOf( NumberControllerSlider ) ).call( this, object, property, { min: min, max: max, step: step } ) ); + var _this = _this2; + _this2.__background = document.createElement( 'div' ); + _this2.__foreground = document.createElement( 'div' ); + dom.bind( _this2.__background, 'mousedown', onMouseDown ); + dom.bind( _this2.__background, 'touchstart', onTouchStart ); + dom.addClass( _this2.__background, 'slider' ); + dom.addClass( _this2.__foreground, 'slider-fg' ); + function onMouseDown( e ) { + + document.activeElement.blur(); + dom.bind( window, 'mousemove', onMouseDrag ); + dom.bind( window, 'mouseup', onMouseUp ); + onMouseDrag( e ); + + } + function onMouseDrag( e ) { + + e.preventDefault(); + var bgRect = _this.__background.getBoundingClientRect(); + _this.setValue( map( e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max ) ); + return false; + + } + function onMouseUp() { + + dom.unbind( window, 'mousemove', onMouseDrag ); + dom.unbind( window, 'mouseup', onMouseUp ); + if ( _this.__onFinishChange ) { + + _this.__onFinishChange.call( _this, _this.getValue() ); + + } + + } + function onTouchStart( e ) { + + if ( e.touches.length !== 1 ) { + + return; + + } + dom.bind( window, 'touchmove', onTouchMove ); + dom.bind( window, 'touchend', onTouchEnd ); + onTouchMove( e ); + + } + function onTouchMove( e ) { + + var clientX = e.touches[ 0 ].clientX; + var bgRect = _this.__background.getBoundingClientRect(); + _this.setValue( map( clientX, bgRect.left, bgRect.right, _this.__min, _this.__max ) ); + + } + function onTouchEnd() { + + dom.unbind( window, 'touchmove', onTouchMove ); + dom.unbind( window, 'touchend', onTouchEnd ); + if ( _this.__onFinishChange ) { + + _this.__onFinishChange.call( _this, _this.getValue() ); + + } + + } + _this2.updateDisplay(); + _this2.__background.appendChild( _this2.__foreground ); + _this2.domElement.appendChild( _this2.__background ); + return _this2; + + } + createClass( NumberControllerSlider, [ { + key: 'updateDisplay', + value: function updateDisplay() { + + var pct = ( this.getValue() - this.__min ) / ( this.__max - this.__min ); + this.__foreground.style.width = pct * 100 + '%'; + return get( NumberControllerSlider.prototype.__proto__ || Object.getPrototypeOf( NumberControllerSlider.prototype ), 'updateDisplay', this ).call( this ); + + } + } ] ); + return NumberControllerSlider; + +}( NumberController ); + +var FunctionController = function ( _Controller ) { + + inherits( FunctionController, _Controller ); + function FunctionController( object, property, text ) { + + classCallCheck( this, FunctionController ); + var _this2 = possibleConstructorReturn( this, ( FunctionController.__proto__ || Object.getPrototypeOf( FunctionController ) ).call( this, object, property ) ); + var _this = _this2; + _this2.__button = document.createElement( 'div' ); + _this2.__button.innerHTML = text === undefined ? 'Fire' : text; + dom.bind( _this2.__button, 'click', function ( e ) { + + e.preventDefault(); + _this.fire(); + return false; + + } ); + dom.addClass( _this2.__button, 'button' ); + _this2.domElement.appendChild( _this2.__button ); + return _this2; + + } + createClass( FunctionController, [ { + key: 'fire', + value: function fire() { + + if ( this.__onChange ) { + + this.__onChange.call( this ); + + } + this.getValue().call( this.object ); + if ( this.__onFinishChange ) { + + this.__onFinishChange.call( this, this.getValue() ); + + } + + } + } ] ); + return FunctionController; + +}( Controller ); + +var ColorController = function ( _Controller ) { + + inherits( ColorController, _Controller ); + function ColorController( object, property ) { + + classCallCheck( this, ColorController ); + var _this2 = possibleConstructorReturn( this, ( ColorController.__proto__ || Object.getPrototypeOf( ColorController ) ).call( this, object, property ) ); + _this2.__color = new Color( _this2.getValue() ); + _this2.__temp = new Color( 0 ); + var _this = _this2; + _this2.domElement = document.createElement( 'div' ); + dom.makeSelectable( _this2.domElement, false ); + _this2.__selector = document.createElement( 'div' ); + _this2.__selector.className = 'selector'; + _this2.__saturation_field = document.createElement( 'div' ); + _this2.__saturation_field.className = 'saturation-field'; + _this2.__field_knob = document.createElement( 'div' ); + _this2.__field_knob.className = 'field-knob'; + _this2.__field_knob_border = '2px solid '; + _this2.__hue_knob = document.createElement( 'div' ); + _this2.__hue_knob.className = 'hue-knob'; + _this2.__hue_field = document.createElement( 'div' ); + _this2.__hue_field.className = 'hue-field'; + _this2.__input = document.createElement( 'input' ); + _this2.__input.type = 'text'; + _this2.__input_textShadow = '0 1px 1px '; + dom.bind( _this2.__input, 'keydown', function ( e ) { + + if ( e.keyCode === 13 ) { + + onBlur.call( this ); + + } + + } ); + dom.bind( _this2.__input, 'blur', onBlur ); + dom.bind( _this2.__selector, 'mousedown', function () { + + dom.addClass( this, 'drag' ).bind( window, 'mouseup', function () { + + dom.removeClass( _this.__selector, 'drag' ); + + } ); + + } ); + dom.bind( _this2.__selector, 'touchstart', function () { + + dom.addClass( this, 'drag' ).bind( window, 'touchend', function () { + + dom.removeClass( _this.__selector, 'drag' ); + + } ); + + } ); + var valueField = document.createElement( 'div' ); + Common.extend( _this2.__selector.style, { + width: '122px', + height: '102px', + padding: '3px', + backgroundColor: '#222', + boxShadow: '0px 1px 3px rgba(0,0,0,0.3)' + } ); + Common.extend( _this2.__field_knob.style, { + position: 'absolute', + width: '12px', + height: '12px', + border: _this2.__field_knob_border + ( _this2.__color.v < 0.5 ? '#fff' : '#000' ), + boxShadow: '0px 1px 3px rgba(0,0,0,0.5)', + borderRadius: '12px', + zIndex: 1 + } ); + Common.extend( _this2.__hue_knob.style, { + position: 'absolute', + width: '15px', + height: '2px', + borderRight: '4px solid #fff', + zIndex: 1 + } ); + Common.extend( _this2.__saturation_field.style, { + width: '100px', + height: '100px', + border: '1px solid #555', + marginRight: '3px', + display: 'inline-block', + cursor: 'pointer' + } ); + Common.extend( valueField.style, { + width: '100%', + height: '100%', + background: 'none' + } ); + linearGradient( valueField, 'top', 'rgba(0,0,0,0)', '#000' ); + Common.extend( _this2.__hue_field.style, { + width: '15px', + height: '100px', + border: '1px solid #555', + cursor: 'ns-resize', + position: 'absolute', + top: '3px', + right: '3px' + } ); + hueGradient( _this2.__hue_field ); + Common.extend( _this2.__input.style, { + outline: 'none', + textAlign: 'center', + color: '#fff', + border: 0, + fontWeight: 'bold', + textShadow: _this2.__input_textShadow + 'rgba(0,0,0,0.7)' + } ); + dom.bind( _this2.__saturation_field, 'mousedown', fieldDown ); + dom.bind( _this2.__saturation_field, 'touchstart', fieldDown ); + dom.bind( _this2.__field_knob, 'mousedown', fieldDown ); + dom.bind( _this2.__field_knob, 'touchstart', fieldDown ); + dom.bind( _this2.__hue_field, 'mousedown', fieldDownH ); + dom.bind( _this2.__hue_field, 'touchstart', fieldDownH ); + function fieldDown( e ) { + + setSV( e ); + dom.bind( window, 'mousemove', setSV ); + dom.bind( window, 'touchmove', setSV ); + dom.bind( window, 'mouseup', fieldUpSV ); + dom.bind( window, 'touchend', fieldUpSV ); + + } + function fieldDownH( e ) { + + setH( e ); + dom.bind( window, 'mousemove', setH ); + dom.bind( window, 'touchmove', setH ); + dom.bind( window, 'mouseup', fieldUpH ); + dom.bind( window, 'touchend', fieldUpH ); + + } + function fieldUpSV() { + + dom.unbind( window, 'mousemove', setSV ); + dom.unbind( window, 'touchmove', setSV ); + dom.unbind( window, 'mouseup', fieldUpSV ); + dom.unbind( window, 'touchend', fieldUpSV ); + onFinish(); + + } + function fieldUpH() { + + dom.unbind( window, 'mousemove', setH ); + dom.unbind( window, 'touchmove', setH ); + dom.unbind( window, 'mouseup', fieldUpH ); + dom.unbind( window, 'touchend', fieldUpH ); + onFinish(); + + } + function onBlur() { + + var i = interpret( this.value ); + if ( i !== false ) { + + _this.__color.__state = i; + _this.setValue( _this.__color.toOriginal() ); + + } else { + + this.value = _this.__color.toString(); + + } + + } + function onFinish() { + + if ( _this.__onFinishChange ) { + + _this.__onFinishChange.call( _this, _this.__color.toOriginal() ); + + } + + } + _this2.__saturation_field.appendChild( valueField ); + _this2.__selector.appendChild( _this2.__field_knob ); + _this2.__selector.appendChild( _this2.__saturation_field ); + _this2.__selector.appendChild( _this2.__hue_field ); + _this2.__hue_field.appendChild( _this2.__hue_knob ); + _this2.domElement.appendChild( _this2.__input ); + _this2.domElement.appendChild( _this2.__selector ); + _this2.updateDisplay(); + function setSV( e ) { + + if ( e.type.indexOf( 'touch' ) === - 1 ) { + + e.preventDefault(); + + } + var fieldRect = _this.__saturation_field.getBoundingClientRect(); + var _ref = e.touches && e.touches[ 0 ] || e, + clientX = _ref.clientX, + clientY = _ref.clientY; + var s = ( clientX - fieldRect.left ) / ( fieldRect.right - fieldRect.left ); + var v = 1 - ( clientY - fieldRect.top ) / ( fieldRect.bottom - fieldRect.top ); + if ( v > 1 ) { + + v = 1; + + } else if ( v < 0 ) { + + v = 0; + + } + if ( s > 1 ) { + + s = 1; + + } else if ( s < 0 ) { + + s = 0; + + } + _this.__color.v = v; + _this.__color.s = s; + _this.setValue( _this.__color.toOriginal() ); + return false; + + } + function setH( e ) { + + if ( e.type.indexOf( 'touch' ) === - 1 ) { + + e.preventDefault(); + + } + var fieldRect = _this.__hue_field.getBoundingClientRect(); + var _ref2 = e.touches && e.touches[ 0 ] || e, + clientY = _ref2.clientY; + var h = 1 - ( clientY - fieldRect.top ) / ( fieldRect.bottom - fieldRect.top ); + if ( h > 1 ) { + + h = 1; + + } else if ( h < 0 ) { + + h = 0; + + } + _this.__color.h = h * 360; + _this.setValue( _this.__color.toOriginal() ); + return false; + + } + return _this2; + + } + createClass( ColorController, [ { + key: 'updateDisplay', + value: function updateDisplay() { + + var i = interpret( this.getValue() ); + if ( i !== false ) { + + var mismatch = false; + Common.each( Color.COMPONENTS, function ( component ) { + + if ( ! Common.isUndefined( i[ component ] ) && ! Common.isUndefined( this.__color.__state[ component ] ) && i[ component ] !== this.__color.__state[ component ] ) { + + mismatch = true; + return {}; + + } + + }, this ); + if ( mismatch ) { + + Common.extend( this.__color.__state, i ); + + } + + } + Common.extend( this.__temp.__state, this.__color.__state ); + this.__temp.a = 1; + var flip = this.__color.v < 0.5 || this.__color.s > 0.5 ? 255 : 0; + var _flip = 255 - flip; + Common.extend( this.__field_knob.style, { + marginLeft: 100 * this.__color.s - 7 + 'px', + marginTop: 100 * ( 1 - this.__color.v ) - 7 + 'px', + backgroundColor: this.__temp.toHexString(), + border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')' + } ); + this.__hue_knob.style.marginTop = ( 1 - this.__color.h / 360 ) * 100 + 'px'; + this.__temp.s = 1; + this.__temp.v = 1; + linearGradient( this.__saturation_field, 'left', '#fff', this.__temp.toHexString() ); + this.__input.value = this.__color.toString(); + Common.extend( this.__input.style, { + backgroundColor: this.__color.toHexString(), + color: 'rgb(' + flip + ',' + flip + ',' + flip + ')', + textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)' + } ); + + } + } ] ); + return ColorController; + +}( Controller ); +var vendors = [ '-moz-', '-o-', '-webkit-', '-ms-', '' ]; +function linearGradient( elem, x, a, b ) { + + elem.style.background = ''; + Common.each( vendors, function ( vendor ) { + + elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); '; + + } ); + +} +function hueGradient( elem ) { + + elem.style.background = ''; + elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);'; + elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; + elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; + elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; + elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; + +} + +var css = { + load: function load( url, indoc ) { + + var doc = indoc || document; + var link = doc.createElement( 'link' ); + link.type = 'text/css'; + link.rel = 'stylesheet'; + link.href = url; + doc.getElementsByTagName( 'head' )[ 0 ].appendChild( link ); + + }, + inject: function inject( cssContent, indoc ) { + + var doc = indoc || document; + var injected = document.createElement( 'style' ); + injected.type = 'text/css'; + injected.innerHTML = cssContent; + var head = doc.getElementsByTagName( 'head' )[ 0 ]; + try { + + head.appendChild( injected ); + + } catch ( e ) { + } + + } +}; + +var saveDialogContents = "<div id=\"dg-save\" class=\"dg dialogue\">\n\n Here's the new load parameter for your <code>GUI</code>'s constructor:\n\n <textarea id=\"dg-new-constructor\"></textarea>\n\n <div id=\"dg-save-locally\">\n\n <input id=\"dg-local-storage\" type=\"checkbox\"/> Automatically save\n values to <code>localStorage</code> on exit.\n\n <div id=\"dg-local-explain\">The values saved to <code>localStorage</code> will\n override those passed to <code>dat.GUI</code>'s constructor. This makes it\n easier to work incrementally, but <code>localStorage</code> is fragile,\n and your friends may not see the same values you do.\n\n </div>\n\n </div>\n\n</div>"; + +var ControllerFactory = function ControllerFactory( object, property ) { + + var initialValue = object[ property ]; + if ( Common.isArray( arguments[ 2 ] ) || Common.isObject( arguments[ 2 ] ) ) { + + return new OptionController( object, property, arguments[ 2 ] ); + + } + if ( Common.isNumber( initialValue ) ) { + + if ( Common.isNumber( arguments[ 2 ] ) && Common.isNumber( arguments[ 3 ] ) ) { + + if ( Common.isNumber( arguments[ 4 ] ) ) { + + return new NumberControllerSlider( object, property, arguments[ 2 ], arguments[ 3 ], arguments[ 4 ] ); + + } + return new NumberControllerSlider( object, property, arguments[ 2 ], arguments[ 3 ] ); + + } + if ( Common.isNumber( arguments[ 4 ] ) ) { + + return new NumberControllerBox( object, property, { min: arguments[ 2 ], max: arguments[ 3 ], step: arguments[ 4 ] } ); + + } + return new NumberControllerBox( object, property, { min: arguments[ 2 ], max: arguments[ 3 ] } ); + + } + if ( Common.isString( initialValue ) ) { + + return new StringController( object, property ); + + } + if ( Common.isFunction( initialValue ) ) { + + return new FunctionController( object, property, '' ); + + } + if ( Common.isBoolean( initialValue ) ) { + + return new BooleanController( object, property ); + + } + return null; + +}; + +function requestAnimationFrame( callback ) { + + setTimeout( callback, 1000 / 60 ); + +} +var requestAnimationFrame$1 = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || requestAnimationFrame; + +var CenteredDiv = function () { + + function CenteredDiv() { + + classCallCheck( this, CenteredDiv ); + this.backgroundElement = document.createElement( 'div' ); + Common.extend( this.backgroundElement.style, { + backgroundColor: 'rgba(0,0,0,0.8)', + top: 0, + left: 0, + display: 'none', + zIndex: '1000', + opacity: 0, + WebkitTransition: 'opacity 0.2s linear', + transition: 'opacity 0.2s linear' + } ); + dom.makeFullscreen( this.backgroundElement ); + this.backgroundElement.style.position = 'fixed'; + this.domElement = document.createElement( 'div' ); + Common.extend( this.domElement.style, { + position: 'fixed', + display: 'none', + zIndex: '1001', + opacity: 0, + WebkitTransition: '-webkit-transform 0.2s ease-out, opacity 0.2s linear', + transition: 'transform 0.2s ease-out, opacity 0.2s linear' + } ); + document.body.appendChild( this.backgroundElement ); + document.body.appendChild( this.domElement ); + var _this = this; + dom.bind( this.backgroundElement, 'click', function () { + + _this.hide(); + + } ); + + } + createClass( CenteredDiv, [ { + key: 'show', + value: function show() { + + var _this = this; + this.backgroundElement.style.display = 'block'; + this.domElement.style.display = 'block'; + this.domElement.style.opacity = 0; + this.domElement.style.webkitTransform = 'scale(1.1)'; + this.layout(); + Common.defer( function () { + + _this.backgroundElement.style.opacity = 1; + _this.domElement.style.opacity = 1; + _this.domElement.style.webkitTransform = 'scale(1)'; + + } ); + + } + }, { + key: 'hide', + value: function hide() { + + var _this = this; + var hide = function hide() { + + _this.domElement.style.display = 'none'; + _this.backgroundElement.style.display = 'none'; + dom.unbind( _this.domElement, 'webkitTransitionEnd', hide ); + dom.unbind( _this.domElement, 'transitionend', hide ); + dom.unbind( _this.domElement, 'oTransitionEnd', hide ); + + }; + dom.bind( this.domElement, 'webkitTransitionEnd', hide ); + dom.bind( this.domElement, 'transitionend', hide ); + dom.bind( this.domElement, 'oTransitionEnd', hide ); + this.backgroundElement.style.opacity = 0; + this.domElement.style.opacity = 0; + this.domElement.style.webkitTransform = 'scale(1.1)'; + + } + }, { + key: 'layout', + value: function layout() { + + this.domElement.style.left = window.innerWidth / 2 - dom.getWidth( this.domElement ) / 2 + 'px'; + this.domElement.style.top = window.innerHeight / 2 - dom.getHeight( this.domElement ) / 2 + 'px'; + + } + } ] ); + return CenteredDiv; + +}(); + +var styleSheet = ___$insertStyle( ".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\n" ); + +css.inject( styleSheet ); +var CSS_NAMESPACE = 'dg'; +var HIDE_KEY_CODE = 72; +var CLOSE_BUTTON_HEIGHT = 20; +var DEFAULT_DEFAULT_PRESET_NAME = 'Default'; +var SUPPORTS_LOCAL_STORAGE = function () { + + try { + + return !! window.localStorage; + + } catch ( e ) { + + return false; + + } + +}(); +var SAVE_DIALOGUE = void 0; +var autoPlaceVirgin = true; +var autoPlaceContainer = void 0; +var hide = false; +var hideableGuis = []; +var GUI = function GUI( pars ) { + + var _this = this; + var params = pars || {}; + this.domElement = document.createElement( 'div' ); + this.__ul = document.createElement( 'ul' ); + this.domElement.appendChild( this.__ul ); + dom.addClass( this.domElement, CSS_NAMESPACE ); + this.__folders = {}; + this.__controllers = []; + this.__rememberedObjects = []; + this.__rememberedObjectIndecesToControllers = []; + this.__listening = []; + params = Common.defaults( params, { + closeOnTop: false, + autoPlace: true, + width: GUI.DEFAULT_WIDTH + } ); + params = Common.defaults( params, { + resizable: params.autoPlace, + hideable: params.autoPlace + } ); + if ( ! Common.isUndefined( params.load ) ) { + + if ( params.preset ) { + + params.load.preset = params.preset; + + } + + } else { + + params.load = { preset: DEFAULT_DEFAULT_PRESET_NAME }; + + } + if ( Common.isUndefined( params.parent ) && params.hideable ) { + + hideableGuis.push( this ); + + } + params.resizable = Common.isUndefined( params.parent ) && params.resizable; + if ( params.autoPlace && Common.isUndefined( params.scrollable ) ) { + + params.scrollable = true; + + } + var useLocalStorage = SUPPORTS_LOCAL_STORAGE && localStorage.getItem( getLocalStorageHash( this, 'isLocal' ) ) === 'true'; + var saveToLocalStorage = void 0; + var titleRow = void 0; + Object.defineProperties( this, + { + parent: { + get: function get$$1() { + + return params.parent; + + } + }, + scrollable: { + get: function get$$1() { + + return params.scrollable; + + } + }, + autoPlace: { + get: function get$$1() { + + return params.autoPlace; + + } + }, + closeOnTop: { + get: function get$$1() { + + return params.closeOnTop; + + } + }, + preset: { + get: function get$$1() { + + if ( _this.parent ) { + + return _this.getRoot().preset; + + } + return params.load.preset; + + }, + set: function set$$1( v ) { + + if ( _this.parent ) { + + _this.getRoot().preset = v; + + } else { + + params.load.preset = v; + + } + setPresetSelectIndex( this ); + _this.revert(); + + } + }, + width: { + get: function get$$1() { + + return params.width; + + }, + set: function set$$1( v ) { + + params.width = v; + setWidth( _this, v ); + + } + }, + name: { + get: function get$$1() { + + return params.name; + + }, + set: function set$$1( v ) { + + params.name = v; + if ( titleRow ) { + + titleRow.innerHTML = params.name; + + } + + } + }, + closed: { + get: function get$$1() { + + return params.closed; + + }, + set: function set$$1( v ) { + + params.closed = v; + if ( params.closed ) { + + dom.addClass( _this.__ul, GUI.CLASS_CLOSED ); + + } else { + + dom.removeClass( _this.__ul, GUI.CLASS_CLOSED ); + + } + this.onResize(); + if ( _this.__closeButton ) { + + _this.__closeButton.innerHTML = v ? GUI.TEXT_OPEN : GUI.TEXT_CLOSED; + + } + + } + }, + load: { + get: function get$$1() { + + return params.load; + + } + }, + useLocalStorage: { + get: function get$$1() { + + return useLocalStorage; + + }, + set: function set$$1( bool ) { + + if ( SUPPORTS_LOCAL_STORAGE ) { + + useLocalStorage = bool; + if ( bool ) { + + dom.bind( window, 'unload', saveToLocalStorage ); + + } else { + + dom.unbind( window, 'unload', saveToLocalStorage ); + + } + localStorage.setItem( getLocalStorageHash( _this, 'isLocal' ), bool ); + + } + + } + } + } ); + if ( Common.isUndefined( params.parent ) ) { + + this.closed = params.closed || false; + dom.addClass( this.domElement, GUI.CLASS_MAIN ); + dom.makeSelectable( this.domElement, false ); + if ( SUPPORTS_LOCAL_STORAGE ) { + + if ( useLocalStorage ) { + + _this.useLocalStorage = true; + var savedGui = localStorage.getItem( getLocalStorageHash( this, 'gui' ) ); + if ( savedGui ) { + + params.load = JSON.parse( savedGui ); + + } + + } + + } + this.__closeButton = document.createElement( 'div' ); + this.__closeButton.innerHTML = GUI.TEXT_CLOSED; + dom.addClass( this.__closeButton, GUI.CLASS_CLOSE_BUTTON ); + if ( params.closeOnTop ) { + + dom.addClass( this.__closeButton, GUI.CLASS_CLOSE_TOP ); + this.domElement.insertBefore( this.__closeButton, this.domElement.childNodes[ 0 ] ); + + } else { + + dom.addClass( this.__closeButton, GUI.CLASS_CLOSE_BOTTOM ); + this.domElement.appendChild( this.__closeButton ); + + } + dom.bind( this.__closeButton, 'click', function () { + + _this.closed = ! _this.closed; + + } ); + + } else { + + if ( params.closed === undefined ) { + + params.closed = true; + + } + var titleRowName = document.createTextNode( params.name ); + dom.addClass( titleRowName, 'controller-name' ); + titleRow = addRow( _this, titleRowName ); + var onClickTitle = function onClickTitle( e ) { + + e.preventDefault(); + _this.closed = ! _this.closed; + return false; + + }; + dom.addClass( this.__ul, GUI.CLASS_CLOSED ); + dom.addClass( titleRow, 'title' ); + dom.bind( titleRow, 'click', onClickTitle ); + if ( ! params.closed ) { + + this.closed = false; + + } + + } + if ( params.autoPlace ) { + + if ( Common.isUndefined( params.parent ) ) { + + if ( autoPlaceVirgin ) { + + autoPlaceContainer = document.createElement( 'div' ); + dom.addClass( autoPlaceContainer, CSS_NAMESPACE ); + dom.addClass( autoPlaceContainer, GUI.CLASS_AUTO_PLACE_CONTAINER ); + document.body.appendChild( autoPlaceContainer ); + autoPlaceVirgin = false; + + } + autoPlaceContainer.appendChild( this.domElement ); + dom.addClass( this.domElement, GUI.CLASS_AUTO_PLACE ); + + } + if ( ! this.parent ) { + + setWidth( _this, params.width ); + + } + + } + this.__resizeHandler = function () { + + _this.onResizeDebounced(); + + }; + dom.bind( window, 'resize', this.__resizeHandler ); + dom.bind( this.__ul, 'webkitTransitionEnd', this.__resizeHandler ); + dom.bind( this.__ul, 'transitionend', this.__resizeHandler ); + dom.bind( this.__ul, 'oTransitionEnd', this.__resizeHandler ); + this.onResize(); + if ( params.resizable ) { + + addResizeHandle( this ); + + } + saveToLocalStorage = function saveToLocalStorage() { + + if ( SUPPORTS_LOCAL_STORAGE && localStorage.getItem( getLocalStorageHash( _this, 'isLocal' ) ) === 'true' ) { + + localStorage.setItem( getLocalStorageHash( _this, 'gui' ), JSON.stringify( _this.getSaveObject() ) ); + + } + + }; + this.saveToLocalStorageIfPossible = saveToLocalStorage; + function resetWidth() { + + var root = _this.getRoot(); + root.width += 1; + Common.defer( function () { + + root.width -= 1; + + } ); + + } + if ( ! params.parent ) { + + resetWidth(); + + } + +}; +GUI.toggleHide = function () { + + hide = ! hide; + Common.each( hideableGuis, function ( gui ) { + + gui.domElement.style.display = hide ? 'none' : ''; + + } ); + +}; +GUI.CLASS_AUTO_PLACE = 'a'; +GUI.CLASS_AUTO_PLACE_CONTAINER = 'ac'; +GUI.CLASS_MAIN = 'main'; +GUI.CLASS_CONTROLLER_ROW = 'cr'; +GUI.CLASS_TOO_TALL = 'taller-than-window'; +GUI.CLASS_CLOSED = 'closed'; +GUI.CLASS_CLOSE_BUTTON = 'close-button'; +GUI.CLASS_CLOSE_TOP = 'close-top'; +GUI.CLASS_CLOSE_BOTTOM = 'close-bottom'; +GUI.CLASS_DRAG = 'drag'; +GUI.DEFAULT_WIDTH = 245; +GUI.TEXT_CLOSED = 'Close Controls'; +GUI.TEXT_OPEN = 'Open Controls'; +GUI._keydownHandler = function ( e ) { + + if ( document.activeElement.type !== 'text' && ( e.which === HIDE_KEY_CODE || e.keyCode === HIDE_KEY_CODE ) ) { + + GUI.toggleHide(); + + } + +}; +dom.bind( window, 'keydown', GUI._keydownHandler, false ); +Common.extend( GUI.prototype, + { + add: function add( object, property ) { + + return _add( this, object, property, { + factoryArgs: Array.prototype.slice.call( arguments, 2 ) + } ); + + }, + addColor: function addColor( object, property ) { + + return _add( this, object, property, { + color: true + } ); + + }, + remove: function remove( controller ) { + + this.__ul.removeChild( controller.__li ); + this.__controllers.splice( this.__controllers.indexOf( controller ), 1 ); + var _this = this; + Common.defer( function () { + + _this.onResize(); + + } ); + + }, + destroy: function destroy() { + + if ( this.parent ) { + + throw new Error( 'Only the root GUI should be removed with .destroy(). ' + 'For subfolders, use gui.removeFolder(folder) instead.' ); + + } + if ( this.autoPlace ) { + + autoPlaceContainer.removeChild( this.domElement ); + + } + var _this = this; + Common.each( this.__folders, function ( subfolder ) { + + _this.removeFolder( subfolder ); + + } ); + dom.unbind( window, 'keydown', GUI._keydownHandler, false ); + removeListeners( this ); + + }, + addFolder: function addFolder( name ) { + + if ( this.__folders[ name ] !== undefined ) { + + throw new Error( 'You already have a folder in this GUI by the' + ' name "' + name + '"' ); + + } + var newGuiParams = { name: name, parent: this }; + newGuiParams.autoPlace = this.autoPlace; + if ( this.load && + this.load.folders && + this.load.folders[ name ] ) { + + newGuiParams.closed = this.load.folders[ name ].closed; + newGuiParams.load = this.load.folders[ name ]; + + } + var gui = new GUI( newGuiParams ); + this.__folders[ name ] = gui; + var li = addRow( this, gui.domElement ); + dom.addClass( li, 'folder' ); + return gui; + + }, + removeFolder: function removeFolder( folder ) { + + this.__ul.removeChild( folder.domElement.parentElement ); + delete this.__folders[ folder.name ]; + if ( this.load && + this.load.folders && + this.load.folders[ folder.name ] ) { + + delete this.load.folders[ folder.name ]; + + } + removeListeners( folder ); + var _this = this; + Common.each( folder.__folders, function ( subfolder ) { + + folder.removeFolder( subfolder ); + + } ); + Common.defer( function () { + + _this.onResize(); + + } ); + + }, + open: function open() { + + this.closed = false; + + }, + close: function close() { + + this.closed = true; + + }, + hide: function hide() { + + this.domElement.style.display = 'none'; + + }, + show: function show() { + + this.domElement.style.display = ''; + + }, + onResize: function onResize() { + + var root = this.getRoot(); + if ( root.scrollable ) { + + var top = dom.getOffset( root.__ul ).top; + var h = 0; + Common.each( root.__ul.childNodes, function ( node ) { + + if ( ! ( root.autoPlace && node === root.__save_row ) ) { + + h += dom.getHeight( node ); + + } + + } ); + if ( window.innerHeight - top - CLOSE_BUTTON_HEIGHT < h ) { + + dom.addClass( root.domElement, GUI.CLASS_TOO_TALL ); + root.__ul.style.height = window.innerHeight - top - CLOSE_BUTTON_HEIGHT + 'px'; + + } else { + + dom.removeClass( root.domElement, GUI.CLASS_TOO_TALL ); + root.__ul.style.height = 'auto'; + + } + + } + if ( root.__resize_handle ) { + + Common.defer( function () { + + root.__resize_handle.style.height = root.__ul.offsetHeight + 'px'; + + } ); + + } + if ( root.__closeButton ) { + + root.__closeButton.style.width = root.width + 'px'; + + } + + }, + onResizeDebounced: Common.debounce( function () { + + this.onResize(); + + }, 50 ), + remember: function remember() { + + if ( Common.isUndefined( SAVE_DIALOGUE ) ) { + + SAVE_DIALOGUE = new CenteredDiv(); + SAVE_DIALOGUE.domElement.innerHTML = saveDialogContents; + + } + if ( this.parent ) { + + throw new Error( 'You can only call remember on a top level GUI.' ); + + } + var _this = this; + Common.each( Array.prototype.slice.call( arguments ), function ( object ) { + + if ( _this.__rememberedObjects.length === 0 ) { + + addSaveMenu( _this ); + + } + if ( _this.__rememberedObjects.indexOf( object ) === - 1 ) { + + _this.__rememberedObjects.push( object ); + + } + + } ); + if ( this.autoPlace ) { + + setWidth( this, this.width ); + + } + + }, + getRoot: function getRoot() { + + var gui = this; + while ( gui.parent ) { + + gui = gui.parent; + + } + return gui; + + }, + getSaveObject: function getSaveObject() { + + var toReturn = this.load; + toReturn.closed = this.closed; + if ( this.__rememberedObjects.length > 0 ) { + + toReturn.preset = this.preset; + if ( ! toReturn.remembered ) { + + toReturn.remembered = {}; + + } + toReturn.remembered[ this.preset ] = getCurrentPreset( this ); + + } + toReturn.folders = {}; + Common.each( this.__folders, function ( element, key ) { + + toReturn.folders[ key ] = element.getSaveObject(); + + } ); + return toReturn; + + }, + save: function save() { + + if ( ! this.load.remembered ) { + + this.load.remembered = {}; + + } + this.load.remembered[ this.preset ] = getCurrentPreset( this ); + markPresetModified( this, false ); + this.saveToLocalStorageIfPossible(); + + }, + saveAs: function saveAs( presetName ) { + + if ( ! this.load.remembered ) { + + this.load.remembered = {}; + this.load.remembered[ DEFAULT_DEFAULT_PRESET_NAME ] = getCurrentPreset( this, true ); + + } + this.load.remembered[ presetName ] = getCurrentPreset( this ); + this.preset = presetName; + addPresetOption( this, presetName, true ); + this.saveToLocalStorageIfPossible(); + + }, + revert: function revert( gui ) { + + Common.each( this.__controllers, function ( controller ) { + + if ( ! this.getRoot().load.remembered ) { + + controller.setValue( controller.initialValue ); + + } else { + + recallSavedValue( gui || this.getRoot(), controller ); + + } + if ( controller.__onFinishChange ) { + + controller.__onFinishChange.call( controller, controller.getValue() ); + + } + + }, this ); + Common.each( this.__folders, function ( folder ) { + + folder.revert( folder ); + + } ); + if ( ! gui ) { + + markPresetModified( this.getRoot(), false ); + + } + + }, + listen: function listen( controller ) { + + var init = this.__listening.length === 0; + this.__listening.push( controller ); + if ( init ) { + + updateDisplays( this.__listening ); + + } + + }, + updateDisplay: function updateDisplay() { + + Common.each( this.__controllers, function ( controller ) { + + controller.updateDisplay(); + + } ); + Common.each( this.__folders, function ( folder ) { + + folder.updateDisplay(); + + } ); + + } + } ); +function addRow( gui, newDom, liBefore ) { + + var li = document.createElement( 'li' ); + if ( newDom ) { + + li.appendChild( newDom ); + + } + if ( liBefore ) { + + gui.__ul.insertBefore( li, liBefore ); + + } else { + + gui.__ul.appendChild( li ); + + } + gui.onResize(); + return li; + +} +function removeListeners( gui ) { + + dom.unbind( window, 'resize', gui.__resizeHandler ); + if ( gui.saveToLocalStorageIfPossible ) { + + dom.unbind( window, 'unload', gui.saveToLocalStorageIfPossible ); + + } + +} +function markPresetModified( gui, modified ) { + + var opt = gui.__preset_select[ gui.__preset_select.selectedIndex ]; + if ( modified ) { + + opt.innerHTML = opt.value + '*'; + + } else { + + opt.innerHTML = opt.value; + + } + +} +function augmentController( gui, li, controller ) { + + controller.__li = li; + controller.__gui = gui; + Common.extend( controller, { + options: function options( _options ) { + + if ( arguments.length > 1 ) { + + var nextSibling = controller.__li.nextElementSibling; + controller.remove(); + return _add( gui, controller.object, controller.property, { + before: nextSibling, + factoryArgs: [ Common.toArray( arguments ) ] + } ); + + } + if ( Common.isArray( _options ) || Common.isObject( _options ) ) { + + var _nextSibling = controller.__li.nextElementSibling; + controller.remove(); + return _add( gui, controller.object, controller.property, { + before: _nextSibling, + factoryArgs: [ _options ] + } ); + + } + + }, + name: function name( _name ) { + + controller.__li.firstElementChild.firstElementChild.innerHTML = _name; + return controller; + + }, + listen: function listen() { + + controller.__gui.listen( controller ); + return controller; + + }, + remove: function remove() { + + controller.__gui.remove( controller ); + return controller; + + } + } ); + if ( controller instanceof NumberControllerSlider ) { + + var box = new NumberControllerBox( controller.object, controller.property, { min: controller.__min, max: controller.__max, step: controller.__step } ); + Common.each( [ 'updateDisplay', 'onChange', 'onFinishChange', 'step', 'min', 'max' ], function ( method ) { + + var pc = controller[ method ]; + var pb = box[ method ]; + controller[ method ] = box[ method ] = function () { + + var args = Array.prototype.slice.call( arguments ); + pb.apply( box, args ); + return pc.apply( controller, args ); + + }; + + } ); + dom.addClass( li, 'has-slider' ); + controller.domElement.insertBefore( box.domElement, controller.domElement.firstElementChild ); + + } else if ( controller instanceof NumberControllerBox ) { + + var r = function r( returned ) { + + if ( Common.isNumber( controller.__min ) && Common.isNumber( controller.__max ) ) { + + var oldName = controller.__li.firstElementChild.firstElementChild.innerHTML; + var wasListening = controller.__gui.__listening.indexOf( controller ) > - 1; + controller.remove(); + var newController = _add( gui, controller.object, controller.property, { + before: controller.__li.nextElementSibling, + factoryArgs: [ controller.__min, controller.__max, controller.__step ] + } ); + newController.name( oldName ); + if ( wasListening ) newController.listen(); + return newController; + + } + return returned; + + }; + controller.min = Common.compose( r, controller.min ); + controller.max = Common.compose( r, controller.max ); + + } else if ( controller instanceof BooleanController ) { + + dom.bind( li, 'click', function () { + + dom.fakeEvent( controller.__checkbox, 'click' ); + + } ); + dom.bind( controller.__checkbox, 'click', function ( e ) { + + e.stopPropagation(); + + } ); + + } else if ( controller instanceof FunctionController ) { + + dom.bind( li, 'click', function () { + + dom.fakeEvent( controller.__button, 'click' ); + + } ); + dom.bind( li, 'mouseover', function () { + + dom.addClass( controller.__button, 'hover' ); + + } ); + dom.bind( li, 'mouseout', function () { + + dom.removeClass( controller.__button, 'hover' ); + + } ); + + } else if ( controller instanceof ColorController ) { + + dom.addClass( li, 'color' ); + controller.updateDisplay = Common.compose( function ( val ) { + + li.style.borderLeftColor = controller.__color.toString(); + return val; + + }, controller.updateDisplay ); + controller.updateDisplay(); + + } + controller.setValue = Common.compose( function ( val ) { + + if ( gui.getRoot().__preset_select && controller.isModified() ) { + + markPresetModified( gui.getRoot(), true ); + + } + return val; + + }, controller.setValue ); + +} +function recallSavedValue( gui, controller ) { + + var root = gui.getRoot(); + var matchedIndex = root.__rememberedObjects.indexOf( controller.object ); + if ( matchedIndex !== - 1 ) { + + var controllerMap = root.__rememberedObjectIndecesToControllers[ matchedIndex ]; + if ( controllerMap === undefined ) { + + controllerMap = {}; + root.__rememberedObjectIndecesToControllers[ matchedIndex ] = controllerMap; + + } + controllerMap[ controller.property ] = controller; + if ( root.load && root.load.remembered ) { + + var presetMap = root.load.remembered; + var preset = void 0; + if ( presetMap[ gui.preset ] ) { + + preset = presetMap[ gui.preset ]; + + } else if ( presetMap[ DEFAULT_DEFAULT_PRESET_NAME ] ) { + + preset = presetMap[ DEFAULT_DEFAULT_PRESET_NAME ]; + + } else { + + return; + + } + if ( preset[ matchedIndex ] && preset[ matchedIndex ][ controller.property ] !== undefined ) { + + var value = preset[ matchedIndex ][ controller.property ]; + controller.initialValue = value; + controller.setValue( value ); + + } + + } + + } + +} +function _add( gui, object, property, params ) { + + if ( object[ property ] === undefined ) { + + throw new Error( 'Object "' + object + '" has no property "' + property + '"' ); + + } + var controller = void 0; + if ( params.color ) { + + controller = new ColorController( object, property ); + + } else { + + var factoryArgs = [ object, property ].concat( params.factoryArgs ); + controller = ControllerFactory.apply( gui, factoryArgs ); + + } + if ( params.before instanceof Controller ) { + + params.before = params.before.__li; + + } + recallSavedValue( gui, controller ); + dom.addClass( controller.domElement, 'c' ); + var name = document.createElement( 'span' ); + dom.addClass( name, 'property-name' ); + name.innerHTML = controller.property; + var container = document.createElement( 'div' ); + container.appendChild( name ); + container.appendChild( controller.domElement ); + var li = addRow( gui, container, params.before ); + dom.addClass( li, GUI.CLASS_CONTROLLER_ROW ); + if ( controller instanceof ColorController ) { + + dom.addClass( li, 'color' ); + + } else { + + dom.addClass( li, _typeof( controller.getValue() ) ); + + } + augmentController( gui, li, controller ); + gui.__controllers.push( controller ); + return controller; + +} +function getLocalStorageHash( gui, key ) { + + return document.location.href + '.' + key; + +} +function addPresetOption( gui, name, setSelected ) { + + var opt = document.createElement( 'option' ); + opt.innerHTML = name; + opt.value = name; + gui.__preset_select.appendChild( opt ); + if ( setSelected ) { + + gui.__preset_select.selectedIndex = gui.__preset_select.length - 1; + + } + +} +function showHideExplain( gui, explain ) { + + explain.style.display = gui.useLocalStorage ? 'block' : 'none'; + +} +function addSaveMenu( gui ) { + + var div = gui.__save_row = document.createElement( 'li' ); + dom.addClass( gui.domElement, 'has-save' ); + gui.__ul.insertBefore( div, gui.__ul.firstChild ); + dom.addClass( div, 'save-row' ); + var gears = document.createElement( 'span' ); + gears.innerHTML = ' '; + dom.addClass( gears, 'button gears' ); + var button = document.createElement( 'span' ); + button.innerHTML = 'Save'; + dom.addClass( button, 'button' ); + dom.addClass( button, 'save' ); + var button2 = document.createElement( 'span' ); + button2.innerHTML = 'New'; + dom.addClass( button2, 'button' ); + dom.addClass( button2, 'save-as' ); + var button3 = document.createElement( 'span' ); + button3.innerHTML = 'Revert'; + dom.addClass( button3, 'button' ); + dom.addClass( button3, 'revert' ); + var select = gui.__preset_select = document.createElement( 'select' ); + if ( gui.load && gui.load.remembered ) { + + Common.each( gui.load.remembered, function ( value, key ) { + + addPresetOption( gui, key, key === gui.preset ); + + } ); + + } else { + + addPresetOption( gui, DEFAULT_DEFAULT_PRESET_NAME, false ); + + } + dom.bind( select, 'change', function () { + + for ( var index = 0; index < gui.__preset_select.length; index ++ ) { + + gui.__preset_select[ index ].innerHTML = gui.__preset_select[ index ].value; + + } + gui.preset = this.value; + + } ); + div.appendChild( select ); + div.appendChild( gears ); + div.appendChild( button ); + div.appendChild( button2 ); + div.appendChild( button3 ); + if ( SUPPORTS_LOCAL_STORAGE ) { + + var explain = document.getElementById( 'dg-local-explain' ); + var localStorageCheckBox = document.getElementById( 'dg-local-storage' ); + var saveLocally = document.getElementById( 'dg-save-locally' ); + saveLocally.style.display = 'block'; + if ( localStorage.getItem( getLocalStorageHash( gui, 'isLocal' ) ) === 'true' ) { + + localStorageCheckBox.setAttribute( 'checked', 'checked' ); + + } + showHideExplain( gui, explain ); + dom.bind( localStorageCheckBox, 'change', function () { + + gui.useLocalStorage = ! gui.useLocalStorage; + showHideExplain( gui, explain ); + + } ); + + } + var newConstructorTextArea = document.getElementById( 'dg-new-constructor' ); + dom.bind( newConstructorTextArea, 'keydown', function ( e ) { + + if ( e.metaKey && ( e.which === 67 || e.keyCode === 67 ) ) { + + SAVE_DIALOGUE.hide(); + + } + + } ); + dom.bind( gears, 'click', function () { + + newConstructorTextArea.innerHTML = JSON.stringify( gui.getSaveObject(), undefined, 2 ); + SAVE_DIALOGUE.show(); + newConstructorTextArea.focus(); + newConstructorTextArea.select(); + + } ); + dom.bind( button, 'click', function () { + + gui.save(); + + } ); + dom.bind( button2, 'click', function () { + + var presetName = prompt( 'Enter a new preset name.' ); + if ( presetName ) { + + gui.saveAs( presetName ); + + } + + } ); + dom.bind( button3, 'click', function () { + + gui.revert(); + + } ); + +} +function addResizeHandle( gui ) { + + var pmouseX = void 0; + gui.__resize_handle = document.createElement( 'div' ); + Common.extend( gui.__resize_handle.style, { + width: '6px', + marginLeft: '-3px', + height: '200px', + cursor: 'ew-resize', + position: 'absolute' + } ); + function drag( e ) { + + e.preventDefault(); + gui.width += pmouseX - e.clientX; + gui.onResize(); + pmouseX = e.clientX; + return false; + + } + function dragStop() { + + dom.removeClass( gui.__closeButton, GUI.CLASS_DRAG ); + dom.unbind( window, 'mousemove', drag ); + dom.unbind( window, 'mouseup', dragStop ); + + } + function dragStart( e ) { + + e.preventDefault(); + pmouseX = e.clientX; + dom.addClass( gui.__closeButton, GUI.CLASS_DRAG ); + dom.bind( window, 'mousemove', drag ); + dom.bind( window, 'mouseup', dragStop ); + return false; + + } + dom.bind( gui.__resize_handle, 'mousedown', dragStart ); + dom.bind( gui.__closeButton, 'mousedown', dragStart ); + gui.domElement.insertBefore( gui.__resize_handle, gui.domElement.firstElementChild ); + +} +function setWidth( gui, w ) { + + gui.domElement.style.width = w + 'px'; + if ( gui.__save_row && gui.autoPlace ) { + + gui.__save_row.style.width = w + 'px'; + + } + if ( gui.__closeButton ) { + + gui.__closeButton.style.width = w + 'px'; + + } + +} +function getCurrentPreset( gui, useInitialValues ) { + + var toReturn = {}; + Common.each( gui.__rememberedObjects, function ( val, index ) { + + var savedValues = {}; + var controllerMap = gui.__rememberedObjectIndecesToControllers[ index ]; + Common.each( controllerMap, function ( controller, property ) { + + savedValues[ property ] = useInitialValues ? controller.initialValue : controller.getValue(); + + } ); + toReturn[ index ] = savedValues; + + } ); + return toReturn; + +} +function setPresetSelectIndex( gui ) { + + for ( var index = 0; index < gui.__preset_select.length; index ++ ) { + + if ( gui.__preset_select[ index ].value === gui.preset ) { + + gui.__preset_select.selectedIndex = index; + + } + + } + +} +function updateDisplays( controllerArray ) { + + if ( controllerArray.length !== 0 ) { + + requestAnimationFrame$1.call( window, function () { + + updateDisplays( controllerArray ); + + } ); + + } + Common.each( controllerArray, function ( c ) { + + c.updateDisplay(); + + } ); + +} + +var color = { + Color: Color, + math: ColorMath, + interpret: interpret +}; +var controllers = { + Controller: Controller, + BooleanController: BooleanController, + OptionController: OptionController, + StringController: StringController, + NumberController: NumberController, + NumberControllerBox: NumberControllerBox, + NumberControllerSlider: NumberControllerSlider, + FunctionController: FunctionController, + ColorController: ColorController +}; +var dom$1 = { dom: dom }; +var gui = { GUI: GUI }; +var GUI$1 = GUI; +var index = { + color: color, + controllers: controllers, + dom: dom$1, + gui: gui, + GUI: GUI$1 +}; + +export { color, controllers, dom$1 as dom, gui, GUI$1 as GUI }; +export default index; diff --git a/01_Code/physical_computing_interface/simulation/lib/js-colormaps.js b/01_Code/physical_computing_interface/simulation/lib/js-colormaps.js new file mode 100644 index 0000000000000000000000000000000000000000..cbc99710a55ec7c175fd2edda1d5d873eb0c7462 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/js-colormaps.js @@ -0,0 +1,77 @@ +// Diverging +var BrBG = [[0.000, [0.329, 0.188, 0.020]], [0.002, [0.329, 0.188, 0.020]], [0.004, [0.338, 0.193, 0.020]], [0.006, [0.338, 0.193, 0.020]], [0.008, [0.347, 0.198, 0.021]], [0.010, [0.347, 0.198, 0.021]], [0.012, [0.355, 0.203, 0.022]], [0.014, [0.355, 0.203, 0.022]], [0.016, [0.364, 0.209, 0.023]], [0.018, [0.364, 0.209, 0.023]], [0.020, [0.372, 0.214, 0.023]], [0.022, [0.372, 0.214, 0.023]], [0.023, [0.381, 0.219, 0.024]], [0.025, [0.381, 0.219, 0.024]], [0.027, [0.390, 0.224, 0.025]], [0.029, [0.390, 0.224, 0.025]], [0.031, [0.398, 0.229, 0.026]], [0.033, [0.398, 0.229, 0.026]], [0.035, [0.407, 0.234, 0.027]], [0.037, [0.407, 0.234, 0.027]], [0.039, [0.416, 0.239, 0.027]], [0.041, [0.416, 0.239, 0.027]], [0.043, [0.424, 0.244, 0.028]], [0.045, [0.424, 0.244, 0.028]], [0.047, [0.433, 0.249, 0.029]], [0.049, [0.433, 0.249, 0.029]], [0.051, [0.441, 0.254, 0.030]], [0.053, [0.441, 0.254, 0.030]], [0.055, [0.450, 0.259, 0.030]], [0.057, [0.450, 0.259, 0.030]], [0.059, [0.459, 0.264, 0.031]], [0.061, [0.459, 0.264, 0.031]], [0.063, [0.467, 0.269, 0.032]], [0.065, [0.467, 0.269, 0.032]], [0.067, [0.476, 0.275, 0.033]], [0.068, [0.476, 0.275, 0.033]], [0.070, [0.484, 0.280, 0.033]], [0.072, [0.484, 0.280, 0.033]], [0.074, [0.493, 0.285, 0.034]], [0.076, [0.493, 0.285, 0.034]], [0.078, [0.502, 0.290, 0.035]], [0.080, [0.502, 0.290, 0.035]], [0.082, [0.510, 0.295, 0.036]], [0.084, [0.510, 0.295, 0.036]], [0.086, [0.519, 0.300, 0.037]], [0.088, [0.519, 0.300, 0.037]], [0.090, [0.527, 0.305, 0.037]], [0.092, [0.527, 0.305, 0.037]], [0.094, [0.536, 0.310, 0.038]], [0.096, [0.536, 0.310, 0.038]], [0.098, [0.545, 0.315, 0.039]], [0.100, [0.545, 0.315, 0.039]], [0.102, [0.553, 0.321, 0.042]], [0.104, [0.553, 0.321, 0.042]], [0.106, [0.561, 0.329, 0.047]], [0.108, [0.561, 0.329, 0.047]], [0.110, [0.569, 0.336, 0.053]], [0.112, [0.569, 0.336, 0.053]], [0.114, [0.576, 0.343, 0.058]], [0.115, [0.576, 0.343, 0.058]], [0.117, [0.584, 0.351, 0.063]], [0.119, [0.584, 0.351, 0.063]], [0.121, [0.592, 0.358, 0.069]], [0.123, [0.592, 0.358, 0.069]], [0.125, [0.600, 0.366, 0.074]], [0.127, [0.600, 0.366, 0.074]], [0.129, [0.608, 0.373, 0.080]], [0.131, [0.608, 0.373, 0.080]], [0.133, [0.616, 0.380, 0.085]], [0.135, [0.616, 0.380, 0.085]], [0.137, [0.624, 0.388, 0.090]], [0.139, [0.624, 0.388, 0.090]], [0.141, [0.631, 0.395, 0.096]], [0.143, [0.631, 0.395, 0.096]], [0.145, [0.639, 0.403, 0.101]], [0.147, [0.639, 0.403, 0.101]], [0.149, [0.647, 0.410, 0.106]], [0.151, [0.647, 0.410, 0.106]], [0.153, [0.655, 0.417, 0.112]], [0.155, [0.655, 0.417, 0.112]], [0.157, [0.663, 0.425, 0.117]], [0.159, [0.663, 0.425, 0.117]], [0.160, [0.671, 0.432, 0.123]], [0.162, [0.671, 0.432, 0.123]], [0.164, [0.678, 0.439, 0.128]], [0.166, [0.678, 0.439, 0.128]], [0.168, [0.686, 0.447, 0.133]], [0.170, [0.686, 0.447, 0.133]], [0.172, [0.694, 0.454, 0.139]], [0.174, [0.694, 0.454, 0.139]], [0.176, [0.702, 0.462, 0.144]], [0.178, [0.702, 0.462, 0.144]], [0.180, [0.710, 0.469, 0.150]], [0.182, [0.710, 0.469, 0.150]], [0.184, [0.718, 0.476, 0.155]], [0.186, [0.718, 0.476, 0.155]], [0.188, [0.725, 0.484, 0.160]], [0.190, [0.725, 0.484, 0.160]], [0.192, [0.733, 0.491, 0.166]], [0.194, [0.733, 0.491, 0.166]], [0.196, [0.741, 0.499, 0.171]], [0.198, [0.741, 0.499, 0.171]], [0.200, [0.749, 0.506, 0.176]], [0.202, [0.749, 0.506, 0.176]], [0.204, [0.754, 0.516, 0.189]], [0.205, [0.754, 0.516, 0.189]], [0.207, [0.759, 0.526, 0.201]], [0.209, [0.759, 0.526, 0.201]], [0.211, [0.764, 0.536, 0.213]], [0.213, [0.764, 0.536, 0.213]], [0.215, [0.769, 0.546, 0.226]], [0.217, [0.769, 0.546, 0.226]], [0.219, [0.774, 0.556, 0.238]], [0.221, [0.774, 0.556, 0.238]], [0.223, [0.779, 0.566, 0.250]], [0.225, [0.779, 0.566, 0.250]], [0.227, [0.783, 0.576, 0.263]], [0.229, [0.783, 0.576, 0.263]], [0.231, [0.788, 0.586, 0.275]], [0.233, [0.788, 0.586, 0.275]], [0.235, [0.793, 0.596, 0.287]], [0.237, [0.793, 0.596, 0.287]], [0.239, [0.798, 0.606, 0.300]], [0.241, [0.798, 0.606, 0.300]], [0.243, [0.803, 0.616, 0.312]], [0.245, [0.803, 0.616, 0.312]], [0.247, [0.808, 0.626, 0.324]], [0.249, [0.808, 0.626, 0.324]], [0.250, [0.813, 0.636, 0.336]], [0.252, [0.813, 0.636, 0.336]], [0.254, [0.818, 0.646, 0.349]], [0.256, [0.818, 0.646, 0.349]], [0.258, [0.823, 0.656, 0.361]], [0.260, [0.823, 0.656, 0.361]], [0.262, [0.828, 0.666, 0.373]], [0.264, [0.828, 0.666, 0.373]], [0.266, [0.833, 0.676, 0.386]], [0.268, [0.833, 0.676, 0.386]], [0.270, [0.838, 0.686, 0.398]], [0.272, [0.838, 0.686, 0.398]], [0.274, [0.843, 0.696, 0.410]], [0.276, [0.843, 0.696, 0.410]], [0.278, [0.847, 0.706, 0.423]], [0.280, [0.847, 0.706, 0.423]], [0.282, [0.852, 0.716, 0.435]], [0.284, [0.852, 0.716, 0.435]], [0.286, [0.857, 0.726, 0.447]], [0.288, [0.857, 0.726, 0.447]], [0.290, [0.862, 0.736, 0.459]], [0.292, [0.862, 0.736, 0.459]], [0.294, [0.867, 0.746, 0.472]], [0.295, [0.867, 0.746, 0.472]], [0.297, [0.872, 0.756, 0.484]], [0.299, [0.872, 0.756, 0.484]], [0.301, [0.876, 0.764, 0.496]], [0.303, [0.876, 0.764, 0.496]], [0.305, [0.880, 0.770, 0.506]], [0.307, [0.880, 0.770, 0.506]], [0.309, [0.883, 0.775, 0.517]], [0.311, [0.883, 0.775, 0.517]], [0.313, [0.887, 0.781, 0.528]], [0.315, [0.887, 0.781, 0.528]], [0.317, [0.890, 0.787, 0.539]], [0.319, [0.890, 0.787, 0.539]], [0.321, [0.894, 0.793, 0.549]], [0.323, [0.894, 0.793, 0.549]], [0.325, [0.898, 0.799, 0.560]], [0.327, [0.898, 0.799, 0.560]], [0.329, [0.901, 0.805, 0.571]], [0.331, [0.901, 0.805, 0.571]], [0.333, [0.905, 0.810, 0.582]], [0.335, [0.905, 0.810, 0.582]], [0.337, [0.908, 0.816, 0.592]], [0.339, [0.908, 0.816, 0.592]], [0.341, [0.912, 0.822, 0.603]], [0.342, [0.912, 0.822, 0.603]], [0.344, [0.915, 0.828, 0.614]], [0.346, [0.915, 0.828, 0.614]], [0.348, [0.919, 0.834, 0.625]], [0.350, [0.919, 0.834, 0.625]], [0.352, [0.922, 0.840, 0.636]], [0.354, [0.922, 0.840, 0.636]], [0.356, [0.926, 0.846, 0.646]], [0.358, [0.926, 0.846, 0.646]], [0.360, [0.929, 0.851, 0.657]], [0.362, [0.929, 0.851, 0.657]], [0.364, [0.933, 0.857, 0.668]], [0.366, [0.933, 0.857, 0.668]], [0.368, [0.936, 0.863, 0.679]], [0.370, [0.936, 0.863, 0.679]], [0.372, [0.940, 0.869, 0.689]], [0.374, [0.940, 0.869, 0.689]], [0.376, [0.943, 0.875, 0.700]], [0.378, [0.943, 0.875, 0.700]], [0.380, [0.947, 0.881, 0.711]], [0.382, [0.947, 0.881, 0.711]], [0.384, [0.951, 0.886, 0.722]], [0.386, [0.951, 0.886, 0.722]], [0.387, [0.954, 0.892, 0.732]], [0.389, [0.954, 0.892, 0.732]], [0.391, [0.958, 0.898, 0.743]], [0.393, [0.958, 0.898, 0.743]], [0.395, [0.961, 0.904, 0.754]], [0.397, [0.961, 0.904, 0.754]], [0.399, [0.965, 0.910, 0.765]], [0.401, [0.965, 0.910, 0.765]], [0.403, [0.965, 0.912, 0.772]], [0.405, [0.965, 0.912, 0.772]], [0.407, [0.964, 0.914, 0.780]], [0.409, [0.964, 0.914, 0.780]], [0.411, [0.964, 0.916, 0.788]], [0.413, [0.964, 0.916, 0.788]], [0.415, [0.964, 0.918, 0.795]], [0.417, [0.964, 0.918, 0.795]], [0.419, [0.964, 0.920, 0.803]], [0.421, [0.964, 0.920, 0.803]], [0.423, [0.964, 0.922, 0.811]], [0.425, [0.964, 0.922, 0.811]], [0.427, [0.964, 0.924, 0.819]], [0.429, [0.964, 0.924, 0.819]], [0.431, [0.963, 0.926, 0.826]], [0.432, [0.963, 0.926, 0.826]], [0.434, [0.963, 0.928, 0.834]], [0.436, [0.963, 0.928, 0.834]], [0.438, [0.963, 0.930, 0.842]], [0.440, [0.963, 0.930, 0.842]], [0.442, [0.963, 0.932, 0.849]], [0.444, [0.963, 0.932, 0.849]], [0.446, [0.963, 0.934, 0.857]], [0.448, [0.963, 0.934, 0.857]], [0.450, [0.963, 0.936, 0.865]], [0.452, [0.963, 0.936, 0.865]], [0.454, [0.963, 0.938, 0.872]], [0.456, [0.963, 0.938, 0.872]], [0.458, [0.962, 0.940, 0.880]], [0.460, [0.962, 0.940, 0.880]], [0.462, [0.962, 0.942, 0.888]], [0.464, [0.962, 0.942, 0.888]], [0.466, [0.962, 0.944, 0.895]], [0.468, [0.962, 0.944, 0.895]], [0.470, [0.962, 0.946, 0.903]], [0.472, [0.962, 0.946, 0.903]], [0.474, [0.962, 0.948, 0.911]], [0.476, [0.962, 0.948, 0.911]], [0.477, [0.962, 0.950, 0.918]], [0.479, [0.962, 0.950, 0.918]], [0.481, [0.961, 0.952, 0.926]], [0.483, [0.961, 0.952, 0.926]], [0.485, [0.961, 0.954, 0.934]], [0.487, [0.961, 0.954, 0.934]], [0.489, [0.961, 0.956, 0.942]], [0.491, [0.961, 0.956, 0.942]], [0.493, [0.961, 0.958, 0.949]], [0.495, [0.961, 0.958, 0.949]], [0.497, [0.961, 0.960, 0.957]], [0.499, [0.961, 0.960, 0.957]], [0.501, [0.957, 0.960, 0.960]], [0.503, [0.957, 0.960, 0.960]], [0.505, [0.950, 0.958, 0.957]], [0.507, [0.950, 0.958, 0.957]], [0.509, [0.943, 0.957, 0.955]], [0.511, [0.943, 0.957, 0.955]], [0.513, [0.936, 0.955, 0.952]], [0.515, [0.936, 0.955, 0.952]], [0.517, [0.929, 0.953, 0.950]], [0.519, [0.929, 0.953, 0.950]], [0.521, [0.922, 0.951, 0.947]], [0.523, [0.922, 0.951, 0.947]], [0.524, [0.915, 0.950, 0.945]], [0.526, [0.915, 0.950, 0.945]], [0.528, [0.908, 0.948, 0.942]], [0.530, [0.908, 0.948, 0.942]], [0.532, [0.901, 0.946, 0.940]], [0.534, [0.901, 0.946, 0.940]], [0.536, [0.894, 0.945, 0.937]], [0.538, [0.894, 0.945, 0.937]], [0.540, [0.887, 0.943, 0.935]], [0.542, [0.887, 0.943, 0.935]], [0.544, [0.879, 0.941, 0.932]], [0.546, [0.879, 0.941, 0.932]], [0.548, [0.872, 0.940, 0.930]], [0.550, [0.872, 0.940, 0.930]], [0.552, [0.865, 0.938, 0.928]], [0.554, [0.865, 0.938, 0.928]], [0.556, [0.858, 0.936, 0.925]], [0.558, [0.858, 0.936, 0.925]], [0.560, [0.851, 0.935, 0.923]], [0.562, [0.851, 0.935, 0.923]], [0.564, [0.844, 0.933, 0.920]], [0.566, [0.844, 0.933, 0.920]], [0.568, [0.837, 0.931, 0.918]], [0.569, [0.837, 0.931, 0.918]], [0.571, [0.830, 0.929, 0.915]], [0.573, [0.830, 0.929, 0.915]], [0.575, [0.823, 0.928, 0.913]], [0.577, [0.823, 0.928, 0.913]], [0.579, [0.816, 0.926, 0.910]], [0.581, [0.816, 0.926, 0.910]], [0.583, [0.809, 0.924, 0.908]], [0.585, [0.809, 0.924, 0.908]], [0.587, [0.802, 0.923, 0.905]], [0.589, [0.802, 0.923, 0.905]], [0.591, [0.795, 0.921, 0.903]], [0.593, [0.795, 0.921, 0.903]], [0.595, [0.787, 0.919, 0.900]], [0.597, [0.787, 0.919, 0.900]], [0.599, [0.780, 0.918, 0.898]], [0.601, [0.780, 0.918, 0.898]], [0.603, [0.769, 0.913, 0.893]], [0.605, [0.769, 0.913, 0.893]], [0.607, [0.759, 0.909, 0.887]], [0.609, [0.759, 0.909, 0.887]], [0.611, [0.748, 0.904, 0.881]], [0.613, [0.748, 0.904, 0.881]], [0.614, [0.737, 0.900, 0.876]], [0.616, [0.737, 0.900, 0.876]], [0.618, [0.726, 0.895, 0.870]], [0.620, [0.726, 0.895, 0.870]], [0.622, [0.715, 0.891, 0.865]], [0.624, [0.715, 0.891, 0.865]], [0.626, [0.704, 0.886, 0.859]], [0.628, [0.704, 0.886, 0.859]], [0.630, [0.693, 0.882, 0.854]], [0.632, [0.693, 0.882, 0.854]], [0.634, [0.682, 0.878, 0.848]], [0.636, [0.682, 0.878, 0.848]], [0.638, [0.671, 0.873, 0.843]], [0.640, [0.671, 0.873, 0.843]], [0.642, [0.660, 0.869, 0.837]], [0.644, [0.660, 0.869, 0.837]], [0.646, [0.649, 0.864, 0.832]], [0.648, [0.649, 0.864, 0.832]], [0.650, [0.638, 0.860, 0.826]], [0.652, [0.638, 0.860, 0.826]], [0.654, [0.628, 0.855, 0.821]], [0.656, [0.628, 0.855, 0.821]], [0.658, [0.617, 0.851, 0.815]], [0.659, [0.617, 0.851, 0.815]], [0.661, [0.606, 0.846, 0.809]], [0.663, [0.606, 0.846, 0.809]], [0.665, [0.595, 0.842, 0.804]], [0.667, [0.595, 0.842, 0.804]], [0.669, [0.584, 0.837, 0.798]], [0.671, [0.584, 0.837, 0.798]], [0.673, [0.573, 0.833, 0.793]], [0.675, [0.573, 0.833, 0.793]], [0.677, [0.562, 0.828, 0.787]], [0.679, [0.562, 0.828, 0.787]], [0.681, [0.551, 0.824, 0.782]], [0.683, [0.551, 0.824, 0.782]], [0.685, [0.540, 0.820, 0.776]], [0.687, [0.540, 0.820, 0.776]], [0.689, [0.529, 0.815, 0.771]], [0.691, [0.529, 0.815, 0.771]], [0.693, [0.518, 0.811, 0.765]], [0.695, [0.518, 0.811, 0.765]], [0.697, [0.507, 0.806, 0.760]], [0.699, [0.507, 0.806, 0.760]], [0.701, [0.496, 0.800, 0.753]], [0.703, [0.496, 0.800, 0.753]], [0.705, [0.485, 0.791, 0.745]], [0.706, [0.485, 0.791, 0.745]], [0.708, [0.473, 0.783, 0.738]], [0.710, [0.473, 0.783, 0.738]], [0.712, [0.462, 0.775, 0.730]], [0.714, [0.462, 0.775, 0.730]], [0.716, [0.450, 0.767, 0.722]], [0.718, [0.450, 0.767, 0.722]], [0.720, [0.439, 0.758, 0.715]], [0.722, [0.439, 0.758, 0.715]], [0.724, [0.427, 0.750, 0.707]], [0.726, [0.427, 0.750, 0.707]], [0.728, [0.415, 0.742, 0.699]], [0.730, [0.415, 0.742, 0.699]], [0.732, [0.404, 0.733, 0.692]], [0.734, [0.404, 0.733, 0.692]], [0.736, [0.392, 0.725, 0.684]], [0.738, [0.392, 0.725, 0.684]], [0.740, [0.381, 0.717, 0.676]], [0.742, [0.381, 0.717, 0.676]], [0.744, [0.369, 0.708, 0.668]], [0.746, [0.369, 0.708, 0.668]], [0.748, [0.358, 0.700, 0.661]], [0.750, [0.358, 0.700, 0.661]], [0.751, [0.346, 0.692, 0.653]], [0.753, [0.346, 0.692, 0.653]], [0.755, [0.335, 0.684, 0.645]], [0.757, [0.335, 0.684, 0.645]], [0.759, [0.323, 0.675, 0.638]], [0.761, [0.323, 0.675, 0.638]], [0.763, [0.312, 0.667, 0.630]], [0.765, [0.312, 0.667, 0.630]], [0.767, [0.300, 0.659, 0.622]], [0.769, [0.300, 0.659, 0.622]], [0.771, [0.289, 0.650, 0.615]], [0.773, [0.289, 0.650, 0.615]], [0.775, [0.277, 0.642, 0.607]], [0.777, [0.277, 0.642, 0.607]], [0.779, [0.266, 0.634, 0.599]], [0.781, [0.266, 0.634, 0.599]], [0.783, [0.254, 0.625, 0.592]], [0.785, [0.254, 0.625, 0.592]], [0.787, [0.242, 0.617, 0.584]], [0.789, [0.242, 0.617, 0.584]], [0.791, [0.231, 0.609, 0.576]], [0.793, [0.231, 0.609, 0.576]], [0.795, [0.219, 0.600, 0.568]], [0.796, [0.219, 0.600, 0.568]], [0.798, [0.208, 0.592, 0.561]], [0.800, [0.208, 0.592, 0.561]], [0.802, [0.200, 0.585, 0.553]], [0.804, [0.200, 0.585, 0.553]], [0.806, [0.192, 0.577, 0.546]], [0.808, [0.192, 0.577, 0.546]], [0.810, [0.184, 0.570, 0.538]], [0.812, [0.184, 0.570, 0.538]], [0.814, [0.176, 0.562, 0.531]], [0.816, [0.176, 0.562, 0.531]], [0.818, [0.168, 0.554, 0.523]], [0.820, [0.168, 0.554, 0.523]], [0.822, [0.160, 0.547, 0.516]], [0.824, [0.160, 0.547, 0.516]], [0.826, [0.152, 0.539, 0.508]], [0.828, [0.152, 0.539, 0.508]], [0.830, [0.144, 0.532, 0.500]], [0.832, [0.144, 0.532, 0.500]], [0.834, [0.136, 0.524, 0.493]], [0.836, [0.136, 0.524, 0.493]], [0.838, [0.128, 0.517, 0.485]], [0.840, [0.128, 0.517, 0.485]], [0.841, [0.120, 0.509, 0.478]], [0.843, [0.120, 0.509, 0.478]], [0.845, [0.112, 0.502, 0.470]], [0.847, [0.112, 0.502, 0.470]], [0.849, [0.104, 0.494, 0.463]], [0.851, [0.104, 0.494, 0.463]], [0.853, [0.096, 0.487, 0.455]], [0.855, [0.096, 0.487, 0.455]], [0.857, [0.088, 0.479, 0.448]], [0.859, [0.088, 0.479, 0.448]], [0.861, [0.080, 0.472, 0.440]], [0.863, [0.080, 0.472, 0.440]], [0.865, [0.072, 0.464, 0.433]], [0.867, [0.072, 0.464, 0.433]], [0.869, [0.064, 0.457, 0.425]], [0.871, [0.064, 0.457, 0.425]], [0.873, [0.056, 0.449, 0.418]], [0.875, [0.056, 0.449, 0.418]], [0.877, [0.048, 0.441, 0.410]], [0.879, [0.048, 0.441, 0.410]], [0.881, [0.040, 0.434, 0.403]], [0.883, [0.040, 0.434, 0.403]], [0.885, [0.032, 0.426, 0.395]], [0.886, [0.032, 0.426, 0.395]], [0.888, [0.024, 0.419, 0.387]], [0.890, [0.024, 0.419, 0.387]], [0.892, [0.016, 0.411, 0.380]], [0.894, [0.016, 0.411, 0.380]], [0.896, [0.008, 0.404, 0.372]], [0.898, [0.008, 0.404, 0.372]], [0.900, [0.004, 0.397, 0.365]], [0.902, [0.004, 0.397, 0.365]], [0.904, [0.004, 0.390, 0.358]], [0.906, [0.004, 0.390, 0.358]], [0.908, [0.004, 0.384, 0.351]], [0.910, [0.004, 0.384, 0.351]], [0.912, [0.003, 0.377, 0.344]], [0.914, [0.003, 0.377, 0.344]], [0.916, [0.003, 0.371, 0.337]], [0.918, [0.003, 0.371, 0.337]], [0.920, [0.003, 0.364, 0.330]], [0.922, [0.003, 0.364, 0.330]], [0.924, [0.003, 0.358, 0.323]], [0.926, [0.003, 0.358, 0.323]], [0.928, [0.003, 0.352, 0.316]], [0.930, [0.003, 0.352, 0.316]], [0.932, [0.003, 0.345, 0.308]], [0.933, [0.003, 0.345, 0.308]], [0.935, [0.002, 0.339, 0.301]], [0.937, [0.002, 0.339, 0.301]], [0.939, [0.002, 0.332, 0.294]], [0.941, [0.002, 0.332, 0.294]], [0.943, [0.002, 0.326, 0.287]], [0.945, [0.002, 0.326, 0.287]], [0.947, [0.002, 0.319, 0.280]], [0.949, [0.002, 0.319, 0.280]], [0.951, [0.002, 0.313, 0.273]], [0.953, [0.002, 0.313, 0.273]], [0.955, [0.002, 0.306, 0.266]], [0.957, [0.002, 0.306, 0.266]], [0.959, [0.002, 0.300, 0.259]], [0.961, [0.002, 0.300, 0.259]], [0.963, [0.001, 0.293, 0.252]], [0.965, [0.001, 0.293, 0.252]], [0.967, [0.001, 0.287, 0.245]], [0.969, [0.001, 0.287, 0.245]], [0.971, [0.001, 0.281, 0.238]], [0.973, [0.001, 0.281, 0.238]], [0.975, [0.001, 0.274, 0.231]], [0.977, [0.001, 0.274, 0.231]], [0.978, [0.001, 0.268, 0.224]], [0.980, [0.001, 0.268, 0.224]], [0.982, [0.001, 0.261, 0.217]], [0.984, [0.001, 0.261, 0.217]], [0.986, [0.000, 0.255, 0.209]], [0.988, [0.000, 0.255, 0.209]], [0.990, [0.000, 0.248, 0.202]], [0.992, [0.000, 0.248, 0.202]], [0.994, [0.000, 0.242, 0.195]], [0.996, [0.000, 0.242, 0.195]], [0.998, [0.000, 0.235, 0.188]], [1.000, [0.000, 0.235, 0.188]]]; +var PRGn = [[0.000, [0.251, 0.000, 0.294]], [0.002, [0.251, 0.000, 0.294]], [0.004, [0.259, 0.006, 0.303]], [0.006, [0.259, 0.006, 0.303]], [0.008, [0.268, 0.013, 0.311]], [0.010, [0.268, 0.013, 0.311]], [0.012, [0.276, 0.019, 0.320]], [0.014, [0.276, 0.019, 0.320]], [0.016, [0.284, 0.026, 0.329]], [0.018, [0.284, 0.026, 0.329]], [0.020, [0.293, 0.032, 0.337]], [0.022, [0.293, 0.032, 0.337]], [0.023, [0.301, 0.039, 0.346]], [0.025, [0.301, 0.039, 0.346]], [0.027, [0.309, 0.045, 0.354]], [0.029, [0.309, 0.045, 0.354]], [0.031, [0.317, 0.052, 0.363]], [0.033, [0.317, 0.052, 0.363]], [0.035, [0.326, 0.058, 0.372]], [0.037, [0.326, 0.058, 0.372]], [0.039, [0.334, 0.065, 0.380]], [0.041, [0.334, 0.065, 0.380]], [0.043, [0.342, 0.071, 0.389]], [0.045, [0.342, 0.071, 0.389]], [0.047, [0.351, 0.078, 0.397]], [0.049, [0.351, 0.078, 0.397]], [0.051, [0.359, 0.084, 0.406]], [0.053, [0.359, 0.084, 0.406]], [0.055, [0.367, 0.090, 0.415]], [0.057, [0.367, 0.090, 0.415]], [0.059, [0.376, 0.097, 0.423]], [0.061, [0.376, 0.097, 0.423]], [0.063, [0.384, 0.103, 0.432]], [0.065, [0.384, 0.103, 0.432]], [0.067, [0.392, 0.110, 0.441]], [0.068, [0.392, 0.110, 0.441]], [0.070, [0.400, 0.116, 0.449]], [0.072, [0.400, 0.116, 0.449]], [0.074, [0.409, 0.123, 0.458]], [0.076, [0.409, 0.123, 0.458]], [0.078, [0.417, 0.129, 0.466]], [0.080, [0.417, 0.129, 0.466]], [0.082, [0.425, 0.136, 0.475]], [0.084, [0.425, 0.136, 0.475]], [0.086, [0.434, 0.142, 0.484]], [0.088, [0.434, 0.142, 0.484]], [0.090, [0.442, 0.149, 0.492]], [0.092, [0.442, 0.149, 0.492]], [0.094, [0.450, 0.155, 0.501]], [0.096, [0.450, 0.155, 0.501]], [0.098, [0.459, 0.161, 0.509]], [0.100, [0.459, 0.161, 0.509]], [0.102, [0.465, 0.170, 0.517]], [0.104, [0.465, 0.170, 0.517]], [0.106, [0.471, 0.181, 0.523]], [0.108, [0.471, 0.181, 0.523]], [0.110, [0.476, 0.192, 0.529]], [0.112, [0.476, 0.192, 0.529]], [0.114, [0.482, 0.202, 0.535]], [0.115, [0.482, 0.202, 0.535]], [0.117, [0.487, 0.213, 0.541]], [0.119, [0.487, 0.213, 0.541]], [0.121, [0.492, 0.224, 0.548]], [0.123, [0.492, 0.224, 0.548]], [0.125, [0.498, 0.235, 0.554]], [0.127, [0.498, 0.235, 0.554]], [0.129, [0.503, 0.245, 0.560]], [0.131, [0.503, 0.245, 0.560]], [0.133, [0.508, 0.256, 0.566]], [0.135, [0.508, 0.256, 0.566]], [0.137, [0.514, 0.267, 0.572]], [0.139, [0.514, 0.267, 0.572]], [0.141, [0.519, 0.278, 0.578]], [0.143, [0.519, 0.278, 0.578]], [0.145, [0.525, 0.289, 0.584]], [0.147, [0.525, 0.289, 0.584]], [0.149, [0.530, 0.299, 0.591]], [0.151, [0.530, 0.299, 0.591]], [0.153, [0.535, 0.310, 0.597]], [0.155, [0.535, 0.310, 0.597]], [0.157, [0.541, 0.321, 0.603]], [0.159, [0.541, 0.321, 0.603]], [0.160, [0.546, 0.332, 0.609]], [0.162, [0.546, 0.332, 0.609]], [0.164, [0.552, 0.342, 0.615]], [0.166, [0.552, 0.342, 0.615]], [0.168, [0.557, 0.353, 0.621]], [0.170, [0.557, 0.353, 0.621]], [0.172, [0.562, 0.364, 0.628]], [0.174, [0.562, 0.364, 0.628]], [0.176, [0.568, 0.375, 0.634]], [0.178, [0.568, 0.375, 0.634]], [0.180, [0.573, 0.385, 0.640]], [0.182, [0.573, 0.385, 0.640]], [0.184, [0.578, 0.396, 0.646]], [0.186, [0.578, 0.396, 0.646]], [0.188, [0.584, 0.407, 0.652]], [0.190, [0.584, 0.407, 0.652]], [0.192, [0.589, 0.418, 0.658]], [0.194, [0.589, 0.418, 0.658]], [0.196, [0.595, 0.428, 0.664]], [0.198, [0.595, 0.428, 0.664]], [0.200, [0.600, 0.439, 0.671]], [0.202, [0.600, 0.439, 0.671]], [0.204, [0.606, 0.447, 0.676]], [0.205, [0.606, 0.447, 0.676]], [0.207, [0.613, 0.456, 0.682]], [0.209, [0.613, 0.456, 0.682]], [0.211, [0.619, 0.464, 0.687]], [0.213, [0.619, 0.464, 0.687]], [0.215, [0.625, 0.472, 0.693]], [0.217, [0.625, 0.472, 0.693]], [0.219, [0.632, 0.480, 0.698]], [0.221, [0.632, 0.480, 0.698]], [0.223, [0.638, 0.488, 0.704]], [0.225, [0.638, 0.488, 0.704]], [0.227, [0.644, 0.496, 0.709]], [0.229, [0.644, 0.496, 0.709]], [0.231, [0.650, 0.504, 0.715]], [0.233, [0.650, 0.504, 0.715]], [0.235, [0.657, 0.513, 0.720]], [0.237, [0.657, 0.513, 0.720]], [0.239, [0.663, 0.521, 0.726]], [0.241, [0.663, 0.521, 0.726]], [0.243, [0.669, 0.529, 0.731]], [0.245, [0.669, 0.529, 0.731]], [0.247, [0.676, 0.537, 0.737]], [0.249, [0.676, 0.537, 0.737]], [0.250, [0.682, 0.545, 0.743]], [0.252, [0.682, 0.545, 0.743]], [0.254, [0.688, 0.553, 0.748]], [0.256, [0.688, 0.553, 0.748]], [0.258, [0.695, 0.561, 0.754]], [0.260, [0.695, 0.561, 0.754]], [0.262, [0.701, 0.570, 0.759]], [0.264, [0.701, 0.570, 0.759]], [0.266, [0.707, 0.578, 0.765]], [0.268, [0.707, 0.578, 0.765]], [0.270, [0.713, 0.586, 0.770]], [0.272, [0.713, 0.586, 0.770]], [0.274, [0.720, 0.594, 0.776]], [0.276, [0.720, 0.594, 0.776]], [0.278, [0.726, 0.602, 0.781]], [0.280, [0.726, 0.602, 0.781]], [0.282, [0.732, 0.610, 0.787]], [0.284, [0.732, 0.610, 0.787]], [0.286, [0.739, 0.619, 0.792]], [0.288, [0.739, 0.619, 0.792]], [0.290, [0.745, 0.627, 0.798]], [0.292, [0.745, 0.627, 0.798]], [0.294, [0.751, 0.635, 0.803]], [0.295, [0.751, 0.635, 0.803]], [0.297, [0.758, 0.643, 0.809]], [0.299, [0.758, 0.643, 0.809]], [0.301, [0.764, 0.651, 0.814]], [0.303, [0.764, 0.651, 0.814]], [0.305, [0.769, 0.658, 0.818]], [0.307, [0.769, 0.658, 0.818]], [0.309, [0.775, 0.665, 0.821]], [0.311, [0.775, 0.665, 0.821]], [0.313, [0.781, 0.672, 0.825]], [0.315, [0.781, 0.672, 0.825]], [0.317, [0.786, 0.680, 0.829]], [0.319, [0.786, 0.680, 0.829]], [0.321, [0.792, 0.687, 0.833]], [0.323, [0.792, 0.687, 0.833]], [0.325, [0.798, 0.694, 0.837]], [0.327, [0.798, 0.694, 0.837]], [0.329, [0.803, 0.701, 0.841]], [0.331, [0.803, 0.701, 0.841]], [0.333, [0.809, 0.708, 0.844]], [0.335, [0.809, 0.708, 0.844]], [0.337, [0.815, 0.716, 0.848]], [0.339, [0.815, 0.716, 0.848]], [0.341, [0.821, 0.723, 0.852]], [0.342, [0.821, 0.723, 0.852]], [0.344, [0.826, 0.730, 0.856]], [0.346, [0.826, 0.730, 0.856]], [0.348, [0.832, 0.737, 0.860]], [0.350, [0.832, 0.737, 0.860]], [0.352, [0.838, 0.745, 0.864]], [0.354, [0.838, 0.745, 0.864]], [0.356, [0.843, 0.752, 0.868]], [0.358, [0.843, 0.752, 0.868]], [0.360, [0.849, 0.759, 0.871]], [0.362, [0.849, 0.759, 0.871]], [0.364, [0.855, 0.766, 0.875]], [0.366, [0.855, 0.766, 0.875]], [0.368, [0.860, 0.774, 0.879]], [0.370, [0.860, 0.774, 0.879]], [0.372, [0.866, 0.781, 0.883]], [0.374, [0.866, 0.781, 0.883]], [0.376, [0.872, 0.788, 0.887]], [0.378, [0.872, 0.788, 0.887]], [0.380, [0.877, 0.795, 0.891]], [0.382, [0.877, 0.795, 0.891]], [0.384, [0.883, 0.802, 0.894]], [0.386, [0.883, 0.802, 0.894]], [0.387, [0.889, 0.810, 0.898]], [0.389, [0.889, 0.810, 0.898]], [0.391, [0.895, 0.817, 0.902]], [0.393, [0.895, 0.817, 0.902]], [0.395, [0.900, 0.824, 0.906]], [0.397, [0.900, 0.824, 0.906]], [0.399, [0.906, 0.831, 0.910]], [0.401, [0.906, 0.831, 0.910]], [0.403, [0.908, 0.837, 0.912]], [0.405, [0.908, 0.837, 0.912]], [0.407, [0.911, 0.842, 0.914]], [0.409, [0.911, 0.842, 0.914]], [0.411, [0.913, 0.848, 0.917]], [0.413, [0.913, 0.848, 0.917]], [0.415, [0.916, 0.853, 0.919]], [0.417, [0.916, 0.853, 0.919]], [0.419, [0.918, 0.858, 0.921]], [0.421, [0.918, 0.858, 0.921]], [0.423, [0.921, 0.864, 0.924]], [0.425, [0.921, 0.864, 0.924]], [0.427, [0.923, 0.869, 0.926]], [0.429, [0.923, 0.869, 0.926]], [0.431, [0.926, 0.874, 0.928]], [0.432, [0.926, 0.874, 0.928]], [0.434, [0.928, 0.880, 0.931]], [0.436, [0.928, 0.880, 0.931]], [0.438, [0.930, 0.885, 0.933]], [0.440, [0.930, 0.885, 0.933]], [0.442, [0.933, 0.891, 0.935]], [0.444, [0.933, 0.891, 0.935]], [0.446, [0.935, 0.896, 0.937]], [0.448, [0.935, 0.896, 0.937]], [0.450, [0.938, 0.901, 0.940]], [0.452, [0.938, 0.901, 0.940]], [0.454, [0.940, 0.907, 0.942]], [0.456, [0.940, 0.907, 0.942]], [0.458, [0.943, 0.912, 0.944]], [0.460, [0.943, 0.912, 0.944]], [0.462, [0.945, 0.917, 0.947]], [0.464, [0.945, 0.917, 0.947]], [0.466, [0.948, 0.923, 0.949]], [0.468, [0.948, 0.923, 0.949]], [0.470, [0.950, 0.928, 0.951]], [0.472, [0.950, 0.928, 0.951]], [0.474, [0.953, 0.934, 0.954]], [0.476, [0.953, 0.934, 0.954]], [0.477, [0.955, 0.939, 0.956]], [0.479, [0.955, 0.939, 0.956]], [0.481, [0.958, 0.944, 0.958]], [0.483, [0.958, 0.944, 0.958]], [0.485, [0.960, 0.950, 0.961]], [0.487, [0.960, 0.950, 0.961]], [0.489, [0.962, 0.955, 0.963]], [0.491, [0.962, 0.955, 0.963]], [0.493, [0.965, 0.961, 0.965]], [0.495, [0.965, 0.961, 0.965]], [0.497, [0.967, 0.966, 0.967]], [0.499, [0.967, 0.966, 0.967]], [0.501, [0.966, 0.968, 0.966]], [0.503, [0.966, 0.968, 0.966]], [0.505, [0.962, 0.967, 0.960]], [0.507, [0.962, 0.967, 0.960]], [0.509, [0.957, 0.966, 0.955]], [0.511, [0.957, 0.966, 0.955]], [0.513, [0.952, 0.965, 0.949]], [0.515, [0.952, 0.965, 0.949]], [0.517, [0.948, 0.964, 0.944]], [0.519, [0.948, 0.964, 0.944]], [0.521, [0.943, 0.963, 0.938]], [0.523, [0.943, 0.963, 0.938]], [0.524, [0.939, 0.962, 0.933]], [0.526, [0.939, 0.962, 0.933]], [0.528, [0.934, 0.961, 0.927]], [0.530, [0.934, 0.961, 0.927]], [0.532, [0.929, 0.959, 0.922]], [0.534, [0.929, 0.959, 0.922]], [0.536, [0.925, 0.958, 0.916]], [0.538, [0.925, 0.958, 0.916]], [0.540, [0.920, 0.957, 0.910]], [0.542, [0.920, 0.957, 0.910]], [0.544, [0.916, 0.956, 0.905]], [0.546, [0.916, 0.956, 0.905]], [0.548, [0.911, 0.955, 0.899]], [0.550, [0.911, 0.955, 0.899]], [0.552, [0.906, 0.954, 0.894]], [0.554, [0.906, 0.954, 0.894]], [0.556, [0.902, 0.953, 0.888]], [0.558, [0.902, 0.953, 0.888]], [0.560, [0.897, 0.952, 0.883]], [0.562, [0.897, 0.952, 0.883]], [0.564, [0.893, 0.951, 0.877]], [0.566, [0.893, 0.951, 0.877]], [0.568, [0.888, 0.950, 0.872]], [0.569, [0.888, 0.950, 0.872]], [0.571, [0.883, 0.949, 0.866]], [0.573, [0.883, 0.949, 0.866]], [0.575, [0.879, 0.948, 0.861]], [0.577, [0.879, 0.948, 0.861]], [0.579, [0.874, 0.947, 0.855]], [0.581, [0.874, 0.947, 0.855]], [0.583, [0.869, 0.945, 0.850]], [0.585, [0.869, 0.945, 0.850]], [0.587, [0.865, 0.944, 0.844]], [0.589, [0.865, 0.944, 0.844]], [0.591, [0.860, 0.943, 0.839]], [0.593, [0.860, 0.943, 0.839]], [0.595, [0.856, 0.942, 0.833]], [0.597, [0.856, 0.942, 0.833]], [0.599, [0.851, 0.941, 0.827]], [0.601, [0.851, 0.941, 0.827]], [0.603, [0.843, 0.938, 0.820]], [0.605, [0.843, 0.938, 0.820]], [0.607, [0.835, 0.935, 0.812]], [0.609, [0.835, 0.935, 0.812]], [0.611, [0.827, 0.931, 0.804]], [0.613, [0.827, 0.931, 0.804]], [0.614, [0.820, 0.928, 0.796]], [0.616, [0.820, 0.928, 0.796]], [0.618, [0.812, 0.925, 0.788]], [0.620, [0.812, 0.925, 0.788]], [0.622, [0.804, 0.922, 0.780]], [0.624, [0.804, 0.922, 0.780]], [0.626, [0.796, 0.919, 0.773]], [0.628, [0.796, 0.919, 0.773]], [0.630, [0.788, 0.915, 0.765]], [0.632, [0.788, 0.915, 0.765]], [0.634, [0.780, 0.912, 0.757]], [0.636, [0.780, 0.912, 0.757]], [0.638, [0.773, 0.909, 0.749]], [0.640, [0.773, 0.909, 0.749]], [0.642, [0.765, 0.906, 0.741]], [0.644, [0.765, 0.906, 0.741]], [0.646, [0.757, 0.902, 0.733]], [0.648, [0.757, 0.902, 0.733]], [0.650, [0.749, 0.899, 0.725]], [0.652, [0.749, 0.899, 0.725]], [0.654, [0.741, 0.896, 0.718]], [0.656, [0.741, 0.896, 0.718]], [0.658, [0.733, 0.893, 0.710]], [0.659, [0.733, 0.893, 0.710]], [0.661, [0.725, 0.890, 0.702]], [0.663, [0.725, 0.890, 0.702]], [0.665, [0.718, 0.886, 0.694]], [0.667, [0.718, 0.886, 0.694]], [0.669, [0.710, 0.883, 0.686]], [0.671, [0.710, 0.883, 0.686]], [0.673, [0.702, 0.880, 0.678]], [0.675, [0.702, 0.880, 0.678]], [0.677, [0.694, 0.877, 0.671]], [0.679, [0.694, 0.877, 0.671]], [0.681, [0.686, 0.873, 0.663]], [0.683, [0.686, 0.873, 0.663]], [0.685, [0.678, 0.870, 0.655]], [0.687, [0.678, 0.870, 0.655]], [0.689, [0.671, 0.867, 0.647]], [0.691, [0.671, 0.867, 0.647]], [0.693, [0.663, 0.864, 0.639]], [0.695, [0.663, 0.864, 0.639]], [0.697, [0.655, 0.860, 0.631]], [0.699, [0.655, 0.860, 0.631]], [0.701, [0.645, 0.855, 0.623]], [0.703, [0.645, 0.855, 0.623]], [0.705, [0.633, 0.848, 0.613]], [0.706, [0.633, 0.848, 0.613]], [0.708, [0.622, 0.842, 0.603]], [0.710, [0.622, 0.842, 0.603]], [0.712, [0.610, 0.835, 0.594]], [0.714, [0.610, 0.835, 0.594]], [0.716, [0.598, 0.828, 0.584]], [0.718, [0.598, 0.828, 0.584]], [0.720, [0.587, 0.821, 0.574]], [0.722, [0.587, 0.821, 0.574]], [0.724, [0.575, 0.814, 0.564]], [0.726, [0.575, 0.814, 0.564]], [0.728, [0.563, 0.807, 0.555]], [0.730, [0.563, 0.807, 0.555]], [0.732, [0.552, 0.800, 0.545]], [0.734, [0.552, 0.800, 0.545]], [0.736, [0.540, 0.793, 0.535]], [0.738, [0.540, 0.793, 0.535]], [0.740, [0.528, 0.786, 0.526]], [0.742, [0.528, 0.786, 0.526]], [0.744, [0.517, 0.779, 0.516]], [0.746, [0.517, 0.779, 0.516]], [0.748, [0.505, 0.772, 0.506]], [0.750, [0.505, 0.772, 0.506]], [0.751, [0.493, 0.765, 0.497]], [0.753, [0.493, 0.765, 0.497]], [0.755, [0.482, 0.758, 0.487]], [0.757, [0.482, 0.758, 0.487]], [0.759, [0.470, 0.752, 0.477]], [0.761, [0.470, 0.752, 0.477]], [0.763, [0.458, 0.745, 0.468]], [0.765, [0.458, 0.745, 0.468]], [0.767, [0.446, 0.738, 0.458]], [0.769, [0.446, 0.738, 0.458]], [0.771, [0.435, 0.731, 0.448]], [0.773, [0.435, 0.731, 0.448]], [0.775, [0.423, 0.724, 0.439]], [0.777, [0.423, 0.724, 0.439]], [0.779, [0.411, 0.717, 0.429]], [0.781, [0.411, 0.717, 0.429]], [0.783, [0.400, 0.710, 0.419]], [0.785, [0.400, 0.710, 0.419]], [0.787, [0.388, 0.703, 0.409]], [0.789, [0.388, 0.703, 0.409]], [0.791, [0.376, 0.696, 0.400]], [0.793, [0.376, 0.696, 0.400]], [0.795, [0.365, 0.689, 0.390]], [0.796, [0.365, 0.689, 0.390]], [0.798, [0.353, 0.682, 0.380]], [0.800, [0.353, 0.682, 0.380]], [0.802, [0.343, 0.674, 0.374]], [0.804, [0.343, 0.674, 0.374]], [0.806, [0.334, 0.666, 0.367]], [0.808, [0.334, 0.666, 0.367]], [0.810, [0.324, 0.657, 0.361]], [0.812, [0.324, 0.657, 0.361]], [0.814, [0.314, 0.649, 0.355]], [0.816, [0.314, 0.649, 0.355]], [0.818, [0.304, 0.641, 0.348]], [0.820, [0.304, 0.641, 0.348]], [0.822, [0.295, 0.633, 0.342]], [0.824, [0.295, 0.633, 0.342]], [0.826, [0.285, 0.624, 0.335]], [0.828, [0.285, 0.624, 0.335]], [0.830, [0.275, 0.616, 0.329]], [0.832, [0.275, 0.616, 0.329]], [0.834, [0.266, 0.608, 0.322]], [0.836, [0.266, 0.608, 0.322]], [0.838, [0.256, 0.599, 0.316]], [0.840, [0.256, 0.599, 0.316]], [0.841, [0.246, 0.591, 0.309]], [0.843, [0.246, 0.591, 0.309]], [0.845, [0.237, 0.583, 0.303]], [0.847, [0.237, 0.583, 0.303]], [0.849, [0.227, 0.574, 0.296]], [0.851, [0.227, 0.574, 0.296]], [0.853, [0.217, 0.566, 0.290]], [0.855, [0.217, 0.566, 0.290]], [0.857, [0.208, 0.558, 0.284]], [0.859, [0.208, 0.558, 0.284]], [0.861, [0.198, 0.549, 0.277]], [0.863, [0.198, 0.549, 0.277]], [0.865, [0.188, 0.541, 0.271]], [0.867, [0.188, 0.541, 0.271]], [0.869, [0.179, 0.533, 0.264]], [0.871, [0.179, 0.533, 0.264]], [0.873, [0.169, 0.525, 0.258]], [0.875, [0.169, 0.525, 0.258]], [0.877, [0.159, 0.516, 0.251]], [0.879, [0.159, 0.516, 0.251]], [0.881, [0.149, 0.508, 0.245]], [0.883, [0.149, 0.508, 0.245]], [0.885, [0.140, 0.500, 0.238]], [0.886, [0.140, 0.500, 0.238]], [0.888, [0.130, 0.491, 0.232]], [0.890, [0.130, 0.491, 0.232]], [0.892, [0.120, 0.483, 0.225]], [0.894, [0.120, 0.483, 0.225]], [0.896, [0.111, 0.475, 0.219]], [0.898, [0.111, 0.475, 0.219]], [0.900, [0.104, 0.467, 0.214]], [0.902, [0.104, 0.467, 0.214]], [0.904, [0.100, 0.459, 0.209]], [0.906, [0.100, 0.459, 0.209]], [0.908, [0.096, 0.451, 0.205]], [0.910, [0.096, 0.451, 0.205]], [0.912, [0.091, 0.443, 0.201]], [0.914, [0.091, 0.443, 0.201]], [0.916, [0.087, 0.435, 0.196]], [0.918, [0.087, 0.435, 0.196]], [0.920, [0.083, 0.427, 0.192]], [0.922, [0.083, 0.427, 0.192]], [0.924, [0.079, 0.419, 0.188]], [0.926, [0.079, 0.419, 0.188]], [0.928, [0.075, 0.411, 0.183]], [0.930, [0.075, 0.411, 0.183]], [0.932, [0.071, 0.403, 0.179]], [0.933, [0.071, 0.403, 0.179]], [0.935, [0.066, 0.395, 0.175]], [0.937, [0.066, 0.395, 0.175]], [0.939, [0.062, 0.387, 0.170]], [0.941, [0.062, 0.387, 0.170]], [0.943, [0.058, 0.379, 0.166]], [0.945, [0.058, 0.379, 0.166]], [0.947, [0.054, 0.371, 0.162]], [0.949, [0.054, 0.371, 0.162]], [0.951, [0.050, 0.363, 0.158]], [0.953, [0.050, 0.363, 0.158]], [0.955, [0.046, 0.355, 0.153]], [0.957, [0.046, 0.355, 0.153]], [0.959, [0.042, 0.347, 0.149]], [0.961, [0.042, 0.347, 0.149]], [0.963, [0.037, 0.339, 0.145]], [0.965, [0.037, 0.339, 0.145]], [0.967, [0.033, 0.331, 0.140]], [0.969, [0.033, 0.331, 0.140]], [0.971, [0.029, 0.323, 0.136]], [0.973, [0.029, 0.323, 0.136]], [0.975, [0.025, 0.315, 0.132]], [0.977, [0.025, 0.315, 0.132]], [0.978, [0.021, 0.307, 0.127]], [0.980, [0.021, 0.307, 0.127]], [0.982, [0.017, 0.299, 0.123]], [0.984, [0.017, 0.299, 0.123]], [0.986, [0.012, 0.291, 0.119]], [0.988, [0.012, 0.291, 0.119]], [0.990, [0.008, 0.283, 0.114]], [0.992, [0.008, 0.283, 0.114]], [0.994, [0.004, 0.275, 0.110]], [0.996, [0.004, 0.275, 0.110]], [0.998, [0.000, 0.267, 0.106]], [1.000, [0.000, 0.267, 0.106]]]; +var PiYG = [[0.000, [0.557, 0.004, 0.322]], [0.002, [0.557, 0.004, 0.322]], [0.004, [0.565, 0.008, 0.328]], [0.006, [0.565, 0.008, 0.328]], [0.008, [0.574, 0.012, 0.335]], [0.010, [0.574, 0.012, 0.335]], [0.012, [0.582, 0.016, 0.341]], [0.014, [0.582, 0.016, 0.341]], [0.016, [0.591, 0.020, 0.348]], [0.018, [0.591, 0.020, 0.348]], [0.020, [0.599, 0.024, 0.355]], [0.022, [0.599, 0.024, 0.355]], [0.023, [0.608, 0.028, 0.361]], [0.025, [0.608, 0.028, 0.361]], [0.027, [0.616, 0.032, 0.368]], [0.029, [0.616, 0.032, 0.368]], [0.031, [0.625, 0.036, 0.374]], [0.033, [0.625, 0.036, 0.374]], [0.035, [0.633, 0.040, 0.381]], [0.037, [0.633, 0.040, 0.381]], [0.039, [0.641, 0.044, 0.388]], [0.041, [0.641, 0.044, 0.388]], [0.043, [0.650, 0.048, 0.394]], [0.045, [0.650, 0.048, 0.394]], [0.047, [0.658, 0.052, 0.401]], [0.049, [0.658, 0.052, 0.401]], [0.051, [0.667, 0.056, 0.408]], [0.053, [0.667, 0.056, 0.408]], [0.055, [0.675, 0.060, 0.414]], [0.057, [0.675, 0.060, 0.414]], [0.059, [0.684, 0.064, 0.421]], [0.061, [0.684, 0.064, 0.421]], [0.063, [0.692, 0.068, 0.427]], [0.065, [0.692, 0.068, 0.427]], [0.067, [0.701, 0.072, 0.434]], [0.068, [0.701, 0.072, 0.434]], [0.070, [0.709, 0.076, 0.441]], [0.072, [0.709, 0.076, 0.441]], [0.074, [0.718, 0.080, 0.447]], [0.076, [0.718, 0.080, 0.447]], [0.078, [0.726, 0.084, 0.454]], [0.080, [0.726, 0.084, 0.454]], [0.082, [0.734, 0.088, 0.460]], [0.084, [0.734, 0.088, 0.460]], [0.086, [0.743, 0.092, 0.467]], [0.088, [0.743, 0.092, 0.467]], [0.090, [0.751, 0.096, 0.474]], [0.092, [0.751, 0.096, 0.474]], [0.094, [0.760, 0.100, 0.480]], [0.096, [0.760, 0.100, 0.480]], [0.098, [0.768, 0.104, 0.487]], [0.100, [0.768, 0.104, 0.487]], [0.102, [0.774, 0.113, 0.494]], [0.104, [0.774, 0.113, 0.494]], [0.106, [0.778, 0.127, 0.501]], [0.108, [0.778, 0.127, 0.501]], [0.110, [0.782, 0.141, 0.509]], [0.112, [0.782, 0.141, 0.509]], [0.114, [0.786, 0.155, 0.517]], [0.115, [0.786, 0.155, 0.517]], [0.117, [0.790, 0.170, 0.524]], [0.119, [0.790, 0.170, 0.524]], [0.121, [0.794, 0.184, 0.532]], [0.123, [0.794, 0.184, 0.532]], [0.125, [0.798, 0.198, 0.539]], [0.127, [0.798, 0.198, 0.539]], [0.129, [0.801, 0.212, 0.547]], [0.131, [0.801, 0.212, 0.547]], [0.133, [0.805, 0.226, 0.554]], [0.135, [0.805, 0.226, 0.554]], [0.137, [0.809, 0.240, 0.562]], [0.139, [0.809, 0.240, 0.562]], [0.141, [0.813, 0.254, 0.569]], [0.143, [0.813, 0.254, 0.569]], [0.145, [0.817, 0.269, 0.577]], [0.147, [0.817, 0.269, 0.577]], [0.149, [0.821, 0.283, 0.584]], [0.151, [0.821, 0.283, 0.584]], [0.153, [0.824, 0.297, 0.592]], [0.155, [0.824, 0.297, 0.592]], [0.157, [0.828, 0.311, 0.599]], [0.159, [0.828, 0.311, 0.599]], [0.160, [0.832, 0.325, 0.607]], [0.162, [0.832, 0.325, 0.607]], [0.164, [0.836, 0.339, 0.615]], [0.166, [0.836, 0.339, 0.615]], [0.168, [0.840, 0.353, 0.622]], [0.170, [0.840, 0.353, 0.622]], [0.172, [0.844, 0.368, 0.630]], [0.174, [0.844, 0.368, 0.630]], [0.176, [0.848, 0.382, 0.637]], [0.178, [0.848, 0.382, 0.637]], [0.180, [0.851, 0.396, 0.645]], [0.182, [0.851, 0.396, 0.645]], [0.184, [0.855, 0.410, 0.652]], [0.186, [0.855, 0.410, 0.652]], [0.188, [0.859, 0.424, 0.660]], [0.190, [0.859, 0.424, 0.660]], [0.192, [0.863, 0.438, 0.667]], [0.194, [0.863, 0.438, 0.667]], [0.196, [0.867, 0.453, 0.675]], [0.198, [0.867, 0.453, 0.675]], [0.200, [0.871, 0.467, 0.682]], [0.202, [0.871, 0.467, 0.682]], [0.204, [0.874, 0.476, 0.689]], [0.205, [0.874, 0.476, 0.689]], [0.207, [0.876, 0.486, 0.696]], [0.209, [0.876, 0.486, 0.696]], [0.211, [0.879, 0.496, 0.703]], [0.213, [0.879, 0.496, 0.703]], [0.215, [0.882, 0.505, 0.709]], [0.217, [0.882, 0.505, 0.709]], [0.219, [0.885, 0.515, 0.716]], [0.221, [0.885, 0.515, 0.716]], [0.223, [0.888, 0.525, 0.723]], [0.225, [0.888, 0.525, 0.723]], [0.227, [0.891, 0.534, 0.730]], [0.229, [0.891, 0.534, 0.730]], [0.231, [0.894, 0.544, 0.736]], [0.233, [0.894, 0.544, 0.736]], [0.235, [0.897, 0.554, 0.743]], [0.237, [0.897, 0.554, 0.743]], [0.239, [0.900, 0.564, 0.750]], [0.241, [0.900, 0.564, 0.750]], [0.243, [0.903, 0.573, 0.757]], [0.245, [0.903, 0.573, 0.757]], [0.247, [0.906, 0.583, 0.764]], [0.249, [0.906, 0.583, 0.764]], [0.250, [0.909, 0.593, 0.770]], [0.252, [0.909, 0.593, 0.770]], [0.254, [0.911, 0.602, 0.777]], [0.256, [0.911, 0.602, 0.777]], [0.258, [0.914, 0.612, 0.784]], [0.260, [0.914, 0.612, 0.784]], [0.262, [0.917, 0.622, 0.791]], [0.264, [0.917, 0.622, 0.791]], [0.266, [0.920, 0.631, 0.797]], [0.268, [0.920, 0.631, 0.797]], [0.270, [0.923, 0.641, 0.804]], [0.272, [0.923, 0.641, 0.804]], [0.274, [0.926, 0.651, 0.811]], [0.276, [0.926, 0.651, 0.811]], [0.278, [0.929, 0.660, 0.818]], [0.280, [0.929, 0.660, 0.818]], [0.282, [0.932, 0.670, 0.824]], [0.284, [0.932, 0.670, 0.824]], [0.286, [0.935, 0.680, 0.831]], [0.288, [0.935, 0.680, 0.831]], [0.290, [0.938, 0.690, 0.838]], [0.292, [0.938, 0.690, 0.838]], [0.294, [0.941, 0.699, 0.845]], [0.295, [0.941, 0.699, 0.845]], [0.297, [0.944, 0.709, 0.852]], [0.299, [0.944, 0.709, 0.852]], [0.301, [0.946, 0.717, 0.857]], [0.303, [0.946, 0.717, 0.857]], [0.305, [0.948, 0.723, 0.860]], [0.307, [0.948, 0.723, 0.860]], [0.309, [0.950, 0.730, 0.863]], [0.311, [0.950, 0.730, 0.863]], [0.313, [0.952, 0.736, 0.866]], [0.315, [0.952, 0.736, 0.866]], [0.317, [0.953, 0.743, 0.869]], [0.319, [0.953, 0.743, 0.869]], [0.321, [0.955, 0.749, 0.873]], [0.323, [0.955, 0.749, 0.873]], [0.325, [0.957, 0.756, 0.876]], [0.327, [0.957, 0.756, 0.876]], [0.329, [0.959, 0.762, 0.879]], [0.331, [0.959, 0.762, 0.879]], [0.333, [0.961, 0.769, 0.882]], [0.335, [0.961, 0.769, 0.882]], [0.337, [0.963, 0.775, 0.886]], [0.339, [0.963, 0.775, 0.886]], [0.341, [0.964, 0.782, 0.889]], [0.342, [0.964, 0.782, 0.889]], [0.344, [0.966, 0.788, 0.892]], [0.346, [0.966, 0.788, 0.892]], [0.348, [0.968, 0.794, 0.895]], [0.350, [0.968, 0.794, 0.895]], [0.352, [0.970, 0.801, 0.899]], [0.354, [0.970, 0.801, 0.899]], [0.356, [0.972, 0.807, 0.902]], [0.358, [0.972, 0.807, 0.902]], [0.360, [0.974, 0.814, 0.905]], [0.362, [0.974, 0.814, 0.905]], [0.364, [0.976, 0.820, 0.908]], [0.366, [0.976, 0.820, 0.908]], [0.368, [0.977, 0.827, 0.911]], [0.370, [0.977, 0.827, 0.911]], [0.372, [0.979, 0.833, 0.915]], [0.374, [0.979, 0.833, 0.915]], [0.376, [0.981, 0.840, 0.918]], [0.378, [0.981, 0.840, 0.918]], [0.380, [0.983, 0.846, 0.921]], [0.382, [0.983, 0.846, 0.921]], [0.384, [0.985, 0.853, 0.924]], [0.386, [0.985, 0.853, 0.924]], [0.387, [0.987, 0.859, 0.928]], [0.389, [0.987, 0.859, 0.928]], [0.391, [0.988, 0.866, 0.931]], [0.393, [0.988, 0.866, 0.931]], [0.395, [0.990, 0.872, 0.934]], [0.397, [0.990, 0.872, 0.934]], [0.399, [0.992, 0.878, 0.937]], [0.401, [0.992, 0.878, 0.937]], [0.403, [0.991, 0.882, 0.938]], [0.405, [0.991, 0.882, 0.938]], [0.407, [0.990, 0.886, 0.940]], [0.409, [0.990, 0.886, 0.940]], [0.411, [0.989, 0.889, 0.941]], [0.413, [0.989, 0.889, 0.941]], [0.415, [0.988, 0.893, 0.942]], [0.417, [0.988, 0.893, 0.942]], [0.419, [0.988, 0.896, 0.943]], [0.421, [0.988, 0.896, 0.943]], [0.423, [0.987, 0.900, 0.945]], [0.425, [0.987, 0.900, 0.945]], [0.427, [0.986, 0.903, 0.946]], [0.429, [0.986, 0.903, 0.946]], [0.431, [0.985, 0.907, 0.947]], [0.432, [0.985, 0.907, 0.947]], [0.434, [0.984, 0.910, 0.948]], [0.436, [0.984, 0.910, 0.948]], [0.438, [0.983, 0.914, 0.950]], [0.440, [0.983, 0.914, 0.950]], [0.442, [0.982, 0.917, 0.951]], [0.444, [0.982, 0.917, 0.951]], [0.446, [0.981, 0.921, 0.952]], [0.448, [0.981, 0.921, 0.952]], [0.450, [0.980, 0.924, 0.953]], [0.452, [0.980, 0.924, 0.953]], [0.454, [0.979, 0.928, 0.954]], [0.456, [0.979, 0.928, 0.954]], [0.458, [0.978, 0.931, 0.956]], [0.460, [0.978, 0.931, 0.956]], [0.462, [0.977, 0.935, 0.957]], [0.464, [0.977, 0.935, 0.957]], [0.466, [0.976, 0.939, 0.958]], [0.468, [0.976, 0.939, 0.958]], [0.470, [0.976, 0.942, 0.959]], [0.472, [0.976, 0.942, 0.959]], [0.474, [0.975, 0.946, 0.961]], [0.476, [0.975, 0.946, 0.961]], [0.477, [0.974, 0.949, 0.962]], [0.479, [0.974, 0.949, 0.962]], [0.481, [0.973, 0.953, 0.963]], [0.483, [0.973, 0.953, 0.963]], [0.485, [0.972, 0.956, 0.964]], [0.487, [0.972, 0.956, 0.964]], [0.489, [0.971, 0.960, 0.966]], [0.491, [0.971, 0.960, 0.966]], [0.493, [0.970, 0.963, 0.967]], [0.495, [0.970, 0.963, 0.967]], [0.497, [0.969, 0.967, 0.968]], [0.499, [0.969, 0.967, 0.968]], [0.501, [0.967, 0.968, 0.966]], [0.503, [0.967, 0.968, 0.966]], [0.505, [0.965, 0.968, 0.960]], [0.507, [0.965, 0.968, 0.960]], [0.509, [0.962, 0.968, 0.954]], [0.511, [0.962, 0.968, 0.954]], [0.513, [0.959, 0.968, 0.948]], [0.515, [0.959, 0.968, 0.948]], [0.517, [0.957, 0.967, 0.942]], [0.519, [0.957, 0.967, 0.942]], [0.521, [0.954, 0.967, 0.936]], [0.523, [0.954, 0.967, 0.936]], [0.524, [0.952, 0.967, 0.930]], [0.526, [0.952, 0.967, 0.930]], [0.528, [0.949, 0.966, 0.924]], [0.530, [0.949, 0.966, 0.924]], [0.532, [0.946, 0.966, 0.918]], [0.534, [0.946, 0.966, 0.918]], [0.536, [0.944, 0.966, 0.912]], [0.538, [0.944, 0.966, 0.912]], [0.540, [0.941, 0.965, 0.906]], [0.542, [0.941, 0.965, 0.906]], [0.544, [0.939, 0.965, 0.900]], [0.546, [0.939, 0.965, 0.900]], [0.548, [0.936, 0.965, 0.894]], [0.550, [0.936, 0.965, 0.894]], [0.552, [0.933, 0.964, 0.888]], [0.554, [0.933, 0.964, 0.888]], [0.556, [0.931, 0.964, 0.882]], [0.558, [0.931, 0.964, 0.882]], [0.560, [0.928, 0.964, 0.876]], [0.562, [0.928, 0.964, 0.876]], [0.564, [0.925, 0.964, 0.870]], [0.566, [0.925, 0.964, 0.870]], [0.568, [0.923, 0.963, 0.864]], [0.569, [0.923, 0.963, 0.864]], [0.571, [0.920, 0.963, 0.858]], [0.573, [0.920, 0.963, 0.858]], [0.575, [0.918, 0.963, 0.852]], [0.577, [0.918, 0.963, 0.852]], [0.579, [0.915, 0.962, 0.846]], [0.581, [0.915, 0.962, 0.846]], [0.583, [0.912, 0.962, 0.840]], [0.585, [0.912, 0.962, 0.840]], [0.587, [0.910, 0.962, 0.834]], [0.589, [0.910, 0.962, 0.834]], [0.591, [0.907, 0.961, 0.828]], [0.593, [0.907, 0.961, 0.828]], [0.595, [0.905, 0.961, 0.822]], [0.597, [0.905, 0.961, 0.822]], [0.599, [0.902, 0.961, 0.816]], [0.601, [0.902, 0.961, 0.816]], [0.603, [0.895, 0.958, 0.804]], [0.605, [0.895, 0.958, 0.804]], [0.607, [0.888, 0.955, 0.793]], [0.609, [0.888, 0.955, 0.793]], [0.611, [0.881, 0.952, 0.782]], [0.613, [0.881, 0.952, 0.782]], [0.614, [0.874, 0.948, 0.770]], [0.616, [0.874, 0.948, 0.770]], [0.618, [0.867, 0.945, 0.759]], [0.620, [0.867, 0.945, 0.759]], [0.622, [0.860, 0.942, 0.747]], [0.624, [0.860, 0.942, 0.747]], [0.626, [0.852, 0.939, 0.736]], [0.628, [0.852, 0.939, 0.736]], [0.630, [0.845, 0.936, 0.725]], [0.632, [0.845, 0.936, 0.725]], [0.634, [0.838, 0.933, 0.713]], [0.636, [0.838, 0.933, 0.713]], [0.638, [0.831, 0.930, 0.702]], [0.640, [0.831, 0.930, 0.702]], [0.642, [0.824, 0.927, 0.691]], [0.644, [0.824, 0.927, 0.691]], [0.646, [0.817, 0.924, 0.679]], [0.648, [0.817, 0.924, 0.679]], [0.650, [0.810, 0.921, 0.668]], [0.652, [0.810, 0.921, 0.668]], [0.654, [0.803, 0.918, 0.656]], [0.656, [0.803, 0.918, 0.656]], [0.658, [0.796, 0.915, 0.645]], [0.659, [0.796, 0.915, 0.645]], [0.661, [0.789, 0.912, 0.634]], [0.663, [0.789, 0.912, 0.634]], [0.665, [0.782, 0.908, 0.622]], [0.667, [0.782, 0.908, 0.622]], [0.669, [0.775, 0.905, 0.611]], [0.671, [0.775, 0.905, 0.611]], [0.673, [0.768, 0.902, 0.599]], [0.675, [0.768, 0.902, 0.599]], [0.677, [0.760, 0.899, 0.588]], [0.679, [0.760, 0.899, 0.588]], [0.681, [0.753, 0.896, 0.577]], [0.683, [0.753, 0.896, 0.577]], [0.685, [0.746, 0.893, 0.565]], [0.687, [0.746, 0.893, 0.565]], [0.689, [0.739, 0.890, 0.554]], [0.691, [0.739, 0.890, 0.554]], [0.693, [0.732, 0.887, 0.543]], [0.695, [0.732, 0.887, 0.543]], [0.697, [0.725, 0.884, 0.531]], [0.699, [0.725, 0.884, 0.531]], [0.701, [0.717, 0.880, 0.520]], [0.703, [0.717, 0.880, 0.520]], [0.705, [0.708, 0.874, 0.510]], [0.706, [0.708, 0.874, 0.510]], [0.708, [0.700, 0.868, 0.499]], [0.710, [0.700, 0.868, 0.499]], [0.712, [0.691, 0.862, 0.488]], [0.714, [0.691, 0.862, 0.488]], [0.716, [0.682, 0.857, 0.478]], [0.718, [0.682, 0.857, 0.478]], [0.720, [0.673, 0.851, 0.467]], [0.722, [0.673, 0.851, 0.467]], [0.724, [0.665, 0.845, 0.457]], [0.726, [0.665, 0.845, 0.457]], [0.728, [0.656, 0.840, 0.446]], [0.730, [0.656, 0.840, 0.446]], [0.732, [0.647, 0.834, 0.435]], [0.734, [0.647, 0.834, 0.435]], [0.736, [0.638, 0.828, 0.425]], [0.738, [0.638, 0.828, 0.425]], [0.740, [0.630, 0.823, 0.414]], [0.742, [0.630, 0.823, 0.414]], [0.744, [0.621, 0.817, 0.403]], [0.746, [0.621, 0.817, 0.403]], [0.748, [0.612, 0.811, 0.393]], [0.750, [0.612, 0.811, 0.393]], [0.751, [0.603, 0.806, 0.382]], [0.753, [0.603, 0.806, 0.382]], [0.755, [0.594, 0.800, 0.372]], [0.757, [0.594, 0.800, 0.372]], [0.759, [0.586, 0.794, 0.361]], [0.761, [0.586, 0.794, 0.361]], [0.763, [0.577, 0.788, 0.350]], [0.765, [0.577, 0.788, 0.350]], [0.767, [0.568, 0.783, 0.340]], [0.769, [0.568, 0.783, 0.340]], [0.771, [0.559, 0.777, 0.329]], [0.773, [0.559, 0.777, 0.329]], [0.775, [0.551, 0.771, 0.319]], [0.777, [0.551, 0.771, 0.319]], [0.779, [0.542, 0.766, 0.308]], [0.781, [0.542, 0.766, 0.308]], [0.783, [0.533, 0.760, 0.297]], [0.785, [0.533, 0.760, 0.297]], [0.787, [0.524, 0.754, 0.287]], [0.789, [0.524, 0.754, 0.287]], [0.791, [0.516, 0.749, 0.276]], [0.793, [0.516, 0.749, 0.276]], [0.795, [0.507, 0.743, 0.266]], [0.796, [0.507, 0.743, 0.266]], [0.798, [0.498, 0.737, 0.255]], [0.800, [0.498, 0.737, 0.255]], [0.802, [0.490, 0.731, 0.250]], [0.804, [0.490, 0.731, 0.250]], [0.806, [0.483, 0.724, 0.245]], [0.808, [0.483, 0.724, 0.245]], [0.810, [0.475, 0.718, 0.240]], [0.812, [0.475, 0.718, 0.240]], [0.814, [0.467, 0.711, 0.235]], [0.816, [0.467, 0.711, 0.235]], [0.818, [0.460, 0.705, 0.230]], [0.820, [0.460, 0.705, 0.230]], [0.822, [0.452, 0.699, 0.225]], [0.824, [0.452, 0.699, 0.225]], [0.826, [0.444, 0.692, 0.220]], [0.828, [0.444, 0.692, 0.220]], [0.830, [0.437, 0.686, 0.216]], [0.832, [0.437, 0.686, 0.216]], [0.834, [0.429, 0.679, 0.211]], [0.836, [0.429, 0.679, 0.211]], [0.838, [0.421, 0.673, 0.206]], [0.840, [0.421, 0.673, 0.206]], [0.841, [0.413, 0.666, 0.201]], [0.843, [0.413, 0.666, 0.201]], [0.845, [0.406, 0.660, 0.196]], [0.847, [0.406, 0.660, 0.196]], [0.849, [0.398, 0.653, 0.191]], [0.851, [0.398, 0.653, 0.191]], [0.853, [0.390, 0.647, 0.186]], [0.855, [0.390, 0.647, 0.186]], [0.857, [0.383, 0.640, 0.181]], [0.859, [0.383, 0.640, 0.181]], [0.861, [0.375, 0.634, 0.176]], [0.863, [0.375, 0.634, 0.176]], [0.865, [0.367, 0.627, 0.171]], [0.867, [0.367, 0.627, 0.171]], [0.869, [0.360, 0.621, 0.166]], [0.871, [0.360, 0.621, 0.166]], [0.873, [0.352, 0.615, 0.161]], [0.875, [0.352, 0.615, 0.161]], [0.877, [0.344, 0.608, 0.156]], [0.879, [0.344, 0.608, 0.156]], [0.881, [0.337, 0.602, 0.152]], [0.883, [0.337, 0.602, 0.152]], [0.885, [0.329, 0.595, 0.147]], [0.886, [0.329, 0.595, 0.147]], [0.888, [0.321, 0.589, 0.142]], [0.890, [0.321, 0.589, 0.142]], [0.892, [0.313, 0.582, 0.137]], [0.894, [0.313, 0.582, 0.137]], [0.896, [0.306, 0.576, 0.132]], [0.898, [0.306, 0.576, 0.132]], [0.900, [0.299, 0.569, 0.129]], [0.902, [0.299, 0.569, 0.129]], [0.904, [0.293, 0.562, 0.128]], [0.906, [0.293, 0.562, 0.128]], [0.908, [0.287, 0.555, 0.126]], [0.910, [0.287, 0.555, 0.126]], [0.912, [0.282, 0.548, 0.125]], [0.914, [0.282, 0.548, 0.125]], [0.916, [0.276, 0.541, 0.124]], [0.918, [0.276, 0.541, 0.124]], [0.920, [0.270, 0.534, 0.123]], [0.922, [0.270, 0.534, 0.123]], [0.924, [0.264, 0.527, 0.121]], [0.926, [0.264, 0.527, 0.121]], [0.928, [0.258, 0.519, 0.120]], [0.930, [0.258, 0.519, 0.120]], [0.932, [0.252, 0.512, 0.119]], [0.933, [0.252, 0.512, 0.119]], [0.935, [0.246, 0.505, 0.118]], [0.937, [0.246, 0.505, 0.118]], [0.939, [0.241, 0.498, 0.116]], [0.941, [0.241, 0.498, 0.116]], [0.943, [0.235, 0.491, 0.115]], [0.945, [0.235, 0.491, 0.115]], [0.947, [0.229, 0.484, 0.114]], [0.949, [0.229, 0.484, 0.114]], [0.951, [0.223, 0.477, 0.113]], [0.953, [0.223, 0.477, 0.113]], [0.955, [0.217, 0.470, 0.112]], [0.957, [0.217, 0.470, 0.112]], [0.959, [0.211, 0.463, 0.110]], [0.961, [0.211, 0.463, 0.110]], [0.963, [0.206, 0.456, 0.109]], [0.965, [0.206, 0.456, 0.109]], [0.967, [0.200, 0.449, 0.108]], [0.969, [0.200, 0.449, 0.108]], [0.971, [0.194, 0.442, 0.107]], [0.973, [0.194, 0.442, 0.107]], [0.975, [0.188, 0.435, 0.105]], [0.977, [0.188, 0.435, 0.105]], [0.978, [0.182, 0.428, 0.104]], [0.980, [0.182, 0.428, 0.104]], [0.982, [0.176, 0.420, 0.103]], [0.984, [0.176, 0.420, 0.103]], [0.986, [0.170, 0.413, 0.102]], [0.988, [0.170, 0.413, 0.102]], [0.990, [0.165, 0.406, 0.100]], [0.992, [0.165, 0.406, 0.100]], [0.994, [0.159, 0.399, 0.099]], [0.996, [0.159, 0.399, 0.099]], [0.998, [0.153, 0.392, 0.098]], [1.000, [0.153, 0.392, 0.098]]]; +var PuOr = [[0.000, [0.498, 0.231, 0.031]], [0.002, [0.498, 0.231, 0.031]], [0.004, [0.506, 0.236, 0.031]], [0.006, [0.506, 0.236, 0.031]], [0.008, [0.514, 0.240, 0.031]], [0.010, [0.514, 0.240, 0.031]], [0.012, [0.522, 0.245, 0.030]], [0.014, [0.522, 0.245, 0.030]], [0.016, [0.530, 0.249, 0.030]], [0.018, [0.530, 0.249, 0.030]], [0.020, [0.538, 0.254, 0.030]], [0.022, [0.538, 0.254, 0.030]], [0.023, [0.546, 0.258, 0.030]], [0.025, [0.546, 0.258, 0.030]], [0.027, [0.554, 0.263, 0.029]], [0.029, [0.554, 0.263, 0.029]], [0.031, [0.562, 0.267, 0.029]], [0.033, [0.562, 0.267, 0.029]], [0.035, [0.570, 0.272, 0.029]], [0.037, [0.570, 0.272, 0.029]], [0.039, [0.578, 0.276, 0.028]], [0.041, [0.578, 0.276, 0.028]], [0.043, [0.586, 0.280, 0.028]], [0.045, [0.586, 0.280, 0.028]], [0.047, [0.594, 0.285, 0.028]], [0.049, [0.594, 0.285, 0.028]], [0.051, [0.602, 0.289, 0.027]], [0.053, [0.602, 0.289, 0.027]], [0.055, [0.610, 0.294, 0.027]], [0.057, [0.610, 0.294, 0.027]], [0.059, [0.618, 0.298, 0.027]], [0.061, [0.618, 0.298, 0.027]], [0.063, [0.626, 0.303, 0.026]], [0.065, [0.626, 0.303, 0.026]], [0.067, [0.634, 0.307, 0.026]], [0.068, [0.634, 0.307, 0.026]], [0.070, [0.642, 0.312, 0.026]], [0.072, [0.642, 0.312, 0.026]], [0.074, [0.650, 0.316, 0.026]], [0.076, [0.650, 0.316, 0.026]], [0.078, [0.658, 0.321, 0.025]], [0.080, [0.658, 0.321, 0.025]], [0.082, [0.666, 0.325, 0.025]], [0.084, [0.666, 0.325, 0.025]], [0.086, [0.674, 0.329, 0.025]], [0.088, [0.674, 0.329, 0.025]], [0.090, [0.682, 0.334, 0.024]], [0.092, [0.682, 0.334, 0.024]], [0.094, [0.690, 0.338, 0.024]], [0.096, [0.690, 0.338, 0.024]], [0.098, [0.698, 0.343, 0.024]], [0.100, [0.698, 0.343, 0.024]], [0.102, [0.705, 0.348, 0.025]], [0.104, [0.705, 0.348, 0.025]], [0.106, [0.712, 0.355, 0.027]], [0.108, [0.712, 0.355, 0.027]], [0.110, [0.719, 0.361, 0.029]], [0.112, [0.719, 0.361, 0.029]], [0.114, [0.726, 0.368, 0.031]], [0.115, [0.726, 0.368, 0.031]], [0.117, [0.733, 0.374, 0.033]], [0.119, [0.733, 0.374, 0.033]], [0.121, [0.740, 0.381, 0.035]], [0.123, [0.740, 0.381, 0.035]], [0.125, [0.747, 0.387, 0.038]], [0.127, [0.747, 0.387, 0.038]], [0.129, [0.754, 0.394, 0.040]], [0.131, [0.754, 0.394, 0.040]], [0.133, [0.761, 0.400, 0.042]], [0.135, [0.761, 0.400, 0.042]], [0.137, [0.768, 0.406, 0.044]], [0.139, [0.768, 0.406, 0.044]], [0.141, [0.775, 0.413, 0.046]], [0.143, [0.775, 0.413, 0.046]], [0.145, [0.782, 0.419, 0.048]], [0.147, [0.782, 0.419, 0.048]], [0.149, [0.788, 0.426, 0.050]], [0.151, [0.788, 0.426, 0.050]], [0.153, [0.795, 0.432, 0.053]], [0.155, [0.795, 0.432, 0.053]], [0.157, [0.802, 0.439, 0.055]], [0.159, [0.802, 0.439, 0.055]], [0.160, [0.809, 0.445, 0.057]], [0.162, [0.809, 0.445, 0.057]], [0.164, [0.816, 0.452, 0.059]], [0.166, [0.816, 0.452, 0.059]], [0.168, [0.823, 0.458, 0.061]], [0.170, [0.823, 0.458, 0.061]], [0.172, [0.830, 0.465, 0.063]], [0.174, [0.830, 0.465, 0.063]], [0.176, [0.837, 0.471, 0.066]], [0.178, [0.837, 0.471, 0.066]], [0.180, [0.844, 0.478, 0.068]], [0.182, [0.844, 0.478, 0.068]], [0.184, [0.851, 0.484, 0.070]], [0.186, [0.851, 0.484, 0.070]], [0.188, [0.858, 0.490, 0.072]], [0.190, [0.858, 0.490, 0.072]], [0.192, [0.865, 0.497, 0.074]], [0.194, [0.865, 0.497, 0.074]], [0.196, [0.872, 0.503, 0.076]], [0.198, [0.872, 0.503, 0.076]], [0.200, [0.878, 0.510, 0.078]], [0.202, [0.878, 0.510, 0.078]], [0.204, [0.883, 0.518, 0.091]], [0.205, [0.883, 0.518, 0.091]], [0.207, [0.887, 0.526, 0.103]], [0.209, [0.887, 0.526, 0.103]], [0.211, [0.892, 0.535, 0.115]], [0.213, [0.892, 0.535, 0.115]], [0.215, [0.896, 0.543, 0.127]], [0.217, [0.896, 0.543, 0.127]], [0.219, [0.901, 0.551, 0.139]], [0.221, [0.901, 0.551, 0.139]], [0.223, [0.905, 0.560, 0.151]], [0.225, [0.905, 0.560, 0.151]], [0.227, [0.910, 0.568, 0.163]], [0.229, [0.910, 0.568, 0.163]], [0.231, [0.914, 0.576, 0.176]], [0.233, [0.914, 0.576, 0.176]], [0.235, [0.919, 0.585, 0.188]], [0.237, [0.919, 0.585, 0.188]], [0.239, [0.923, 0.593, 0.200]], [0.241, [0.923, 0.593, 0.200]], [0.243, [0.927, 0.601, 0.212]], [0.245, [0.927, 0.601, 0.212]], [0.247, [0.932, 0.609, 0.224]], [0.249, [0.932, 0.609, 0.224]], [0.250, [0.936, 0.618, 0.236]], [0.252, [0.936, 0.618, 0.236]], [0.254, [0.941, 0.626, 0.249]], [0.256, [0.941, 0.626, 0.249]], [0.258, [0.945, 0.634, 0.261]], [0.260, [0.945, 0.634, 0.261]], [0.262, [0.950, 0.643, 0.273]], [0.264, [0.950, 0.643, 0.273]], [0.266, [0.954, 0.651, 0.285]], [0.268, [0.954, 0.651, 0.285]], [0.270, [0.959, 0.659, 0.297]], [0.272, [0.959, 0.659, 0.297]], [0.274, [0.963, 0.668, 0.309]], [0.276, [0.963, 0.668, 0.309]], [0.278, [0.968, 0.676, 0.321]], [0.280, [0.968, 0.676, 0.321]], [0.282, [0.972, 0.684, 0.334]], [0.284, [0.972, 0.684, 0.334]], [0.286, [0.977, 0.693, 0.346]], [0.288, [0.977, 0.693, 0.346]], [0.290, [0.981, 0.701, 0.358]], [0.292, [0.981, 0.701, 0.358]], [0.294, [0.985, 0.709, 0.370]], [0.295, [0.985, 0.709, 0.370]], [0.297, [0.990, 0.717, 0.382]], [0.299, [0.990, 0.717, 0.382]], [0.301, [0.992, 0.725, 0.395]], [0.303, [0.992, 0.725, 0.395]], [0.305, [0.992, 0.731, 0.407]], [0.307, [0.992, 0.731, 0.407]], [0.309, [0.993, 0.737, 0.420]], [0.311, [0.993, 0.737, 0.420]], [0.313, [0.993, 0.743, 0.433]], [0.315, [0.993, 0.743, 0.433]], [0.317, [0.993, 0.749, 0.446]], [0.319, [0.993, 0.749, 0.446]], [0.321, [0.993, 0.755, 0.458]], [0.323, [0.993, 0.755, 0.458]], [0.325, [0.993, 0.762, 0.471]], [0.327, [0.993, 0.762, 0.471]], [0.329, [0.993, 0.768, 0.484]], [0.331, [0.993, 0.768, 0.484]], [0.333, [0.993, 0.774, 0.497]], [0.335, [0.993, 0.774, 0.497]], [0.337, [0.994, 0.780, 0.509]], [0.339, [0.994, 0.780, 0.509]], [0.341, [0.994, 0.786, 0.522]], [0.342, [0.994, 0.786, 0.522]], [0.344, [0.994, 0.792, 0.535]], [0.346, [0.994, 0.792, 0.535]], [0.348, [0.994, 0.798, 0.548]], [0.350, [0.994, 0.798, 0.548]], [0.352, [0.994, 0.805, 0.561]], [0.354, [0.994, 0.805, 0.561]], [0.356, [0.994, 0.811, 0.573]], [0.358, [0.994, 0.811, 0.573]], [0.360, [0.995, 0.817, 0.586]], [0.362, [0.995, 0.817, 0.586]], [0.364, [0.995, 0.823, 0.599]], [0.366, [0.995, 0.823, 0.599]], [0.368, [0.995, 0.829, 0.612]], [0.370, [0.995, 0.829, 0.612]], [0.372, [0.995, 0.835, 0.624]], [0.374, [0.995, 0.835, 0.624]], [0.376, [0.995, 0.842, 0.637]], [0.378, [0.995, 0.842, 0.637]], [0.380, [0.995, 0.848, 0.650]], [0.382, [0.995, 0.848, 0.650]], [0.384, [0.995, 0.854, 0.663]], [0.386, [0.995, 0.854, 0.663]], [0.387, [0.996, 0.860, 0.675]], [0.389, [0.996, 0.860, 0.675]], [0.391, [0.996, 0.866, 0.688]], [0.393, [0.996, 0.866, 0.688]], [0.395, [0.996, 0.872, 0.701]], [0.397, [0.996, 0.872, 0.701]], [0.399, [0.996, 0.878, 0.714]], [0.401, [0.996, 0.878, 0.714]], [0.403, [0.995, 0.882, 0.724]], [0.405, [0.995, 0.882, 0.724]], [0.407, [0.994, 0.886, 0.734]], [0.409, [0.994, 0.886, 0.734]], [0.411, [0.993, 0.889, 0.744]], [0.413, [0.993, 0.889, 0.744]], [0.415, [0.992, 0.893, 0.754]], [0.417, [0.992, 0.893, 0.754]], [0.419, [0.991, 0.896, 0.764]], [0.421, [0.991, 0.896, 0.764]], [0.423, [0.990, 0.900, 0.774]], [0.425, [0.990, 0.900, 0.774]], [0.427, [0.989, 0.903, 0.784]], [0.429, [0.989, 0.903, 0.784]], [0.431, [0.987, 0.907, 0.794]], [0.432, [0.987, 0.907, 0.794]], [0.434, [0.986, 0.910, 0.804]], [0.436, [0.986, 0.910, 0.804]], [0.438, [0.985, 0.914, 0.814]], [0.440, [0.985, 0.914, 0.814]], [0.442, [0.984, 0.917, 0.824]], [0.444, [0.984, 0.917, 0.824]], [0.446, [0.983, 0.921, 0.834]], [0.448, [0.983, 0.921, 0.834]], [0.450, [0.982, 0.924, 0.844]], [0.452, [0.982, 0.924, 0.844]], [0.454, [0.981, 0.928, 0.854]], [0.456, [0.981, 0.928, 0.854]], [0.458, [0.980, 0.931, 0.864]], [0.460, [0.980, 0.931, 0.864]], [0.462, [0.979, 0.935, 0.874]], [0.464, [0.979, 0.935, 0.874]], [0.466, [0.978, 0.939, 0.884]], [0.468, [0.978, 0.939, 0.884]], [0.470, [0.977, 0.942, 0.894]], [0.472, [0.977, 0.942, 0.894]], [0.474, [0.976, 0.946, 0.904]], [0.476, [0.976, 0.946, 0.904]], [0.477, [0.975, 0.949, 0.914]], [0.479, [0.975, 0.949, 0.914]], [0.481, [0.973, 0.953, 0.924]], [0.483, [0.973, 0.953, 0.924]], [0.485, [0.972, 0.956, 0.934]], [0.487, [0.972, 0.956, 0.934]], [0.489, [0.971, 0.960, 0.944]], [0.491, [0.971, 0.960, 0.944]], [0.493, [0.970, 0.963, 0.954]], [0.495, [0.970, 0.963, 0.954]], [0.497, [0.969, 0.967, 0.964]], [0.499, [0.969, 0.967, 0.964]], [0.501, [0.966, 0.966, 0.968]], [0.503, [0.966, 0.966, 0.968]], [0.505, [0.961, 0.962, 0.966]], [0.507, [0.961, 0.962, 0.966]], [0.509, [0.957, 0.957, 0.964]], [0.511, [0.957, 0.957, 0.964]], [0.513, [0.952, 0.953, 0.962]], [0.515, [0.952, 0.953, 0.962]], [0.517, [0.947, 0.949, 0.960]], [0.519, [0.947, 0.949, 0.960]], [0.521, [0.942, 0.944, 0.958]], [0.523, [0.942, 0.944, 0.958]], [0.524, [0.938, 0.940, 0.957]], [0.526, [0.938, 0.940, 0.957]], [0.528, [0.933, 0.935, 0.955]], [0.530, [0.933, 0.935, 0.955]], [0.532, [0.928, 0.931, 0.953]], [0.534, [0.928, 0.931, 0.953]], [0.536, [0.923, 0.926, 0.951]], [0.538, [0.923, 0.926, 0.951]], [0.540, [0.919, 0.922, 0.949]], [0.542, [0.919, 0.922, 0.949]], [0.544, [0.914, 0.917, 0.947]], [0.546, [0.914, 0.917, 0.947]], [0.548, [0.909, 0.913, 0.946]], [0.550, [0.909, 0.913, 0.946]], [0.552, [0.904, 0.908, 0.944]], [0.554, [0.904, 0.908, 0.944]], [0.556, [0.900, 0.904, 0.942]], [0.558, [0.900, 0.904, 0.942]], [0.560, [0.895, 0.900, 0.940]], [0.562, [0.895, 0.900, 0.940]], [0.564, [0.890, 0.895, 0.938]], [0.566, [0.890, 0.895, 0.938]], [0.568, [0.885, 0.891, 0.936]], [0.569, [0.885, 0.891, 0.936]], [0.571, [0.880, 0.886, 0.934]], [0.573, [0.880, 0.886, 0.934]], [0.575, [0.876, 0.882, 0.933]], [0.577, [0.876, 0.882, 0.933]], [0.579, [0.871, 0.877, 0.931]], [0.581, [0.871, 0.877, 0.931]], [0.583, [0.866, 0.873, 0.929]], [0.585, [0.866, 0.873, 0.929]], [0.587, [0.861, 0.868, 0.927]], [0.589, [0.861, 0.868, 0.927]], [0.591, [0.857, 0.864, 0.925]], [0.593, [0.857, 0.864, 0.925]], [0.595, [0.852, 0.859, 0.923]], [0.597, [0.852, 0.859, 0.923]], [0.599, [0.847, 0.855, 0.922]], [0.601, [0.847, 0.855, 0.922]], [0.603, [0.841, 0.848, 0.918]], [0.605, [0.841, 0.848, 0.918]], [0.607, [0.835, 0.840, 0.914]], [0.609, [0.835, 0.840, 0.914]], [0.611, [0.830, 0.833, 0.910]], [0.613, [0.830, 0.833, 0.910]], [0.614, [0.824, 0.826, 0.906]], [0.616, [0.824, 0.826, 0.906]], [0.618, [0.818, 0.819, 0.902]], [0.620, [0.818, 0.819, 0.902]], [0.622, [0.812, 0.812, 0.899]], [0.624, [0.812, 0.812, 0.899]], [0.626, [0.806, 0.804, 0.895]], [0.628, [0.806, 0.804, 0.895]], [0.630, [0.800, 0.797, 0.891]], [0.632, [0.800, 0.797, 0.891]], [0.634, [0.794, 0.790, 0.887]], [0.636, [0.794, 0.790, 0.887]], [0.638, [0.789, 0.783, 0.883]], [0.640, [0.789, 0.783, 0.883]], [0.642, [0.783, 0.775, 0.879]], [0.644, [0.783, 0.775, 0.879]], [0.646, [0.777, 0.768, 0.875]], [0.648, [0.777, 0.768, 0.875]], [0.650, [0.771, 0.761, 0.872]], [0.652, [0.771, 0.761, 0.872]], [0.654, [0.765, 0.754, 0.868]], [0.656, [0.765, 0.754, 0.868]], [0.658, [0.759, 0.746, 0.864]], [0.659, [0.759, 0.746, 0.864]], [0.661, [0.754, 0.739, 0.860]], [0.663, [0.754, 0.739, 0.860]], [0.665, [0.748, 0.732, 0.856]], [0.667, [0.748, 0.732, 0.856]], [0.669, [0.742, 0.725, 0.852]], [0.671, [0.742, 0.725, 0.852]], [0.673, [0.736, 0.718, 0.849]], [0.675, [0.736, 0.718, 0.849]], [0.677, [0.730, 0.710, 0.845]], [0.679, [0.730, 0.710, 0.845]], [0.681, [0.724, 0.703, 0.841]], [0.683, [0.724, 0.703, 0.841]], [0.685, [0.718, 0.696, 0.837]], [0.687, [0.718, 0.696, 0.837]], [0.689, [0.713, 0.689, 0.833]], [0.691, [0.713, 0.689, 0.833]], [0.693, [0.707, 0.681, 0.829]], [0.695, [0.707, 0.681, 0.829]], [0.697, [0.701, 0.674, 0.825]], [0.699, [0.701, 0.674, 0.825]], [0.701, [0.694, 0.666, 0.821]], [0.703, [0.694, 0.666, 0.821]], [0.705, [0.687, 0.658, 0.815]], [0.706, [0.687, 0.658, 0.815]], [0.708, [0.679, 0.649, 0.809]], [0.710, [0.679, 0.649, 0.809]], [0.712, [0.671, 0.640, 0.803]], [0.714, [0.671, 0.640, 0.803]], [0.716, [0.663, 0.632, 0.797]], [0.718, [0.663, 0.632, 0.797]], [0.720, [0.656, 0.623, 0.791]], [0.722, [0.656, 0.623, 0.791]], [0.724, [0.648, 0.615, 0.786]], [0.726, [0.648, 0.615, 0.786]], [0.728, [0.640, 0.606, 0.780]], [0.730, [0.640, 0.606, 0.780]], [0.732, [0.633, 0.597, 0.774]], [0.734, [0.633, 0.597, 0.774]], [0.736, [0.625, 0.589, 0.768]], [0.738, [0.625, 0.589, 0.768]], [0.740, [0.617, 0.580, 0.762]], [0.742, [0.617, 0.580, 0.762]], [0.744, [0.610, 0.572, 0.756]], [0.746, [0.610, 0.572, 0.756]], [0.748, [0.602, 0.563, 0.750]], [0.750, [0.602, 0.563, 0.750]], [0.751, [0.594, 0.554, 0.745]], [0.753, [0.594, 0.554, 0.745]], [0.755, [0.587, 0.546, 0.739]], [0.757, [0.587, 0.546, 0.739]], [0.759, [0.579, 0.537, 0.733]], [0.761, [0.579, 0.537, 0.733]], [0.763, [0.571, 0.528, 0.727]], [0.765, [0.571, 0.528, 0.727]], [0.767, [0.563, 0.520, 0.721]], [0.769, [0.563, 0.520, 0.721]], [0.771, [0.556, 0.511, 0.715]], [0.773, [0.556, 0.511, 0.715]], [0.775, [0.548, 0.503, 0.710]], [0.777, [0.548, 0.503, 0.710]], [0.779, [0.540, 0.494, 0.704]], [0.781, [0.540, 0.494, 0.704]], [0.783, [0.533, 0.485, 0.698]], [0.785, [0.533, 0.485, 0.698]], [0.787, [0.525, 0.477, 0.692]], [0.789, [0.525, 0.477, 0.692]], [0.791, [0.517, 0.468, 0.686]], [0.793, [0.517, 0.468, 0.686]], [0.795, [0.510, 0.460, 0.680]], [0.796, [0.510, 0.460, 0.680]], [0.798, [0.502, 0.451, 0.675]], [0.800, [0.502, 0.451, 0.675]], [0.802, [0.495, 0.439, 0.669]], [0.804, [0.495, 0.439, 0.669]], [0.806, [0.488, 0.428, 0.663]], [0.808, [0.488, 0.428, 0.663]], [0.810, [0.482, 0.416, 0.658]], [0.812, [0.482, 0.416, 0.658]], [0.814, [0.475, 0.404, 0.652]], [0.816, [0.475, 0.404, 0.652]], [0.818, [0.468, 0.393, 0.647]], [0.820, [0.468, 0.393, 0.647]], [0.822, [0.461, 0.381, 0.641]], [0.824, [0.461, 0.381, 0.641]], [0.826, [0.455, 0.369, 0.636]], [0.828, [0.455, 0.369, 0.636]], [0.830, [0.448, 0.357, 0.630]], [0.832, [0.448, 0.357, 0.630]], [0.834, [0.441, 0.346, 0.625]], [0.836, [0.441, 0.346, 0.625]], [0.838, [0.434, 0.334, 0.619]], [0.840, [0.434, 0.334, 0.619]], [0.841, [0.428, 0.322, 0.614]], [0.843, [0.428, 0.322, 0.614]], [0.845, [0.421, 0.311, 0.608]], [0.847, [0.421, 0.311, 0.608]], [0.849, [0.414, 0.299, 0.603]], [0.851, [0.414, 0.299, 0.603]], [0.853, [0.407, 0.287, 0.597]], [0.855, [0.407, 0.287, 0.597]], [0.857, [0.400, 0.276, 0.591]], [0.859, [0.400, 0.276, 0.591]], [0.861, [0.394, 0.264, 0.586]], [0.863, [0.394, 0.264, 0.586]], [0.865, [0.387, 0.252, 0.580]], [0.867, [0.387, 0.252, 0.580]], [0.869, [0.380, 0.241, 0.575]], [0.871, [0.380, 0.241, 0.575]], [0.873, [0.373, 0.229, 0.569]], [0.875, [0.373, 0.229, 0.569]], [0.877, [0.367, 0.217, 0.564]], [0.879, [0.367, 0.217, 0.564]], [0.881, [0.360, 0.206, 0.558]], [0.883, [0.360, 0.206, 0.558]], [0.885, [0.353, 0.194, 0.553]], [0.886, [0.353, 0.194, 0.553]], [0.888, [0.346, 0.182, 0.547]], [0.890, [0.346, 0.182, 0.547]], [0.892, [0.340, 0.170, 0.542]], [0.894, [0.340, 0.170, 0.542]], [0.896, [0.333, 0.159, 0.536]], [0.898, [0.333, 0.159, 0.536]], [0.900, [0.326, 0.150, 0.529]], [0.902, [0.326, 0.150, 0.529]], [0.904, [0.320, 0.144, 0.519]], [0.906, [0.320, 0.144, 0.519]], [0.908, [0.314, 0.138, 0.510]], [0.910, [0.314, 0.138, 0.510]], [0.912, [0.308, 0.132, 0.500]], [0.914, [0.308, 0.132, 0.500]], [0.916, [0.302, 0.126, 0.491]], [0.918, [0.302, 0.126, 0.491]], [0.920, [0.296, 0.120, 0.482]], [0.922, [0.296, 0.120, 0.482]], [0.924, [0.290, 0.114, 0.472]], [0.926, [0.290, 0.114, 0.472]], [0.928, [0.284, 0.108, 0.463]], [0.930, [0.284, 0.108, 0.463]], [0.932, [0.278, 0.102, 0.454]], [0.933, [0.278, 0.102, 0.454]], [0.935, [0.272, 0.096, 0.444]], [0.937, [0.272, 0.096, 0.444]], [0.939, [0.266, 0.090, 0.435]], [0.941, [0.266, 0.090, 0.435]], [0.943, [0.260, 0.084, 0.425]], [0.945, [0.260, 0.084, 0.425]], [0.947, [0.254, 0.078, 0.416]], [0.949, [0.254, 0.078, 0.416]], [0.951, [0.248, 0.072, 0.407]], [0.953, [0.248, 0.072, 0.407]], [0.955, [0.242, 0.066, 0.397]], [0.957, [0.242, 0.066, 0.397]], [0.959, [0.236, 0.060, 0.388]], [0.961, [0.236, 0.060, 0.388]], [0.963, [0.230, 0.054, 0.379]], [0.965, [0.230, 0.054, 0.379]], [0.967, [0.224, 0.048, 0.369]], [0.969, [0.224, 0.048, 0.369]], [0.971, [0.218, 0.042, 0.360]], [0.973, [0.218, 0.042, 0.360]], [0.975, [0.212, 0.036, 0.350]], [0.977, [0.212, 0.036, 0.350]], [0.978, [0.206, 0.030, 0.341]], [0.980, [0.206, 0.030, 0.341]], [0.982, [0.200, 0.024, 0.332]], [0.984, [0.200, 0.024, 0.332]], [0.986, [0.194, 0.018, 0.322]], [0.988, [0.194, 0.018, 0.322]], [0.990, [0.188, 0.012, 0.313]], [0.992, [0.188, 0.012, 0.313]], [0.994, [0.182, 0.006, 0.303]], [0.996, [0.182, 0.006, 0.303]], [0.998, [0.176, 0.000, 0.294]], [1.000, [0.176, 0.000, 0.294]]]; +var RdBu = [[0.000, [0.404, 0.000, 0.122]], [0.002, [0.404, 0.000, 0.122]], [0.004, [0.415, 0.004, 0.123]], [0.006, [0.415, 0.004, 0.123]], [0.008, [0.427, 0.007, 0.125]], [0.010, [0.427, 0.007, 0.125]], [0.012, [0.439, 0.011, 0.127]], [0.014, [0.439, 0.011, 0.127]], [0.016, [0.450, 0.015, 0.129]], [0.018, [0.450, 0.015, 0.129]], [0.020, [0.462, 0.018, 0.131]], [0.022, [0.462, 0.018, 0.131]], [0.023, [0.473, 0.022, 0.133]], [0.025, [0.473, 0.022, 0.133]], [0.027, [0.485, 0.026, 0.134]], [0.029, [0.485, 0.026, 0.134]], [0.031, [0.496, 0.030, 0.136]], [0.033, [0.496, 0.030, 0.136]], [0.035, [0.508, 0.033, 0.138]], [0.037, [0.508, 0.033, 0.138]], [0.039, [0.519, 0.037, 0.140]], [0.041, [0.519, 0.037, 0.140]], [0.043, [0.531, 0.041, 0.142]], [0.045, [0.531, 0.041, 0.142]], [0.047, [0.542, 0.044, 0.144]], [0.049, [0.542, 0.044, 0.144]], [0.051, [0.554, 0.048, 0.146]], [0.053, [0.554, 0.048, 0.146]], [0.055, [0.565, 0.052, 0.147]], [0.057, [0.565, 0.052, 0.147]], [0.059, [0.577, 0.055, 0.149]], [0.061, [0.577, 0.055, 0.149]], [0.063, [0.588, 0.059, 0.151]], [0.065, [0.588, 0.059, 0.151]], [0.067, [0.600, 0.063, 0.153]], [0.068, [0.600, 0.063, 0.153]], [0.070, [0.612, 0.066, 0.155]], [0.072, [0.612, 0.066, 0.155]], [0.074, [0.623, 0.070, 0.157]], [0.076, [0.623, 0.070, 0.157]], [0.078, [0.635, 0.074, 0.158]], [0.080, [0.635, 0.074, 0.158]], [0.082, [0.646, 0.078, 0.160]], [0.084, [0.646, 0.078, 0.160]], [0.086, [0.658, 0.081, 0.162]], [0.088, [0.658, 0.081, 0.162]], [0.090, [0.669, 0.085, 0.164]], [0.092, [0.669, 0.085, 0.164]], [0.094, [0.681, 0.089, 0.166]], [0.096, [0.681, 0.089, 0.166]], [0.098, [0.692, 0.092, 0.168]], [0.100, [0.692, 0.092, 0.168]], [0.102, [0.701, 0.100, 0.171]], [0.104, [0.701, 0.100, 0.171]], [0.106, [0.706, 0.111, 0.176]], [0.108, [0.706, 0.111, 0.176]], [0.110, [0.712, 0.122, 0.182]], [0.112, [0.712, 0.122, 0.182]], [0.114, [0.717, 0.133, 0.187]], [0.115, [0.717, 0.133, 0.187]], [0.117, [0.723, 0.144, 0.192]], [0.119, [0.723, 0.144, 0.192]], [0.121, [0.728, 0.155, 0.197]], [0.123, [0.728, 0.155, 0.197]], [0.125, [0.734, 0.166, 0.203]], [0.127, [0.734, 0.166, 0.203]], [0.129, [0.740, 0.177, 0.208]], [0.131, [0.740, 0.177, 0.208]], [0.133, [0.745, 0.188, 0.213]], [0.135, [0.745, 0.188, 0.213]], [0.137, [0.751, 0.199, 0.218]], [0.139, [0.751, 0.199, 0.218]], [0.141, [0.756, 0.210, 0.224]], [0.143, [0.756, 0.210, 0.224]], [0.145, [0.762, 0.221, 0.229]], [0.147, [0.762, 0.221, 0.229]], [0.149, [0.767, 0.233, 0.234]], [0.151, [0.767, 0.233, 0.234]], [0.153, [0.773, 0.244, 0.239]], [0.155, [0.773, 0.244, 0.239]], [0.157, [0.778, 0.255, 0.244]], [0.159, [0.778, 0.255, 0.244]], [0.160, [0.784, 0.266, 0.250]], [0.162, [0.784, 0.266, 0.250]], [0.164, [0.789, 0.277, 0.255]], [0.166, [0.789, 0.277, 0.255]], [0.168, [0.795, 0.288, 0.260]], [0.170, [0.795, 0.288, 0.260]], [0.172, [0.800, 0.299, 0.265]], [0.174, [0.800, 0.299, 0.265]], [0.176, [0.806, 0.310, 0.271]], [0.178, [0.806, 0.310, 0.271]], [0.180, [0.812, 0.321, 0.276]], [0.182, [0.812, 0.321, 0.276]], [0.184, [0.817, 0.332, 0.281]], [0.186, [0.817, 0.332, 0.281]], [0.188, [0.823, 0.343, 0.286]], [0.190, [0.823, 0.343, 0.286]], [0.192, [0.828, 0.354, 0.292]], [0.194, [0.828, 0.354, 0.292]], [0.196, [0.834, 0.365, 0.297]], [0.198, [0.834, 0.365, 0.297]], [0.200, [0.839, 0.376, 0.302]], [0.202, [0.839, 0.376, 0.302]], [0.204, [0.844, 0.387, 0.310]], [0.205, [0.844, 0.387, 0.310]], [0.207, [0.848, 0.398, 0.318]], [0.209, [0.848, 0.398, 0.318]], [0.211, [0.853, 0.408, 0.326]], [0.213, [0.853, 0.408, 0.326]], [0.215, [0.858, 0.419, 0.335]], [0.217, [0.858, 0.419, 0.335]], [0.219, [0.862, 0.430, 0.343]], [0.221, [0.862, 0.430, 0.343]], [0.223, [0.867, 0.440, 0.351]], [0.225, [0.867, 0.440, 0.351]], [0.227, [0.872, 0.451, 0.359]], [0.229, [0.872, 0.451, 0.359]], [0.231, [0.876, 0.461, 0.367]], [0.233, [0.876, 0.461, 0.367]], [0.235, [0.881, 0.472, 0.375]], [0.237, [0.881, 0.472, 0.375]], [0.239, [0.885, 0.483, 0.383]], [0.241, [0.885, 0.483, 0.383]], [0.243, [0.890, 0.493, 0.392]], [0.245, [0.890, 0.493, 0.392]], [0.247, [0.895, 0.504, 0.400]], [0.249, [0.895, 0.504, 0.400]], [0.250, [0.899, 0.514, 0.408]], [0.252, [0.899, 0.514, 0.408]], [0.254, [0.904, 0.525, 0.416]], [0.256, [0.904, 0.525, 0.416]], [0.258, [0.908, 0.536, 0.424]], [0.260, [0.908, 0.536, 0.424]], [0.262, [0.913, 0.546, 0.432]], [0.264, [0.913, 0.546, 0.432]], [0.266, [0.918, 0.557, 0.441]], [0.268, [0.918, 0.557, 0.441]], [0.270, [0.922, 0.567, 0.449]], [0.272, [0.922, 0.567, 0.449]], [0.274, [0.927, 0.578, 0.457]], [0.276, [0.927, 0.578, 0.457]], [0.278, [0.931, 0.589, 0.465]], [0.280, [0.931, 0.589, 0.465]], [0.282, [0.936, 0.599, 0.473]], [0.284, [0.936, 0.599, 0.473]], [0.286, [0.941, 0.610, 0.481]], [0.288, [0.941, 0.610, 0.481]], [0.290, [0.945, 0.621, 0.489]], [0.292, [0.945, 0.621, 0.489]], [0.294, [0.950, 0.631, 0.498]], [0.295, [0.950, 0.631, 0.498]], [0.297, [0.955, 0.642, 0.506]], [0.299, [0.955, 0.642, 0.506]], [0.301, [0.958, 0.651, 0.515]], [0.303, [0.958, 0.651, 0.515]], [0.305, [0.959, 0.660, 0.526]], [0.307, [0.959, 0.660, 0.526]], [0.309, [0.960, 0.668, 0.536]], [0.311, [0.960, 0.668, 0.536]], [0.313, [0.962, 0.676, 0.547]], [0.315, [0.962, 0.676, 0.547]], [0.317, [0.963, 0.684, 0.558]], [0.319, [0.963, 0.684, 0.558]], [0.321, [0.964, 0.693, 0.568]], [0.323, [0.964, 0.693, 0.568]], [0.325, [0.966, 0.701, 0.579]], [0.327, [0.966, 0.701, 0.579]], [0.329, [0.967, 0.709, 0.589]], [0.331, [0.967, 0.709, 0.589]], [0.333, [0.969, 0.718, 0.600]], [0.335, [0.969, 0.718, 0.600]], [0.337, [0.970, 0.726, 0.611]], [0.339, [0.970, 0.726, 0.611]], [0.341, [0.971, 0.734, 0.621]], [0.342, [0.971, 0.734, 0.621]], [0.344, [0.973, 0.743, 0.632]], [0.346, [0.973, 0.743, 0.632]], [0.348, [0.974, 0.751, 0.642]], [0.350, [0.974, 0.751, 0.642]], [0.352, [0.976, 0.759, 0.653]], [0.354, [0.976, 0.759, 0.653]], [0.356, [0.977, 0.767, 0.664]], [0.358, [0.977, 0.767, 0.664]], [0.360, [0.978, 0.776, 0.674]], [0.362, [0.978, 0.776, 0.674]], [0.364, [0.980, 0.784, 0.685]], [0.366, [0.980, 0.784, 0.685]], [0.368, [0.981, 0.792, 0.696]], [0.370, [0.981, 0.792, 0.696]], [0.372, [0.982, 0.801, 0.706]], [0.374, [0.982, 0.801, 0.706]], [0.376, [0.984, 0.809, 0.717]], [0.378, [0.984, 0.809, 0.717]], [0.380, [0.985, 0.817, 0.727]], [0.382, [0.985, 0.817, 0.727]], [0.384, [0.987, 0.826, 0.738]], [0.386, [0.987, 0.826, 0.738]], [0.387, [0.988, 0.834, 0.749]], [0.389, [0.988, 0.834, 0.749]], [0.391, [0.989, 0.842, 0.759]], [0.393, [0.989, 0.842, 0.759]], [0.395, [0.991, 0.851, 0.770]], [0.397, [0.991, 0.851, 0.770]], [0.399, [0.992, 0.859, 0.780]], [0.401, [0.992, 0.859, 0.780]], [0.403, [0.991, 0.863, 0.788]], [0.405, [0.991, 0.863, 0.788]], [0.407, [0.990, 0.867, 0.795]], [0.409, [0.990, 0.867, 0.795]], [0.411, [0.989, 0.872, 0.803]], [0.413, [0.989, 0.872, 0.803]], [0.415, [0.988, 0.876, 0.810]], [0.417, [0.988, 0.876, 0.810]], [0.419, [0.988, 0.880, 0.817]], [0.421, [0.988, 0.880, 0.817]], [0.423, [0.987, 0.885, 0.825]], [0.425, [0.987, 0.885, 0.825]], [0.427, [0.986, 0.889, 0.832]], [0.429, [0.986, 0.889, 0.832]], [0.431, [0.985, 0.893, 0.839]], [0.432, [0.985, 0.893, 0.839]], [0.434, [0.984, 0.898, 0.847]], [0.436, [0.984, 0.898, 0.847]], [0.438, [0.983, 0.902, 0.854]], [0.440, [0.983, 0.902, 0.854]], [0.442, [0.982, 0.906, 0.862]], [0.444, [0.982, 0.906, 0.862]], [0.446, [0.981, 0.910, 0.869]], [0.448, [0.981, 0.910, 0.869]], [0.450, [0.980, 0.915, 0.876]], [0.452, [0.980, 0.915, 0.876]], [0.454, [0.979, 0.919, 0.884]], [0.456, [0.979, 0.919, 0.884]], [0.458, [0.978, 0.923, 0.891]], [0.460, [0.978, 0.923, 0.891]], [0.462, [0.977, 0.928, 0.899]], [0.464, [0.977, 0.928, 0.899]], [0.466, [0.976, 0.932, 0.906]], [0.468, [0.976, 0.932, 0.906]], [0.470, [0.976, 0.936, 0.913]], [0.472, [0.976, 0.936, 0.913]], [0.474, [0.975, 0.941, 0.921]], [0.476, [0.975, 0.941, 0.921]], [0.477, [0.974, 0.945, 0.928]], [0.479, [0.974, 0.945, 0.928]], [0.481, [0.973, 0.949, 0.935]], [0.483, [0.973, 0.949, 0.935]], [0.485, [0.972, 0.954, 0.943]], [0.487, [0.972, 0.954, 0.943]], [0.489, [0.971, 0.958, 0.950]], [0.491, [0.971, 0.958, 0.950]], [0.493, [0.970, 0.962, 0.958]], [0.495, [0.970, 0.962, 0.958]], [0.497, [0.969, 0.966, 0.965]], [0.499, [0.969, 0.966, 0.965]], [0.501, [0.966, 0.967, 0.968]], [0.503, [0.966, 0.967, 0.968]], [0.505, [0.960, 0.964, 0.967]], [0.507, [0.960, 0.964, 0.967]], [0.509, [0.954, 0.962, 0.966]], [0.511, [0.954, 0.962, 0.966]], [0.513, [0.948, 0.959, 0.965]], [0.515, [0.948, 0.959, 0.965]], [0.517, [0.942, 0.956, 0.964]], [0.519, [0.942, 0.956, 0.964]], [0.521, [0.936, 0.953, 0.963]], [0.523, [0.936, 0.953, 0.963]], [0.524, [0.931, 0.951, 0.962]], [0.526, [0.931, 0.951, 0.962]], [0.528, [0.925, 0.948, 0.961]], [0.530, [0.925, 0.948, 0.961]], [0.532, [0.919, 0.945, 0.959]], [0.534, [0.919, 0.945, 0.959]], [0.536, [0.913, 0.942, 0.958]], [0.538, [0.913, 0.942, 0.958]], [0.540, [0.907, 0.940, 0.957]], [0.542, [0.907, 0.940, 0.957]], [0.544, [0.901, 0.937, 0.956]], [0.546, [0.901, 0.937, 0.956]], [0.548, [0.896, 0.934, 0.955]], [0.550, [0.896, 0.934, 0.955]], [0.552, [0.890, 0.931, 0.954]], [0.554, [0.890, 0.931, 0.954]], [0.556, [0.884, 0.928, 0.953]], [0.558, [0.884, 0.928, 0.953]], [0.560, [0.878, 0.926, 0.952]], [0.562, [0.878, 0.926, 0.952]], [0.564, [0.872, 0.923, 0.951]], [0.566, [0.872, 0.923, 0.951]], [0.568, [0.866, 0.920, 0.950]], [0.569, [0.866, 0.920, 0.950]], [0.571, [0.861, 0.917, 0.949]], [0.573, [0.861, 0.917, 0.949]], [0.575, [0.855, 0.915, 0.948]], [0.577, [0.855, 0.915, 0.948]], [0.579, [0.849, 0.912, 0.947]], [0.581, [0.849, 0.912, 0.947]], [0.583, [0.843, 0.909, 0.945]], [0.585, [0.843, 0.909, 0.945]], [0.587, [0.837, 0.906, 0.944]], [0.589, [0.837, 0.906, 0.944]], [0.591, [0.831, 0.904, 0.943]], [0.593, [0.831, 0.904, 0.943]], [0.595, [0.825, 0.901, 0.942]], [0.597, [0.825, 0.901, 0.942]], [0.599, [0.820, 0.898, 0.941]], [0.601, [0.820, 0.898, 0.941]], [0.603, [0.810, 0.893, 0.938]], [0.605, [0.810, 0.893, 0.938]], [0.607, [0.800, 0.888, 0.936]], [0.609, [0.800, 0.888, 0.936]], [0.611, [0.791, 0.883, 0.933]], [0.613, [0.791, 0.883, 0.933]], [0.614, [0.781, 0.878, 0.930]], [0.616, [0.781, 0.878, 0.930]], [0.618, [0.771, 0.873, 0.927]], [0.620, [0.771, 0.873, 0.927]], [0.622, [0.761, 0.869, 0.925]], [0.624, [0.761, 0.869, 0.925]], [0.626, [0.752, 0.864, 0.922]], [0.628, [0.752, 0.864, 0.922]], [0.630, [0.742, 0.859, 0.919]], [0.632, [0.742, 0.859, 0.919]], [0.634, [0.732, 0.854, 0.916]], [0.636, [0.732, 0.854, 0.916]], [0.638, [0.723, 0.849, 0.913]], [0.640, [0.723, 0.849, 0.913]], [0.642, [0.713, 0.844, 0.911]], [0.644, [0.713, 0.844, 0.911]], [0.646, [0.703, 0.839, 0.908]], [0.648, [0.703, 0.839, 0.908]], [0.650, [0.694, 0.834, 0.905]], [0.652, [0.694, 0.834, 0.905]], [0.654, [0.684, 0.829, 0.902]], [0.656, [0.684, 0.829, 0.902]], [0.658, [0.674, 0.824, 0.900]], [0.659, [0.674, 0.824, 0.900]], [0.661, [0.665, 0.819, 0.897]], [0.663, [0.665, 0.819, 0.897]], [0.665, [0.655, 0.814, 0.894]], [0.667, [0.655, 0.814, 0.894]], [0.669, [0.645, 0.809, 0.891]], [0.671, [0.645, 0.809, 0.891]], [0.673, [0.636, 0.805, 0.889]], [0.675, [0.636, 0.805, 0.889]], [0.677, [0.626, 0.800, 0.886]], [0.679, [0.626, 0.800, 0.886]], [0.681, [0.616, 0.795, 0.883]], [0.683, [0.616, 0.795, 0.883]], [0.685, [0.606, 0.790, 0.880]], [0.687, [0.606, 0.790, 0.880]], [0.689, [0.597, 0.785, 0.878]], [0.691, [0.597, 0.785, 0.878]], [0.693, [0.587, 0.780, 0.875]], [0.695, [0.587, 0.780, 0.875]], [0.697, [0.577, 0.775, 0.872]], [0.699, [0.577, 0.775, 0.872]], [0.701, [0.566, 0.769, 0.869]], [0.703, [0.566, 0.769, 0.869]], [0.705, [0.554, 0.761, 0.864]], [0.706, [0.554, 0.761, 0.864]], [0.708, [0.542, 0.753, 0.860]], [0.710, [0.542, 0.753, 0.860]], [0.712, [0.530, 0.746, 0.856]], [0.714, [0.530, 0.746, 0.856]], [0.716, [0.518, 0.738, 0.852]], [0.718, [0.518, 0.738, 0.852]], [0.720, [0.506, 0.730, 0.848]], [0.722, [0.506, 0.730, 0.848]], [0.724, [0.494, 0.723, 0.844]], [0.726, [0.494, 0.723, 0.844]], [0.728, [0.481, 0.715, 0.839]], [0.730, [0.481, 0.715, 0.839]], [0.732, [0.469, 0.707, 0.835]], [0.734, [0.469, 0.707, 0.835]], [0.736, [0.457, 0.700, 0.831]], [0.738, [0.457, 0.700, 0.831]], [0.740, [0.445, 0.692, 0.827]], [0.742, [0.445, 0.692, 0.827]], [0.744, [0.433, 0.684, 0.823]], [0.746, [0.433, 0.684, 0.823]], [0.748, [0.421, 0.676, 0.819]], [0.750, [0.421, 0.676, 0.819]], [0.751, [0.409, 0.669, 0.815]], [0.753, [0.409, 0.669, 0.815]], [0.755, [0.396, 0.661, 0.810]], [0.757, [0.396, 0.661, 0.810]], [0.759, [0.384, 0.653, 0.806]], [0.761, [0.384, 0.653, 0.806]], [0.763, [0.372, 0.646, 0.802]], [0.765, [0.372, 0.646, 0.802]], [0.767, [0.360, 0.638, 0.798]], [0.769, [0.360, 0.638, 0.798]], [0.771, [0.348, 0.630, 0.794]], [0.773, [0.348, 0.630, 0.794]], [0.775, [0.336, 0.623, 0.790]], [0.777, [0.336, 0.623, 0.790]], [0.779, [0.323, 0.615, 0.785]], [0.781, [0.323, 0.615, 0.785]], [0.783, [0.311, 0.607, 0.781]], [0.785, [0.311, 0.607, 0.781]], [0.787, [0.299, 0.600, 0.777]], [0.789, [0.299, 0.600, 0.777]], [0.791, [0.287, 0.592, 0.773]], [0.793, [0.287, 0.592, 0.773]], [0.795, [0.275, 0.584, 0.769]], [0.796, [0.275, 0.584, 0.769]], [0.798, [0.263, 0.576, 0.765]], [0.800, [0.263, 0.576, 0.765]], [0.802, [0.258, 0.570, 0.761]], [0.804, [0.258, 0.570, 0.761]], [0.806, [0.252, 0.563, 0.758]], [0.808, [0.252, 0.563, 0.758]], [0.810, [0.247, 0.556, 0.754]], [0.812, [0.247, 0.556, 0.754]], [0.814, [0.242, 0.549, 0.751]], [0.816, [0.242, 0.549, 0.751]], [0.818, [0.237, 0.542, 0.747]], [0.820, [0.237, 0.542, 0.747]], [0.822, [0.231, 0.535, 0.743]], [0.824, [0.231, 0.535, 0.743]], [0.826, [0.226, 0.528, 0.740]], [0.828, [0.226, 0.528, 0.740]], [0.830, [0.221, 0.521, 0.736]], [0.832, [0.221, 0.521, 0.736]], [0.834, [0.216, 0.514, 0.733]], [0.836, [0.216, 0.514, 0.733]], [0.838, [0.210, 0.507, 0.729]], [0.840, [0.210, 0.507, 0.729]], [0.841, [0.205, 0.500, 0.726]], [0.843, [0.205, 0.500, 0.726]], [0.845, [0.200, 0.493, 0.722]], [0.847, [0.200, 0.493, 0.722]], [0.849, [0.195, 0.487, 0.719]], [0.851, [0.195, 0.487, 0.719]], [0.853, [0.190, 0.480, 0.715]], [0.855, [0.190, 0.480, 0.715]], [0.857, [0.184, 0.473, 0.712]], [0.859, [0.184, 0.473, 0.712]], [0.861, [0.179, 0.466, 0.708]], [0.863, [0.179, 0.466, 0.708]], [0.865, [0.174, 0.459, 0.705]], [0.867, [0.174, 0.459, 0.705]], [0.869, [0.169, 0.452, 0.701]], [0.871, [0.169, 0.452, 0.701]], [0.873, [0.163, 0.445, 0.698]], [0.875, [0.163, 0.445, 0.698]], [0.877, [0.158, 0.438, 0.694]], [0.879, [0.158, 0.438, 0.694]], [0.881, [0.153, 0.431, 0.690]], [0.883, [0.153, 0.431, 0.690]], [0.885, [0.148, 0.424, 0.687]], [0.886, [0.148, 0.424, 0.687]], [0.888, [0.142, 0.417, 0.683]], [0.890, [0.142, 0.417, 0.683]], [0.892, [0.137, 0.410, 0.680]], [0.894, [0.137, 0.410, 0.680]], [0.896, [0.132, 0.403, 0.676]], [0.898, [0.132, 0.403, 0.676]], [0.900, [0.127, 0.396, 0.669]], [0.902, [0.127, 0.396, 0.669]], [0.904, [0.123, 0.388, 0.657]], [0.906, [0.123, 0.388, 0.657]], [0.908, [0.119, 0.379, 0.646]], [0.910, [0.119, 0.379, 0.646]], [0.912, [0.114, 0.371, 0.634]], [0.914, [0.114, 0.371, 0.634]], [0.916, [0.110, 0.363, 0.623]], [0.918, [0.110, 0.363, 0.623]], [0.920, [0.106, 0.354, 0.611]], [0.922, [0.106, 0.354, 0.611]], [0.924, [0.101, 0.346, 0.600]], [0.926, [0.101, 0.346, 0.600]], [0.928, [0.097, 0.338, 0.588]], [0.930, [0.097, 0.338, 0.588]], [0.932, [0.093, 0.329, 0.576]], [0.933, [0.093, 0.329, 0.576]], [0.935, [0.089, 0.321, 0.565]], [0.937, [0.089, 0.321, 0.565]], [0.939, [0.084, 0.313, 0.553]], [0.941, [0.084, 0.313, 0.553]], [0.943, [0.080, 0.304, 0.542]], [0.945, [0.080, 0.304, 0.542]], [0.947, [0.076, 0.296, 0.530]], [0.949, [0.076, 0.296, 0.530]], [0.951, [0.071, 0.288, 0.519]], [0.953, [0.071, 0.288, 0.519]], [0.955, [0.067, 0.280, 0.507]], [0.957, [0.067, 0.280, 0.507]], [0.959, [0.063, 0.271, 0.496]], [0.961, [0.063, 0.271, 0.496]], [0.963, [0.058, 0.263, 0.484]], [0.965, [0.058, 0.263, 0.484]], [0.967, [0.054, 0.255, 0.473]], [0.969, [0.054, 0.255, 0.473]], [0.971, [0.050, 0.246, 0.461]], [0.973, [0.050, 0.246, 0.461]], [0.975, [0.045, 0.238, 0.450]], [0.977, [0.045, 0.238, 0.450]], [0.978, [0.041, 0.230, 0.438]], [0.980, [0.041, 0.230, 0.438]], [0.982, [0.037, 0.221, 0.427]], [0.984, [0.037, 0.221, 0.427]], [0.986, [0.033, 0.213, 0.415]], [0.988, [0.033, 0.213, 0.415]], [0.990, [0.028, 0.205, 0.403]], [0.992, [0.028, 0.205, 0.403]], [0.994, [0.024, 0.197, 0.392]], [0.996, [0.024, 0.197, 0.392]], [0.998, [0.020, 0.188, 0.380]], [1.000, [0.020, 0.188, 0.380]]]; +var RdGy = [[0.000, [0.404, 0.000, 0.122]], [0.002, [0.404, 0.000, 0.122]], [0.004, [0.415, 0.004, 0.123]], [0.006, [0.415, 0.004, 0.123]], [0.008, [0.427, 0.007, 0.125]], [0.010, [0.427, 0.007, 0.125]], [0.012, [0.439, 0.011, 0.127]], [0.014, [0.439, 0.011, 0.127]], [0.016, [0.450, 0.015, 0.129]], [0.018, [0.450, 0.015, 0.129]], [0.020, [0.462, 0.018, 0.131]], [0.022, [0.462, 0.018, 0.131]], [0.023, [0.473, 0.022, 0.133]], [0.025, [0.473, 0.022, 0.133]], [0.027, [0.485, 0.026, 0.134]], [0.029, [0.485, 0.026, 0.134]], [0.031, [0.496, 0.030, 0.136]], [0.033, [0.496, 0.030, 0.136]], [0.035, [0.508, 0.033, 0.138]], [0.037, [0.508, 0.033, 0.138]], [0.039, [0.519, 0.037, 0.140]], [0.041, [0.519, 0.037, 0.140]], [0.043, [0.531, 0.041, 0.142]], [0.045, [0.531, 0.041, 0.142]], [0.047, [0.542, 0.044, 0.144]], [0.049, [0.542, 0.044, 0.144]], [0.051, [0.554, 0.048, 0.146]], [0.053, [0.554, 0.048, 0.146]], [0.055, [0.565, 0.052, 0.147]], [0.057, [0.565, 0.052, 0.147]], [0.059, [0.577, 0.055, 0.149]], [0.061, [0.577, 0.055, 0.149]], [0.063, [0.588, 0.059, 0.151]], [0.065, [0.588, 0.059, 0.151]], [0.067, [0.600, 0.063, 0.153]], [0.068, [0.600, 0.063, 0.153]], [0.070, [0.612, 0.066, 0.155]], [0.072, [0.612, 0.066, 0.155]], [0.074, [0.623, 0.070, 0.157]], [0.076, [0.623, 0.070, 0.157]], [0.078, [0.635, 0.074, 0.158]], [0.080, [0.635, 0.074, 0.158]], [0.082, [0.646, 0.078, 0.160]], [0.084, [0.646, 0.078, 0.160]], [0.086, [0.658, 0.081, 0.162]], [0.088, [0.658, 0.081, 0.162]], [0.090, [0.669, 0.085, 0.164]], [0.092, [0.669, 0.085, 0.164]], [0.094, [0.681, 0.089, 0.166]], [0.096, [0.681, 0.089, 0.166]], [0.098, [0.692, 0.092, 0.168]], [0.100, [0.692, 0.092, 0.168]], [0.102, [0.701, 0.100, 0.171]], [0.104, [0.701, 0.100, 0.171]], [0.106, [0.706, 0.111, 0.176]], [0.108, [0.706, 0.111, 0.176]], [0.110, [0.712, 0.122, 0.182]], [0.112, [0.712, 0.122, 0.182]], [0.114, [0.717, 0.133, 0.187]], [0.115, [0.717, 0.133, 0.187]], [0.117, [0.723, 0.144, 0.192]], [0.119, [0.723, 0.144, 0.192]], [0.121, [0.728, 0.155, 0.197]], [0.123, [0.728, 0.155, 0.197]], [0.125, [0.734, 0.166, 0.203]], [0.127, [0.734, 0.166, 0.203]], [0.129, [0.740, 0.177, 0.208]], [0.131, [0.740, 0.177, 0.208]], [0.133, [0.745, 0.188, 0.213]], [0.135, [0.745, 0.188, 0.213]], [0.137, [0.751, 0.199, 0.218]], [0.139, [0.751, 0.199, 0.218]], [0.141, [0.756, 0.210, 0.224]], [0.143, [0.756, 0.210, 0.224]], [0.145, [0.762, 0.221, 0.229]], [0.147, [0.762, 0.221, 0.229]], [0.149, [0.767, 0.233, 0.234]], [0.151, [0.767, 0.233, 0.234]], [0.153, [0.773, 0.244, 0.239]], [0.155, [0.773, 0.244, 0.239]], [0.157, [0.778, 0.255, 0.244]], [0.159, [0.778, 0.255, 0.244]], [0.160, [0.784, 0.266, 0.250]], [0.162, [0.784, 0.266, 0.250]], [0.164, [0.789, 0.277, 0.255]], [0.166, [0.789, 0.277, 0.255]], [0.168, [0.795, 0.288, 0.260]], [0.170, [0.795, 0.288, 0.260]], [0.172, [0.800, 0.299, 0.265]], [0.174, [0.800, 0.299, 0.265]], [0.176, [0.806, 0.310, 0.271]], [0.178, [0.806, 0.310, 0.271]], [0.180, [0.812, 0.321, 0.276]], [0.182, [0.812, 0.321, 0.276]], [0.184, [0.817, 0.332, 0.281]], [0.186, [0.817, 0.332, 0.281]], [0.188, [0.823, 0.343, 0.286]], [0.190, [0.823, 0.343, 0.286]], [0.192, [0.828, 0.354, 0.292]], [0.194, [0.828, 0.354, 0.292]], [0.196, [0.834, 0.365, 0.297]], [0.198, [0.834, 0.365, 0.297]], [0.200, [0.839, 0.376, 0.302]], [0.202, [0.839, 0.376, 0.302]], [0.204, [0.844, 0.387, 0.310]], [0.205, [0.844, 0.387, 0.310]], [0.207, [0.848, 0.398, 0.318]], [0.209, [0.848, 0.398, 0.318]], [0.211, [0.853, 0.408, 0.326]], [0.213, [0.853, 0.408, 0.326]], [0.215, [0.858, 0.419, 0.335]], [0.217, [0.858, 0.419, 0.335]], [0.219, [0.862, 0.430, 0.343]], [0.221, [0.862, 0.430, 0.343]], [0.223, [0.867, 0.440, 0.351]], [0.225, [0.867, 0.440, 0.351]], [0.227, [0.872, 0.451, 0.359]], [0.229, [0.872, 0.451, 0.359]], [0.231, [0.876, 0.461, 0.367]], [0.233, [0.876, 0.461, 0.367]], [0.235, [0.881, 0.472, 0.375]], [0.237, [0.881, 0.472, 0.375]], [0.239, [0.885, 0.483, 0.383]], [0.241, [0.885, 0.483, 0.383]], [0.243, [0.890, 0.493, 0.392]], [0.245, [0.890, 0.493, 0.392]], [0.247, [0.895, 0.504, 0.400]], [0.249, [0.895, 0.504, 0.400]], [0.250, [0.899, 0.514, 0.408]], [0.252, [0.899, 0.514, 0.408]], [0.254, [0.904, 0.525, 0.416]], [0.256, [0.904, 0.525, 0.416]], [0.258, [0.908, 0.536, 0.424]], [0.260, [0.908, 0.536, 0.424]], [0.262, [0.913, 0.546, 0.432]], [0.264, [0.913, 0.546, 0.432]], [0.266, [0.918, 0.557, 0.441]], [0.268, [0.918, 0.557, 0.441]], [0.270, [0.922, 0.567, 0.449]], [0.272, [0.922, 0.567, 0.449]], [0.274, [0.927, 0.578, 0.457]], [0.276, [0.927, 0.578, 0.457]], [0.278, [0.931, 0.589, 0.465]], [0.280, [0.931, 0.589, 0.465]], [0.282, [0.936, 0.599, 0.473]], [0.284, [0.936, 0.599, 0.473]], [0.286, [0.941, 0.610, 0.481]], [0.288, [0.941, 0.610, 0.481]], [0.290, [0.945, 0.621, 0.489]], [0.292, [0.945, 0.621, 0.489]], [0.294, [0.950, 0.631, 0.498]], [0.295, [0.950, 0.631, 0.498]], [0.297, [0.955, 0.642, 0.506]], [0.299, [0.955, 0.642, 0.506]], [0.301, [0.958, 0.651, 0.515]], [0.303, [0.958, 0.651, 0.515]], [0.305, [0.959, 0.660, 0.526]], [0.307, [0.959, 0.660, 0.526]], [0.309, [0.960, 0.668, 0.536]], [0.311, [0.960, 0.668, 0.536]], [0.313, [0.962, 0.676, 0.547]], [0.315, [0.962, 0.676, 0.547]], [0.317, [0.963, 0.684, 0.558]], [0.319, [0.963, 0.684, 0.558]], [0.321, [0.964, 0.693, 0.568]], [0.323, [0.964, 0.693, 0.568]], [0.325, [0.966, 0.701, 0.579]], [0.327, [0.966, 0.701, 0.579]], [0.329, [0.967, 0.709, 0.589]], [0.331, [0.967, 0.709, 0.589]], [0.333, [0.969, 0.718, 0.600]], [0.335, [0.969, 0.718, 0.600]], [0.337, [0.970, 0.726, 0.611]], [0.339, [0.970, 0.726, 0.611]], [0.341, [0.971, 0.734, 0.621]], [0.342, [0.971, 0.734, 0.621]], [0.344, [0.973, 0.743, 0.632]], [0.346, [0.973, 0.743, 0.632]], [0.348, [0.974, 0.751, 0.642]], [0.350, [0.974, 0.751, 0.642]], [0.352, [0.976, 0.759, 0.653]], [0.354, [0.976, 0.759, 0.653]], [0.356, [0.977, 0.767, 0.664]], [0.358, [0.977, 0.767, 0.664]], [0.360, [0.978, 0.776, 0.674]], [0.362, [0.978, 0.776, 0.674]], [0.364, [0.980, 0.784, 0.685]], [0.366, [0.980, 0.784, 0.685]], [0.368, [0.981, 0.792, 0.696]], [0.370, [0.981, 0.792, 0.696]], [0.372, [0.982, 0.801, 0.706]], [0.374, [0.982, 0.801, 0.706]], [0.376, [0.984, 0.809, 0.717]], [0.378, [0.984, 0.809, 0.717]], [0.380, [0.985, 0.817, 0.727]], [0.382, [0.985, 0.817, 0.727]], [0.384, [0.987, 0.826, 0.738]], [0.386, [0.987, 0.826, 0.738]], [0.387, [0.988, 0.834, 0.749]], [0.389, [0.988, 0.834, 0.749]], [0.391, [0.989, 0.842, 0.759]], [0.393, [0.989, 0.842, 0.759]], [0.395, [0.991, 0.851, 0.770]], [0.397, [0.991, 0.851, 0.770]], [0.399, [0.992, 0.859, 0.780]], [0.401, [0.992, 0.859, 0.780]], [0.403, [0.992, 0.864, 0.789]], [0.405, [0.992, 0.864, 0.789]], [0.407, [0.993, 0.870, 0.798]], [0.409, [0.993, 0.870, 0.798]], [0.411, [0.993, 0.875, 0.806]], [0.413, [0.993, 0.875, 0.806]], [0.415, [0.993, 0.881, 0.815]], [0.417, [0.993, 0.881, 0.815]], [0.419, [0.994, 0.887, 0.823]], [0.421, [0.994, 0.887, 0.823]], [0.423, [0.994, 0.892, 0.832]], [0.425, [0.994, 0.892, 0.832]], [0.427, [0.994, 0.898, 0.841]], [0.429, [0.994, 0.898, 0.841]], [0.431, [0.995, 0.903, 0.849]], [0.432, [0.995, 0.903, 0.849]], [0.434, [0.995, 0.909, 0.858]], [0.436, [0.995, 0.909, 0.858]], [0.438, [0.995, 0.914, 0.867]], [0.440, [0.995, 0.914, 0.867]], [0.442, [0.996, 0.920, 0.875]], [0.444, [0.996, 0.920, 0.875]], [0.446, [0.996, 0.925, 0.884]], [0.448, [0.996, 0.925, 0.884]], [0.450, [0.996, 0.931, 0.892]], [0.452, [0.996, 0.931, 0.892]], [0.454, [0.996, 0.936, 0.901]], [0.456, [0.996, 0.936, 0.901]], [0.458, [0.997, 0.942, 0.910]], [0.460, [0.997, 0.942, 0.910]], [0.462, [0.997, 0.947, 0.918]], [0.464, [0.997, 0.947, 0.918]], [0.466, [0.997, 0.953, 0.927]], [0.468, [0.997, 0.953, 0.927]], [0.470, [0.998, 0.958, 0.935]], [0.472, [0.998, 0.958, 0.935]], [0.474, [0.998, 0.964, 0.944]], [0.476, [0.998, 0.964, 0.944]], [0.477, [0.998, 0.970, 0.953]], [0.479, [0.998, 0.970, 0.953]], [0.481, [0.999, 0.975, 0.961]], [0.483, [0.999, 0.975, 0.961]], [0.485, [0.999, 0.981, 0.970]], [0.487, [0.999, 0.981, 0.970]], [0.489, [0.999, 0.986, 0.978]], [0.491, [0.999, 0.986, 0.978]], [0.493, [1.000, 0.992, 0.987]], [0.495, [1.000, 0.992, 0.987]], [0.497, [1.000, 0.997, 0.996]], [0.499, [1.000, 0.997, 0.996]], [0.501, [0.998, 0.998, 0.998]], [0.503, [0.998, 0.998, 0.998]], [0.505, [0.993, 0.993, 0.993]], [0.507, [0.993, 0.993, 0.993]], [0.509, [0.988, 0.988, 0.988]], [0.511, [0.988, 0.988, 0.988]], [0.513, [0.983, 0.983, 0.983]], [0.515, [0.983, 0.983, 0.983]], [0.517, [0.979, 0.979, 0.979]], [0.519, [0.979, 0.979, 0.979]], [0.521, [0.974, 0.974, 0.974]], [0.523, [0.974, 0.974, 0.974]], [0.524, [0.969, 0.969, 0.969]], [0.526, [0.969, 0.969, 0.969]], [0.528, [0.964, 0.964, 0.964]], [0.530, [0.964, 0.964, 0.964]], [0.532, [0.959, 0.959, 0.959]], [0.534, [0.959, 0.959, 0.959]], [0.536, [0.955, 0.955, 0.955]], [0.538, [0.955, 0.955, 0.955]], [0.540, [0.950, 0.950, 0.950]], [0.542, [0.950, 0.950, 0.950]], [0.544, [0.945, 0.945, 0.945]], [0.546, [0.945, 0.945, 0.945]], [0.548, [0.940, 0.940, 0.940]], [0.550, [0.940, 0.940, 0.940]], [0.552, [0.936, 0.936, 0.936]], [0.554, [0.936, 0.936, 0.936]], [0.556, [0.931, 0.931, 0.931]], [0.558, [0.931, 0.931, 0.931]], [0.560, [0.926, 0.926, 0.926]], [0.562, [0.926, 0.926, 0.926]], [0.564, [0.921, 0.921, 0.921]], [0.566, [0.921, 0.921, 0.921]], [0.568, [0.917, 0.917, 0.917]], [0.569, [0.917, 0.917, 0.917]], [0.571, [0.912, 0.912, 0.912]], [0.573, [0.912, 0.912, 0.912]], [0.575, [0.907, 0.907, 0.907]], [0.577, [0.907, 0.907, 0.907]], [0.579, [0.902, 0.902, 0.902]], [0.581, [0.902, 0.902, 0.902]], [0.583, [0.898, 0.898, 0.898]], [0.585, [0.898, 0.898, 0.898]], [0.587, [0.893, 0.893, 0.893]], [0.589, [0.893, 0.893, 0.893]], [0.591, [0.888, 0.888, 0.888]], [0.593, [0.888, 0.888, 0.888]], [0.595, [0.883, 0.883, 0.883]], [0.597, [0.883, 0.883, 0.883]], [0.599, [0.878, 0.878, 0.878]], [0.601, [0.878, 0.878, 0.878]], [0.603, [0.873, 0.873, 0.873]], [0.605, [0.873, 0.873, 0.873]], [0.607, [0.867, 0.867, 0.867]], [0.609, [0.867, 0.867, 0.867]], [0.611, [0.861, 0.861, 0.861]], [0.613, [0.861, 0.861, 0.861]], [0.614, [0.855, 0.855, 0.855]], [0.616, [0.855, 0.855, 0.855]], [0.618, [0.849, 0.849, 0.849]], [0.620, [0.849, 0.849, 0.849]], [0.622, [0.843, 0.843, 0.843]], [0.624, [0.843, 0.843, 0.843]], [0.626, [0.838, 0.838, 0.838]], [0.628, [0.838, 0.838, 0.838]], [0.630, [0.832, 0.832, 0.832]], [0.632, [0.832, 0.832, 0.832]], [0.634, [0.826, 0.826, 0.826]], [0.636, [0.826, 0.826, 0.826]], [0.638, [0.820, 0.820, 0.820]], [0.640, [0.820, 0.820, 0.820]], [0.642, [0.814, 0.814, 0.814]], [0.644, [0.814, 0.814, 0.814]], [0.646, [0.808, 0.808, 0.808]], [0.648, [0.808, 0.808, 0.808]], [0.650, [0.802, 0.802, 0.802]], [0.652, [0.802, 0.802, 0.802]], [0.654, [0.797, 0.797, 0.797]], [0.656, [0.797, 0.797, 0.797]], [0.658, [0.791, 0.791, 0.791]], [0.659, [0.791, 0.791, 0.791]], [0.661, [0.785, 0.785, 0.785]], [0.663, [0.785, 0.785, 0.785]], [0.665, [0.779, 0.779, 0.779]], [0.667, [0.779, 0.779, 0.779]], [0.669, [0.773, 0.773, 0.773]], [0.671, [0.773, 0.773, 0.773]], [0.673, [0.767, 0.767, 0.767]], [0.675, [0.767, 0.767, 0.767]], [0.677, [0.762, 0.762, 0.762]], [0.679, [0.762, 0.762, 0.762]], [0.681, [0.756, 0.756, 0.756]], [0.683, [0.756, 0.756, 0.756]], [0.685, [0.750, 0.750, 0.750]], [0.687, [0.750, 0.750, 0.750]], [0.689, [0.744, 0.744, 0.744]], [0.691, [0.744, 0.744, 0.744]], [0.693, [0.738, 0.738, 0.738]], [0.695, [0.738, 0.738, 0.738]], [0.697, [0.732, 0.732, 0.732]], [0.699, [0.732, 0.732, 0.732]], [0.701, [0.725, 0.725, 0.725]], [0.703, [0.725, 0.725, 0.725]], [0.705, [0.718, 0.718, 0.718]], [0.706, [0.718, 0.718, 0.718]], [0.708, [0.710, 0.710, 0.710]], [0.710, [0.710, 0.710, 0.710]], [0.712, [0.702, 0.702, 0.702]], [0.714, [0.702, 0.702, 0.702]], [0.716, [0.694, 0.694, 0.694]], [0.718, [0.694, 0.694, 0.694]], [0.720, [0.686, 0.686, 0.686]], [0.722, [0.686, 0.686, 0.686]], [0.724, [0.678, 0.678, 0.678]], [0.726, [0.678, 0.678, 0.678]], [0.728, [0.671, 0.671, 0.671]], [0.730, [0.671, 0.671, 0.671]], [0.732, [0.663, 0.663, 0.663]], [0.734, [0.663, 0.663, 0.663]], [0.736, [0.655, 0.655, 0.655]], [0.738, [0.655, 0.655, 0.655]], [0.740, [0.647, 0.647, 0.647]], [0.742, [0.647, 0.647, 0.647]], [0.744, [0.639, 0.639, 0.639]], [0.746, [0.639, 0.639, 0.639]], [0.748, [0.631, 0.631, 0.631]], [0.750, [0.631, 0.631, 0.631]], [0.751, [0.624, 0.624, 0.624]], [0.753, [0.624, 0.624, 0.624]], [0.755, [0.616, 0.616, 0.616]], [0.757, [0.616, 0.616, 0.616]], [0.759, [0.608, 0.608, 0.608]], [0.761, [0.608, 0.608, 0.608]], [0.763, [0.600, 0.600, 0.600]], [0.765, [0.600, 0.600, 0.600]], [0.767, [0.592, 0.592, 0.592]], [0.769, [0.592, 0.592, 0.592]], [0.771, [0.584, 0.584, 0.584]], [0.773, [0.584, 0.584, 0.584]], [0.775, [0.576, 0.576, 0.576]], [0.777, [0.576, 0.576, 0.576]], [0.779, [0.569, 0.569, 0.569]], [0.781, [0.569, 0.569, 0.569]], [0.783, [0.561, 0.561, 0.561]], [0.785, [0.561, 0.561, 0.561]], [0.787, [0.553, 0.553, 0.553]], [0.789, [0.553, 0.553, 0.553]], [0.791, [0.545, 0.545, 0.545]], [0.793, [0.545, 0.545, 0.545]], [0.795, [0.537, 0.537, 0.537]], [0.796, [0.537, 0.537, 0.537]], [0.798, [0.529, 0.529, 0.529]], [0.800, [0.529, 0.529, 0.529]], [0.802, [0.520, 0.520, 0.520]], [0.804, [0.520, 0.520, 0.520]], [0.806, [0.512, 0.512, 0.512]], [0.808, [0.512, 0.512, 0.512]], [0.810, [0.503, 0.503, 0.503]], [0.812, [0.503, 0.503, 0.503]], [0.814, [0.494, 0.494, 0.494]], [0.816, [0.494, 0.494, 0.494]], [0.818, [0.485, 0.485, 0.485]], [0.820, [0.485, 0.485, 0.485]], [0.822, [0.476, 0.476, 0.476]], [0.824, [0.476, 0.476, 0.476]], [0.826, [0.467, 0.467, 0.467]], [0.828, [0.467, 0.467, 0.467]], [0.830, [0.458, 0.458, 0.458]], [0.832, [0.458, 0.458, 0.458]], [0.834, [0.449, 0.449, 0.449]], [0.836, [0.449, 0.449, 0.449]], [0.838, [0.440, 0.440, 0.440]], [0.840, [0.440, 0.440, 0.440]], [0.841, [0.431, 0.431, 0.431]], [0.843, [0.431, 0.431, 0.431]], [0.845, [0.422, 0.422, 0.422]], [0.847, [0.422, 0.422, 0.422]], [0.849, [0.413, 0.413, 0.413]], [0.851, [0.413, 0.413, 0.413]], [0.853, [0.405, 0.405, 0.405]], [0.855, [0.405, 0.405, 0.405]], [0.857, [0.396, 0.396, 0.396]], [0.859, [0.396, 0.396, 0.396]], [0.861, [0.387, 0.387, 0.387]], [0.863, [0.387, 0.387, 0.387]], [0.865, [0.378, 0.378, 0.378]], [0.867, [0.378, 0.378, 0.378]], [0.869, [0.369, 0.369, 0.369]], [0.871, [0.369, 0.369, 0.369]], [0.873, [0.360, 0.360, 0.360]], [0.875, [0.360, 0.360, 0.360]], [0.877, [0.351, 0.351, 0.351]], [0.879, [0.351, 0.351, 0.351]], [0.881, [0.342, 0.342, 0.342]], [0.883, [0.342, 0.342, 0.342]], [0.885, [0.333, 0.333, 0.333]], [0.886, [0.333, 0.333, 0.333]], [0.888, [0.324, 0.324, 0.324]], [0.890, [0.324, 0.324, 0.324]], [0.892, [0.315, 0.315, 0.315]], [0.894, [0.315, 0.315, 0.315]], [0.896, [0.306, 0.306, 0.306]], [0.898, [0.306, 0.306, 0.306]], [0.900, [0.298, 0.298, 0.298]], [0.902, [0.298, 0.298, 0.298]], [0.904, [0.290, 0.290, 0.290]], [0.906, [0.290, 0.290, 0.290]], [0.908, [0.282, 0.282, 0.282]], [0.910, [0.282, 0.282, 0.282]], [0.912, [0.275, 0.275, 0.275]], [0.914, [0.275, 0.275, 0.275]], [0.916, [0.267, 0.267, 0.267]], [0.918, [0.267, 0.267, 0.267]], [0.920, [0.259, 0.259, 0.259]], [0.922, [0.259, 0.259, 0.259]], [0.924, [0.251, 0.251, 0.251]], [0.926, [0.251, 0.251, 0.251]], [0.928, [0.243, 0.243, 0.243]], [0.930, [0.243, 0.243, 0.243]], [0.932, [0.235, 0.235, 0.235]], [0.933, [0.235, 0.235, 0.235]], [0.935, [0.227, 0.227, 0.227]], [0.937, [0.227, 0.227, 0.227]], [0.939, [0.220, 0.220, 0.220]], [0.941, [0.220, 0.220, 0.220]], [0.943, [0.212, 0.212, 0.212]], [0.945, [0.212, 0.212, 0.212]], [0.947, [0.204, 0.204, 0.204]], [0.949, [0.204, 0.204, 0.204]], [0.951, [0.196, 0.196, 0.196]], [0.953, [0.196, 0.196, 0.196]], [0.955, [0.188, 0.188, 0.188]], [0.957, [0.188, 0.188, 0.188]], [0.959, [0.180, 0.180, 0.180]], [0.961, [0.180, 0.180, 0.180]], [0.963, [0.173, 0.173, 0.173]], [0.965, [0.173, 0.173, 0.173]], [0.967, [0.165, 0.165, 0.165]], [0.969, [0.165, 0.165, 0.165]], [0.971, [0.157, 0.157, 0.157]], [0.973, [0.157, 0.157, 0.157]], [0.975, [0.149, 0.149, 0.149]], [0.977, [0.149, 0.149, 0.149]], [0.978, [0.141, 0.141, 0.141]], [0.980, [0.141, 0.141, 0.141]], [0.982, [0.133, 0.133, 0.133]], [0.984, [0.133, 0.133, 0.133]], [0.986, [0.125, 0.125, 0.125]], [0.988, [0.125, 0.125, 0.125]], [0.990, [0.118, 0.118, 0.118]], [0.992, [0.118, 0.118, 0.118]], [0.994, [0.110, 0.110, 0.110]], [0.996, [0.110, 0.110, 0.110]], [0.998, [0.102, 0.102, 0.102]], [1.000, [0.102, 0.102, 0.102]]]; +var RdYlBu = [[0.000, [0.647, 0.000, 0.149]], [0.002, [0.647, 0.000, 0.149]], [0.004, [0.655, 0.007, 0.149]], [0.006, [0.655, 0.007, 0.149]], [0.008, [0.662, 0.015, 0.149]], [0.010, [0.662, 0.015, 0.149]], [0.012, [0.670, 0.022, 0.149]], [0.014, [0.670, 0.022, 0.149]], [0.016, [0.678, 0.030, 0.150]], [0.018, [0.678, 0.030, 0.150]], [0.020, [0.686, 0.037, 0.150]], [0.022, [0.686, 0.037, 0.150]], [0.023, [0.693, 0.044, 0.150]], [0.025, [0.693, 0.044, 0.150]], [0.027, [0.701, 0.052, 0.150]], [0.029, [0.701, 0.052, 0.150]], [0.031, [0.709, 0.059, 0.150]], [0.033, [0.709, 0.059, 0.150]], [0.035, [0.716, 0.066, 0.150]], [0.037, [0.716, 0.066, 0.150]], [0.039, [0.724, 0.074, 0.151]], [0.041, [0.724, 0.074, 0.151]], [0.043, [0.732, 0.081, 0.151]], [0.045, [0.732, 0.081, 0.151]], [0.047, [0.739, 0.089, 0.151]], [0.049, [0.739, 0.089, 0.151]], [0.051, [0.747, 0.096, 0.151]], [0.053, [0.747, 0.096, 0.151]], [0.055, [0.755, 0.103, 0.151]], [0.057, [0.755, 0.103, 0.151]], [0.059, [0.762, 0.111, 0.151]], [0.061, [0.762, 0.111, 0.151]], [0.063, [0.770, 0.118, 0.151]], [0.065, [0.770, 0.118, 0.151]], [0.067, [0.778, 0.125, 0.152]], [0.068, [0.778, 0.125, 0.152]], [0.070, [0.785, 0.133, 0.152]], [0.072, [0.785, 0.133, 0.152]], [0.074, [0.793, 0.140, 0.152]], [0.076, [0.793, 0.140, 0.152]], [0.078, [0.801, 0.148, 0.152]], [0.080, [0.801, 0.148, 0.152]], [0.082, [0.809, 0.155, 0.152]], [0.084, [0.809, 0.155, 0.152]], [0.086, [0.816, 0.162, 0.152]], [0.088, [0.816, 0.162, 0.152]], [0.090, [0.824, 0.170, 0.153]], [0.092, [0.824, 0.170, 0.153]], [0.094, [0.832, 0.177, 0.153]], [0.096, [0.832, 0.177, 0.153]], [0.098, [0.839, 0.185, 0.153]], [0.100, [0.839, 0.185, 0.153]], [0.102, [0.845, 0.193, 0.155]], [0.104, [0.845, 0.193, 0.155]], [0.106, [0.850, 0.202, 0.159]], [0.108, [0.850, 0.202, 0.159]], [0.110, [0.854, 0.212, 0.164]], [0.112, [0.854, 0.212, 0.164]], [0.114, [0.859, 0.221, 0.168]], [0.115, [0.859, 0.221, 0.168]], [0.117, [0.863, 0.230, 0.172]], [0.119, [0.863, 0.230, 0.172]], [0.121, [0.868, 0.240, 0.177]], [0.123, [0.868, 0.240, 0.177]], [0.125, [0.872, 0.249, 0.181]], [0.127, [0.872, 0.249, 0.181]], [0.129, [0.877, 0.259, 0.185]], [0.131, [0.877, 0.259, 0.185]], [0.133, [0.881, 0.268, 0.190]], [0.135, [0.881, 0.268, 0.190]], [0.137, [0.886, 0.277, 0.194]], [0.139, [0.886, 0.277, 0.194]], [0.141, [0.890, 0.287, 0.198]], [0.143, [0.890, 0.287, 0.198]], [0.145, [0.894, 0.296, 0.202]], [0.147, [0.894, 0.296, 0.202]], [0.149, [0.899, 0.305, 0.207]], [0.151, [0.899, 0.305, 0.207]], [0.153, [0.903, 0.315, 0.211]], [0.155, [0.903, 0.315, 0.211]], [0.157, [0.908, 0.324, 0.215]], [0.159, [0.908, 0.324, 0.215]], [0.160, [0.912, 0.334, 0.220]], [0.162, [0.912, 0.334, 0.220]], [0.164, [0.917, 0.343, 0.224]], [0.166, [0.917, 0.343, 0.224]], [0.168, [0.921, 0.352, 0.228]], [0.170, [0.921, 0.352, 0.228]], [0.172, [0.926, 0.362, 0.233]], [0.174, [0.926, 0.362, 0.233]], [0.176, [0.930, 0.371, 0.237]], [0.178, [0.930, 0.371, 0.237]], [0.180, [0.935, 0.381, 0.241]], [0.182, [0.935, 0.381, 0.241]], [0.184, [0.939, 0.390, 0.246]], [0.186, [0.939, 0.390, 0.246]], [0.188, [0.943, 0.399, 0.250]], [0.190, [0.943, 0.399, 0.250]], [0.192, [0.948, 0.409, 0.254]], [0.194, [0.948, 0.409, 0.254]], [0.196, [0.952, 0.418, 0.258]], [0.198, [0.952, 0.418, 0.258]], [0.200, [0.957, 0.427, 0.263]], [0.202, [0.957, 0.427, 0.263]], [0.204, [0.958, 0.437, 0.267]], [0.205, [0.958, 0.437, 0.267]], [0.207, [0.960, 0.447, 0.272]], [0.209, [0.960, 0.447, 0.272]], [0.211, [0.961, 0.457, 0.277]], [0.213, [0.961, 0.457, 0.277]], [0.215, [0.962, 0.467, 0.281]], [0.217, [0.962, 0.467, 0.281]], [0.219, [0.964, 0.477, 0.286]], [0.221, [0.964, 0.477, 0.286]], [0.223, [0.965, 0.487, 0.290]], [0.225, [0.965, 0.487, 0.290]], [0.227, [0.967, 0.497, 0.295]], [0.229, [0.967, 0.497, 0.295]], [0.231, [0.968, 0.507, 0.300]], [0.233, [0.968, 0.507, 0.300]], [0.235, [0.969, 0.517, 0.304]], [0.237, [0.969, 0.517, 0.304]], [0.239, [0.971, 0.527, 0.309]], [0.241, [0.971, 0.527, 0.309]], [0.243, [0.972, 0.537, 0.313]], [0.245, [0.972, 0.537, 0.313]], [0.247, [0.973, 0.547, 0.318]], [0.249, [0.973, 0.547, 0.318]], [0.250, [0.975, 0.557, 0.323]], [0.252, [0.975, 0.557, 0.323]], [0.254, [0.976, 0.567, 0.327]], [0.256, [0.976, 0.567, 0.327]], [0.258, [0.978, 0.577, 0.332]], [0.260, [0.978, 0.577, 0.332]], [0.262, [0.979, 0.587, 0.337]], [0.264, [0.979, 0.587, 0.337]], [0.266, [0.980, 0.597, 0.341]], [0.268, [0.980, 0.597, 0.341]], [0.270, [0.982, 0.607, 0.346]], [0.272, [0.982, 0.607, 0.346]], [0.274, [0.983, 0.617, 0.350]], [0.276, [0.983, 0.617, 0.350]], [0.278, [0.985, 0.627, 0.355]], [0.280, [0.985, 0.627, 0.355]], [0.282, [0.986, 0.637, 0.360]], [0.284, [0.986, 0.637, 0.360]], [0.286, [0.987, 0.647, 0.364]], [0.288, [0.987, 0.647, 0.364]], [0.290, [0.989, 0.657, 0.369]], [0.292, [0.989, 0.657, 0.369]], [0.294, [0.990, 0.667, 0.373]], [0.295, [0.990, 0.667, 0.373]], [0.297, [0.991, 0.677, 0.378]], [0.299, [0.991, 0.677, 0.378]], [0.301, [0.992, 0.686, 0.384]], [0.303, [0.992, 0.686, 0.384]], [0.305, [0.992, 0.694, 0.391]], [0.307, [0.992, 0.694, 0.391]], [0.309, [0.993, 0.702, 0.398]], [0.311, [0.993, 0.702, 0.398]], [0.313, [0.993, 0.709, 0.406]], [0.315, [0.993, 0.709, 0.406]], [0.317, [0.993, 0.717, 0.413]], [0.319, [0.993, 0.717, 0.413]], [0.321, [0.993, 0.725, 0.420]], [0.323, [0.993, 0.725, 0.420]], [0.325, [0.993, 0.732, 0.427]], [0.327, [0.993, 0.732, 0.427]], [0.329, [0.993, 0.740, 0.435]], [0.331, [0.993, 0.740, 0.435]], [0.333, [0.993, 0.748, 0.442]], [0.335, [0.993, 0.748, 0.442]], [0.337, [0.994, 0.755, 0.449]], [0.339, [0.994, 0.755, 0.449]], [0.341, [0.994, 0.763, 0.456]], [0.342, [0.994, 0.763, 0.456]], [0.344, [0.994, 0.771, 0.464]], [0.346, [0.994, 0.771, 0.464]], [0.348, [0.994, 0.778, 0.471]], [0.350, [0.994, 0.778, 0.471]], [0.352, [0.994, 0.786, 0.478]], [0.354, [0.994, 0.786, 0.478]], [0.356, [0.994, 0.794, 0.485]], [0.358, [0.994, 0.794, 0.485]], [0.360, [0.995, 0.802, 0.492]], [0.362, [0.995, 0.802, 0.492]], [0.364, [0.995, 0.809, 0.500]], [0.366, [0.995, 0.809, 0.500]], [0.368, [0.995, 0.817, 0.507]], [0.370, [0.995, 0.817, 0.507]], [0.372, [0.995, 0.825, 0.514]], [0.374, [0.995, 0.825, 0.514]], [0.376, [0.995, 0.832, 0.521]], [0.378, [0.995, 0.832, 0.521]], [0.380, [0.995, 0.840, 0.529]], [0.382, [0.995, 0.840, 0.529]], [0.384, [0.995, 0.848, 0.536]], [0.386, [0.995, 0.848, 0.536]], [0.387, [0.996, 0.855, 0.543]], [0.389, [0.996, 0.855, 0.543]], [0.391, [0.996, 0.863, 0.550]], [0.393, [0.996, 0.863, 0.550]], [0.395, [0.996, 0.871, 0.557]], [0.397, [0.996, 0.871, 0.557]], [0.399, [0.996, 0.878, 0.565]], [0.401, [0.996, 0.878, 0.565]], [0.403, [0.996, 0.883, 0.572]], [0.405, [0.996, 0.883, 0.572]], [0.407, [0.996, 0.888, 0.579]], [0.409, [0.996, 0.888, 0.579]], [0.411, [0.997, 0.893, 0.586]], [0.413, [0.997, 0.893, 0.586]], [0.415, [0.997, 0.898, 0.594]], [0.417, [0.997, 0.898, 0.594]], [0.419, [0.997, 0.902, 0.601]], [0.421, [0.997, 0.902, 0.601]], [0.423, [0.997, 0.907, 0.608]], [0.425, [0.997, 0.907, 0.608]], [0.427, [0.997, 0.912, 0.615]], [0.429, [0.997, 0.912, 0.615]], [0.431, [0.997, 0.917, 0.623]], [0.432, [0.997, 0.917, 0.623]], [0.434, [0.997, 0.921, 0.630]], [0.436, [0.997, 0.921, 0.630]], [0.438, [0.998, 0.926, 0.637]], [0.440, [0.998, 0.926, 0.637]], [0.442, [0.998, 0.931, 0.644]], [0.444, [0.998, 0.931, 0.644]], [0.446, [0.998, 0.936, 0.651]], [0.448, [0.998, 0.936, 0.651]], [0.450, [0.998, 0.940, 0.659]], [0.452, [0.998, 0.940, 0.659]], [0.454, [0.998, 0.945, 0.666]], [0.456, [0.998, 0.945, 0.666]], [0.458, [0.998, 0.950, 0.673]], [0.460, [0.998, 0.950, 0.673]], [0.462, [0.999, 0.955, 0.680]], [0.464, [0.999, 0.955, 0.680]], [0.466, [0.999, 0.959, 0.688]], [0.468, [0.999, 0.959, 0.688]], [0.470, [0.999, 0.964, 0.695]], [0.472, [0.999, 0.964, 0.695]], [0.474, [0.999, 0.969, 0.702]], [0.476, [0.999, 0.969, 0.702]], [0.477, [0.999, 0.974, 0.709]], [0.479, [0.999, 0.974, 0.709]], [0.481, [0.999, 0.979, 0.716]], [0.483, [0.999, 0.979, 0.716]], [0.485, [0.999, 0.983, 0.724]], [0.487, [0.999, 0.983, 0.724]], [0.489, [1.000, 0.988, 0.731]], [0.491, [1.000, 0.988, 0.731]], [0.493, [1.000, 0.993, 0.738]], [0.495, [1.000, 0.993, 0.738]], [0.497, [1.000, 0.998, 0.745]], [0.499, [1.000, 0.998, 0.745]], [0.501, [0.998, 0.999, 0.753]], [0.503, [0.998, 0.999, 0.753]], [0.505, [0.993, 0.997, 0.762]], [0.507, [0.993, 0.997, 0.762]], [0.509, [0.988, 0.995, 0.771]], [0.511, [0.988, 0.995, 0.771]], [0.513, [0.983, 0.994, 0.780]], [0.515, [0.983, 0.994, 0.780]], [0.517, [0.979, 0.992, 0.788]], [0.519, [0.979, 0.992, 0.788]], [0.521, [0.974, 0.990, 0.797]], [0.523, [0.974, 0.990, 0.797]], [0.524, [0.969, 0.988, 0.806]], [0.526, [0.969, 0.988, 0.806]], [0.528, [0.964, 0.986, 0.815]], [0.530, [0.964, 0.986, 0.815]], [0.532, [0.959, 0.984, 0.824]], [0.534, [0.959, 0.984, 0.824]], [0.536, [0.955, 0.982, 0.832]], [0.538, [0.955, 0.982, 0.832]], [0.540, [0.950, 0.981, 0.841]], [0.542, [0.950, 0.981, 0.841]], [0.544, [0.945, 0.979, 0.850]], [0.546, [0.945, 0.979, 0.850]], [0.548, [0.940, 0.977, 0.859]], [0.550, [0.940, 0.977, 0.859]], [0.552, [0.936, 0.975, 0.867]], [0.554, [0.936, 0.975, 0.867]], [0.556, [0.931, 0.973, 0.876]], [0.558, [0.931, 0.973, 0.876]], [0.560, [0.926, 0.971, 0.885]], [0.562, [0.926, 0.971, 0.885]], [0.564, [0.921, 0.970, 0.894]], [0.566, [0.921, 0.970, 0.894]], [0.568, [0.917, 0.968, 0.902]], [0.569, [0.917, 0.968, 0.902]], [0.571, [0.912, 0.966, 0.911]], [0.573, [0.912, 0.966, 0.911]], [0.575, [0.907, 0.964, 0.920]], [0.577, [0.907, 0.964, 0.920]], [0.579, [0.902, 0.962, 0.929]], [0.581, [0.902, 0.962, 0.929]], [0.583, [0.898, 0.960, 0.937]], [0.585, [0.898, 0.960, 0.937]], [0.587, [0.893, 0.958, 0.946]], [0.589, [0.893, 0.958, 0.946]], [0.591, [0.888, 0.957, 0.955]], [0.593, [0.888, 0.957, 0.955]], [0.595, [0.883, 0.955, 0.964]], [0.597, [0.883, 0.955, 0.964]], [0.599, [0.878, 0.953, 0.973]], [0.601, [0.878, 0.953, 0.973]], [0.603, [0.870, 0.949, 0.970]], [0.605, [0.870, 0.949, 0.970]], [0.607, [0.862, 0.945, 0.968]], [0.609, [0.862, 0.945, 0.968]], [0.611, [0.854, 0.941, 0.966]], [0.613, [0.854, 0.941, 0.966]], [0.614, [0.846, 0.937, 0.963]], [0.616, [0.846, 0.937, 0.963]], [0.618, [0.838, 0.933, 0.961]], [0.620, [0.838, 0.933, 0.961]], [0.622, [0.830, 0.929, 0.959]], [0.624, [0.830, 0.929, 0.959]], [0.626, [0.821, 0.925, 0.956]], [0.628, [0.821, 0.925, 0.956]], [0.630, [0.813, 0.921, 0.954]], [0.632, [0.813, 0.921, 0.954]], [0.634, [0.805, 0.917, 0.952]], [0.636, [0.805, 0.917, 0.952]], [0.638, [0.797, 0.913, 0.949]], [0.640, [0.797, 0.913, 0.949]], [0.642, [0.789, 0.909, 0.947]], [0.644, [0.789, 0.909, 0.947]], [0.646, [0.781, 0.905, 0.945]], [0.648, [0.781, 0.905, 0.945]], [0.650, [0.772, 0.901, 0.943]], [0.652, [0.772, 0.901, 0.943]], [0.654, [0.764, 0.897, 0.940]], [0.656, [0.764, 0.897, 0.940]], [0.658, [0.756, 0.893, 0.938]], [0.659, [0.756, 0.893, 0.938]], [0.661, [0.748, 0.889, 0.936]], [0.663, [0.748, 0.889, 0.936]], [0.665, [0.740, 0.885, 0.933]], [0.667, [0.740, 0.885, 0.933]], [0.669, [0.732, 0.881, 0.931]], [0.671, [0.732, 0.881, 0.931]], [0.673, [0.724, 0.877, 0.929]], [0.675, [0.724, 0.877, 0.929]], [0.677, [0.715, 0.873, 0.926]], [0.679, [0.715, 0.873, 0.926]], [0.681, [0.707, 0.869, 0.924]], [0.683, [0.707, 0.869, 0.924]], [0.685, [0.699, 0.865, 0.922]], [0.687, [0.699, 0.865, 0.922]], [0.689, [0.691, 0.861, 0.919]], [0.691, [0.691, 0.861, 0.919]], [0.693, [0.683, 0.857, 0.917]], [0.695, [0.683, 0.857, 0.917]], [0.697, [0.675, 0.853, 0.915]], [0.699, [0.675, 0.853, 0.915]], [0.701, [0.666, 0.848, 0.912]], [0.703, [0.666, 0.848, 0.912]], [0.705, [0.658, 0.841, 0.908]], [0.706, [0.658, 0.841, 0.908]], [0.708, [0.649, 0.834, 0.904]], [0.710, [0.649, 0.834, 0.904]], [0.712, [0.641, 0.827, 0.901]], [0.714, [0.641, 0.827, 0.901]], [0.716, [0.633, 0.821, 0.897]], [0.718, [0.633, 0.821, 0.897]], [0.720, [0.624, 0.814, 0.893]], [0.722, [0.624, 0.814, 0.893]], [0.724, [0.616, 0.807, 0.890]], [0.726, [0.616, 0.807, 0.890]], [0.728, [0.607, 0.800, 0.886]], [0.730, [0.607, 0.800, 0.886]], [0.732, [0.599, 0.793, 0.882]], [0.734, [0.599, 0.793, 0.882]], [0.736, [0.590, 0.787, 0.879]], [0.738, [0.590, 0.787, 0.879]], [0.740, [0.582, 0.780, 0.875]], [0.742, [0.582, 0.780, 0.875]], [0.744, [0.573, 0.773, 0.871]], [0.746, [0.573, 0.773, 0.871]], [0.748, [0.565, 0.766, 0.868]], [0.750, [0.565, 0.766, 0.868]], [0.751, [0.556, 0.760, 0.864]], [0.753, [0.556, 0.760, 0.864]], [0.755, [0.548, 0.753, 0.860]], [0.757, [0.548, 0.753, 0.860]], [0.759, [0.539, 0.746, 0.857]], [0.761, [0.539, 0.746, 0.857]], [0.763, [0.531, 0.739, 0.853]], [0.765, [0.531, 0.739, 0.853]], [0.767, [0.523, 0.733, 0.849]], [0.769, [0.523, 0.733, 0.849]], [0.771, [0.514, 0.726, 0.845]], [0.773, [0.514, 0.726, 0.845]], [0.775, [0.506, 0.719, 0.842]], [0.777, [0.506, 0.719, 0.842]], [0.779, [0.497, 0.712, 0.838]], [0.781, [0.497, 0.712, 0.838]], [0.783, [0.489, 0.705, 0.834]], [0.785, [0.489, 0.705, 0.834]], [0.787, [0.480, 0.699, 0.831]], [0.789, [0.480, 0.699, 0.831]], [0.791, [0.472, 0.692, 0.827]], [0.793, [0.472, 0.692, 0.827]], [0.795, [0.463, 0.685, 0.823]], [0.796, [0.463, 0.685, 0.823]], [0.798, [0.455, 0.678, 0.820]], [0.800, [0.455, 0.678, 0.820]], [0.802, [0.448, 0.670, 0.815]], [0.804, [0.448, 0.670, 0.815]], [0.806, [0.440, 0.661, 0.811]], [0.808, [0.440, 0.661, 0.811]], [0.810, [0.433, 0.653, 0.806]], [0.812, [0.433, 0.653, 0.806]], [0.814, [0.426, 0.644, 0.802]], [0.816, [0.426, 0.644, 0.802]], [0.818, [0.419, 0.635, 0.797]], [0.820, [0.419, 0.635, 0.797]], [0.822, [0.412, 0.627, 0.793]], [0.824, [0.412, 0.627, 0.793]], [0.826, [0.404, 0.618, 0.788]], [0.828, [0.404, 0.618, 0.788]], [0.830, [0.397, 0.610, 0.784]], [0.832, [0.397, 0.610, 0.784]], [0.834, [0.390, 0.601, 0.779]], [0.836, [0.390, 0.601, 0.779]], [0.838, [0.383, 0.592, 0.775]], [0.840, [0.383, 0.592, 0.775]], [0.841, [0.375, 0.584, 0.771]], [0.843, [0.375, 0.584, 0.771]], [0.845, [0.368, 0.575, 0.766]], [0.847, [0.368, 0.575, 0.766]], [0.849, [0.361, 0.566, 0.762]], [0.851, [0.361, 0.566, 0.762]], [0.853, [0.354, 0.558, 0.757]], [0.855, [0.354, 0.558, 0.757]], [0.857, [0.346, 0.549, 0.753]], [0.859, [0.346, 0.549, 0.753]], [0.861, [0.339, 0.541, 0.748]], [0.863, [0.339, 0.541, 0.748]], [0.865, [0.332, 0.532, 0.744]], [0.867, [0.332, 0.532, 0.744]], [0.869, [0.325, 0.523, 0.739]], [0.871, [0.325, 0.523, 0.739]], [0.873, [0.318, 0.515, 0.735]], [0.875, [0.318, 0.515, 0.735]], [0.877, [0.310, 0.506, 0.730]], [0.879, [0.310, 0.506, 0.730]], [0.881, [0.303, 0.498, 0.726]], [0.883, [0.303, 0.498, 0.726]], [0.885, [0.296, 0.489, 0.721]], [0.886, [0.296, 0.489, 0.721]], [0.888, [0.289, 0.480, 0.717]], [0.890, [0.289, 0.480, 0.717]], [0.892, [0.281, 0.472, 0.713]], [0.894, [0.281, 0.472, 0.713]], [0.896, [0.274, 0.463, 0.708]], [0.898, [0.274, 0.463, 0.708]], [0.900, [0.269, 0.454, 0.703]], [0.902, [0.269, 0.454, 0.703]], [0.904, [0.266, 0.444, 0.699]], [0.906, [0.266, 0.444, 0.699]], [0.908, [0.263, 0.435, 0.694]], [0.910, [0.263, 0.435, 0.694]], [0.912, [0.260, 0.425, 0.689]], [0.914, [0.260, 0.425, 0.689]], [0.916, [0.257, 0.415, 0.684]], [0.918, [0.257, 0.415, 0.684]], [0.920, [0.254, 0.406, 0.680]], [0.922, [0.254, 0.406, 0.680]], [0.924, [0.251, 0.396, 0.675]], [0.926, [0.251, 0.396, 0.675]], [0.928, [0.248, 0.386, 0.670]], [0.930, [0.248, 0.386, 0.670]], [0.932, [0.244, 0.376, 0.665]], [0.933, [0.244, 0.376, 0.665]], [0.935, [0.241, 0.367, 0.661]], [0.937, [0.241, 0.367, 0.661]], [0.939, [0.238, 0.357, 0.656]], [0.941, [0.238, 0.357, 0.656]], [0.943, [0.235, 0.347, 0.651]], [0.945, [0.235, 0.347, 0.651]], [0.947, [0.232, 0.338, 0.646]], [0.949, [0.232, 0.338, 0.646]], [0.951, [0.229, 0.328, 0.642]], [0.953, [0.229, 0.328, 0.642]], [0.955, [0.226, 0.318, 0.637]], [0.957, [0.226, 0.318, 0.637]], [0.959, [0.223, 0.309, 0.632]], [0.961, [0.223, 0.309, 0.632]], [0.963, [0.220, 0.299, 0.627]], [0.965, [0.220, 0.299, 0.627]], [0.967, [0.217, 0.289, 0.622]], [0.969, [0.217, 0.289, 0.622]], [0.971, [0.214, 0.280, 0.618]], [0.973, [0.214, 0.280, 0.618]], [0.975, [0.211, 0.270, 0.613]], [0.977, [0.211, 0.270, 0.613]], [0.978, [0.208, 0.260, 0.608]], [0.980, [0.208, 0.260, 0.608]], [0.982, [0.204, 0.251, 0.603]], [0.984, [0.204, 0.251, 0.603]], [0.986, [0.201, 0.241, 0.599]], [0.988, [0.201, 0.241, 0.599]], [0.990, [0.198, 0.231, 0.594]], [0.992, [0.198, 0.231, 0.594]], [0.994, [0.195, 0.221, 0.589]], [0.996, [0.195, 0.221, 0.589]], [0.998, [0.192, 0.212, 0.584]], [1.000, [0.192, 0.212, 0.584]]]; +var RdYlGn = [[0.000, [0.647, 0.000, 0.149]], [0.002, [0.647, 0.000, 0.149]], [0.004, [0.655, 0.007, 0.149]], [0.006, [0.655, 0.007, 0.149]], [0.008, [0.662, 0.015, 0.149]], [0.010, [0.662, 0.015, 0.149]], [0.012, [0.670, 0.022, 0.149]], [0.014, [0.670, 0.022, 0.149]], [0.016, [0.678, 0.030, 0.150]], [0.018, [0.678, 0.030, 0.150]], [0.020, [0.686, 0.037, 0.150]], [0.022, [0.686, 0.037, 0.150]], [0.023, [0.693, 0.044, 0.150]], [0.025, [0.693, 0.044, 0.150]], [0.027, [0.701, 0.052, 0.150]], [0.029, [0.701, 0.052, 0.150]], [0.031, [0.709, 0.059, 0.150]], [0.033, [0.709, 0.059, 0.150]], [0.035, [0.716, 0.066, 0.150]], [0.037, [0.716, 0.066, 0.150]], [0.039, [0.724, 0.074, 0.151]], [0.041, [0.724, 0.074, 0.151]], [0.043, [0.732, 0.081, 0.151]], [0.045, [0.732, 0.081, 0.151]], [0.047, [0.739, 0.089, 0.151]], [0.049, [0.739, 0.089, 0.151]], [0.051, [0.747, 0.096, 0.151]], [0.053, [0.747, 0.096, 0.151]], [0.055, [0.755, 0.103, 0.151]], [0.057, [0.755, 0.103, 0.151]], [0.059, [0.762, 0.111, 0.151]], [0.061, [0.762, 0.111, 0.151]], [0.063, [0.770, 0.118, 0.151]], [0.065, [0.770, 0.118, 0.151]], [0.067, [0.778, 0.125, 0.152]], [0.068, [0.778, 0.125, 0.152]], [0.070, [0.785, 0.133, 0.152]], [0.072, [0.785, 0.133, 0.152]], [0.074, [0.793, 0.140, 0.152]], [0.076, [0.793, 0.140, 0.152]], [0.078, [0.801, 0.148, 0.152]], [0.080, [0.801, 0.148, 0.152]], [0.082, [0.809, 0.155, 0.152]], [0.084, [0.809, 0.155, 0.152]], [0.086, [0.816, 0.162, 0.152]], [0.088, [0.816, 0.162, 0.152]], [0.090, [0.824, 0.170, 0.153]], [0.092, [0.824, 0.170, 0.153]], [0.094, [0.832, 0.177, 0.153]], [0.096, [0.832, 0.177, 0.153]], [0.098, [0.839, 0.185, 0.153]], [0.100, [0.839, 0.185, 0.153]], [0.102, [0.845, 0.193, 0.155]], [0.104, [0.845, 0.193, 0.155]], [0.106, [0.850, 0.202, 0.159]], [0.108, [0.850, 0.202, 0.159]], [0.110, [0.854, 0.212, 0.164]], [0.112, [0.854, 0.212, 0.164]], [0.114, [0.859, 0.221, 0.168]], [0.115, [0.859, 0.221, 0.168]], [0.117, [0.863, 0.230, 0.172]], [0.119, [0.863, 0.230, 0.172]], [0.121, [0.868, 0.240, 0.177]], [0.123, [0.868, 0.240, 0.177]], [0.125, [0.872, 0.249, 0.181]], [0.127, [0.872, 0.249, 0.181]], [0.129, [0.877, 0.259, 0.185]], [0.131, [0.877, 0.259, 0.185]], [0.133, [0.881, 0.268, 0.190]], [0.135, [0.881, 0.268, 0.190]], [0.137, [0.886, 0.277, 0.194]], [0.139, [0.886, 0.277, 0.194]], [0.141, [0.890, 0.287, 0.198]], [0.143, [0.890, 0.287, 0.198]], [0.145, [0.894, 0.296, 0.202]], [0.147, [0.894, 0.296, 0.202]], [0.149, [0.899, 0.305, 0.207]], [0.151, [0.899, 0.305, 0.207]], [0.153, [0.903, 0.315, 0.211]], [0.155, [0.903, 0.315, 0.211]], [0.157, [0.908, 0.324, 0.215]], [0.159, [0.908, 0.324, 0.215]], [0.160, [0.912, 0.334, 0.220]], [0.162, [0.912, 0.334, 0.220]], [0.164, [0.917, 0.343, 0.224]], [0.166, [0.917, 0.343, 0.224]], [0.168, [0.921, 0.352, 0.228]], [0.170, [0.921, 0.352, 0.228]], [0.172, [0.926, 0.362, 0.233]], [0.174, [0.926, 0.362, 0.233]], [0.176, [0.930, 0.371, 0.237]], [0.178, [0.930, 0.371, 0.237]], [0.180, [0.935, 0.381, 0.241]], [0.182, [0.935, 0.381, 0.241]], [0.184, [0.939, 0.390, 0.246]], [0.186, [0.939, 0.390, 0.246]], [0.188, [0.943, 0.399, 0.250]], [0.190, [0.943, 0.399, 0.250]], [0.192, [0.948, 0.409, 0.254]], [0.194, [0.948, 0.409, 0.254]], [0.196, [0.952, 0.418, 0.258]], [0.198, [0.952, 0.418, 0.258]], [0.200, [0.957, 0.427, 0.263]], [0.202, [0.957, 0.427, 0.263]], [0.204, [0.958, 0.437, 0.267]], [0.205, [0.958, 0.437, 0.267]], [0.207, [0.960, 0.447, 0.272]], [0.209, [0.960, 0.447, 0.272]], [0.211, [0.961, 0.457, 0.277]], [0.213, [0.961, 0.457, 0.277]], [0.215, [0.962, 0.467, 0.281]], [0.217, [0.962, 0.467, 0.281]], [0.219, [0.964, 0.477, 0.286]], [0.221, [0.964, 0.477, 0.286]], [0.223, [0.965, 0.487, 0.290]], [0.225, [0.965, 0.487, 0.290]], [0.227, [0.967, 0.497, 0.295]], [0.229, [0.967, 0.497, 0.295]], [0.231, [0.968, 0.507, 0.300]], [0.233, [0.968, 0.507, 0.300]], [0.235, [0.969, 0.517, 0.304]], [0.237, [0.969, 0.517, 0.304]], [0.239, [0.971, 0.527, 0.309]], [0.241, [0.971, 0.527, 0.309]], [0.243, [0.972, 0.537, 0.313]], [0.245, [0.972, 0.537, 0.313]], [0.247, [0.973, 0.547, 0.318]], [0.249, [0.973, 0.547, 0.318]], [0.250, [0.975, 0.557, 0.323]], [0.252, [0.975, 0.557, 0.323]], [0.254, [0.976, 0.567, 0.327]], [0.256, [0.976, 0.567, 0.327]], [0.258, [0.978, 0.577, 0.332]], [0.260, [0.978, 0.577, 0.332]], [0.262, [0.979, 0.587, 0.337]], [0.264, [0.979, 0.587, 0.337]], [0.266, [0.980, 0.597, 0.341]], [0.268, [0.980, 0.597, 0.341]], [0.270, [0.982, 0.607, 0.346]], [0.272, [0.982, 0.607, 0.346]], [0.274, [0.983, 0.617, 0.350]], [0.276, [0.983, 0.617, 0.350]], [0.278, [0.985, 0.627, 0.355]], [0.280, [0.985, 0.627, 0.355]], [0.282, [0.986, 0.637, 0.360]], [0.284, [0.986, 0.637, 0.360]], [0.286, [0.987, 0.647, 0.364]], [0.288, [0.987, 0.647, 0.364]], [0.290, [0.989, 0.657, 0.369]], [0.292, [0.989, 0.657, 0.369]], [0.294, [0.990, 0.667, 0.373]], [0.295, [0.990, 0.667, 0.373]], [0.297, [0.991, 0.677, 0.378]], [0.299, [0.991, 0.677, 0.378]], [0.301, [0.992, 0.686, 0.384]], [0.303, [0.992, 0.686, 0.384]], [0.305, [0.992, 0.694, 0.390]], [0.307, [0.992, 0.694, 0.390]], [0.309, [0.993, 0.702, 0.397]], [0.311, [0.993, 0.702, 0.397]], [0.313, [0.993, 0.709, 0.403]], [0.315, [0.993, 0.709, 0.403]], [0.317, [0.993, 0.717, 0.409]], [0.319, [0.993, 0.717, 0.409]], [0.321, [0.993, 0.725, 0.416]], [0.323, [0.993, 0.725, 0.416]], [0.325, [0.993, 0.732, 0.422]], [0.327, [0.993, 0.732, 0.422]], [0.329, [0.993, 0.740, 0.429]], [0.331, [0.993, 0.740, 0.429]], [0.333, [0.993, 0.748, 0.435]], [0.335, [0.993, 0.748, 0.435]], [0.337, [0.994, 0.755, 0.442]], [0.339, [0.994, 0.755, 0.442]], [0.341, [0.994, 0.763, 0.448]], [0.342, [0.994, 0.763, 0.448]], [0.344, [0.994, 0.771, 0.455]], [0.346, [0.994, 0.771, 0.455]], [0.348, [0.994, 0.778, 0.461]], [0.350, [0.994, 0.778, 0.461]], [0.352, [0.994, 0.786, 0.468]], [0.354, [0.994, 0.786, 0.468]], [0.356, [0.994, 0.794, 0.474]], [0.358, [0.994, 0.794, 0.474]], [0.360, [0.995, 0.802, 0.481]], [0.362, [0.995, 0.802, 0.481]], [0.364, [0.995, 0.809, 0.487]], [0.366, [0.995, 0.809, 0.487]], [0.368, [0.995, 0.817, 0.493]], [0.370, [0.995, 0.817, 0.493]], [0.372, [0.995, 0.825, 0.500]], [0.374, [0.995, 0.825, 0.500]], [0.376, [0.995, 0.832, 0.506]], [0.378, [0.995, 0.832, 0.506]], [0.380, [0.995, 0.840, 0.513]], [0.382, [0.995, 0.840, 0.513]], [0.384, [0.995, 0.848, 0.519]], [0.386, [0.995, 0.848, 0.519]], [0.387, [0.996, 0.855, 0.526]], [0.389, [0.996, 0.855, 0.526]], [0.391, [0.996, 0.863, 0.532]], [0.393, [0.996, 0.863, 0.532]], [0.395, [0.996, 0.871, 0.539]], [0.397, [0.996, 0.871, 0.539]], [0.399, [0.996, 0.878, 0.545]], [0.401, [0.996, 0.878, 0.545]], [0.403, [0.996, 0.883, 0.553]], [0.405, [0.996, 0.883, 0.553]], [0.407, [0.996, 0.888, 0.561]], [0.409, [0.996, 0.888, 0.561]], [0.411, [0.997, 0.893, 0.569]], [0.413, [0.997, 0.893, 0.569]], [0.415, [0.997, 0.898, 0.577]], [0.417, [0.997, 0.898, 0.577]], [0.419, [0.997, 0.902, 0.585]], [0.421, [0.997, 0.902, 0.585]], [0.423, [0.997, 0.907, 0.593]], [0.425, [0.997, 0.907, 0.593]], [0.427, [0.997, 0.912, 0.601]], [0.429, [0.997, 0.912, 0.601]], [0.431, [0.997, 0.917, 0.609]], [0.432, [0.997, 0.917, 0.609]], [0.434, [0.997, 0.921, 0.617]], [0.436, [0.997, 0.921, 0.617]], [0.438, [0.998, 0.926, 0.625]], [0.440, [0.998, 0.926, 0.625]], [0.442, [0.998, 0.931, 0.633]], [0.444, [0.998, 0.931, 0.633]], [0.446, [0.998, 0.936, 0.641]], [0.448, [0.998, 0.936, 0.641]], [0.450, [0.998, 0.940, 0.649]], [0.452, [0.998, 0.940, 0.649]], [0.454, [0.998, 0.945, 0.657]], [0.456, [0.998, 0.945, 0.657]], [0.458, [0.998, 0.950, 0.665]], [0.460, [0.998, 0.950, 0.665]], [0.462, [0.999, 0.955, 0.673]], [0.464, [0.999, 0.955, 0.673]], [0.466, [0.999, 0.959, 0.681]], [0.468, [0.999, 0.959, 0.681]], [0.470, [0.999, 0.964, 0.689]], [0.472, [0.999, 0.964, 0.689]], [0.474, [0.999, 0.969, 0.697]], [0.476, [0.999, 0.969, 0.697]], [0.477, [0.999, 0.974, 0.705]], [0.479, [0.999, 0.974, 0.705]], [0.481, [0.999, 0.979, 0.713]], [0.483, [0.999, 0.979, 0.713]], [0.485, [0.999, 0.983, 0.721]], [0.487, [0.999, 0.983, 0.721]], [0.489, [1.000, 0.988, 0.729]], [0.491, [1.000, 0.988, 0.729]], [0.493, [1.000, 0.993, 0.737]], [0.495, [1.000, 0.993, 0.737]], [0.497, [1.000, 0.998, 0.745]], [0.499, [1.000, 0.998, 0.745]], [0.501, [0.997, 0.999, 0.745]], [0.503, [0.997, 0.999, 0.745]], [0.505, [0.991, 0.996, 0.737]], [0.507, [0.991, 0.996, 0.737]], [0.509, [0.985, 0.994, 0.729]], [0.511, [0.985, 0.994, 0.729]], [0.513, [0.980, 0.991, 0.721]], [0.515, [0.980, 0.991, 0.721]], [0.517, [0.974, 0.989, 0.713]], [0.519, [0.974, 0.989, 0.713]], [0.521, [0.968, 0.986, 0.705]], [0.523, [0.968, 0.986, 0.705]], [0.524, [0.962, 0.984, 0.697]], [0.526, [0.962, 0.984, 0.697]], [0.528, [0.956, 0.982, 0.689]], [0.530, [0.956, 0.982, 0.689]], [0.532, [0.950, 0.979, 0.681]], [0.534, [0.950, 0.979, 0.681]], [0.536, [0.944, 0.977, 0.673]], [0.538, [0.944, 0.977, 0.673]], [0.540, [0.939, 0.974, 0.665]], [0.542, [0.939, 0.974, 0.665]], [0.544, [0.933, 0.972, 0.657]], [0.546, [0.933, 0.972, 0.657]], [0.548, [0.927, 0.969, 0.649]], [0.550, [0.927, 0.969, 0.649]], [0.552, [0.921, 0.967, 0.641]], [0.554, [0.921, 0.967, 0.641]], [0.556, [0.915, 0.964, 0.633]], [0.558, [0.915, 0.964, 0.633]], [0.560, [0.909, 0.962, 0.625]], [0.562, [0.909, 0.962, 0.625]], [0.564, [0.904, 0.959, 0.617]], [0.566, [0.904, 0.959, 0.617]], [0.568, [0.898, 0.957, 0.609]], [0.569, [0.898, 0.957, 0.609]], [0.571, [0.892, 0.954, 0.601]], [0.573, [0.892, 0.954, 0.601]], [0.575, [0.886, 0.952, 0.593]], [0.577, [0.886, 0.952, 0.593]], [0.579, [0.880, 0.950, 0.585]], [0.581, [0.880, 0.950, 0.585]], [0.583, [0.874, 0.947, 0.577]], [0.585, [0.874, 0.947, 0.577]], [0.587, [0.869, 0.945, 0.569]], [0.589, [0.869, 0.945, 0.569]], [0.591, [0.863, 0.942, 0.561]], [0.593, [0.863, 0.942, 0.561]], [0.595, [0.857, 0.940, 0.553]], [0.597, [0.857, 0.940, 0.553]], [0.599, [0.851, 0.937, 0.545]], [0.601, [0.851, 0.937, 0.545]], [0.603, [0.843, 0.934, 0.540]], [0.605, [0.843, 0.934, 0.540]], [0.607, [0.835, 0.930, 0.535]], [0.609, [0.835, 0.930, 0.535]], [0.611, [0.827, 0.927, 0.530]], [0.613, [0.827, 0.927, 0.530]], [0.614, [0.820, 0.924, 0.525]], [0.616, [0.820, 0.924, 0.525]], [0.618, [0.812, 0.920, 0.520]], [0.620, [0.812, 0.920, 0.520]], [0.622, [0.804, 0.917, 0.515]], [0.624, [0.804, 0.917, 0.515]], [0.626, [0.796, 0.914, 0.510]], [0.628, [0.796, 0.914, 0.510]], [0.630, [0.788, 0.910, 0.504]], [0.632, [0.788, 0.910, 0.504]], [0.634, [0.780, 0.907, 0.499]], [0.636, [0.780, 0.907, 0.499]], [0.638, [0.773, 0.903, 0.494]], [0.640, [0.773, 0.903, 0.494]], [0.642, [0.765, 0.900, 0.489]], [0.644, [0.765, 0.900, 0.489]], [0.646, [0.757, 0.897, 0.484]], [0.648, [0.757, 0.897, 0.484]], [0.650, [0.749, 0.893, 0.479]], [0.652, [0.749, 0.893, 0.479]], [0.654, [0.741, 0.890, 0.474]], [0.656, [0.741, 0.890, 0.474]], [0.658, [0.733, 0.887, 0.469]], [0.659, [0.733, 0.887, 0.469]], [0.661, [0.725, 0.883, 0.464]], [0.663, [0.725, 0.883, 0.464]], [0.665, [0.718, 0.880, 0.459]], [0.667, [0.718, 0.880, 0.459]], [0.669, [0.710, 0.876, 0.454]], [0.671, [0.710, 0.876, 0.454]], [0.673, [0.702, 0.873, 0.449]], [0.675, [0.702, 0.873, 0.449]], [0.677, [0.694, 0.870, 0.444]], [0.679, [0.694, 0.870, 0.444]], [0.681, [0.686, 0.866, 0.439]], [0.683, [0.686, 0.866, 0.439]], [0.685, [0.678, 0.863, 0.433]], [0.687, [0.678, 0.863, 0.433]], [0.689, [0.671, 0.859, 0.428]], [0.691, [0.671, 0.859, 0.428]], [0.693, [0.663, 0.856, 0.423]], [0.695, [0.663, 0.856, 0.423]], [0.697, [0.655, 0.853, 0.418]], [0.699, [0.655, 0.853, 0.418]], [0.701, [0.646, 0.849, 0.415]], [0.703, [0.646, 0.849, 0.415]], [0.705, [0.636, 0.845, 0.414]], [0.706, [0.636, 0.845, 0.414]], [0.708, [0.626, 0.840, 0.413]], [0.710, [0.626, 0.840, 0.413]], [0.712, [0.617, 0.836, 0.412]], [0.714, [0.617, 0.836, 0.412]], [0.716, [0.607, 0.832, 0.411]], [0.718, [0.607, 0.832, 0.411]], [0.720, [0.597, 0.827, 0.410]], [0.722, [0.597, 0.827, 0.410]], [0.724, [0.587, 0.823, 0.409]], [0.726, [0.587, 0.823, 0.409]], [0.728, [0.577, 0.819, 0.408]], [0.730, [0.577, 0.819, 0.408]], [0.732, [0.567, 0.814, 0.407]], [0.734, [0.567, 0.814, 0.407]], [0.736, [0.557, 0.810, 0.405]], [0.738, [0.557, 0.810, 0.405]], [0.740, [0.548, 0.806, 0.404]], [0.742, [0.548, 0.806, 0.404]], [0.744, [0.538, 0.801, 0.403]], [0.746, [0.538, 0.801, 0.403]], [0.748, [0.528, 0.797, 0.402]], [0.750, [0.528, 0.797, 0.402]], [0.751, [0.518, 0.793, 0.401]], [0.753, [0.518, 0.793, 0.401]], [0.755, [0.508, 0.789, 0.400]], [0.757, [0.508, 0.789, 0.400]], [0.759, [0.498, 0.784, 0.399]], [0.761, [0.498, 0.784, 0.399]], [0.763, [0.489, 0.780, 0.398]], [0.765, [0.489, 0.780, 0.398]], [0.767, [0.479, 0.776, 0.397]], [0.769, [0.479, 0.776, 0.397]], [0.771, [0.469, 0.771, 0.396]], [0.773, [0.469, 0.771, 0.396]], [0.775, [0.459, 0.767, 0.395]], [0.777, [0.459, 0.767, 0.395]], [0.779, [0.449, 0.763, 0.394]], [0.781, [0.449, 0.763, 0.394]], [0.783, [0.439, 0.758, 0.393]], [0.785, [0.439, 0.758, 0.393]], [0.787, [0.430, 0.754, 0.391]], [0.789, [0.430, 0.754, 0.391]], [0.791, [0.420, 0.750, 0.390]], [0.793, [0.420, 0.750, 0.390]], [0.795, [0.410, 0.745, 0.389]], [0.796, [0.410, 0.745, 0.389]], [0.798, [0.400, 0.741, 0.388]], [0.800, [0.400, 0.741, 0.388]], [0.802, [0.388, 0.735, 0.385]], [0.804, [0.388, 0.735, 0.385]], [0.806, [0.377, 0.730, 0.382]], [0.808, [0.377, 0.730, 0.382]], [0.810, [0.365, 0.724, 0.379]], [0.812, [0.365, 0.724, 0.379]], [0.814, [0.353, 0.718, 0.377]], [0.816, [0.353, 0.718, 0.377]], [0.818, [0.342, 0.713, 0.374]], [0.820, [0.342, 0.713, 0.374]], [0.822, [0.330, 0.707, 0.371]], [0.824, [0.330, 0.707, 0.371]], [0.826, [0.318, 0.701, 0.368]], [0.828, [0.318, 0.701, 0.368]], [0.830, [0.306, 0.696, 0.365]], [0.832, [0.306, 0.696, 0.365]], [0.834, [0.295, 0.690, 0.362]], [0.836, [0.295, 0.690, 0.362]], [0.838, [0.283, 0.684, 0.359]], [0.840, [0.283, 0.684, 0.359]], [0.841, [0.271, 0.679, 0.356]], [0.843, [0.271, 0.679, 0.356]], [0.845, [0.260, 0.673, 0.353]], [0.847, [0.260, 0.673, 0.353]], [0.849, [0.248, 0.667, 0.350]], [0.851, [0.248, 0.667, 0.350]], [0.853, [0.236, 0.662, 0.347]], [0.855, [0.236, 0.662, 0.347]], [0.857, [0.225, 0.656, 0.344]], [0.859, [0.225, 0.656, 0.344]], [0.861, [0.213, 0.650, 0.341]], [0.863, [0.213, 0.650, 0.341]], [0.865, [0.201, 0.644, 0.339]], [0.867, [0.201, 0.644, 0.339]], [0.869, [0.190, 0.639, 0.336]], [0.871, [0.190, 0.639, 0.336]], [0.873, [0.178, 0.633, 0.333]], [0.875, [0.178, 0.633, 0.333]], [0.877, [0.166, 0.627, 0.330]], [0.879, [0.166, 0.627, 0.330]], [0.881, [0.155, 0.622, 0.327]], [0.883, [0.155, 0.622, 0.327]], [0.885, [0.143, 0.616, 0.324]], [0.886, [0.143, 0.616, 0.324]], [0.888, [0.131, 0.610, 0.321]], [0.890, [0.131, 0.610, 0.321]], [0.892, [0.119, 0.605, 0.318]], [0.894, [0.119, 0.605, 0.318]], [0.896, [0.108, 0.599, 0.315]], [0.898, [0.108, 0.599, 0.315]], [0.900, [0.100, 0.592, 0.312]], [0.902, [0.100, 0.592, 0.312]], [0.904, [0.096, 0.585, 0.308]], [0.906, [0.096, 0.585, 0.308]], [0.908, [0.092, 0.578, 0.304]], [0.910, [0.092, 0.578, 0.304]], [0.912, [0.088, 0.570, 0.300]], [0.914, [0.088, 0.570, 0.300]], [0.916, [0.084, 0.563, 0.296]], [0.918, [0.084, 0.563, 0.296]], [0.920, [0.080, 0.555, 0.293]], [0.922, [0.080, 0.555, 0.293]], [0.924, [0.076, 0.548, 0.289]], [0.926, [0.076, 0.548, 0.289]], [0.928, [0.072, 0.541, 0.285]], [0.930, [0.072, 0.541, 0.285]], [0.932, [0.068, 0.533, 0.281]], [0.933, [0.068, 0.533, 0.281]], [0.935, [0.064, 0.526, 0.277]], [0.937, [0.064, 0.526, 0.277]], [0.939, [0.060, 0.519, 0.273]], [0.941, [0.060, 0.519, 0.273]], [0.943, [0.056, 0.511, 0.270]], [0.945, [0.056, 0.511, 0.270]], [0.947, [0.052, 0.504, 0.266]], [0.949, [0.052, 0.504, 0.266]], [0.951, [0.048, 0.496, 0.262]], [0.953, [0.048, 0.496, 0.262]], [0.955, [0.044, 0.489, 0.258]], [0.957, [0.044, 0.489, 0.258]], [0.959, [0.040, 0.482, 0.254]], [0.961, [0.040, 0.482, 0.254]], [0.963, [0.036, 0.474, 0.250]], [0.965, [0.036, 0.474, 0.250]], [0.967, [0.032, 0.467, 0.246]], [0.969, [0.032, 0.467, 0.246]], [0.971, [0.028, 0.460, 0.243]], [0.973, [0.028, 0.460, 0.243]], [0.975, [0.024, 0.452, 0.239]], [0.977, [0.024, 0.452, 0.239]], [0.978, [0.020, 0.445, 0.235]], [0.980, [0.020, 0.445, 0.235]], [0.982, [0.016, 0.437, 0.231]], [0.984, [0.016, 0.437, 0.231]], [0.986, [0.012, 0.430, 0.227]], [0.988, [0.012, 0.430, 0.227]], [0.990, [0.008, 0.423, 0.223]], [0.992, [0.008, 0.423, 0.223]], [0.994, [0.004, 0.415, 0.220]], [0.996, [0.004, 0.415, 0.220]], [0.998, [0.000, 0.408, 0.216]], [1.000, [0.000, 0.408, 0.216]]]; +var Spectral = [[0.000, [0.620, 0.004, 0.259]], [0.002, [0.620, 0.004, 0.259]], [0.004, [0.628, 0.013, 0.261]], [0.006, [0.628, 0.013, 0.261]], [0.008, [0.637, 0.023, 0.263]], [0.010, [0.637, 0.023, 0.263]], [0.012, [0.645, 0.032, 0.265]], [0.014, [0.645, 0.032, 0.265]], [0.016, [0.653, 0.041, 0.267]], [0.018, [0.653, 0.041, 0.267]], [0.020, [0.662, 0.051, 0.269]], [0.022, [0.662, 0.051, 0.269]], [0.023, [0.670, 0.060, 0.271]], [0.025, [0.670, 0.060, 0.271]], [0.027, [0.679, 0.070, 0.273]], [0.029, [0.679, 0.070, 0.273]], [0.031, [0.687, 0.079, 0.275]], [0.033, [0.687, 0.079, 0.275]], [0.035, [0.696, 0.088, 0.277]], [0.037, [0.696, 0.088, 0.277]], [0.039, [0.704, 0.098, 0.279]], [0.041, [0.704, 0.098, 0.279]], [0.043, [0.713, 0.107, 0.281]], [0.045, [0.713, 0.107, 0.281]], [0.047, [0.721, 0.116, 0.283]], [0.049, [0.721, 0.116, 0.283]], [0.051, [0.730, 0.126, 0.285]], [0.053, [0.730, 0.126, 0.285]], [0.055, [0.738, 0.135, 0.287]], [0.057, [0.738, 0.135, 0.287]], [0.059, [0.746, 0.145, 0.289]], [0.061, [0.746, 0.145, 0.289]], [0.063, [0.755, 0.154, 0.291]], [0.065, [0.755, 0.154, 0.291]], [0.067, [0.763, 0.163, 0.293]], [0.068, [0.763, 0.163, 0.293]], [0.070, [0.772, 0.173, 0.295]], [0.072, [0.772, 0.173, 0.295]], [0.074, [0.780, 0.182, 0.297]], [0.076, [0.780, 0.182, 0.297]], [0.078, [0.789, 0.192, 0.299]], [0.080, [0.789, 0.192, 0.299]], [0.082, [0.797, 0.201, 0.301]], [0.084, [0.797, 0.201, 0.301]], [0.086, [0.806, 0.210, 0.303]], [0.088, [0.806, 0.210, 0.303]], [0.090, [0.814, 0.220, 0.305]], [0.092, [0.814, 0.220, 0.305]], [0.094, [0.823, 0.229, 0.307]], [0.096, [0.823, 0.229, 0.307]], [0.098, [0.831, 0.238, 0.309]], [0.100, [0.831, 0.238, 0.309]], [0.102, [0.838, 0.247, 0.309]], [0.104, [0.838, 0.247, 0.309]], [0.106, [0.842, 0.254, 0.307]], [0.108, [0.842, 0.254, 0.307]], [0.110, [0.847, 0.261, 0.305]], [0.112, [0.847, 0.261, 0.305]], [0.114, [0.852, 0.268, 0.303]], [0.115, [0.852, 0.268, 0.303]], [0.117, [0.857, 0.276, 0.301]], [0.119, [0.857, 0.276, 0.301]], [0.121, [0.862, 0.283, 0.300]], [0.123, [0.862, 0.283, 0.300]], [0.125, [0.866, 0.290, 0.298]], [0.127, [0.866, 0.290, 0.298]], [0.129, [0.871, 0.297, 0.296]], [0.131, [0.871, 0.297, 0.296]], [0.133, [0.876, 0.305, 0.294]], [0.135, [0.876, 0.305, 0.294]], [0.137, [0.881, 0.312, 0.292]], [0.139, [0.881, 0.312, 0.292]], [0.141, [0.885, 0.319, 0.290]], [0.143, [0.885, 0.319, 0.290]], [0.145, [0.890, 0.326, 0.289]], [0.147, [0.890, 0.326, 0.289]], [0.149, [0.895, 0.333, 0.287]], [0.151, [0.895, 0.333, 0.287]], [0.153, [0.900, 0.341, 0.285]], [0.155, [0.900, 0.341, 0.285]], [0.157, [0.904, 0.348, 0.283]], [0.159, [0.904, 0.348, 0.283]], [0.160, [0.909, 0.355, 0.281]], [0.162, [0.909, 0.355, 0.281]], [0.164, [0.914, 0.362, 0.279]], [0.166, [0.914, 0.362, 0.279]], [0.168, [0.919, 0.370, 0.278]], [0.170, [0.919, 0.370, 0.278]], [0.172, [0.923, 0.377, 0.276]], [0.174, [0.923, 0.377, 0.276]], [0.176, [0.928, 0.384, 0.274]], [0.178, [0.928, 0.384, 0.274]], [0.180, [0.933, 0.391, 0.272]], [0.182, [0.933, 0.391, 0.272]], [0.184, [0.938, 0.399, 0.270]], [0.186, [0.938, 0.399, 0.270]], [0.188, [0.943, 0.406, 0.268]], [0.190, [0.943, 0.406, 0.268]], [0.192, [0.947, 0.413, 0.266]], [0.194, [0.947, 0.413, 0.266]], [0.196, [0.952, 0.420, 0.265]], [0.198, [0.952, 0.420, 0.265]], [0.200, [0.957, 0.427, 0.263]], [0.202, [0.957, 0.427, 0.263]], [0.204, [0.958, 0.437, 0.267]], [0.205, [0.958, 0.437, 0.267]], [0.207, [0.960, 0.447, 0.272]], [0.209, [0.960, 0.447, 0.272]], [0.211, [0.961, 0.457, 0.277]], [0.213, [0.961, 0.457, 0.277]], [0.215, [0.962, 0.467, 0.281]], [0.217, [0.962, 0.467, 0.281]], [0.219, [0.964, 0.477, 0.286]], [0.221, [0.964, 0.477, 0.286]], [0.223, [0.965, 0.487, 0.290]], [0.225, [0.965, 0.487, 0.290]], [0.227, [0.967, 0.497, 0.295]], [0.229, [0.967, 0.497, 0.295]], [0.231, [0.968, 0.507, 0.300]], [0.233, [0.968, 0.507, 0.300]], [0.235, [0.969, 0.517, 0.304]], [0.237, [0.969, 0.517, 0.304]], [0.239, [0.971, 0.527, 0.309]], [0.241, [0.971, 0.527, 0.309]], [0.243, [0.972, 0.537, 0.313]], [0.245, [0.972, 0.537, 0.313]], [0.247, [0.973, 0.547, 0.318]], [0.249, [0.973, 0.547, 0.318]], [0.250, [0.975, 0.557, 0.323]], [0.252, [0.975, 0.557, 0.323]], [0.254, [0.976, 0.567, 0.327]], [0.256, [0.976, 0.567, 0.327]], [0.258, [0.978, 0.577, 0.332]], [0.260, [0.978, 0.577, 0.332]], [0.262, [0.979, 0.587, 0.337]], [0.264, [0.979, 0.587, 0.337]], [0.266, [0.980, 0.597, 0.341]], [0.268, [0.980, 0.597, 0.341]], [0.270, [0.982, 0.607, 0.346]], [0.272, [0.982, 0.607, 0.346]], [0.274, [0.983, 0.617, 0.350]], [0.276, [0.983, 0.617, 0.350]], [0.278, [0.985, 0.627, 0.355]], [0.280, [0.985, 0.627, 0.355]], [0.282, [0.986, 0.637, 0.360]], [0.284, [0.986, 0.637, 0.360]], [0.286, [0.987, 0.647, 0.364]], [0.288, [0.987, 0.647, 0.364]], [0.290, [0.989, 0.657, 0.369]], [0.292, [0.989, 0.657, 0.369]], [0.294, [0.990, 0.667, 0.373]], [0.295, [0.990, 0.667, 0.373]], [0.297, [0.991, 0.677, 0.378]], [0.299, [0.991, 0.677, 0.378]], [0.301, [0.992, 0.686, 0.384]], [0.303, [0.992, 0.686, 0.384]], [0.305, [0.992, 0.694, 0.390]], [0.307, [0.992, 0.694, 0.390]], [0.309, [0.993, 0.702, 0.397]], [0.311, [0.993, 0.702, 0.397]], [0.313, [0.993, 0.709, 0.403]], [0.315, [0.993, 0.709, 0.403]], [0.317, [0.993, 0.717, 0.409]], [0.319, [0.993, 0.717, 0.409]], [0.321, [0.993, 0.725, 0.416]], [0.323, [0.993, 0.725, 0.416]], [0.325, [0.993, 0.732, 0.422]], [0.327, [0.993, 0.732, 0.422]], [0.329, [0.993, 0.740, 0.429]], [0.331, [0.993, 0.740, 0.429]], [0.333, [0.993, 0.748, 0.435]], [0.335, [0.993, 0.748, 0.435]], [0.337, [0.994, 0.755, 0.442]], [0.339, [0.994, 0.755, 0.442]], [0.341, [0.994, 0.763, 0.448]], [0.342, [0.994, 0.763, 0.448]], [0.344, [0.994, 0.771, 0.455]], [0.346, [0.994, 0.771, 0.455]], [0.348, [0.994, 0.778, 0.461]], [0.350, [0.994, 0.778, 0.461]], [0.352, [0.994, 0.786, 0.468]], [0.354, [0.994, 0.786, 0.468]], [0.356, [0.994, 0.794, 0.474]], [0.358, [0.994, 0.794, 0.474]], [0.360, [0.995, 0.802, 0.481]], [0.362, [0.995, 0.802, 0.481]], [0.364, [0.995, 0.809, 0.487]], [0.366, [0.995, 0.809, 0.487]], [0.368, [0.995, 0.817, 0.493]], [0.370, [0.995, 0.817, 0.493]], [0.372, [0.995, 0.825, 0.500]], [0.374, [0.995, 0.825, 0.500]], [0.376, [0.995, 0.832, 0.506]], [0.378, [0.995, 0.832, 0.506]], [0.380, [0.995, 0.840, 0.513]], [0.382, [0.995, 0.840, 0.513]], [0.384, [0.995, 0.848, 0.519]], [0.386, [0.995, 0.848, 0.519]], [0.387, [0.996, 0.855, 0.526]], [0.389, [0.996, 0.855, 0.526]], [0.391, [0.996, 0.863, 0.532]], [0.393, [0.996, 0.863, 0.532]], [0.395, [0.996, 0.871, 0.539]], [0.397, [0.996, 0.871, 0.539]], [0.399, [0.996, 0.878, 0.545]], [0.401, [0.996, 0.878, 0.545]], [0.403, [0.996, 0.883, 0.553]], [0.405, [0.996, 0.883, 0.553]], [0.407, [0.996, 0.888, 0.561]], [0.409, [0.996, 0.888, 0.561]], [0.411, [0.997, 0.893, 0.569]], [0.413, [0.997, 0.893, 0.569]], [0.415, [0.997, 0.898, 0.577]], [0.417, [0.997, 0.898, 0.577]], [0.419, [0.997, 0.902, 0.585]], [0.421, [0.997, 0.902, 0.585]], [0.423, [0.997, 0.907, 0.593]], [0.425, [0.997, 0.907, 0.593]], [0.427, [0.997, 0.912, 0.601]], [0.429, [0.997, 0.912, 0.601]], [0.431, [0.997, 0.917, 0.609]], [0.432, [0.997, 0.917, 0.609]], [0.434, [0.997, 0.921, 0.617]], [0.436, [0.997, 0.921, 0.617]], [0.438, [0.998, 0.926, 0.625]], [0.440, [0.998, 0.926, 0.625]], [0.442, [0.998, 0.931, 0.633]], [0.444, [0.998, 0.931, 0.633]], [0.446, [0.998, 0.936, 0.641]], [0.448, [0.998, 0.936, 0.641]], [0.450, [0.998, 0.940, 0.649]], [0.452, [0.998, 0.940, 0.649]], [0.454, [0.998, 0.945, 0.657]], [0.456, [0.998, 0.945, 0.657]], [0.458, [0.998, 0.950, 0.665]], [0.460, [0.998, 0.950, 0.665]], [0.462, [0.999, 0.955, 0.673]], [0.464, [0.999, 0.955, 0.673]], [0.466, [0.999, 0.959, 0.681]], [0.468, [0.999, 0.959, 0.681]], [0.470, [0.999, 0.964, 0.689]], [0.472, [0.999, 0.964, 0.689]], [0.474, [0.999, 0.969, 0.697]], [0.476, [0.999, 0.969, 0.697]], [0.477, [0.999, 0.974, 0.705]], [0.479, [0.999, 0.974, 0.705]], [0.481, [0.999, 0.979, 0.713]], [0.483, [0.999, 0.979, 0.713]], [0.485, [0.999, 0.983, 0.721]], [0.487, [0.999, 0.983, 0.721]], [0.489, [1.000, 0.988, 0.729]], [0.491, [1.000, 0.988, 0.729]], [0.493, [1.000, 0.993, 0.737]], [0.495, [1.000, 0.993, 0.737]], [0.497, [1.000, 0.998, 0.745]], [0.499, [1.000, 0.998, 0.745]], [0.501, [0.998, 0.999, 0.746]], [0.503, [0.998, 0.999, 0.746]], [0.505, [0.994, 0.998, 0.740]], [0.507, [0.994, 0.998, 0.740]], [0.509, [0.990, 0.996, 0.734]], [0.511, [0.990, 0.996, 0.734]], [0.513, [0.987, 0.995, 0.728]], [0.515, [0.987, 0.995, 0.728]], [0.517, [0.983, 0.993, 0.722]], [0.519, [0.983, 0.993, 0.722]], [0.521, [0.979, 0.992, 0.716]], [0.523, [0.979, 0.992, 0.716]], [0.524, [0.975, 0.990, 0.710]], [0.526, [0.975, 0.990, 0.710]], [0.528, [0.971, 0.988, 0.704]], [0.530, [0.971, 0.988, 0.704]], [0.532, [0.967, 0.987, 0.698]], [0.534, [0.967, 0.987, 0.698]], [0.536, [0.963, 0.985, 0.692]], [0.538, [0.963, 0.985, 0.692]], [0.540, [0.960, 0.984, 0.686]], [0.542, [0.960, 0.984, 0.686]], [0.544, [0.956, 0.982, 0.680]], [0.546, [0.956, 0.982, 0.680]], [0.548, [0.952, 0.981, 0.674]], [0.550, [0.952, 0.981, 0.674]], [0.552, [0.948, 0.979, 0.668]], [0.554, [0.948, 0.979, 0.668]], [0.556, [0.944, 0.978, 0.662]], [0.558, [0.944, 0.978, 0.662]], [0.560, [0.940, 0.976, 0.656]], [0.562, [0.940, 0.976, 0.656]], [0.564, [0.937, 0.975, 0.650]], [0.566, [0.937, 0.975, 0.650]], [0.568, [0.933, 0.973, 0.644]], [0.569, [0.933, 0.973, 0.644]], [0.571, [0.929, 0.972, 0.638]], [0.573, [0.929, 0.972, 0.638]], [0.575, [0.925, 0.970, 0.632]], [0.577, [0.925, 0.970, 0.632]], [0.579, [0.921, 0.968, 0.626]], [0.581, [0.921, 0.968, 0.626]], [0.583, [0.917, 0.967, 0.620]], [0.585, [0.917, 0.967, 0.620]], [0.587, [0.913, 0.965, 0.614]], [0.589, [0.913, 0.965, 0.614]], [0.591, [0.910, 0.964, 0.608]], [0.593, [0.910, 0.964, 0.608]], [0.595, [0.906, 0.962, 0.602]], [0.597, [0.906, 0.962, 0.602]], [0.599, [0.902, 0.961, 0.596]], [0.601, [0.902, 0.961, 0.596]], [0.603, [0.893, 0.957, 0.598]], [0.605, [0.893, 0.957, 0.598]], [0.607, [0.884, 0.953, 0.600]], [0.609, [0.884, 0.953, 0.600]], [0.611, [0.875, 0.950, 0.602]], [0.613, [0.875, 0.950, 0.602]], [0.614, [0.866, 0.946, 0.603]], [0.616, [0.866, 0.946, 0.603]], [0.618, [0.857, 0.942, 0.605]], [0.620, [0.857, 0.942, 0.605]], [0.622, [0.848, 0.939, 0.607]], [0.624, [0.848, 0.939, 0.607]], [0.626, [0.838, 0.935, 0.609]], [0.628, [0.838, 0.935, 0.609]], [0.630, [0.829, 0.931, 0.611]], [0.632, [0.829, 0.931, 0.611]], [0.634, [0.820, 0.928, 0.613]], [0.636, [0.820, 0.928, 0.613]], [0.638, [0.811, 0.924, 0.615]], [0.640, [0.811, 0.924, 0.615]], [0.642, [0.802, 0.920, 0.616]], [0.644, [0.802, 0.920, 0.616]], [0.646, [0.793, 0.916, 0.618]], [0.648, [0.793, 0.916, 0.618]], [0.650, [0.784, 0.913, 0.620]], [0.652, [0.784, 0.913, 0.620]], [0.654, [0.775, 0.909, 0.622]], [0.656, [0.775, 0.909, 0.622]], [0.658, [0.766, 0.905, 0.624]], [0.659, [0.766, 0.905, 0.624]], [0.661, [0.757, 0.902, 0.626]], [0.663, [0.757, 0.902, 0.626]], [0.665, [0.748, 0.898, 0.627]], [0.667, [0.748, 0.898, 0.627]], [0.669, [0.739, 0.894, 0.629]], [0.671, [0.739, 0.894, 0.629]], [0.673, [0.730, 0.891, 0.631]], [0.675, [0.730, 0.891, 0.631]], [0.677, [0.720, 0.887, 0.633]], [0.679, [0.720, 0.887, 0.633]], [0.681, [0.711, 0.883, 0.635]], [0.683, [0.711, 0.883, 0.635]], [0.685, [0.702, 0.880, 0.637]], [0.687, [0.702, 0.880, 0.637]], [0.689, [0.693, 0.876, 0.639]], [0.691, [0.693, 0.876, 0.639]], [0.693, [0.684, 0.872, 0.640]], [0.695, [0.684, 0.872, 0.640]], [0.697, [0.675, 0.869, 0.642]], [0.699, [0.675, 0.869, 0.642]], [0.701, [0.665, 0.865, 0.643]], [0.703, [0.665, 0.865, 0.643]], [0.705, [0.655, 0.860, 0.643]], [0.706, [0.655, 0.860, 0.643]], [0.708, [0.644, 0.856, 0.644]], [0.710, [0.644, 0.856, 0.644]], [0.712, [0.633, 0.852, 0.644]], [0.714, [0.633, 0.852, 0.644]], [0.716, [0.623, 0.848, 0.644]], [0.718, [0.623, 0.848, 0.644]], [0.720, [0.612, 0.844, 0.644]], [0.722, [0.612, 0.844, 0.644]], [0.724, [0.602, 0.840, 0.644]], [0.726, [0.602, 0.840, 0.644]], [0.728, [0.591, 0.836, 0.644]], [0.730, [0.591, 0.836, 0.644]], [0.732, [0.580, 0.831, 0.644]], [0.734, [0.580, 0.831, 0.644]], [0.736, [0.570, 0.827, 0.645]], [0.738, [0.570, 0.827, 0.645]], [0.740, [0.559, 0.823, 0.645]], [0.742, [0.559, 0.823, 0.645]], [0.744, [0.549, 0.819, 0.645]], [0.746, [0.549, 0.819, 0.645]], [0.748, [0.538, 0.815, 0.645]], [0.750, [0.538, 0.815, 0.645]], [0.751, [0.527, 0.811, 0.645]], [0.753, [0.527, 0.811, 0.645]], [0.755, [0.517, 0.806, 0.645]], [0.757, [0.517, 0.806, 0.645]], [0.759, [0.506, 0.802, 0.646]], [0.761, [0.506, 0.802, 0.646]], [0.763, [0.496, 0.798, 0.646]], [0.765, [0.496, 0.798, 0.646]], [0.767, [0.485, 0.794, 0.646]], [0.769, [0.485, 0.794, 0.646]], [0.771, [0.474, 0.790, 0.646]], [0.773, [0.474, 0.790, 0.646]], [0.775, [0.464, 0.786, 0.646]], [0.777, [0.464, 0.786, 0.646]], [0.779, [0.453, 0.782, 0.646]], [0.781, [0.453, 0.782, 0.646]], [0.783, [0.442, 0.777, 0.646]], [0.785, [0.442, 0.777, 0.646]], [0.787, [0.432, 0.773, 0.647]], [0.789, [0.432, 0.773, 0.647]], [0.791, [0.421, 0.769, 0.647]], [0.793, [0.421, 0.769, 0.647]], [0.795, [0.411, 0.765, 0.647]], [0.796, [0.411, 0.765, 0.647]], [0.798, [0.400, 0.761, 0.647]], [0.800, [0.400, 0.761, 0.647]], [0.802, [0.392, 0.752, 0.651]], [0.804, [0.392, 0.752, 0.651]], [0.806, [0.384, 0.743, 0.654]], [0.808, [0.384, 0.743, 0.654]], [0.810, [0.376, 0.734, 0.658]], [0.812, [0.376, 0.734, 0.658]], [0.814, [0.368, 0.725, 0.662]], [0.816, [0.368, 0.725, 0.662]], [0.818, [0.360, 0.716, 0.666]], [0.820, [0.360, 0.716, 0.666]], [0.822, [0.352, 0.707, 0.669]], [0.824, [0.352, 0.707, 0.669]], [0.826, [0.344, 0.698, 0.673]], [0.828, [0.344, 0.698, 0.673]], [0.830, [0.336, 0.689, 0.677]], [0.832, [0.336, 0.689, 0.677]], [0.834, [0.328, 0.681, 0.680]], [0.836, [0.328, 0.681, 0.680]], [0.838, [0.320, 0.672, 0.684]], [0.840, [0.320, 0.672, 0.684]], [0.841, [0.312, 0.663, 0.688]], [0.843, [0.312, 0.663, 0.688]], [0.845, [0.304, 0.654, 0.691]], [0.847, [0.304, 0.654, 0.691]], [0.849, [0.296, 0.645, 0.695]], [0.851, [0.296, 0.645, 0.695]], [0.853, [0.288, 0.636, 0.699]], [0.855, [0.288, 0.636, 0.699]], [0.857, [0.280, 0.627, 0.702]], [0.859, [0.280, 0.627, 0.702]], [0.861, [0.272, 0.618, 0.706]], [0.863, [0.272, 0.618, 0.706]], [0.865, [0.264, 0.609, 0.710]], [0.867, [0.264, 0.609, 0.710]], [0.869, [0.256, 0.600, 0.713]], [0.871, [0.256, 0.600, 0.713]], [0.873, [0.248, 0.591, 0.717]], [0.875, [0.248, 0.591, 0.717]], [0.877, [0.240, 0.582, 0.721]], [0.879, [0.240, 0.582, 0.721]], [0.881, [0.232, 0.573, 0.725]], [0.883, [0.232, 0.573, 0.725]], [0.885, [0.224, 0.565, 0.728]], [0.886, [0.224, 0.565, 0.728]], [0.888, [0.216, 0.556, 0.732]], [0.890, [0.216, 0.556, 0.732]], [0.892, [0.208, 0.547, 0.736]], [0.894, [0.208, 0.547, 0.736]], [0.896, [0.200, 0.538, 0.739]], [0.898, [0.200, 0.538, 0.739]], [0.900, [0.199, 0.529, 0.739]], [0.902, [0.199, 0.529, 0.739]], [0.904, [0.206, 0.520, 0.735]], [0.906, [0.206, 0.520, 0.735]], [0.908, [0.213, 0.511, 0.731]], [0.910, [0.213, 0.511, 0.731]], [0.912, [0.220, 0.503, 0.727]], [0.914, [0.220, 0.503, 0.727]], [0.916, [0.227, 0.494, 0.722]], [0.918, [0.227, 0.494, 0.722]], [0.920, [0.233, 0.485, 0.718]], [0.922, [0.233, 0.485, 0.718]], [0.924, [0.240, 0.476, 0.714]], [0.926, [0.240, 0.476, 0.714]], [0.928, [0.247, 0.468, 0.710]], [0.930, [0.247, 0.468, 0.710]], [0.932, [0.254, 0.459, 0.706]], [0.933, [0.254, 0.459, 0.706]], [0.935, [0.260, 0.450, 0.702]], [0.937, [0.260, 0.450, 0.702]], [0.939, [0.267, 0.441, 0.698]], [0.941, [0.267, 0.441, 0.698]], [0.943, [0.274, 0.433, 0.693]], [0.945, [0.274, 0.433, 0.693]], [0.947, [0.281, 0.424, 0.689]], [0.949, [0.281, 0.424, 0.689]], [0.951, [0.287, 0.415, 0.685]], [0.953, [0.287, 0.415, 0.685]], [0.955, [0.294, 0.406, 0.681]], [0.957, [0.294, 0.406, 0.681]], [0.959, [0.301, 0.397, 0.677]], [0.961, [0.301, 0.397, 0.677]], [0.963, [0.308, 0.389, 0.673]], [0.965, [0.308, 0.389, 0.673]], [0.967, [0.314, 0.380, 0.669]], [0.969, [0.314, 0.380, 0.669]], [0.971, [0.321, 0.371, 0.664]], [0.973, [0.321, 0.371, 0.664]], [0.975, [0.328, 0.362, 0.660]], [0.977, [0.328, 0.362, 0.660]], [0.978, [0.335, 0.354, 0.656]], [0.980, [0.335, 0.354, 0.656]], [0.982, [0.342, 0.345, 0.652]], [0.984, [0.342, 0.345, 0.652]], [0.986, [0.348, 0.336, 0.648]], [0.988, [0.348, 0.336, 0.648]], [0.990, [0.355, 0.327, 0.644]], [0.992, [0.355, 0.327, 0.644]], [0.994, [0.362, 0.319, 0.639]], [0.996, [0.362, 0.319, 0.639]], [0.998, [0.369, 0.310, 0.635]], [1.000, [0.369, 0.310, 0.635]]]; +var bwr = [[0.000, [0.000, 0.000, 1.000]], [0.002, [0.000, 0.000, 1.000]], [0.004, [0.008, 0.008, 1.000]], [0.006, [0.008, 0.008, 1.000]], [0.008, [0.016, 0.016, 1.000]], [0.010, [0.016, 0.016, 1.000]], [0.012, [0.024, 0.024, 1.000]], [0.014, [0.024, 0.024, 1.000]], [0.016, [0.031, 0.031, 1.000]], [0.018, [0.031, 0.031, 1.000]], [0.020, [0.039, 0.039, 1.000]], [0.022, [0.039, 0.039, 1.000]], [0.023, [0.047, 0.047, 1.000]], [0.025, [0.047, 0.047, 1.000]], [0.027, [0.055, 0.055, 1.000]], [0.029, [0.055, 0.055, 1.000]], [0.031, [0.063, 0.063, 1.000]], [0.033, [0.063, 0.063, 1.000]], [0.035, [0.071, 0.071, 1.000]], [0.037, [0.071, 0.071, 1.000]], [0.039, [0.078, 0.078, 1.000]], [0.041, [0.078, 0.078, 1.000]], [0.043, [0.086, 0.086, 1.000]], [0.045, [0.086, 0.086, 1.000]], [0.047, [0.094, 0.094, 1.000]], [0.049, [0.094, 0.094, 1.000]], [0.051, [0.102, 0.102, 1.000]], [0.053, [0.102, 0.102, 1.000]], [0.055, [0.110, 0.110, 1.000]], [0.057, [0.110, 0.110, 1.000]], [0.059, [0.118, 0.118, 1.000]], [0.061, [0.118, 0.118, 1.000]], [0.063, [0.125, 0.125, 1.000]], [0.065, [0.125, 0.125, 1.000]], [0.067, [0.133, 0.133, 1.000]], [0.068, [0.133, 0.133, 1.000]], [0.070, [0.141, 0.141, 1.000]], [0.072, [0.141, 0.141, 1.000]], [0.074, [0.149, 0.149, 1.000]], [0.076, [0.149, 0.149, 1.000]], [0.078, [0.157, 0.157, 1.000]], [0.080, [0.157, 0.157, 1.000]], [0.082, [0.165, 0.165, 1.000]], [0.084, [0.165, 0.165, 1.000]], [0.086, [0.173, 0.173, 1.000]], [0.088, [0.173, 0.173, 1.000]], [0.090, [0.180, 0.180, 1.000]], [0.092, [0.180, 0.180, 1.000]], [0.094, [0.188, 0.188, 1.000]], [0.096, [0.188, 0.188, 1.000]], [0.098, [0.196, 0.196, 1.000]], [0.100, [0.196, 0.196, 1.000]], [0.102, [0.204, 0.204, 1.000]], [0.104, [0.204, 0.204, 1.000]], [0.106, [0.212, 0.212, 1.000]], [0.108, [0.212, 0.212, 1.000]], [0.110, [0.220, 0.220, 1.000]], [0.112, [0.220, 0.220, 1.000]], [0.114, [0.227, 0.227, 1.000]], [0.115, [0.227, 0.227, 1.000]], [0.117, [0.235, 0.235, 1.000]], [0.119, [0.235, 0.235, 1.000]], [0.121, [0.243, 0.243, 1.000]], [0.123, [0.243, 0.243, 1.000]], [0.125, [0.251, 0.251, 1.000]], [0.127, [0.251, 0.251, 1.000]], [0.129, [0.259, 0.259, 1.000]], [0.131, [0.259, 0.259, 1.000]], [0.133, [0.267, 0.267, 1.000]], [0.135, [0.267, 0.267, 1.000]], [0.137, [0.275, 0.275, 1.000]], [0.139, [0.275, 0.275, 1.000]], [0.141, [0.282, 0.282, 1.000]], [0.143, [0.282, 0.282, 1.000]], [0.145, [0.290, 0.290, 1.000]], [0.147, [0.290, 0.290, 1.000]], [0.149, [0.298, 0.298, 1.000]], [0.151, [0.298, 0.298, 1.000]], [0.153, [0.306, 0.306, 1.000]], [0.155, [0.306, 0.306, 1.000]], [0.157, [0.314, 0.314, 1.000]], [0.159, [0.314, 0.314, 1.000]], [0.160, [0.322, 0.322, 1.000]], [0.162, [0.322, 0.322, 1.000]], [0.164, [0.329, 0.329, 1.000]], [0.166, [0.329, 0.329, 1.000]], [0.168, [0.337, 0.337, 1.000]], [0.170, [0.337, 0.337, 1.000]], [0.172, [0.345, 0.345, 1.000]], [0.174, [0.345, 0.345, 1.000]], [0.176, [0.353, 0.353, 1.000]], [0.178, [0.353, 0.353, 1.000]], [0.180, [0.361, 0.361, 1.000]], [0.182, [0.361, 0.361, 1.000]], [0.184, [0.369, 0.369, 1.000]], [0.186, [0.369, 0.369, 1.000]], [0.188, [0.376, 0.376, 1.000]], [0.190, [0.376, 0.376, 1.000]], [0.192, [0.384, 0.384, 1.000]], [0.194, [0.384, 0.384, 1.000]], [0.196, [0.392, 0.392, 1.000]], [0.198, [0.392, 0.392, 1.000]], [0.200, [0.400, 0.400, 1.000]], [0.202, [0.400, 0.400, 1.000]], [0.204, [0.408, 0.408, 1.000]], [0.205, [0.408, 0.408, 1.000]], [0.207, [0.416, 0.416, 1.000]], [0.209, [0.416, 0.416, 1.000]], [0.211, [0.424, 0.424, 1.000]], [0.213, [0.424, 0.424, 1.000]], [0.215, [0.431, 0.431, 1.000]], [0.217, [0.431, 0.431, 1.000]], [0.219, [0.439, 0.439, 1.000]], [0.221, [0.439, 0.439, 1.000]], [0.223, [0.447, 0.447, 1.000]], [0.225, [0.447, 0.447, 1.000]], [0.227, [0.455, 0.455, 1.000]], [0.229, [0.455, 0.455, 1.000]], [0.231, [0.463, 0.463, 1.000]], [0.233, [0.463, 0.463, 1.000]], [0.235, [0.471, 0.471, 1.000]], [0.237, [0.471, 0.471, 1.000]], [0.239, [0.478, 0.478, 1.000]], [0.241, [0.478, 0.478, 1.000]], [0.243, [0.486, 0.486, 1.000]], [0.245, [0.486, 0.486, 1.000]], [0.247, [0.494, 0.494, 1.000]], [0.249, [0.494, 0.494, 1.000]], [0.250, [0.502, 0.502, 1.000]], [0.252, [0.502, 0.502, 1.000]], [0.254, [0.510, 0.510, 1.000]], [0.256, [0.510, 0.510, 1.000]], [0.258, [0.518, 0.518, 1.000]], [0.260, [0.518, 0.518, 1.000]], [0.262, [0.525, 0.525, 1.000]], [0.264, [0.525, 0.525, 1.000]], [0.266, [0.533, 0.533, 1.000]], [0.268, [0.533, 0.533, 1.000]], [0.270, [0.541, 0.541, 1.000]], [0.272, [0.541, 0.541, 1.000]], [0.274, [0.549, 0.549, 1.000]], [0.276, [0.549, 0.549, 1.000]], [0.278, [0.557, 0.557, 1.000]], [0.280, [0.557, 0.557, 1.000]], [0.282, [0.565, 0.565, 1.000]], [0.284, [0.565, 0.565, 1.000]], [0.286, [0.573, 0.573, 1.000]], [0.288, [0.573, 0.573, 1.000]], [0.290, [0.580, 0.580, 1.000]], [0.292, [0.580, 0.580, 1.000]], [0.294, [0.588, 0.588, 1.000]], [0.295, [0.588, 0.588, 1.000]], [0.297, [0.596, 0.596, 1.000]], [0.299, [0.596, 0.596, 1.000]], [0.301, [0.604, 0.604, 1.000]], [0.303, [0.604, 0.604, 1.000]], [0.305, [0.612, 0.612, 1.000]], [0.307, [0.612, 0.612, 1.000]], [0.309, [0.620, 0.620, 1.000]], [0.311, [0.620, 0.620, 1.000]], [0.313, [0.627, 0.627, 1.000]], [0.315, [0.627, 0.627, 1.000]], [0.317, [0.635, 0.635, 1.000]], [0.319, [0.635, 0.635, 1.000]], [0.321, [0.643, 0.643, 1.000]], [0.323, [0.643, 0.643, 1.000]], [0.325, [0.651, 0.651, 1.000]], [0.327, [0.651, 0.651, 1.000]], [0.329, [0.659, 0.659, 1.000]], [0.331, [0.659, 0.659, 1.000]], [0.333, [0.667, 0.667, 1.000]], [0.335, [0.667, 0.667, 1.000]], [0.337, [0.675, 0.675, 1.000]], [0.339, [0.675, 0.675, 1.000]], [0.341, [0.682, 0.682, 1.000]], [0.342, [0.682, 0.682, 1.000]], [0.344, [0.690, 0.690, 1.000]], [0.346, [0.690, 0.690, 1.000]], [0.348, [0.698, 0.698, 1.000]], [0.350, [0.698, 0.698, 1.000]], [0.352, [0.706, 0.706, 1.000]], [0.354, [0.706, 0.706, 1.000]], [0.356, [0.714, 0.714, 1.000]], [0.358, [0.714, 0.714, 1.000]], [0.360, [0.722, 0.722, 1.000]], [0.362, [0.722, 0.722, 1.000]], [0.364, [0.729, 0.729, 1.000]], [0.366, [0.729, 0.729, 1.000]], [0.368, [0.737, 0.737, 1.000]], [0.370, [0.737, 0.737, 1.000]], [0.372, [0.745, 0.745, 1.000]], [0.374, [0.745, 0.745, 1.000]], [0.376, [0.753, 0.753, 1.000]], [0.378, [0.753, 0.753, 1.000]], [0.380, [0.761, 0.761, 1.000]], [0.382, [0.761, 0.761, 1.000]], [0.384, [0.769, 0.769, 1.000]], [0.386, [0.769, 0.769, 1.000]], [0.387, [0.776, 0.776, 1.000]], [0.389, [0.776, 0.776, 1.000]], [0.391, [0.784, 0.784, 1.000]], [0.393, [0.784, 0.784, 1.000]], [0.395, [0.792, 0.792, 1.000]], [0.397, [0.792, 0.792, 1.000]], [0.399, [0.800, 0.800, 1.000]], [0.401, [0.800, 0.800, 1.000]], [0.403, [0.808, 0.808, 1.000]], [0.405, [0.808, 0.808, 1.000]], [0.407, [0.816, 0.816, 1.000]], [0.409, [0.816, 0.816, 1.000]], [0.411, [0.824, 0.824, 1.000]], [0.413, [0.824, 0.824, 1.000]], [0.415, [0.831, 0.831, 1.000]], [0.417, [0.831, 0.831, 1.000]], [0.419, [0.839, 0.839, 1.000]], [0.421, [0.839, 0.839, 1.000]], [0.423, [0.847, 0.847, 1.000]], [0.425, [0.847, 0.847, 1.000]], [0.427, [0.855, 0.855, 1.000]], [0.429, [0.855, 0.855, 1.000]], [0.431, [0.863, 0.863, 1.000]], [0.432, [0.863, 0.863, 1.000]], [0.434, [0.871, 0.871, 1.000]], [0.436, [0.871, 0.871, 1.000]], [0.438, [0.878, 0.878, 1.000]], [0.440, [0.878, 0.878, 1.000]], [0.442, [0.886, 0.886, 1.000]], [0.444, [0.886, 0.886, 1.000]], [0.446, [0.894, 0.894, 1.000]], [0.448, [0.894, 0.894, 1.000]], [0.450, [0.902, 0.902, 1.000]], [0.452, [0.902, 0.902, 1.000]], [0.454, [0.910, 0.910, 1.000]], [0.456, [0.910, 0.910, 1.000]], [0.458, [0.918, 0.918, 1.000]], [0.460, [0.918, 0.918, 1.000]], [0.462, [0.925, 0.925, 1.000]], [0.464, [0.925, 0.925, 1.000]], [0.466, [0.933, 0.933, 1.000]], [0.468, [0.933, 0.933, 1.000]], [0.470, [0.941, 0.941, 1.000]], [0.472, [0.941, 0.941, 1.000]], [0.474, [0.949, 0.949, 1.000]], [0.476, [0.949, 0.949, 1.000]], [0.477, [0.957, 0.957, 1.000]], [0.479, [0.957, 0.957, 1.000]], [0.481, [0.965, 0.965, 1.000]], [0.483, [0.965, 0.965, 1.000]], [0.485, [0.973, 0.973, 1.000]], [0.487, [0.973, 0.973, 1.000]], [0.489, [0.980, 0.980, 1.000]], [0.491, [0.980, 0.980, 1.000]], [0.493, [0.988, 0.988, 1.000]], [0.495, [0.988, 0.988, 1.000]], [0.497, [0.996, 0.996, 1.000]], [0.499, [0.996, 0.996, 1.000]], [0.501, [1.000, 0.996, 0.996]], [0.503, [1.000, 0.996, 0.996]], [0.505, [1.000, 0.988, 0.988]], [0.507, [1.000, 0.988, 0.988]], [0.509, [1.000, 0.980, 0.980]], [0.511, [1.000, 0.980, 0.980]], [0.513, [1.000, 0.973, 0.973]], [0.515, [1.000, 0.973, 0.973]], [0.517, [1.000, 0.965, 0.965]], [0.519, [1.000, 0.965, 0.965]], [0.521, [1.000, 0.957, 0.957]], [0.523, [1.000, 0.957, 0.957]], [0.524, [1.000, 0.949, 0.949]], [0.526, [1.000, 0.949, 0.949]], [0.528, [1.000, 0.941, 0.941]], [0.530, [1.000, 0.941, 0.941]], [0.532, [1.000, 0.933, 0.933]], [0.534, [1.000, 0.933, 0.933]], [0.536, [1.000, 0.925, 0.925]], [0.538, [1.000, 0.925, 0.925]], [0.540, [1.000, 0.918, 0.918]], [0.542, [1.000, 0.918, 0.918]], [0.544, [1.000, 0.910, 0.910]], [0.546, [1.000, 0.910, 0.910]], [0.548, [1.000, 0.902, 0.902]], [0.550, [1.000, 0.902, 0.902]], [0.552, [1.000, 0.894, 0.894]], [0.554, [1.000, 0.894, 0.894]], [0.556, [1.000, 0.886, 0.886]], [0.558, [1.000, 0.886, 0.886]], [0.560, [1.000, 0.878, 0.878]], [0.562, [1.000, 0.878, 0.878]], [0.564, [1.000, 0.871, 0.871]], [0.566, [1.000, 0.871, 0.871]], [0.568, [1.000, 0.863, 0.863]], [0.569, [1.000, 0.863, 0.863]], [0.571, [1.000, 0.855, 0.855]], [0.573, [1.000, 0.855, 0.855]], [0.575, [1.000, 0.847, 0.847]], [0.577, [1.000, 0.847, 0.847]], [0.579, [1.000, 0.839, 0.839]], [0.581, [1.000, 0.839, 0.839]], [0.583, [1.000, 0.831, 0.831]], [0.585, [1.000, 0.831, 0.831]], [0.587, [1.000, 0.824, 0.824]], [0.589, [1.000, 0.824, 0.824]], [0.591, [1.000, 0.816, 0.816]], [0.593, [1.000, 0.816, 0.816]], [0.595, [1.000, 0.808, 0.808]], [0.597, [1.000, 0.808, 0.808]], [0.599, [1.000, 0.800, 0.800]], [0.601, [1.000, 0.800, 0.800]], [0.603, [1.000, 0.792, 0.792]], [0.605, [1.000, 0.792, 0.792]], [0.607, [1.000, 0.784, 0.784]], [0.609, [1.000, 0.784, 0.784]], [0.611, [1.000, 0.776, 0.776]], [0.613, [1.000, 0.776, 0.776]], [0.614, [1.000, 0.769, 0.769]], [0.616, [1.000, 0.769, 0.769]], [0.618, [1.000, 0.761, 0.761]], [0.620, [1.000, 0.761, 0.761]], [0.622, [1.000, 0.753, 0.753]], [0.624, [1.000, 0.753, 0.753]], [0.626, [1.000, 0.745, 0.745]], [0.628, [1.000, 0.745, 0.745]], [0.630, [1.000, 0.737, 0.737]], [0.632, [1.000, 0.737, 0.737]], [0.634, [1.000, 0.729, 0.729]], [0.636, [1.000, 0.729, 0.729]], [0.638, [1.000, 0.722, 0.722]], [0.640, [1.000, 0.722, 0.722]], [0.642, [1.000, 0.714, 0.714]], [0.644, [1.000, 0.714, 0.714]], [0.646, [1.000, 0.706, 0.706]], [0.648, [1.000, 0.706, 0.706]], [0.650, [1.000, 0.698, 0.698]], [0.652, [1.000, 0.698, 0.698]], [0.654, [1.000, 0.690, 0.690]], [0.656, [1.000, 0.690, 0.690]], [0.658, [1.000, 0.682, 0.682]], [0.659, [1.000, 0.682, 0.682]], [0.661, [1.000, 0.675, 0.675]], [0.663, [1.000, 0.675, 0.675]], [0.665, [1.000, 0.667, 0.667]], [0.667, [1.000, 0.667, 0.667]], [0.669, [1.000, 0.659, 0.659]], [0.671, [1.000, 0.659, 0.659]], [0.673, [1.000, 0.651, 0.651]], [0.675, [1.000, 0.651, 0.651]], [0.677, [1.000, 0.643, 0.643]], [0.679, [1.000, 0.643, 0.643]], [0.681, [1.000, 0.635, 0.635]], [0.683, [1.000, 0.635, 0.635]], [0.685, [1.000, 0.627, 0.627]], [0.687, [1.000, 0.627, 0.627]], [0.689, [1.000, 0.620, 0.620]], [0.691, [1.000, 0.620, 0.620]], [0.693, [1.000, 0.612, 0.612]], [0.695, [1.000, 0.612, 0.612]], [0.697, [1.000, 0.604, 0.604]], [0.699, [1.000, 0.604, 0.604]], [0.701, [1.000, 0.596, 0.596]], [0.703, [1.000, 0.596, 0.596]], [0.705, [1.000, 0.588, 0.588]], [0.706, [1.000, 0.588, 0.588]], [0.708, [1.000, 0.580, 0.580]], [0.710, [1.000, 0.580, 0.580]], [0.712, [1.000, 0.573, 0.573]], [0.714, [1.000, 0.573, 0.573]], [0.716, [1.000, 0.565, 0.565]], [0.718, [1.000, 0.565, 0.565]], [0.720, [1.000, 0.557, 0.557]], [0.722, [1.000, 0.557, 0.557]], [0.724, [1.000, 0.549, 0.549]], [0.726, [1.000, 0.549, 0.549]], [0.728, [1.000, 0.541, 0.541]], [0.730, [1.000, 0.541, 0.541]], [0.732, [1.000, 0.533, 0.533]], [0.734, [1.000, 0.533, 0.533]], [0.736, [1.000, 0.525, 0.525]], [0.738, [1.000, 0.525, 0.525]], [0.740, [1.000, 0.518, 0.518]], [0.742, [1.000, 0.518, 0.518]], [0.744, [1.000, 0.510, 0.510]], [0.746, [1.000, 0.510, 0.510]], [0.748, [1.000, 0.502, 0.502]], [0.750, [1.000, 0.502, 0.502]], [0.751, [1.000, 0.494, 0.494]], [0.753, [1.000, 0.494, 0.494]], [0.755, [1.000, 0.486, 0.486]], [0.757, [1.000, 0.486, 0.486]], [0.759, [1.000, 0.478, 0.478]], [0.761, [1.000, 0.478, 0.478]], [0.763, [1.000, 0.471, 0.471]], [0.765, [1.000, 0.471, 0.471]], [0.767, [1.000, 0.463, 0.463]], [0.769, [1.000, 0.463, 0.463]], [0.771, [1.000, 0.455, 0.455]], [0.773, [1.000, 0.455, 0.455]], [0.775, [1.000, 0.447, 0.447]], [0.777, [1.000, 0.447, 0.447]], [0.779, [1.000, 0.439, 0.439]], [0.781, [1.000, 0.439, 0.439]], [0.783, [1.000, 0.431, 0.431]], [0.785, [1.000, 0.431, 0.431]], [0.787, [1.000, 0.424, 0.424]], [0.789, [1.000, 0.424, 0.424]], [0.791, [1.000, 0.416, 0.416]], [0.793, [1.000, 0.416, 0.416]], [0.795, [1.000, 0.408, 0.408]], [0.796, [1.000, 0.408, 0.408]], [0.798, [1.000, 0.400, 0.400]], [0.800, [1.000, 0.400, 0.400]], [0.802, [1.000, 0.392, 0.392]], [0.804, [1.000, 0.392, 0.392]], [0.806, [1.000, 0.384, 0.384]], [0.808, [1.000, 0.384, 0.384]], [0.810, [1.000, 0.376, 0.376]], [0.812, [1.000, 0.376, 0.376]], [0.814, [1.000, 0.369, 0.369]], [0.816, [1.000, 0.369, 0.369]], [0.818, [1.000, 0.361, 0.361]], [0.820, [1.000, 0.361, 0.361]], [0.822, [1.000, 0.353, 0.353]], [0.824, [1.000, 0.353, 0.353]], [0.826, [1.000, 0.345, 0.345]], [0.828, [1.000, 0.345, 0.345]], [0.830, [1.000, 0.337, 0.337]], [0.832, [1.000, 0.337, 0.337]], [0.834, [1.000, 0.329, 0.329]], [0.836, [1.000, 0.329, 0.329]], [0.838, [1.000, 0.322, 0.322]], [0.840, [1.000, 0.322, 0.322]], [0.841, [1.000, 0.314, 0.314]], [0.843, [1.000, 0.314, 0.314]], [0.845, [1.000, 0.306, 0.306]], [0.847, [1.000, 0.306, 0.306]], [0.849, [1.000, 0.298, 0.298]], [0.851, [1.000, 0.298, 0.298]], [0.853, [1.000, 0.290, 0.290]], [0.855, [1.000, 0.290, 0.290]], [0.857, [1.000, 0.282, 0.282]], [0.859, [1.000, 0.282, 0.282]], [0.861, [1.000, 0.275, 0.275]], [0.863, [1.000, 0.275, 0.275]], [0.865, [1.000, 0.267, 0.267]], [0.867, [1.000, 0.267, 0.267]], [0.869, [1.000, 0.259, 0.259]], [0.871, [1.000, 0.259, 0.259]], [0.873, [1.000, 0.251, 0.251]], [0.875, [1.000, 0.251, 0.251]], [0.877, [1.000, 0.243, 0.243]], [0.879, [1.000, 0.243, 0.243]], [0.881, [1.000, 0.235, 0.235]], [0.883, [1.000, 0.235, 0.235]], [0.885, [1.000, 0.227, 0.227]], [0.886, [1.000, 0.227, 0.227]], [0.888, [1.000, 0.220, 0.220]], [0.890, [1.000, 0.220, 0.220]], [0.892, [1.000, 0.212, 0.212]], [0.894, [1.000, 0.212, 0.212]], [0.896, [1.000, 0.204, 0.204]], [0.898, [1.000, 0.204, 0.204]], [0.900, [1.000, 0.196, 0.196]], [0.902, [1.000, 0.196, 0.196]], [0.904, [1.000, 0.188, 0.188]], [0.906, [1.000, 0.188, 0.188]], [0.908, [1.000, 0.180, 0.180]], [0.910, [1.000, 0.180, 0.180]], [0.912, [1.000, 0.173, 0.173]], [0.914, [1.000, 0.173, 0.173]], [0.916, [1.000, 0.165, 0.165]], [0.918, [1.000, 0.165, 0.165]], [0.920, [1.000, 0.157, 0.157]], [0.922, [1.000, 0.157, 0.157]], [0.924, [1.000, 0.149, 0.149]], [0.926, [1.000, 0.149, 0.149]], [0.928, [1.000, 0.141, 0.141]], [0.930, [1.000, 0.141, 0.141]], [0.932, [1.000, 0.133, 0.133]], [0.933, [1.000, 0.133, 0.133]], [0.935, [1.000, 0.125, 0.125]], [0.937, [1.000, 0.125, 0.125]], [0.939, [1.000, 0.118, 0.118]], [0.941, [1.000, 0.118, 0.118]], [0.943, [1.000, 0.110, 0.110]], [0.945, [1.000, 0.110, 0.110]], [0.947, [1.000, 0.102, 0.102]], [0.949, [1.000, 0.102, 0.102]], [0.951, [1.000, 0.094, 0.094]], [0.953, [1.000, 0.094, 0.094]], [0.955, [1.000, 0.086, 0.086]], [0.957, [1.000, 0.086, 0.086]], [0.959, [1.000, 0.078, 0.078]], [0.961, [1.000, 0.078, 0.078]], [0.963, [1.000, 0.071, 0.071]], [0.965, [1.000, 0.071, 0.071]], [0.967, [1.000, 0.063, 0.063]], [0.969, [1.000, 0.063, 0.063]], [0.971, [1.000, 0.055, 0.055]], [0.973, [1.000, 0.055, 0.055]], [0.975, [1.000, 0.047, 0.047]], [0.977, [1.000, 0.047, 0.047]], [0.978, [1.000, 0.039, 0.039]], [0.980, [1.000, 0.039, 0.039]], [0.982, [1.000, 0.031, 0.031]], [0.984, [1.000, 0.031, 0.031]], [0.986, [1.000, 0.024, 0.024]], [0.988, [1.000, 0.024, 0.024]], [0.990, [1.000, 0.016, 0.016]], [0.992, [1.000, 0.016, 0.016]], [0.994, [1.000, 0.008, 0.008]], [0.996, [1.000, 0.008, 0.008]], [0.998, [1.000, 0.000, 0.000]], [1.000, [1.000, 0.000, 0.000]]]; +var coolwarm = [[0.000, [0.230, 0.299, 0.754]], [0.002, [0.230, 0.299, 0.754]], [0.004, [0.234, 0.306, 0.760]], [0.006, [0.234, 0.306, 0.760]], [0.008, [0.239, 0.312, 0.766]], [0.010, [0.239, 0.312, 0.766]], [0.012, [0.244, 0.319, 0.772]], [0.014, [0.244, 0.319, 0.772]], [0.016, [0.248, 0.326, 0.778]], [0.018, [0.248, 0.326, 0.778]], [0.020, [0.253, 0.333, 0.784]], [0.022, [0.253, 0.333, 0.784]], [0.023, [0.257, 0.340, 0.790]], [0.025, [0.257, 0.340, 0.790]], [0.027, [0.262, 0.346, 0.796]], [0.029, [0.262, 0.346, 0.796]], [0.031, [0.266, 0.353, 0.802]], [0.033, [0.266, 0.353, 0.802]], [0.035, [0.271, 0.360, 0.807]], [0.037, [0.271, 0.360, 0.807]], [0.039, [0.276, 0.367, 0.813]], [0.041, [0.276, 0.367, 0.813]], [0.043, [0.281, 0.373, 0.818]], [0.045, [0.281, 0.373, 0.818]], [0.047, [0.285, 0.380, 0.823]], [0.049, [0.285, 0.380, 0.823]], [0.051, [0.290, 0.387, 0.829]], [0.053, [0.290, 0.387, 0.829]], [0.055, [0.295, 0.394, 0.834]], [0.057, [0.295, 0.394, 0.834]], [0.059, [0.299, 0.400, 0.840]], [0.061, [0.299, 0.400, 0.840]], [0.063, [0.304, 0.407, 0.845]], [0.065, [0.304, 0.407, 0.845]], [0.067, [0.309, 0.413, 0.850]], [0.068, [0.309, 0.413, 0.850]], [0.070, [0.314, 0.420, 0.855]], [0.072, [0.314, 0.420, 0.855]], [0.074, [0.319, 0.427, 0.860]], [0.076, [0.319, 0.427, 0.860]], [0.078, [0.324, 0.433, 0.865]], [0.080, [0.324, 0.433, 0.865]], [0.082, [0.329, 0.440, 0.870]], [0.084, [0.329, 0.440, 0.870]], [0.086, [0.333, 0.446, 0.874]], [0.088, [0.333, 0.446, 0.874]], [0.090, [0.338, 0.453, 0.879]], [0.092, [0.338, 0.453, 0.879]], [0.094, [0.343, 0.459, 0.884]], [0.096, [0.343, 0.459, 0.884]], [0.098, [0.348, 0.466, 0.888]], [0.100, [0.348, 0.466, 0.888]], [0.102, [0.353, 0.472, 0.893]], [0.104, [0.353, 0.472, 0.893]], [0.106, [0.358, 0.478, 0.897]], [0.108, [0.358, 0.478, 0.897]], [0.110, [0.363, 0.485, 0.901]], [0.112, [0.363, 0.485, 0.901]], [0.114, [0.369, 0.491, 0.905]], [0.115, [0.369, 0.491, 0.905]], [0.117, [0.374, 0.497, 0.909]], [0.119, [0.374, 0.497, 0.909]], [0.121, [0.379, 0.504, 0.914]], [0.123, [0.379, 0.504, 0.914]], [0.125, [0.384, 0.510, 0.918]], [0.127, [0.384, 0.510, 0.918]], [0.129, [0.389, 0.516, 0.921]], [0.131, [0.389, 0.516, 0.921]], [0.133, [0.394, 0.522, 0.925]], [0.135, [0.394, 0.522, 0.925]], [0.137, [0.399, 0.529, 0.928]], [0.139, [0.399, 0.529, 0.928]], [0.141, [0.404, 0.535, 0.932]], [0.143, [0.404, 0.535, 0.932]], [0.145, [0.410, 0.541, 0.936]], [0.147, [0.410, 0.541, 0.936]], [0.149, [0.415, 0.547, 0.939]], [0.151, [0.415, 0.547, 0.939]], [0.153, [0.420, 0.553, 0.943]], [0.155, [0.420, 0.553, 0.943]], [0.157, [0.425, 0.559, 0.946]], [0.159, [0.425, 0.559, 0.946]], [0.160, [0.431, 0.565, 0.949]], [0.162, [0.431, 0.565, 0.949]], [0.164, [0.436, 0.571, 0.952]], [0.166, [0.436, 0.571, 0.952]], [0.168, [0.441, 0.577, 0.955]], [0.170, [0.441, 0.577, 0.955]], [0.172, [0.446, 0.582, 0.957]], [0.174, [0.446, 0.582, 0.957]], [0.176, [0.452, 0.588, 0.960]], [0.178, [0.452, 0.588, 0.960]], [0.180, [0.457, 0.594, 0.963]], [0.182, [0.457, 0.594, 0.963]], [0.184, [0.462, 0.600, 0.966]], [0.186, [0.462, 0.600, 0.966]], [0.188, [0.468, 0.606, 0.969]], [0.190, [0.468, 0.606, 0.969]], [0.192, [0.473, 0.611, 0.971]], [0.194, [0.473, 0.611, 0.971]], [0.196, [0.478, 0.617, 0.973]], [0.198, [0.478, 0.617, 0.973]], [0.200, [0.484, 0.622, 0.975]], [0.202, [0.484, 0.622, 0.975]], [0.204, [0.489, 0.628, 0.977]], [0.205, [0.489, 0.628, 0.977]], [0.207, [0.495, 0.633, 0.979]], [0.209, [0.495, 0.633, 0.979]], [0.211, [0.500, 0.639, 0.981]], [0.213, [0.500, 0.639, 0.981]], [0.215, [0.505, 0.644, 0.983]], [0.217, [0.505, 0.644, 0.983]], [0.219, [0.511, 0.649, 0.985]], [0.221, [0.511, 0.649, 0.985]], [0.223, [0.516, 0.654, 0.986]], [0.225, [0.516, 0.654, 0.986]], [0.227, [0.522, 0.660, 0.988]], [0.229, [0.522, 0.660, 0.988]], [0.231, [0.527, 0.665, 0.989]], [0.233, [0.527, 0.665, 0.989]], [0.235, [0.533, 0.670, 0.990]], [0.237, [0.533, 0.670, 0.990]], [0.239, [0.538, 0.675, 0.992]], [0.241, [0.538, 0.675, 0.992]], [0.243, [0.543, 0.680, 0.993]], [0.245, [0.543, 0.680, 0.993]], [0.247, [0.549, 0.685, 0.994]], [0.249, [0.549, 0.685, 0.994]], [0.250, [0.554, 0.690, 0.996]], [0.252, [0.554, 0.690, 0.996]], [0.254, [0.560, 0.695, 0.996]], [0.256, [0.560, 0.695, 0.996]], [0.258, [0.565, 0.699, 0.997]], [0.260, [0.565, 0.699, 0.997]], [0.262, [0.571, 0.704, 0.997]], [0.264, [0.571, 0.704, 0.997]], [0.266, [0.576, 0.709, 0.998]], [0.268, [0.576, 0.709, 0.998]], [0.270, [0.581, 0.713, 0.998]], [0.272, [0.581, 0.713, 0.998]], [0.274, [0.587, 0.718, 0.999]], [0.276, [0.587, 0.718, 0.999]], [0.278, [0.592, 0.723, 0.999]], [0.280, [0.592, 0.723, 0.999]], [0.282, [0.598, 0.727, 1.000]], [0.284, [0.598, 0.727, 1.000]], [0.286, [0.603, 0.732, 1.000]], [0.288, [0.603, 0.732, 1.000]], [0.290, [0.609, 0.736, 0.999]], [0.292, [0.609, 0.736, 0.999]], [0.294, [0.614, 0.740, 0.999]], [0.295, [0.614, 0.740, 0.999]], [0.297, [0.619, 0.744, 0.999]], [0.299, [0.619, 0.744, 0.999]], [0.301, [0.625, 0.748, 0.999]], [0.303, [0.625, 0.748, 0.999]], [0.305, [0.630, 0.753, 0.999]], [0.307, [0.630, 0.753, 0.999]], [0.309, [0.635, 0.757, 0.998]], [0.311, [0.635, 0.757, 0.998]], [0.313, [0.641, 0.761, 0.998]], [0.315, [0.641, 0.761, 0.998]], [0.317, [0.646, 0.764, 0.997]], [0.319, [0.646, 0.764, 0.997]], [0.321, [0.651, 0.768, 0.996]], [0.323, [0.651, 0.768, 0.996]], [0.325, [0.657, 0.772, 0.995]], [0.327, [0.657, 0.772, 0.995]], [0.329, [0.662, 0.775, 0.994]], [0.331, [0.662, 0.775, 0.994]], [0.333, [0.667, 0.779, 0.993]], [0.335, [0.667, 0.779, 0.993]], [0.337, [0.673, 0.783, 0.992]], [0.339, [0.673, 0.783, 0.992]], [0.341, [0.678, 0.787, 0.991]], [0.342, [0.678, 0.787, 0.991]], [0.344, [0.683, 0.790, 0.990]], [0.346, [0.683, 0.790, 0.990]], [0.348, [0.688, 0.793, 0.988]], [0.350, [0.688, 0.793, 0.988]], [0.352, [0.693, 0.796, 0.986]], [0.354, [0.693, 0.796, 0.986]], [0.356, [0.698, 0.799, 0.985]], [0.358, [0.698, 0.799, 0.985]], [0.360, [0.704, 0.803, 0.983]], [0.362, [0.704, 0.803, 0.983]], [0.364, [0.709, 0.806, 0.981]], [0.366, [0.709, 0.806, 0.981]], [0.368, [0.714, 0.809, 0.979]], [0.370, [0.714, 0.809, 0.979]], [0.372, [0.719, 0.812, 0.978]], [0.374, [0.719, 0.812, 0.978]], [0.376, [0.724, 0.815, 0.976]], [0.378, [0.724, 0.815, 0.976]], [0.380, [0.729, 0.817, 0.973]], [0.382, [0.729, 0.817, 0.973]], [0.384, [0.734, 0.820, 0.971]], [0.386, [0.734, 0.820, 0.971]], [0.387, [0.739, 0.823, 0.968]], [0.389, [0.739, 0.823, 0.968]], [0.391, [0.744, 0.825, 0.966]], [0.393, [0.744, 0.825, 0.966]], [0.395, [0.749, 0.828, 0.963]], [0.397, [0.749, 0.828, 0.963]], [0.399, [0.754, 0.830, 0.961]], [0.401, [0.754, 0.830, 0.961]], [0.403, [0.759, 0.833, 0.958]], [0.405, [0.759, 0.833, 0.958]], [0.407, [0.763, 0.835, 0.956]], [0.409, [0.763, 0.835, 0.956]], [0.411, [0.768, 0.837, 0.952]], [0.413, [0.768, 0.837, 0.952]], [0.415, [0.773, 0.839, 0.949]], [0.417, [0.773, 0.839, 0.949]], [0.419, [0.777, 0.841, 0.946]], [0.421, [0.777, 0.841, 0.946]], [0.423, [0.782, 0.843, 0.943]], [0.425, [0.782, 0.843, 0.943]], [0.427, [0.787, 0.845, 0.940]], [0.429, [0.787, 0.845, 0.940]], [0.431, [0.791, 0.847, 0.937]], [0.432, [0.791, 0.847, 0.937]], [0.434, [0.796, 0.849, 0.933]], [0.436, [0.796, 0.849, 0.933]], [0.438, [0.801, 0.850, 0.930]], [0.440, [0.801, 0.850, 0.930]], [0.442, [0.805, 0.852, 0.926]], [0.444, [0.805, 0.852, 0.926]], [0.446, [0.809, 0.853, 0.922]], [0.448, [0.809, 0.853, 0.922]], [0.450, [0.814, 0.854, 0.918]], [0.452, [0.814, 0.854, 0.918]], [0.454, [0.818, 0.856, 0.915]], [0.456, [0.818, 0.856, 0.915]], [0.458, [0.822, 0.857, 0.911]], [0.460, [0.822, 0.857, 0.911]], [0.462, [0.827, 0.858, 0.907]], [0.464, [0.827, 0.858, 0.907]], [0.466, [0.831, 0.860, 0.903]], [0.468, [0.831, 0.860, 0.903]], [0.470, [0.835, 0.861, 0.899]], [0.472, [0.835, 0.861, 0.899]], [0.474, [0.839, 0.861, 0.894]], [0.476, [0.839, 0.861, 0.894]], [0.477, [0.843, 0.862, 0.890]], [0.479, [0.843, 0.862, 0.890]], [0.481, [0.847, 0.862, 0.886]], [0.483, [0.847, 0.862, 0.886]], [0.485, [0.851, 0.863, 0.881]], [0.487, [0.851, 0.863, 0.881]], [0.489, [0.855, 0.864, 0.877]], [0.491, [0.855, 0.864, 0.877]], [0.493, [0.859, 0.864, 0.872]], [0.495, [0.859, 0.864, 0.872]], [0.497, [0.863, 0.865, 0.868]], [0.499, [0.863, 0.865, 0.868]], [0.501, [0.867, 0.864, 0.863]], [0.503, [0.867, 0.864, 0.863]], [0.505, [0.871, 0.862, 0.857]], [0.507, [0.871, 0.862, 0.857]], [0.509, [0.876, 0.860, 0.851]], [0.511, [0.876, 0.860, 0.851]], [0.513, [0.880, 0.858, 0.846]], [0.515, [0.880, 0.858, 0.846]], [0.517, [0.884, 0.856, 0.840]], [0.519, [0.884, 0.856, 0.840]], [0.521, [0.888, 0.854, 0.835]], [0.523, [0.888, 0.854, 0.835]], [0.524, [0.892, 0.852, 0.829]], [0.526, [0.892, 0.852, 0.829]], [0.528, [0.896, 0.850, 0.823]], [0.530, [0.896, 0.850, 0.823]], [0.532, [0.900, 0.848, 0.818]], [0.534, [0.900, 0.848, 0.818]], [0.536, [0.903, 0.845, 0.812]], [0.538, [0.903, 0.845, 0.812]], [0.540, [0.906, 0.842, 0.806]], [0.542, [0.906, 0.842, 0.806]], [0.544, [0.909, 0.839, 0.800]], [0.546, [0.909, 0.839, 0.800]], [0.548, [0.913, 0.837, 0.795]], [0.550, [0.913, 0.837, 0.795]], [0.552, [0.916, 0.834, 0.789]], [0.554, [0.916, 0.834, 0.789]], [0.556, [0.919, 0.831, 0.783]], [0.558, [0.919, 0.831, 0.783]], [0.560, [0.923, 0.829, 0.777]], [0.562, [0.923, 0.829, 0.777]], [0.564, [0.926, 0.826, 0.771]], [0.566, [0.926, 0.826, 0.771]], [0.568, [0.928, 0.822, 0.765]], [0.569, [0.928, 0.822, 0.765]], [0.571, [0.931, 0.819, 0.759]], [0.573, [0.931, 0.819, 0.759]], [0.575, [0.933, 0.816, 0.753]], [0.577, [0.933, 0.816, 0.753]], [0.579, [0.936, 0.812, 0.747]], [0.581, [0.936, 0.812, 0.747]], [0.583, [0.938, 0.809, 0.741]], [0.585, [0.938, 0.809, 0.741]], [0.587, [0.941, 0.806, 0.735]], [0.589, [0.941, 0.806, 0.735]], [0.591, [0.943, 0.802, 0.729]], [0.593, [0.943, 0.802, 0.729]], [0.595, [0.946, 0.799, 0.723]], [0.597, [0.946, 0.799, 0.723]], [0.599, [0.947, 0.795, 0.717]], [0.601, [0.947, 0.795, 0.717]], [0.603, [0.949, 0.791, 0.711]], [0.605, [0.949, 0.791, 0.711]], [0.607, [0.951, 0.787, 0.705]], [0.609, [0.951, 0.787, 0.705]], [0.611, [0.953, 0.783, 0.699]], [0.613, [0.953, 0.783, 0.699]], [0.614, [0.955, 0.779, 0.693]], [0.616, [0.955, 0.779, 0.693]], [0.618, [0.956, 0.775, 0.686]], [0.620, [0.956, 0.775, 0.686]], [0.622, [0.958, 0.771, 0.680]], [0.624, [0.958, 0.771, 0.680]], [0.626, [0.960, 0.767, 0.674]], [0.628, [0.960, 0.767, 0.674]], [0.630, [0.961, 0.763, 0.668]], [0.632, [0.961, 0.763, 0.668]], [0.634, [0.962, 0.758, 0.662]], [0.636, [0.962, 0.758, 0.662]], [0.638, [0.963, 0.754, 0.656]], [0.640, [0.963, 0.754, 0.656]], [0.642, [0.964, 0.749, 0.649]], [0.644, [0.964, 0.749, 0.649]], [0.646, [0.965, 0.745, 0.643]], [0.648, [0.965, 0.745, 0.643]], [0.650, [0.966, 0.740, 0.637]], [0.652, [0.966, 0.740, 0.637]], [0.654, [0.967, 0.736, 0.631]], [0.656, [0.967, 0.736, 0.631]], [0.658, [0.968, 0.731, 0.625]], [0.659, [0.968, 0.731, 0.625]], [0.661, [0.968, 0.726, 0.618]], [0.663, [0.968, 0.726, 0.618]], [0.665, [0.968, 0.721, 0.612]], [0.667, [0.968, 0.721, 0.612]], [0.669, [0.969, 0.716, 0.606]], [0.671, [0.969, 0.716, 0.606]], [0.673, [0.969, 0.711, 0.600]], [0.675, [0.969, 0.711, 0.600]], [0.677, [0.969, 0.706, 0.594]], [0.679, [0.969, 0.706, 0.594]], [0.681, [0.970, 0.701, 0.588]], [0.683, [0.970, 0.701, 0.588]], [0.685, [0.970, 0.696, 0.581]], [0.687, [0.970, 0.696, 0.581]], [0.689, [0.970, 0.690, 0.575]], [0.691, [0.970, 0.690, 0.575]], [0.693, [0.969, 0.685, 0.569]], [0.695, [0.969, 0.685, 0.569]], [0.697, [0.969, 0.679, 0.563]], [0.699, [0.969, 0.679, 0.563]], [0.701, [0.968, 0.674, 0.557]], [0.703, [0.968, 0.674, 0.557]], [0.705, [0.968, 0.668, 0.550]], [0.706, [0.968, 0.668, 0.550]], [0.708, [0.968, 0.663, 0.544]], [0.710, [0.968, 0.663, 0.544]], [0.712, [0.967, 0.657, 0.538]], [0.714, [0.967, 0.657, 0.538]], [0.716, [0.967, 0.652, 0.532]], [0.718, [0.967, 0.652, 0.532]], [0.720, [0.966, 0.646, 0.526]], [0.722, [0.966, 0.646, 0.526]], [0.724, [0.965, 0.640, 0.520]], [0.726, [0.965, 0.640, 0.520]], [0.728, [0.964, 0.634, 0.514]], [0.730, [0.964, 0.634, 0.514]], [0.732, [0.963, 0.628, 0.508]], [0.734, [0.963, 0.628, 0.508]], [0.736, [0.962, 0.622, 0.502]], [0.738, [0.962, 0.622, 0.502]], [0.740, [0.960, 0.616, 0.495]], [0.742, [0.960, 0.616, 0.495]], [0.744, [0.959, 0.610, 0.489]], [0.746, [0.959, 0.610, 0.489]], [0.748, [0.958, 0.604, 0.483]], [0.750, [0.958, 0.604, 0.483]], [0.751, [0.957, 0.598, 0.477]], [0.753, [0.957, 0.598, 0.477]], [0.755, [0.955, 0.592, 0.471]], [0.757, [0.955, 0.592, 0.471]], [0.759, [0.953, 0.585, 0.465]], [0.761, [0.953, 0.585, 0.465]], [0.763, [0.951, 0.579, 0.459]], [0.765, [0.951, 0.579, 0.459]], [0.767, [0.949, 0.572, 0.453]], [0.769, [0.949, 0.572, 0.453]], [0.771, [0.948, 0.566, 0.447]], [0.773, [0.948, 0.566, 0.447]], [0.775, [0.946, 0.560, 0.442]], [0.777, [0.946, 0.560, 0.442]], [0.779, [0.944, 0.553, 0.436]], [0.781, [0.944, 0.553, 0.436]], [0.783, [0.942, 0.546, 0.430]], [0.785, [0.942, 0.546, 0.430]], [0.787, [0.939, 0.540, 0.424]], [0.789, [0.939, 0.540, 0.424]], [0.791, [0.937, 0.533, 0.418]], [0.793, [0.937, 0.533, 0.418]], [0.795, [0.934, 0.526, 0.412]], [0.796, [0.934, 0.526, 0.412]], [0.798, [0.932, 0.519, 0.406]], [0.800, [0.932, 0.519, 0.406]], [0.802, [0.929, 0.512, 0.401]], [0.804, [0.929, 0.512, 0.401]], [0.806, [0.927, 0.505, 0.395]], [0.808, [0.927, 0.505, 0.395]], [0.810, [0.924, 0.499, 0.389]], [0.812, [0.924, 0.499, 0.389]], [0.814, [0.921, 0.491, 0.383]], [0.816, [0.921, 0.491, 0.383]], [0.818, [0.918, 0.484, 0.378]], [0.820, [0.918, 0.484, 0.378]], [0.822, [0.915, 0.477, 0.372]], [0.824, [0.915, 0.477, 0.372]], [0.826, [0.912, 0.470, 0.367]], [0.828, [0.912, 0.470, 0.367]], [0.830, [0.909, 0.462, 0.361]], [0.832, [0.909, 0.462, 0.361]], [0.834, [0.906, 0.455, 0.355]], [0.836, [0.906, 0.455, 0.355]], [0.838, [0.903, 0.448, 0.350]], [0.840, [0.903, 0.448, 0.350]], [0.841, [0.900, 0.441, 0.344]], [0.843, [0.900, 0.441, 0.344]], [0.845, [0.896, 0.433, 0.339]], [0.847, [0.896, 0.433, 0.339]], [0.849, [0.892, 0.425, 0.333]], [0.851, [0.892, 0.425, 0.333]], [0.853, [0.888, 0.418, 0.328]], [0.855, [0.888, 0.418, 0.328]], [0.857, [0.885, 0.410, 0.323]], [0.859, [0.885, 0.410, 0.323]], [0.861, [0.881, 0.402, 0.317]], [0.863, [0.881, 0.402, 0.317]], [0.865, [0.877, 0.395, 0.312]], [0.867, [0.877, 0.395, 0.312]], [0.869, [0.873, 0.387, 0.306]], [0.871, [0.873, 0.387, 0.306]], [0.873, [0.870, 0.379, 0.301]], [0.875, [0.870, 0.379, 0.301]], [0.877, [0.865, 0.371, 0.296]], [0.879, [0.865, 0.371, 0.296]], [0.881, [0.861, 0.363, 0.291]], [0.883, [0.861, 0.363, 0.291]], [0.885, [0.857, 0.355, 0.285]], [0.886, [0.857, 0.355, 0.285]], [0.888, [0.852, 0.346, 0.280]], [0.890, [0.852, 0.346, 0.280]], [0.892, [0.848, 0.338, 0.275]], [0.894, [0.848, 0.338, 0.275]], [0.896, [0.844, 0.330, 0.270]], [0.898, [0.844, 0.330, 0.270]], [0.900, [0.839, 0.322, 0.265]], [0.902, [0.839, 0.322, 0.265]], [0.904, [0.835, 0.314, 0.260]], [0.906, [0.835, 0.314, 0.260]], [0.908, [0.830, 0.305, 0.255]], [0.910, [0.830, 0.305, 0.255]], [0.912, [0.825, 0.296, 0.250]], [0.914, [0.825, 0.296, 0.250]], [0.916, [0.820, 0.287, 0.245]], [0.918, [0.820, 0.287, 0.245]], [0.920, [0.816, 0.278, 0.240]], [0.922, [0.816, 0.278, 0.240]], [0.924, [0.811, 0.269, 0.235]], [0.926, [0.811, 0.269, 0.235]], [0.928, [0.806, 0.260, 0.231]], [0.930, [0.806, 0.260, 0.231]], [0.932, [0.801, 0.251, 0.226]], [0.933, [0.801, 0.251, 0.226]], [0.935, [0.796, 0.242, 0.221]], [0.937, [0.796, 0.242, 0.221]], [0.939, [0.791, 0.231, 0.216]], [0.941, [0.791, 0.231, 0.216]], [0.943, [0.785, 0.221, 0.212]], [0.945, [0.785, 0.221, 0.212]], [0.947, [0.780, 0.210, 0.207]], [0.949, [0.780, 0.210, 0.207]], [0.951, [0.774, 0.200, 0.203]], [0.953, [0.774, 0.200, 0.203]], [0.955, [0.769, 0.189, 0.198]], [0.957, [0.769, 0.189, 0.198]], [0.959, [0.764, 0.179, 0.193]], [0.961, [0.764, 0.179, 0.193]], [0.963, [0.758, 0.168, 0.189]], [0.965, [0.758, 0.168, 0.189]], [0.967, [0.753, 0.158, 0.184]], [0.969, [0.753, 0.158, 0.184]], [0.971, [0.747, 0.140, 0.180]], [0.973, [0.747, 0.140, 0.180]], [0.975, [0.741, 0.122, 0.176]], [0.977, [0.741, 0.122, 0.176]], [0.978, [0.735, 0.104, 0.171]], [0.980, [0.735, 0.104, 0.171]], [0.982, [0.729, 0.087, 0.167]], [0.984, [0.729, 0.087, 0.167]], [0.986, [0.723, 0.069, 0.163]], [0.988, [0.723, 0.069, 0.163]], [0.990, [0.717, 0.051, 0.159]], [0.992, [0.717, 0.051, 0.159]], [0.994, [0.712, 0.033, 0.154]], [0.996, [0.712, 0.033, 0.154]], [0.998, [0.706, 0.016, 0.150]], [1.000, [0.706, 0.016, 0.150]]]; +var seismic = [[0.000, [0.000, 0.000, 0.300]], [0.002, [0.000, 0.000, 0.300]], [0.004, [0.000, 0.000, 0.311]], [0.006, [0.000, 0.000, 0.311]], [0.008, [0.000, 0.000, 0.322]], [0.010, [0.000, 0.000, 0.322]], [0.012, [0.000, 0.000, 0.333]], [0.014, [0.000, 0.000, 0.333]], [0.016, [0.000, 0.000, 0.344]], [0.018, [0.000, 0.000, 0.344]], [0.020, [0.000, 0.000, 0.355]], [0.022, [0.000, 0.000, 0.355]], [0.023, [0.000, 0.000, 0.366]], [0.025, [0.000, 0.000, 0.366]], [0.027, [0.000, 0.000, 0.377]], [0.029, [0.000, 0.000, 0.377]], [0.031, [0.000, 0.000, 0.388]], [0.033, [0.000, 0.000, 0.388]], [0.035, [0.000, 0.000, 0.399]], [0.037, [0.000, 0.000, 0.399]], [0.039, [0.000, 0.000, 0.410]], [0.041, [0.000, 0.000, 0.410]], [0.043, [0.000, 0.000, 0.421]], [0.045, [0.000, 0.000, 0.421]], [0.047, [0.000, 0.000, 0.432]], [0.049, [0.000, 0.000, 0.432]], [0.051, [0.000, 0.000, 0.443]], [0.053, [0.000, 0.000, 0.443]], [0.055, [0.000, 0.000, 0.454]], [0.057, [0.000, 0.000, 0.454]], [0.059, [0.000, 0.000, 0.465]], [0.061, [0.000, 0.000, 0.465]], [0.063, [0.000, 0.000, 0.476]], [0.065, [0.000, 0.000, 0.476]], [0.067, [0.000, 0.000, 0.487]], [0.068, [0.000, 0.000, 0.487]], [0.070, [0.000, 0.000, 0.498]], [0.072, [0.000, 0.000, 0.498]], [0.074, [0.000, 0.000, 0.509]], [0.076, [0.000, 0.000, 0.509]], [0.078, [0.000, 0.000, 0.520]], [0.080, [0.000, 0.000, 0.520]], [0.082, [0.000, 0.000, 0.531]], [0.084, [0.000, 0.000, 0.531]], [0.086, [0.000, 0.000, 0.542]], [0.088, [0.000, 0.000, 0.542]], [0.090, [0.000, 0.000, 0.553]], [0.092, [0.000, 0.000, 0.553]], [0.094, [0.000, 0.000, 0.564]], [0.096, [0.000, 0.000, 0.564]], [0.098, [0.000, 0.000, 0.575]], [0.100, [0.000, 0.000, 0.575]], [0.102, [0.000, 0.000, 0.585]], [0.104, [0.000, 0.000, 0.585]], [0.106, [0.000, 0.000, 0.596]], [0.108, [0.000, 0.000, 0.596]], [0.110, [0.000, 0.000, 0.607]], [0.112, [0.000, 0.000, 0.607]], [0.114, [0.000, 0.000, 0.618]], [0.115, [0.000, 0.000, 0.618]], [0.117, [0.000, 0.000, 0.629]], [0.119, [0.000, 0.000, 0.629]], [0.121, [0.000, 0.000, 0.640]], [0.123, [0.000, 0.000, 0.640]], [0.125, [0.000, 0.000, 0.651]], [0.127, [0.000, 0.000, 0.651]], [0.129, [0.000, 0.000, 0.662]], [0.131, [0.000, 0.000, 0.662]], [0.133, [0.000, 0.000, 0.673]], [0.135, [0.000, 0.000, 0.673]], [0.137, [0.000, 0.000, 0.684]], [0.139, [0.000, 0.000, 0.684]], [0.141, [0.000, 0.000, 0.695]], [0.143, [0.000, 0.000, 0.695]], [0.145, [0.000, 0.000, 0.706]], [0.147, [0.000, 0.000, 0.706]], [0.149, [0.000, 0.000, 0.717]], [0.151, [0.000, 0.000, 0.717]], [0.153, [0.000, 0.000, 0.728]], [0.155, [0.000, 0.000, 0.728]], [0.157, [0.000, 0.000, 0.739]], [0.159, [0.000, 0.000, 0.739]], [0.160, [0.000, 0.000, 0.750]], [0.162, [0.000, 0.000, 0.750]], [0.164, [0.000, 0.000, 0.761]], [0.166, [0.000, 0.000, 0.761]], [0.168, [0.000, 0.000, 0.772]], [0.170, [0.000, 0.000, 0.772]], [0.172, [0.000, 0.000, 0.783]], [0.174, [0.000, 0.000, 0.783]], [0.176, [0.000, 0.000, 0.794]], [0.178, [0.000, 0.000, 0.794]], [0.180, [0.000, 0.000, 0.805]], [0.182, [0.000, 0.000, 0.805]], [0.184, [0.000, 0.000, 0.816]], [0.186, [0.000, 0.000, 0.816]], [0.188, [0.000, 0.000, 0.827]], [0.190, [0.000, 0.000, 0.827]], [0.192, [0.000, 0.000, 0.838]], [0.194, [0.000, 0.000, 0.838]], [0.196, [0.000, 0.000, 0.849]], [0.198, [0.000, 0.000, 0.849]], [0.200, [0.000, 0.000, 0.860]], [0.202, [0.000, 0.000, 0.860]], [0.204, [0.000, 0.000, 0.871]], [0.205, [0.000, 0.000, 0.871]], [0.207, [0.000, 0.000, 0.882]], [0.209, [0.000, 0.000, 0.882]], [0.211, [0.000, 0.000, 0.893]], [0.213, [0.000, 0.000, 0.893]], [0.215, [0.000, 0.000, 0.904]], [0.217, [0.000, 0.000, 0.904]], [0.219, [0.000, 0.000, 0.915]], [0.221, [0.000, 0.000, 0.915]], [0.223, [0.000, 0.000, 0.926]], [0.225, [0.000, 0.000, 0.926]], [0.227, [0.000, 0.000, 0.937]], [0.229, [0.000, 0.000, 0.937]], [0.231, [0.000, 0.000, 0.948]], [0.233, [0.000, 0.000, 0.948]], [0.235, [0.000, 0.000, 0.959]], [0.237, [0.000, 0.000, 0.959]], [0.239, [0.000, 0.000, 0.970]], [0.241, [0.000, 0.000, 0.970]], [0.243, [0.000, 0.000, 0.981]], [0.245, [0.000, 0.000, 0.981]], [0.247, [0.000, 0.000, 0.992]], [0.249, [0.000, 0.000, 0.992]], [0.250, [0.004, 0.004, 1.000]], [0.252, [0.004, 0.004, 1.000]], [0.254, [0.020, 0.020, 1.000]], [0.256, [0.020, 0.020, 1.000]], [0.258, [0.035, 0.035, 1.000]], [0.260, [0.035, 0.035, 1.000]], [0.262, [0.051, 0.051, 1.000]], [0.264, [0.051, 0.051, 1.000]], [0.266, [0.067, 0.067, 1.000]], [0.268, [0.067, 0.067, 1.000]], [0.270, [0.082, 0.082, 1.000]], [0.272, [0.082, 0.082, 1.000]], [0.274, [0.098, 0.098, 1.000]], [0.276, [0.098, 0.098, 1.000]], [0.278, [0.114, 0.114, 1.000]], [0.280, [0.114, 0.114, 1.000]], [0.282, [0.129, 0.129, 1.000]], [0.284, [0.129, 0.129, 1.000]], [0.286, [0.145, 0.145, 1.000]], [0.288, [0.145, 0.145, 1.000]], [0.290, [0.161, 0.161, 1.000]], [0.292, [0.161, 0.161, 1.000]], [0.294, [0.176, 0.176, 1.000]], [0.295, [0.176, 0.176, 1.000]], [0.297, [0.192, 0.192, 1.000]], [0.299, [0.192, 0.192, 1.000]], [0.301, [0.208, 0.208, 1.000]], [0.303, [0.208, 0.208, 1.000]], [0.305, [0.224, 0.224, 1.000]], [0.307, [0.224, 0.224, 1.000]], [0.309, [0.239, 0.239, 1.000]], [0.311, [0.239, 0.239, 1.000]], [0.313, [0.255, 0.255, 1.000]], [0.315, [0.255, 0.255, 1.000]], [0.317, [0.271, 0.271, 1.000]], [0.319, [0.271, 0.271, 1.000]], [0.321, [0.286, 0.286, 1.000]], [0.323, [0.286, 0.286, 1.000]], [0.325, [0.302, 0.302, 1.000]], [0.327, [0.302, 0.302, 1.000]], [0.329, [0.318, 0.318, 1.000]], [0.331, [0.318, 0.318, 1.000]], [0.333, [0.333, 0.333, 1.000]], [0.335, [0.333, 0.333, 1.000]], [0.337, [0.349, 0.349, 1.000]], [0.339, [0.349, 0.349, 1.000]], [0.341, [0.365, 0.365, 1.000]], [0.342, [0.365, 0.365, 1.000]], [0.344, [0.380, 0.380, 1.000]], [0.346, [0.380, 0.380, 1.000]], [0.348, [0.396, 0.396, 1.000]], [0.350, [0.396, 0.396, 1.000]], [0.352, [0.412, 0.412, 1.000]], [0.354, [0.412, 0.412, 1.000]], [0.356, [0.427, 0.427, 1.000]], [0.358, [0.427, 0.427, 1.000]], [0.360, [0.443, 0.443, 1.000]], [0.362, [0.443, 0.443, 1.000]], [0.364, [0.459, 0.459, 1.000]], [0.366, [0.459, 0.459, 1.000]], [0.368, [0.475, 0.475, 1.000]], [0.370, [0.475, 0.475, 1.000]], [0.372, [0.490, 0.490, 1.000]], [0.374, [0.490, 0.490, 1.000]], [0.376, [0.506, 0.506, 1.000]], [0.378, [0.506, 0.506, 1.000]], [0.380, [0.522, 0.522, 1.000]], [0.382, [0.522, 0.522, 1.000]], [0.384, [0.537, 0.537, 1.000]], [0.386, [0.537, 0.537, 1.000]], [0.387, [0.553, 0.553, 1.000]], [0.389, [0.553, 0.553, 1.000]], [0.391, [0.569, 0.569, 1.000]], [0.393, [0.569, 0.569, 1.000]], [0.395, [0.584, 0.584, 1.000]], [0.397, [0.584, 0.584, 1.000]], [0.399, [0.600, 0.600, 1.000]], [0.401, [0.600, 0.600, 1.000]], [0.403, [0.616, 0.616, 1.000]], [0.405, [0.616, 0.616, 1.000]], [0.407, [0.631, 0.631, 1.000]], [0.409, [0.631, 0.631, 1.000]], [0.411, [0.647, 0.647, 1.000]], [0.413, [0.647, 0.647, 1.000]], [0.415, [0.663, 0.663, 1.000]], [0.417, [0.663, 0.663, 1.000]], [0.419, [0.678, 0.678, 1.000]], [0.421, [0.678, 0.678, 1.000]], [0.423, [0.694, 0.694, 1.000]], [0.425, [0.694, 0.694, 1.000]], [0.427, [0.710, 0.710, 1.000]], [0.429, [0.710, 0.710, 1.000]], [0.431, [0.725, 0.725, 1.000]], [0.432, [0.725, 0.725, 1.000]], [0.434, [0.741, 0.741, 1.000]], [0.436, [0.741, 0.741, 1.000]], [0.438, [0.757, 0.757, 1.000]], [0.440, [0.757, 0.757, 1.000]], [0.442, [0.773, 0.773, 1.000]], [0.444, [0.773, 0.773, 1.000]], [0.446, [0.788, 0.788, 1.000]], [0.448, [0.788, 0.788, 1.000]], [0.450, [0.804, 0.804, 1.000]], [0.452, [0.804, 0.804, 1.000]], [0.454, [0.820, 0.820, 1.000]], [0.456, [0.820, 0.820, 1.000]], [0.458, [0.835, 0.835, 1.000]], [0.460, [0.835, 0.835, 1.000]], [0.462, [0.851, 0.851, 1.000]], [0.464, [0.851, 0.851, 1.000]], [0.466, [0.867, 0.867, 1.000]], [0.468, [0.867, 0.867, 1.000]], [0.470, [0.882, 0.882, 1.000]], [0.472, [0.882, 0.882, 1.000]], [0.474, [0.898, 0.898, 1.000]], [0.476, [0.898, 0.898, 1.000]], [0.477, [0.914, 0.914, 1.000]], [0.479, [0.914, 0.914, 1.000]], [0.481, [0.929, 0.929, 1.000]], [0.483, [0.929, 0.929, 1.000]], [0.485, [0.945, 0.945, 1.000]], [0.487, [0.945, 0.945, 1.000]], [0.489, [0.961, 0.961, 1.000]], [0.491, [0.961, 0.961, 1.000]], [0.493, [0.976, 0.976, 1.000]], [0.495, [0.976, 0.976, 1.000]], [0.497, [0.992, 0.992, 1.000]], [0.499, [0.992, 0.992, 1.000]], [0.501, [1.000, 0.992, 0.992]], [0.503, [1.000, 0.992, 0.992]], [0.505, [1.000, 0.976, 0.976]], [0.507, [1.000, 0.976, 0.976]], [0.509, [1.000, 0.961, 0.961]], [0.511, [1.000, 0.961, 0.961]], [0.513, [1.000, 0.945, 0.945]], [0.515, [1.000, 0.945, 0.945]], [0.517, [1.000, 0.929, 0.929]], [0.519, [1.000, 0.929, 0.929]], [0.521, [1.000, 0.914, 0.914]], [0.523, [1.000, 0.914, 0.914]], [0.524, [1.000, 0.898, 0.898]], [0.526, [1.000, 0.898, 0.898]], [0.528, [1.000, 0.882, 0.882]], [0.530, [1.000, 0.882, 0.882]], [0.532, [1.000, 0.867, 0.867]], [0.534, [1.000, 0.867, 0.867]], [0.536, [1.000, 0.851, 0.851]], [0.538, [1.000, 0.851, 0.851]], [0.540, [1.000, 0.835, 0.835]], [0.542, [1.000, 0.835, 0.835]], [0.544, [1.000, 0.820, 0.820]], [0.546, [1.000, 0.820, 0.820]], [0.548, [1.000, 0.804, 0.804]], [0.550, [1.000, 0.804, 0.804]], [0.552, [1.000, 0.788, 0.788]], [0.554, [1.000, 0.788, 0.788]], [0.556, [1.000, 0.773, 0.773]], [0.558, [1.000, 0.773, 0.773]], [0.560, [1.000, 0.757, 0.757]], [0.562, [1.000, 0.757, 0.757]], [0.564, [1.000, 0.741, 0.741]], [0.566, [1.000, 0.741, 0.741]], [0.568, [1.000, 0.725, 0.725]], [0.569, [1.000, 0.725, 0.725]], [0.571, [1.000, 0.710, 0.710]], [0.573, [1.000, 0.710, 0.710]], [0.575, [1.000, 0.694, 0.694]], [0.577, [1.000, 0.694, 0.694]], [0.579, [1.000, 0.678, 0.678]], [0.581, [1.000, 0.678, 0.678]], [0.583, [1.000, 0.663, 0.663]], [0.585, [1.000, 0.663, 0.663]], [0.587, [1.000, 0.647, 0.647]], [0.589, [1.000, 0.647, 0.647]], [0.591, [1.000, 0.631, 0.631]], [0.593, [1.000, 0.631, 0.631]], [0.595, [1.000, 0.616, 0.616]], [0.597, [1.000, 0.616, 0.616]], [0.599, [1.000, 0.600, 0.600]], [0.601, [1.000, 0.600, 0.600]], [0.603, [1.000, 0.584, 0.584]], [0.605, [1.000, 0.584, 0.584]], [0.607, [1.000, 0.569, 0.569]], [0.609, [1.000, 0.569, 0.569]], [0.611, [1.000, 0.553, 0.553]], [0.613, [1.000, 0.553, 0.553]], [0.614, [1.000, 0.537, 0.537]], [0.616, [1.000, 0.537, 0.537]], [0.618, [1.000, 0.522, 0.522]], [0.620, [1.000, 0.522, 0.522]], [0.622, [1.000, 0.506, 0.506]], [0.624, [1.000, 0.506, 0.506]], [0.626, [1.000, 0.490, 0.490]], [0.628, [1.000, 0.490, 0.490]], [0.630, [1.000, 0.475, 0.475]], [0.632, [1.000, 0.475, 0.475]], [0.634, [1.000, 0.459, 0.459]], [0.636, [1.000, 0.459, 0.459]], [0.638, [1.000, 0.443, 0.443]], [0.640, [1.000, 0.443, 0.443]], [0.642, [1.000, 0.427, 0.427]], [0.644, [1.000, 0.427, 0.427]], [0.646, [1.000, 0.412, 0.412]], [0.648, [1.000, 0.412, 0.412]], [0.650, [1.000, 0.396, 0.396]], [0.652, [1.000, 0.396, 0.396]], [0.654, [1.000, 0.380, 0.380]], [0.656, [1.000, 0.380, 0.380]], [0.658, [1.000, 0.365, 0.365]], [0.659, [1.000, 0.365, 0.365]], [0.661, [1.000, 0.349, 0.349]], [0.663, [1.000, 0.349, 0.349]], [0.665, [1.000, 0.333, 0.333]], [0.667, [1.000, 0.333, 0.333]], [0.669, [1.000, 0.318, 0.318]], [0.671, [1.000, 0.318, 0.318]], [0.673, [1.000, 0.302, 0.302]], [0.675, [1.000, 0.302, 0.302]], [0.677, [1.000, 0.286, 0.286]], [0.679, [1.000, 0.286, 0.286]], [0.681, [1.000, 0.271, 0.271]], [0.683, [1.000, 0.271, 0.271]], [0.685, [1.000, 0.255, 0.255]], [0.687, [1.000, 0.255, 0.255]], [0.689, [1.000, 0.239, 0.239]], [0.691, [1.000, 0.239, 0.239]], [0.693, [1.000, 0.224, 0.224]], [0.695, [1.000, 0.224, 0.224]], [0.697, [1.000, 0.208, 0.208]], [0.699, [1.000, 0.208, 0.208]], [0.701, [1.000, 0.192, 0.192]], [0.703, [1.000, 0.192, 0.192]], [0.705, [1.000, 0.176, 0.176]], [0.706, [1.000, 0.176, 0.176]], [0.708, [1.000, 0.161, 0.161]], [0.710, [1.000, 0.161, 0.161]], [0.712, [1.000, 0.145, 0.145]], [0.714, [1.000, 0.145, 0.145]], [0.716, [1.000, 0.129, 0.129]], [0.718, [1.000, 0.129, 0.129]], [0.720, [1.000, 0.114, 0.114]], [0.722, [1.000, 0.114, 0.114]], [0.724, [1.000, 0.098, 0.098]], [0.726, [1.000, 0.098, 0.098]], [0.728, [1.000, 0.082, 0.082]], [0.730, [1.000, 0.082, 0.082]], [0.732, [1.000, 0.067, 0.067]], [0.734, [1.000, 0.067, 0.067]], [0.736, [1.000, 0.051, 0.051]], [0.738, [1.000, 0.051, 0.051]], [0.740, [1.000, 0.035, 0.035]], [0.742, [1.000, 0.035, 0.035]], [0.744, [1.000, 0.020, 0.020]], [0.746, [1.000, 0.020, 0.020]], [0.748, [1.000, 0.004, 0.004]], [0.750, [1.000, 0.004, 0.004]], [0.751, [0.994, 0.000, 0.000]], [0.753, [0.994, 0.000, 0.000]], [0.755, [0.986, 0.000, 0.000]], [0.757, [0.986, 0.000, 0.000]], [0.759, [0.978, 0.000, 0.000]], [0.761, [0.978, 0.000, 0.000]], [0.763, [0.971, 0.000, 0.000]], [0.765, [0.971, 0.000, 0.000]], [0.767, [0.963, 0.000, 0.000]], [0.769, [0.963, 0.000, 0.000]], [0.771, [0.955, 0.000, 0.000]], [0.773, [0.955, 0.000, 0.000]], [0.775, [0.947, 0.000, 0.000]], [0.777, [0.947, 0.000, 0.000]], [0.779, [0.939, 0.000, 0.000]], [0.781, [0.939, 0.000, 0.000]], [0.783, [0.931, 0.000, 0.000]], [0.785, [0.931, 0.000, 0.000]], [0.787, [0.924, 0.000, 0.000]], [0.789, [0.924, 0.000, 0.000]], [0.791, [0.916, 0.000, 0.000]], [0.793, [0.916, 0.000, 0.000]], [0.795, [0.908, 0.000, 0.000]], [0.796, [0.908, 0.000, 0.000]], [0.798, [0.900, 0.000, 0.000]], [0.800, [0.900, 0.000, 0.000]], [0.802, [0.892, 0.000, 0.000]], [0.804, [0.892, 0.000, 0.000]], [0.806, [0.884, 0.000, 0.000]], [0.808, [0.884, 0.000, 0.000]], [0.810, [0.876, 0.000, 0.000]], [0.812, [0.876, 0.000, 0.000]], [0.814, [0.869, 0.000, 0.000]], [0.816, [0.869, 0.000, 0.000]], [0.818, [0.861, 0.000, 0.000]], [0.820, [0.861, 0.000, 0.000]], [0.822, [0.853, 0.000, 0.000]], [0.824, [0.853, 0.000, 0.000]], [0.826, [0.845, 0.000, 0.000]], [0.828, [0.845, 0.000, 0.000]], [0.830, [0.837, 0.000, 0.000]], [0.832, [0.837, 0.000, 0.000]], [0.834, [0.829, 0.000, 0.000]], [0.836, [0.829, 0.000, 0.000]], [0.838, [0.822, 0.000, 0.000]], [0.840, [0.822, 0.000, 0.000]], [0.841, [0.814, 0.000, 0.000]], [0.843, [0.814, 0.000, 0.000]], [0.845, [0.806, 0.000, 0.000]], [0.847, [0.806, 0.000, 0.000]], [0.849, [0.798, 0.000, 0.000]], [0.851, [0.798, 0.000, 0.000]], [0.853, [0.790, 0.000, 0.000]], [0.855, [0.790, 0.000, 0.000]], [0.857, [0.782, 0.000, 0.000]], [0.859, [0.782, 0.000, 0.000]], [0.861, [0.775, 0.000, 0.000]], [0.863, [0.775, 0.000, 0.000]], [0.865, [0.767, 0.000, 0.000]], [0.867, [0.767, 0.000, 0.000]], [0.869, [0.759, 0.000, 0.000]], [0.871, [0.759, 0.000, 0.000]], [0.873, [0.751, 0.000, 0.000]], [0.875, [0.751, 0.000, 0.000]], [0.877, [0.743, 0.000, 0.000]], [0.879, [0.743, 0.000, 0.000]], [0.881, [0.735, 0.000, 0.000]], [0.883, [0.735, 0.000, 0.000]], [0.885, [0.727, 0.000, 0.000]], [0.886, [0.727, 0.000, 0.000]], [0.888, [0.720, 0.000, 0.000]], [0.890, [0.720, 0.000, 0.000]], [0.892, [0.712, 0.000, 0.000]], [0.894, [0.712, 0.000, 0.000]], [0.896, [0.704, 0.000, 0.000]], [0.898, [0.704, 0.000, 0.000]], [0.900, [0.696, 0.000, 0.000]], [0.902, [0.696, 0.000, 0.000]], [0.904, [0.688, 0.000, 0.000]], [0.906, [0.688, 0.000, 0.000]], [0.908, [0.680, 0.000, 0.000]], [0.910, [0.680, 0.000, 0.000]], [0.912, [0.673, 0.000, 0.000]], [0.914, [0.673, 0.000, 0.000]], [0.916, [0.665, 0.000, 0.000]], [0.918, [0.665, 0.000, 0.000]], [0.920, [0.657, 0.000, 0.000]], [0.922, [0.657, 0.000, 0.000]], [0.924, [0.649, 0.000, 0.000]], [0.926, [0.649, 0.000, 0.000]], [0.928, [0.641, 0.000, 0.000]], [0.930, [0.641, 0.000, 0.000]], [0.932, [0.633, 0.000, 0.000]], [0.933, [0.633, 0.000, 0.000]], [0.935, [0.625, 0.000, 0.000]], [0.937, [0.625, 0.000, 0.000]], [0.939, [0.618, 0.000, 0.000]], [0.941, [0.618, 0.000, 0.000]], [0.943, [0.610, 0.000, 0.000]], [0.945, [0.610, 0.000, 0.000]], [0.947, [0.602, 0.000, 0.000]], [0.949, [0.602, 0.000, 0.000]], [0.951, [0.594, 0.000, 0.000]], [0.953, [0.594, 0.000, 0.000]], [0.955, [0.586, 0.000, 0.000]], [0.957, [0.586, 0.000, 0.000]], [0.959, [0.578, 0.000, 0.000]], [0.961, [0.578, 0.000, 0.000]], [0.963, [0.571, 0.000, 0.000]], [0.965, [0.571, 0.000, 0.000]], [0.967, [0.563, 0.000, 0.000]], [0.969, [0.563, 0.000, 0.000]], [0.971, [0.555, 0.000, 0.000]], [0.973, [0.555, 0.000, 0.000]], [0.975, [0.547, 0.000, 0.000]], [0.977, [0.547, 0.000, 0.000]], [0.978, [0.539, 0.000, 0.000]], [0.980, [0.539, 0.000, 0.000]], [0.982, [0.531, 0.000, 0.000]], [0.984, [0.531, 0.000, 0.000]], [0.986, [0.524, 0.000, 0.000]], [0.988, [0.524, 0.000, 0.000]], [0.990, [0.516, 0.000, 0.000]], [0.992, [0.516, 0.000, 0.000]], [0.994, [0.508, 0.000, 0.000]], [0.996, [0.508, 0.000, 0.000]], [0.998, [0.500, 0.000, 0.000]], [1.000, [0.500, 0.000, 0.000]]]; + +// Qualitative +var Accent = [[0.000, [0.498, 0.788, 0.498]], [0.002, [0.498, 0.788, 0.498]], [0.004, [0.505, 0.785, 0.507]], [0.006, [0.505, 0.785, 0.507]], [0.008, [0.512, 0.782, 0.516]], [0.010, [0.512, 0.782, 0.516]], [0.012, [0.518, 0.780, 0.525]], [0.014, [0.518, 0.780, 0.525]], [0.016, [0.525, 0.777, 0.535]], [0.018, [0.525, 0.777, 0.535]], [0.020, [0.532, 0.774, 0.544]], [0.022, [0.532, 0.774, 0.544]], [0.023, [0.539, 0.771, 0.553]], [0.025, [0.539, 0.771, 0.553]], [0.027, [0.546, 0.768, 0.562]], [0.029, [0.546, 0.768, 0.562]], [0.031, [0.552, 0.765, 0.571]], [0.033, [0.552, 0.765, 0.571]], [0.035, [0.559, 0.762, 0.580]], [0.037, [0.559, 0.762, 0.580]], [0.039, [0.566, 0.759, 0.590]], [0.041, [0.566, 0.759, 0.590]], [0.043, [0.573, 0.756, 0.599]], [0.045, [0.573, 0.756, 0.599]], [0.047, [0.579, 0.753, 0.608]], [0.049, [0.579, 0.753, 0.608]], [0.051, [0.586, 0.750, 0.617]], [0.053, [0.586, 0.750, 0.617]], [0.055, [0.593, 0.748, 0.626]], [0.057, [0.593, 0.748, 0.626]], [0.059, [0.600, 0.745, 0.635]], [0.061, [0.600, 0.745, 0.635]], [0.063, [0.607, 0.742, 0.644]], [0.065, [0.607, 0.742, 0.644]], [0.067, [0.613, 0.739, 0.654]], [0.068, [0.613, 0.739, 0.654]], [0.070, [0.620, 0.736, 0.663]], [0.072, [0.620, 0.736, 0.663]], [0.074, [0.627, 0.733, 0.672]], [0.076, [0.627, 0.733, 0.672]], [0.078, [0.634, 0.730, 0.681]], [0.080, [0.634, 0.730, 0.681]], [0.082, [0.640, 0.727, 0.690]], [0.084, [0.640, 0.727, 0.690]], [0.086, [0.647, 0.724, 0.699]], [0.088, [0.647, 0.724, 0.699]], [0.090, [0.654, 0.721, 0.708]], [0.092, [0.654, 0.721, 0.708]], [0.094, [0.661, 0.718, 0.718]], [0.096, [0.661, 0.718, 0.718]], [0.098, [0.668, 0.716, 0.727]], [0.100, [0.668, 0.716, 0.727]], [0.102, [0.674, 0.713, 0.736]], [0.104, [0.674, 0.713, 0.736]], [0.106, [0.681, 0.710, 0.745]], [0.108, [0.681, 0.710, 0.745]], [0.110, [0.688, 0.707, 0.754]], [0.112, [0.688, 0.707, 0.754]], [0.114, [0.695, 0.704, 0.763]], [0.115, [0.695, 0.704, 0.763]], [0.117, [0.701, 0.701, 0.773]], [0.119, [0.701, 0.701, 0.773]], [0.121, [0.708, 0.698, 0.782]], [0.123, [0.708, 0.698, 0.782]], [0.125, [0.715, 0.695, 0.791]], [0.127, [0.715, 0.695, 0.791]], [0.129, [0.722, 0.692, 0.800]], [0.131, [0.722, 0.692, 0.800]], [0.133, [0.729, 0.689, 0.809]], [0.135, [0.729, 0.689, 0.809]], [0.137, [0.735, 0.687, 0.818]], [0.139, [0.735, 0.687, 0.818]], [0.141, [0.742, 0.684, 0.827]], [0.143, [0.742, 0.684, 0.827]], [0.145, [0.749, 0.683, 0.827]], [0.147, [0.749, 0.683, 0.827]], [0.149, [0.756, 0.685, 0.818]], [0.151, [0.756, 0.685, 0.818]], [0.153, [0.763, 0.687, 0.810]], [0.155, [0.763, 0.687, 0.810]], [0.157, [0.769, 0.689, 0.801]], [0.159, [0.769, 0.689, 0.801]], [0.160, [0.776, 0.691, 0.793]], [0.162, [0.776, 0.691, 0.793]], [0.164, [0.783, 0.693, 0.785]], [0.166, [0.783, 0.693, 0.785]], [0.168, [0.790, 0.695, 0.776]], [0.170, [0.790, 0.695, 0.776]], [0.172, [0.796, 0.697, 0.768]], [0.174, [0.796, 0.697, 0.768]], [0.176, [0.803, 0.699, 0.759]], [0.178, [0.803, 0.699, 0.759]], [0.180, [0.810, 0.701, 0.751]], [0.182, [0.810, 0.701, 0.751]], [0.184, [0.817, 0.703, 0.743]], [0.186, [0.817, 0.703, 0.743]], [0.188, [0.824, 0.705, 0.734]], [0.190, [0.824, 0.705, 0.734]], [0.192, [0.830, 0.707, 0.726]], [0.194, [0.830, 0.707, 0.726]], [0.196, [0.837, 0.709, 0.717]], [0.198, [0.837, 0.709, 0.717]], [0.200, [0.844, 0.711, 0.709]], [0.202, [0.844, 0.711, 0.709]], [0.204, [0.851, 0.713, 0.701]], [0.205, [0.851, 0.713, 0.701]], [0.207, [0.857, 0.714, 0.692]], [0.209, [0.857, 0.714, 0.692]], [0.211, [0.864, 0.716, 0.684]], [0.213, [0.864, 0.716, 0.684]], [0.215, [0.871, 0.718, 0.675]], [0.217, [0.871, 0.718, 0.675]], [0.219, [0.878, 0.720, 0.667]], [0.221, [0.878, 0.720, 0.667]], [0.223, [0.885, 0.722, 0.659]], [0.225, [0.885, 0.722, 0.659]], [0.227, [0.891, 0.724, 0.650]], [0.229, [0.891, 0.724, 0.650]], [0.231, [0.898, 0.726, 0.642]], [0.233, [0.898, 0.726, 0.642]], [0.235, [0.905, 0.728, 0.633]], [0.237, [0.905, 0.728, 0.633]], [0.239, [0.912, 0.730, 0.625]], [0.241, [0.912, 0.730, 0.625]], [0.243, [0.919, 0.732, 0.617]], [0.245, [0.919, 0.732, 0.617]], [0.247, [0.925, 0.734, 0.608]], [0.249, [0.925, 0.734, 0.608]], [0.250, [0.932, 0.736, 0.600]], [0.252, [0.932, 0.736, 0.600]], [0.254, [0.939, 0.738, 0.591]], [0.256, [0.939, 0.738, 0.591]], [0.258, [0.946, 0.740, 0.583]], [0.260, [0.946, 0.740, 0.583]], [0.262, [0.952, 0.742, 0.575]], [0.264, [0.952, 0.742, 0.575]], [0.266, [0.959, 0.744, 0.566]], [0.268, [0.959, 0.744, 0.566]], [0.270, [0.966, 0.745, 0.558]], [0.272, [0.966, 0.745, 0.558]], [0.274, [0.973, 0.747, 0.549]], [0.276, [0.973, 0.747, 0.549]], [0.278, [0.980, 0.749, 0.541]], [0.280, [0.980, 0.749, 0.541]], [0.282, [0.986, 0.751, 0.533]], [0.284, [0.986, 0.751, 0.533]], [0.286, [0.992, 0.754, 0.526]], [0.288, [0.992, 0.754, 0.526]], [0.290, [0.992, 0.761, 0.528]], [0.292, [0.992, 0.761, 0.528]], [0.294, [0.993, 0.767, 0.530]], [0.295, [0.993, 0.767, 0.530]], [0.297, [0.993, 0.774, 0.532]], [0.299, [0.993, 0.774, 0.532]], [0.301, [0.993, 0.781, 0.534]], [0.303, [0.993, 0.781, 0.534]], [0.305, [0.993, 0.788, 0.536]], [0.307, [0.993, 0.788, 0.536]], [0.309, [0.993, 0.795, 0.538]], [0.311, [0.993, 0.795, 0.538]], [0.313, [0.994, 0.801, 0.540]], [0.315, [0.994, 0.801, 0.540]], [0.317, [0.994, 0.808, 0.542]], [0.319, [0.994, 0.808, 0.542]], [0.321, [0.994, 0.815, 0.544]], [0.323, [0.994, 0.815, 0.544]], [0.325, [0.994, 0.822, 0.546]], [0.327, [0.994, 0.822, 0.546]], [0.329, [0.995, 0.829, 0.548]], [0.331, [0.995, 0.829, 0.548]], [0.333, [0.995, 0.835, 0.550]], [0.335, [0.995, 0.835, 0.550]], [0.337, [0.995, 0.842, 0.552]], [0.339, [0.995, 0.842, 0.552]], [0.341, [0.995, 0.849, 0.554]], [0.342, [0.995, 0.849, 0.554]], [0.344, [0.995, 0.856, 0.556]], [0.346, [0.995, 0.856, 0.556]], [0.348, [0.996, 0.862, 0.559]], [0.350, [0.996, 0.862, 0.559]], [0.352, [0.996, 0.869, 0.561]], [0.354, [0.996, 0.869, 0.561]], [0.356, [0.996, 0.876, 0.563]], [0.358, [0.996, 0.876, 0.563]], [0.360, [0.996, 0.883, 0.565]], [0.362, [0.996, 0.883, 0.565]], [0.364, [0.996, 0.890, 0.567]], [0.366, [0.996, 0.890, 0.567]], [0.368, [0.997, 0.896, 0.569]], [0.370, [0.997, 0.896, 0.569]], [0.372, [0.997, 0.903, 0.571]], [0.374, [0.997, 0.903, 0.571]], [0.376, [0.997, 0.910, 0.573]], [0.378, [0.997, 0.910, 0.573]], [0.380, [0.997, 0.917, 0.575]], [0.382, [0.997, 0.917, 0.575]], [0.384, [0.998, 0.923, 0.577]], [0.386, [0.998, 0.923, 0.577]], [0.387, [0.998, 0.930, 0.579]], [0.389, [0.998, 0.930, 0.579]], [0.391, [0.998, 0.937, 0.581]], [0.393, [0.998, 0.937, 0.581]], [0.395, [0.998, 0.944, 0.583]], [0.397, [0.998, 0.944, 0.583]], [0.399, [0.998, 0.951, 0.585]], [0.401, [0.998, 0.951, 0.585]], [0.403, [0.999, 0.957, 0.587]], [0.405, [0.999, 0.957, 0.587]], [0.407, [0.999, 0.964, 0.589]], [0.409, [0.999, 0.964, 0.589]], [0.411, [0.999, 0.971, 0.591]], [0.413, [0.999, 0.971, 0.591]], [0.415, [0.999, 0.978, 0.593]], [0.417, [0.999, 0.978, 0.593]], [0.419, [1.000, 0.984, 0.595]], [0.421, [1.000, 0.984, 0.595]], [0.423, [1.000, 0.991, 0.597]], [0.425, [1.000, 0.991, 0.597]], [0.427, [1.000, 0.998, 0.599]], [0.429, [1.000, 0.998, 0.599]], [0.431, [0.985, 0.989, 0.602]], [0.432, [0.985, 0.989, 0.602]], [0.434, [0.963, 0.973, 0.604]], [0.436, [0.963, 0.973, 0.604]], [0.438, [0.942, 0.957, 0.607]], [0.440, [0.942, 0.957, 0.607]], [0.442, [0.920, 0.941, 0.609]], [0.444, [0.920, 0.941, 0.609]], [0.446, [0.899, 0.925, 0.612]], [0.448, [0.899, 0.925, 0.612]], [0.450, [0.878, 0.910, 0.614]], [0.452, [0.878, 0.910, 0.614]], [0.454, [0.856, 0.894, 0.617]], [0.456, [0.856, 0.894, 0.617]], [0.458, [0.835, 0.878, 0.619]], [0.460, [0.835, 0.878, 0.619]], [0.462, [0.813, 0.862, 0.622]], [0.464, [0.813, 0.862, 0.622]], [0.466, [0.792, 0.846, 0.624]], [0.468, [0.792, 0.846, 0.624]], [0.470, [0.770, 0.830, 0.627]], [0.472, [0.770, 0.830, 0.627]], [0.474, [0.749, 0.815, 0.629]], [0.476, [0.749, 0.815, 0.629]], [0.477, [0.728, 0.799, 0.631]], [0.479, [0.728, 0.799, 0.631]], [0.481, [0.706, 0.783, 0.634]], [0.483, [0.706, 0.783, 0.634]], [0.485, [0.685, 0.767, 0.636]], [0.487, [0.685, 0.767, 0.636]], [0.489, [0.663, 0.751, 0.639]], [0.491, [0.663, 0.751, 0.639]], [0.493, [0.642, 0.736, 0.641]], [0.495, [0.642, 0.736, 0.641]], [0.497, [0.621, 0.720, 0.644]], [0.499, [0.621, 0.720, 0.644]], [0.501, [0.599, 0.704, 0.646]], [0.503, [0.599, 0.704, 0.646]], [0.505, [0.578, 0.688, 0.649]], [0.507, [0.578, 0.688, 0.649]], [0.509, [0.556, 0.672, 0.651]], [0.511, [0.556, 0.672, 0.651]], [0.513, [0.535, 0.656, 0.654]], [0.515, [0.535, 0.656, 0.654]], [0.517, [0.513, 0.641, 0.656]], [0.519, [0.513, 0.641, 0.656]], [0.521, [0.492, 0.625, 0.659]], [0.523, [0.492, 0.625, 0.659]], [0.524, [0.471, 0.609, 0.661]], [0.526, [0.471, 0.609, 0.661]], [0.528, [0.449, 0.593, 0.664]], [0.530, [0.449, 0.593, 0.664]], [0.532, [0.428, 0.577, 0.666]], [0.534, [0.428, 0.577, 0.666]], [0.536, [0.406, 0.561, 0.669]], [0.538, [0.406, 0.561, 0.669]], [0.540, [0.385, 0.546, 0.671]], [0.542, [0.385, 0.546, 0.671]], [0.544, [0.363, 0.530, 0.674]], [0.546, [0.363, 0.530, 0.674]], [0.548, [0.342, 0.514, 0.676]], [0.550, [0.342, 0.514, 0.676]], [0.552, [0.321, 0.498, 0.679]], [0.554, [0.321, 0.498, 0.679]], [0.556, [0.299, 0.482, 0.681]], [0.558, [0.299, 0.482, 0.681]], [0.560, [0.278, 0.466, 0.683]], [0.562, [0.278, 0.466, 0.683]], [0.564, [0.256, 0.451, 0.686]], [0.566, [0.256, 0.451, 0.686]], [0.568, [0.235, 0.435, 0.688]], [0.569, [0.235, 0.435, 0.688]], [0.571, [0.225, 0.420, 0.689]], [0.573, [0.225, 0.420, 0.689]], [0.575, [0.245, 0.409, 0.683]], [0.577, [0.245, 0.409, 0.683]], [0.579, [0.265, 0.397, 0.678]], [0.581, [0.265, 0.397, 0.678]], [0.583, [0.285, 0.386, 0.673]], [0.585, [0.285, 0.386, 0.673]], [0.587, [0.304, 0.375, 0.668]], [0.589, [0.304, 0.375, 0.668]], [0.591, [0.324, 0.363, 0.662]], [0.593, [0.324, 0.363, 0.662]], [0.595, [0.344, 0.352, 0.657]], [0.597, [0.344, 0.352, 0.657]], [0.599, [0.364, 0.340, 0.652]], [0.601, [0.364, 0.340, 0.652]], [0.603, [0.384, 0.329, 0.646]], [0.605, [0.384, 0.329, 0.646]], [0.607, [0.404, 0.318, 0.641]], [0.609, [0.404, 0.318, 0.641]], [0.611, [0.423, 0.306, 0.636]], [0.613, [0.423, 0.306, 0.636]], [0.614, [0.443, 0.295, 0.631]], [0.616, [0.443, 0.295, 0.631]], [0.618, [0.463, 0.283, 0.625]], [0.620, [0.463, 0.283, 0.625]], [0.622, [0.483, 0.272, 0.620]], [0.624, [0.483, 0.272, 0.620]], [0.626, [0.503, 0.261, 0.615]], [0.628, [0.503, 0.261, 0.615]], [0.630, [0.522, 0.249, 0.610]], [0.632, [0.522, 0.249, 0.610]], [0.634, [0.542, 0.238, 0.604]], [0.636, [0.542, 0.238, 0.604]], [0.638, [0.562, 0.226, 0.599]], [0.640, [0.562, 0.226, 0.599]], [0.642, [0.582, 0.215, 0.594]], [0.644, [0.582, 0.215, 0.594]], [0.646, [0.602, 0.203, 0.588]], [0.648, [0.602, 0.203, 0.588]], [0.650, [0.621, 0.192, 0.583]], [0.652, [0.621, 0.192, 0.583]], [0.654, [0.641, 0.181, 0.578]], [0.656, [0.641, 0.181, 0.578]], [0.658, [0.661, 0.169, 0.573]], [0.659, [0.661, 0.169, 0.573]], [0.661, [0.681, 0.158, 0.567]], [0.663, [0.681, 0.158, 0.567]], [0.665, [0.701, 0.146, 0.562]], [0.667, [0.701, 0.146, 0.562]], [0.669, [0.720, 0.135, 0.557]], [0.671, [0.720, 0.135, 0.557]], [0.673, [0.740, 0.124, 0.552]], [0.675, [0.740, 0.124, 0.552]], [0.677, [0.760, 0.112, 0.546]], [0.679, [0.760, 0.112, 0.546]], [0.681, [0.780, 0.101, 0.541]], [0.683, [0.780, 0.101, 0.541]], [0.685, [0.800, 0.089, 0.536]], [0.687, [0.800, 0.089, 0.536]], [0.689, [0.820, 0.078, 0.530]], [0.691, [0.820, 0.078, 0.530]], [0.693, [0.839, 0.067, 0.525]], [0.695, [0.839, 0.067, 0.525]], [0.697, [0.859, 0.055, 0.520]], [0.699, [0.859, 0.055, 0.520]], [0.701, [0.879, 0.044, 0.515]], [0.703, [0.879, 0.044, 0.515]], [0.705, [0.899, 0.032, 0.509]], [0.706, [0.899, 0.032, 0.509]], [0.708, [0.919, 0.021, 0.504]], [0.710, [0.919, 0.021, 0.504]], [0.712, [0.938, 0.009, 0.499]], [0.714, [0.938, 0.009, 0.499]], [0.716, [0.937, 0.016, 0.488]], [0.718, [0.937, 0.016, 0.488]], [0.720, [0.931, 0.026, 0.477]], [0.722, [0.931, 0.026, 0.477]], [0.724, [0.926, 0.035, 0.466]], [0.726, [0.926, 0.035, 0.466]], [0.728, [0.921, 0.045, 0.455]], [0.730, [0.921, 0.045, 0.455]], [0.732, [0.916, 0.054, 0.444]], [0.734, [0.916, 0.054, 0.444]], [0.736, [0.910, 0.064, 0.432]], [0.738, [0.910, 0.064, 0.432]], [0.740, [0.905, 0.074, 0.421]], [0.742, [0.905, 0.074, 0.421]], [0.744, [0.900, 0.083, 0.410]], [0.746, [0.900, 0.083, 0.410]], [0.748, [0.894, 0.093, 0.399]], [0.750, [0.894, 0.093, 0.399]], [0.751, [0.889, 0.102, 0.388]], [0.753, [0.889, 0.102, 0.388]], [0.755, [0.884, 0.112, 0.376]], [0.757, [0.884, 0.112, 0.376]], [0.759, [0.879, 0.121, 0.365]], [0.761, [0.879, 0.121, 0.365]], [0.763, [0.873, 0.131, 0.354]], [0.765, [0.873, 0.131, 0.354]], [0.767, [0.868, 0.141, 0.343]], [0.769, [0.868, 0.141, 0.343]], [0.771, [0.863, 0.150, 0.332]], [0.773, [0.863, 0.150, 0.332]], [0.775, [0.858, 0.160, 0.321]], [0.777, [0.858, 0.160, 0.321]], [0.779, [0.852, 0.169, 0.309]], [0.781, [0.852, 0.169, 0.309]], [0.783, [0.847, 0.179, 0.298]], [0.785, [0.847, 0.179, 0.298]], [0.787, [0.842, 0.189, 0.287]], [0.789, [0.842, 0.189, 0.287]], [0.791, [0.836, 0.198, 0.276]], [0.793, [0.836, 0.198, 0.276]], [0.795, [0.831, 0.208, 0.265]], [0.796, [0.831, 0.208, 0.265]], [0.798, [0.826, 0.217, 0.253]], [0.800, [0.826, 0.217, 0.253]], [0.802, [0.821, 0.227, 0.242]], [0.804, [0.821, 0.227, 0.242]], [0.806, [0.815, 0.236, 0.231]], [0.808, [0.815, 0.236, 0.231]], [0.810, [0.810, 0.246, 0.220]], [0.812, [0.810, 0.246, 0.220]], [0.814, [0.805, 0.256, 0.209]], [0.816, [0.805, 0.256, 0.209]], [0.818, [0.800, 0.265, 0.197]], [0.820, [0.800, 0.265, 0.197]], [0.822, [0.794, 0.275, 0.186]], [0.824, [0.794, 0.275, 0.186]], [0.826, [0.789, 0.284, 0.175]], [0.828, [0.789, 0.284, 0.175]], [0.830, [0.784, 0.294, 0.164]], [0.832, [0.784, 0.294, 0.164]], [0.834, [0.778, 0.303, 0.153]], [0.836, [0.778, 0.303, 0.153]], [0.838, [0.773, 0.313, 0.141]], [0.840, [0.773, 0.313, 0.141]], [0.841, [0.768, 0.323, 0.130]], [0.843, [0.768, 0.323, 0.130]], [0.845, [0.763, 0.332, 0.119]], [0.847, [0.763, 0.332, 0.119]], [0.849, [0.757, 0.342, 0.108]], [0.851, [0.757, 0.342, 0.108]], [0.853, [0.752, 0.351, 0.097]], [0.855, [0.752, 0.351, 0.097]], [0.857, [0.745, 0.357, 0.094]], [0.859, [0.745, 0.357, 0.094]], [0.861, [0.735, 0.359, 0.102]], [0.863, [0.735, 0.359, 0.102]], [0.865, [0.726, 0.360, 0.111]], [0.867, [0.726, 0.360, 0.111]], [0.869, [0.716, 0.361, 0.119]], [0.871, [0.716, 0.361, 0.119]], [0.873, [0.707, 0.362, 0.128]], [0.875, [0.707, 0.362, 0.128]], [0.877, [0.697, 0.363, 0.136]], [0.879, [0.697, 0.363, 0.136]], [0.881, [0.687, 0.364, 0.145]], [0.883, [0.687, 0.364, 0.145]], [0.885, [0.678, 0.366, 0.153]], [0.886, [0.678, 0.366, 0.153]], [0.888, [0.668, 0.367, 0.162]], [0.890, [0.668, 0.367, 0.162]], [0.892, [0.659, 0.368, 0.170]], [0.894, [0.659, 0.368, 0.170]], [0.896, [0.649, 0.369, 0.179]], [0.898, [0.649, 0.369, 0.179]], [0.900, [0.640, 0.370, 0.187]], [0.902, [0.640, 0.370, 0.187]], [0.904, [0.630, 0.372, 0.196]], [0.906, [0.630, 0.372, 0.196]], [0.908, [0.620, 0.373, 0.204]], [0.910, [0.620, 0.373, 0.204]], [0.912, [0.611, 0.374, 0.213]], [0.914, [0.611, 0.374, 0.213]], [0.916, [0.601, 0.375, 0.221]], [0.918, [0.601, 0.375, 0.221]], [0.920, [0.592, 0.376, 0.230]], [0.922, [0.592, 0.376, 0.230]], [0.924, [0.582, 0.378, 0.238]], [0.926, [0.582, 0.378, 0.238]], [0.928, [0.572, 0.379, 0.247]], [0.930, [0.572, 0.379, 0.247]], [0.932, [0.563, 0.380, 0.255]], [0.933, [0.563, 0.380, 0.255]], [0.935, [0.553, 0.381, 0.264]], [0.937, [0.553, 0.381, 0.264]], [0.939, [0.544, 0.382, 0.272]], [0.941, [0.544, 0.382, 0.272]], [0.943, [0.534, 0.383, 0.281]], [0.945, [0.534, 0.383, 0.281]], [0.947, [0.525, 0.385, 0.289]], [0.949, [0.525, 0.385, 0.289]], [0.951, [0.515, 0.386, 0.298]], [0.953, [0.515, 0.386, 0.298]], [0.955, [0.505, 0.387, 0.306]], [0.957, [0.505, 0.387, 0.306]], [0.959, [0.496, 0.388, 0.315]], [0.961, [0.496, 0.388, 0.315]], [0.963, [0.486, 0.389, 0.323]], [0.965, [0.486, 0.389, 0.323]], [0.967, [0.477, 0.391, 0.332]], [0.969, [0.477, 0.391, 0.332]], [0.971, [0.467, 0.392, 0.340]], [0.973, [0.467, 0.392, 0.340]], [0.975, [0.457, 0.393, 0.349]], [0.977, [0.457, 0.393, 0.349]], [0.978, [0.448, 0.394, 0.357]], [0.980, [0.448, 0.394, 0.357]], [0.982, [0.438, 0.395, 0.366]], [0.984, [0.438, 0.395, 0.366]], [0.986, [0.429, 0.396, 0.374]], [0.988, [0.429, 0.396, 0.374]], [0.990, [0.419, 0.398, 0.383]], [0.992, [0.419, 0.398, 0.383]], [0.994, [0.410, 0.399, 0.391]], [0.996, [0.410, 0.399, 0.391]], [0.998, [0.400, 0.400, 0.400]], [1.000, [0.400, 0.400, 0.400]]]; +var Dark2 = [[0.000, [0.106, 0.620, 0.467]], [0.002, [0.106, 0.620, 0.467]], [0.004, [0.126, 0.613, 0.454]], [0.006, [0.126, 0.613, 0.454]], [0.008, [0.147, 0.606, 0.441]], [0.010, [0.147, 0.606, 0.441]], [0.012, [0.167, 0.599, 0.429]], [0.014, [0.167, 0.599, 0.429]], [0.016, [0.188, 0.592, 0.416]], [0.018, [0.188, 0.592, 0.416]], [0.020, [0.208, 0.586, 0.404]], [0.022, [0.208, 0.586, 0.404]], [0.023, [0.229, 0.579, 0.391]], [0.025, [0.229, 0.579, 0.391]], [0.027, [0.249, 0.572, 0.379]], [0.029, [0.249, 0.572, 0.379]], [0.031, [0.270, 0.565, 0.366]], [0.033, [0.270, 0.565, 0.366]], [0.035, [0.290, 0.559, 0.353]], [0.037, [0.290, 0.559, 0.353]], [0.039, [0.310, 0.552, 0.341]], [0.041, [0.310, 0.552, 0.341]], [0.043, [0.331, 0.545, 0.328]], [0.045, [0.331, 0.545, 0.328]], [0.047, [0.351, 0.538, 0.316]], [0.049, [0.351, 0.538, 0.316]], [0.051, [0.372, 0.531, 0.303]], [0.053, [0.372, 0.531, 0.303]], [0.055, [0.392, 0.525, 0.290]], [0.057, [0.392, 0.525, 0.290]], [0.059, [0.413, 0.518, 0.278]], [0.061, [0.413, 0.518, 0.278]], [0.063, [0.433, 0.511, 0.265]], [0.065, [0.433, 0.511, 0.265]], [0.067, [0.454, 0.504, 0.253]], [0.068, [0.454, 0.504, 0.253]], [0.070, [0.474, 0.498, 0.240]], [0.072, [0.474, 0.498, 0.240]], [0.074, [0.495, 0.491, 0.227]], [0.076, [0.495, 0.491, 0.227]], [0.078, [0.515, 0.484, 0.215]], [0.080, [0.515, 0.484, 0.215]], [0.082, [0.535, 0.477, 0.202]], [0.084, [0.535, 0.477, 0.202]], [0.086, [0.556, 0.470, 0.190]], [0.088, [0.556, 0.470, 0.190]], [0.090, [0.576, 0.464, 0.177]], [0.092, [0.576, 0.464, 0.177]], [0.094, [0.597, 0.457, 0.164]], [0.096, [0.597, 0.457, 0.164]], [0.098, [0.617, 0.450, 0.152]], [0.100, [0.617, 0.450, 0.152]], [0.102, [0.638, 0.443, 0.139]], [0.104, [0.638, 0.443, 0.139]], [0.106, [0.658, 0.436, 0.127]], [0.108, [0.658, 0.436, 0.127]], [0.110, [0.679, 0.430, 0.114]], [0.112, [0.679, 0.430, 0.114]], [0.114, [0.699, 0.423, 0.101]], [0.115, [0.699, 0.423, 0.101]], [0.117, [0.719, 0.416, 0.089]], [0.119, [0.719, 0.416, 0.089]], [0.121, [0.740, 0.409, 0.076]], [0.123, [0.740, 0.409, 0.076]], [0.125, [0.760, 0.403, 0.064]], [0.127, [0.760, 0.403, 0.064]], [0.129, [0.781, 0.396, 0.051]], [0.131, [0.781, 0.396, 0.051]], [0.133, [0.801, 0.389, 0.038]], [0.135, [0.801, 0.389, 0.038]], [0.137, [0.822, 0.382, 0.026]], [0.139, [0.822, 0.382, 0.026]], [0.141, [0.842, 0.375, 0.013]], [0.143, [0.842, 0.375, 0.013]], [0.145, [0.845, 0.374, 0.019]], [0.147, [0.845, 0.374, 0.019]], [0.149, [0.834, 0.375, 0.038]], [0.151, [0.834, 0.375, 0.038]], [0.153, [0.823, 0.377, 0.057]], [0.155, [0.823, 0.377, 0.057]], [0.157, [0.813, 0.379, 0.076]], [0.159, [0.813, 0.379, 0.076]], [0.160, [0.802, 0.381, 0.095]], [0.162, [0.802, 0.381, 0.095]], [0.164, [0.791, 0.383, 0.114]], [0.166, [0.791, 0.383, 0.114]], [0.168, [0.780, 0.385, 0.133]], [0.170, [0.780, 0.385, 0.133]], [0.172, [0.769, 0.386, 0.152]], [0.174, [0.769, 0.386, 0.152]], [0.176, [0.759, 0.388, 0.171]], [0.178, [0.759, 0.388, 0.171]], [0.180, [0.748, 0.390, 0.190]], [0.182, [0.748, 0.390, 0.190]], [0.184, [0.737, 0.392, 0.209]], [0.186, [0.737, 0.392, 0.209]], [0.188, [0.726, 0.394, 0.228]], [0.190, [0.726, 0.394, 0.228]], [0.192, [0.716, 0.396, 0.247]], [0.194, [0.716, 0.396, 0.247]], [0.196, [0.705, 0.397, 0.266]], [0.198, [0.705, 0.397, 0.266]], [0.200, [0.694, 0.399, 0.285]], [0.202, [0.694, 0.399, 0.285]], [0.204, [0.683, 0.401, 0.305]], [0.205, [0.683, 0.401, 0.305]], [0.207, [0.673, 0.403, 0.324]], [0.209, [0.673, 0.403, 0.324]], [0.211, [0.662, 0.405, 0.343]], [0.213, [0.662, 0.405, 0.343]], [0.215, [0.651, 0.407, 0.362]], [0.217, [0.651, 0.407, 0.362]], [0.219, [0.640, 0.408, 0.381]], [0.221, [0.640, 0.408, 0.381]], [0.223, [0.630, 0.410, 0.400]], [0.225, [0.630, 0.410, 0.400]], [0.227, [0.619, 0.412, 0.419]], [0.229, [0.619, 0.412, 0.419]], [0.231, [0.608, 0.414, 0.438]], [0.233, [0.608, 0.414, 0.438]], [0.235, [0.597, 0.416, 0.457]], [0.237, [0.597, 0.416, 0.457]], [0.239, [0.586, 0.418, 0.476]], [0.241, [0.586, 0.418, 0.476]], [0.243, [0.576, 0.419, 0.495]], [0.245, [0.576, 0.419, 0.495]], [0.247, [0.565, 0.421, 0.514]], [0.249, [0.565, 0.421, 0.514]], [0.250, [0.554, 0.423, 0.533]], [0.252, [0.554, 0.423, 0.533]], [0.254, [0.543, 0.425, 0.552]], [0.256, [0.543, 0.425, 0.552]], [0.258, [0.533, 0.427, 0.571]], [0.260, [0.533, 0.427, 0.571]], [0.262, [0.522, 0.428, 0.590]], [0.264, [0.522, 0.428, 0.590]], [0.266, [0.511, 0.430, 0.609]], [0.268, [0.511, 0.430, 0.609]], [0.270, [0.500, 0.432, 0.628]], [0.272, [0.500, 0.432, 0.628]], [0.274, [0.490, 0.434, 0.648]], [0.276, [0.490, 0.434, 0.648]], [0.278, [0.479, 0.436, 0.667]], [0.280, [0.479, 0.436, 0.667]], [0.282, [0.468, 0.438, 0.686]], [0.284, [0.468, 0.438, 0.686]], [0.286, [0.461, 0.438, 0.701]], [0.288, [0.461, 0.438, 0.701]], [0.290, [0.473, 0.430, 0.697]], [0.292, [0.473, 0.430, 0.697]], [0.294, [0.485, 0.423, 0.693]], [0.295, [0.485, 0.423, 0.693]], [0.297, [0.497, 0.415, 0.688]], [0.299, [0.497, 0.415, 0.688]], [0.301, [0.510, 0.408, 0.684]], [0.303, [0.510, 0.408, 0.684]], [0.305, [0.522, 0.400, 0.679]], [0.307, [0.522, 0.400, 0.679]], [0.309, [0.534, 0.392, 0.675]], [0.311, [0.534, 0.392, 0.675]], [0.313, [0.546, 0.385, 0.670]], [0.315, [0.546, 0.385, 0.670]], [0.317, [0.559, 0.377, 0.666]], [0.319, [0.559, 0.377, 0.666]], [0.321, [0.571, 0.369, 0.662]], [0.323, [0.571, 0.369, 0.662]], [0.325, [0.583, 0.362, 0.657]], [0.327, [0.583, 0.362, 0.657]], [0.329, [0.596, 0.354, 0.653]], [0.331, [0.596, 0.354, 0.653]], [0.333, [0.608, 0.346, 0.648]], [0.335, [0.608, 0.346, 0.648]], [0.337, [0.620, 0.339, 0.644]], [0.339, [0.620, 0.339, 0.644]], [0.341, [0.632, 0.331, 0.640]], [0.342, [0.632, 0.331, 0.640]], [0.344, [0.645, 0.323, 0.635]], [0.346, [0.645, 0.323, 0.635]], [0.348, [0.657, 0.316, 0.631]], [0.350, [0.657, 0.316, 0.631]], [0.352, [0.669, 0.308, 0.626]], [0.354, [0.669, 0.308, 0.626]], [0.356, [0.681, 0.301, 0.622]], [0.358, [0.681, 0.301, 0.622]], [0.360, [0.694, 0.293, 0.617]], [0.362, [0.694, 0.293, 0.617]], [0.364, [0.706, 0.285, 0.613]], [0.366, [0.706, 0.285, 0.613]], [0.368, [0.718, 0.278, 0.609]], [0.370, [0.718, 0.278, 0.609]], [0.372, [0.731, 0.270, 0.604]], [0.374, [0.731, 0.270, 0.604]], [0.376, [0.743, 0.262, 0.600]], [0.378, [0.743, 0.262, 0.600]], [0.380, [0.755, 0.255, 0.595]], [0.382, [0.755, 0.255, 0.595]], [0.384, [0.767, 0.247, 0.591]], [0.386, [0.767, 0.247, 0.591]], [0.387, [0.780, 0.239, 0.587]], [0.389, [0.780, 0.239, 0.587]], [0.391, [0.792, 0.232, 0.582]], [0.393, [0.792, 0.232, 0.582]], [0.395, [0.804, 0.224, 0.578]], [0.397, [0.804, 0.224, 0.578]], [0.399, [0.816, 0.216, 0.573]], [0.401, [0.816, 0.216, 0.573]], [0.403, [0.829, 0.209, 0.569]], [0.405, [0.829, 0.209, 0.569]], [0.407, [0.841, 0.201, 0.565]], [0.409, [0.841, 0.201, 0.565]], [0.411, [0.853, 0.194, 0.560]], [0.413, [0.853, 0.194, 0.560]], [0.415, [0.866, 0.186, 0.556]], [0.417, [0.866, 0.186, 0.556]], [0.419, [0.878, 0.178, 0.551]], [0.421, [0.878, 0.178, 0.551]], [0.423, [0.890, 0.171, 0.547]], [0.425, [0.890, 0.171, 0.547]], [0.427, [0.902, 0.163, 0.542]], [0.429, [0.902, 0.163, 0.542]], [0.431, [0.896, 0.170, 0.533]], [0.432, [0.896, 0.170, 0.533]], [0.434, [0.882, 0.184, 0.521]], [0.436, [0.882, 0.184, 0.521]], [0.438, [0.868, 0.197, 0.510]], [0.440, [0.868, 0.197, 0.510]], [0.442, [0.854, 0.211, 0.498]], [0.444, [0.854, 0.211, 0.498]], [0.446, [0.840, 0.224, 0.486]], [0.448, [0.840, 0.224, 0.486]], [0.450, [0.827, 0.238, 0.475]], [0.452, [0.827, 0.238, 0.475]], [0.454, [0.813, 0.251, 0.463]], [0.456, [0.813, 0.251, 0.463]], [0.458, [0.799, 0.265, 0.451]], [0.460, [0.799, 0.265, 0.451]], [0.462, [0.785, 0.278, 0.440]], [0.464, [0.785, 0.278, 0.440]], [0.466, [0.771, 0.292, 0.428]], [0.468, [0.771, 0.292, 0.428]], [0.470, [0.757, 0.305, 0.417]], [0.472, [0.757, 0.305, 0.417]], [0.474, [0.743, 0.318, 0.405]], [0.476, [0.743, 0.318, 0.405]], [0.477, [0.729, 0.332, 0.393]], [0.479, [0.729, 0.332, 0.393]], [0.481, [0.715, 0.345, 0.382]], [0.483, [0.715, 0.345, 0.382]], [0.485, [0.702, 0.359, 0.370]], [0.487, [0.702, 0.359, 0.370]], [0.489, [0.688, 0.372, 0.358]], [0.491, [0.688, 0.372, 0.358]], [0.493, [0.674, 0.386, 0.347]], [0.495, [0.674, 0.386, 0.347]], [0.497, [0.660, 0.399, 0.335]], [0.499, [0.660, 0.399, 0.335]], [0.501, [0.646, 0.413, 0.324]], [0.503, [0.646, 0.413, 0.324]], [0.505, [0.632, 0.426, 0.312]], [0.507, [0.632, 0.426, 0.312]], [0.509, [0.618, 0.440, 0.300]], [0.511, [0.618, 0.440, 0.300]], [0.513, [0.604, 0.453, 0.289]], [0.515, [0.604, 0.453, 0.289]], [0.517, [0.590, 0.466, 0.277]], [0.519, [0.590, 0.466, 0.277]], [0.521, [0.577, 0.480, 0.265]], [0.523, [0.577, 0.480, 0.265]], [0.524, [0.563, 0.493, 0.254]], [0.526, [0.563, 0.493, 0.254]], [0.528, [0.549, 0.507, 0.242]], [0.530, [0.549, 0.507, 0.242]], [0.532, [0.535, 0.520, 0.231]], [0.534, [0.535, 0.520, 0.231]], [0.536, [0.521, 0.534, 0.219]], [0.538, [0.521, 0.534, 0.219]], [0.540, [0.507, 0.547, 0.207]], [0.542, [0.507, 0.547, 0.207]], [0.544, [0.493, 0.561, 0.196]], [0.546, [0.493, 0.561, 0.196]], [0.548, [0.479, 0.574, 0.184]], [0.550, [0.479, 0.574, 0.184]], [0.552, [0.465, 0.588, 0.172]], [0.554, [0.465, 0.588, 0.172]], [0.556, [0.452, 0.601, 0.161]], [0.558, [0.452, 0.601, 0.161]], [0.560, [0.438, 0.614, 0.149]], [0.562, [0.438, 0.614, 0.149]], [0.564, [0.424, 0.628, 0.138]], [0.566, [0.424, 0.628, 0.138]], [0.568, [0.410, 0.641, 0.126]], [0.569, [0.410, 0.641, 0.126]], [0.571, [0.404, 0.651, 0.117]], [0.573, [0.404, 0.651, 0.117]], [0.575, [0.418, 0.652, 0.114]], [0.577, [0.418, 0.652, 0.114]], [0.579, [0.431, 0.652, 0.111]], [0.581, [0.431, 0.652, 0.111]], [0.583, [0.445, 0.653, 0.108]], [0.585, [0.445, 0.653, 0.108]], [0.587, [0.459, 0.653, 0.105]], [0.589, [0.459, 0.653, 0.105]], [0.591, [0.473, 0.654, 0.102]], [0.593, [0.473, 0.654, 0.102]], [0.595, [0.487, 0.654, 0.099]], [0.597, [0.487, 0.654, 0.099]], [0.599, [0.500, 0.655, 0.096]], [0.601, [0.500, 0.655, 0.096]], [0.603, [0.514, 0.655, 0.093]], [0.605, [0.514, 0.655, 0.093]], [0.607, [0.528, 0.656, 0.090]], [0.609, [0.528, 0.656, 0.090]], [0.611, [0.542, 0.657, 0.087]], [0.613, [0.542, 0.657, 0.087]], [0.614, [0.556, 0.657, 0.084]], [0.616, [0.556, 0.657, 0.084]], [0.618, [0.569, 0.658, 0.081]], [0.620, [0.569, 0.658, 0.081]], [0.622, [0.583, 0.658, 0.078]], [0.624, [0.583, 0.658, 0.078]], [0.626, [0.597, 0.659, 0.075]], [0.628, [0.597, 0.659, 0.075]], [0.630, [0.611, 0.659, 0.072]], [0.632, [0.611, 0.659, 0.072]], [0.634, [0.624, 0.660, 0.069]], [0.636, [0.624, 0.660, 0.069]], [0.638, [0.638, 0.660, 0.066]], [0.640, [0.638, 0.660, 0.066]], [0.642, [0.652, 0.661, 0.063]], [0.644, [0.652, 0.661, 0.063]], [0.646, [0.666, 0.661, 0.060]], [0.648, [0.666, 0.661, 0.060]], [0.650, [0.680, 0.662, 0.057]], [0.652, [0.680, 0.662, 0.057]], [0.654, [0.693, 0.662, 0.053]], [0.656, [0.693, 0.662, 0.053]], [0.658, [0.707, 0.663, 0.050]], [0.659, [0.707, 0.663, 0.050]], [0.661, [0.721, 0.664, 0.047]], [0.663, [0.721, 0.664, 0.047]], [0.665, [0.735, 0.664, 0.044]], [0.667, [0.735, 0.664, 0.044]], [0.669, [0.748, 0.665, 0.041]], [0.671, [0.748, 0.665, 0.041]], [0.673, [0.762, 0.665, 0.038]], [0.675, [0.762, 0.665, 0.038]], [0.677, [0.776, 0.666, 0.035]], [0.679, [0.776, 0.666, 0.035]], [0.681, [0.790, 0.666, 0.032]], [0.683, [0.790, 0.666, 0.032]], [0.685, [0.804, 0.667, 0.029]], [0.687, [0.804, 0.667, 0.029]], [0.689, [0.817, 0.667, 0.026]], [0.691, [0.817, 0.667, 0.026]], [0.693, [0.831, 0.668, 0.023]], [0.695, [0.831, 0.668, 0.023]], [0.697, [0.845, 0.668, 0.020]], [0.699, [0.845, 0.668, 0.020]], [0.701, [0.859, 0.669, 0.017]], [0.703, [0.859, 0.669, 0.017]], [0.705, [0.872, 0.669, 0.014]], [0.706, [0.872, 0.669, 0.014]], [0.708, [0.886, 0.670, 0.011]], [0.710, [0.886, 0.670, 0.011]], [0.712, [0.900, 0.671, 0.008]], [0.714, [0.900, 0.671, 0.008]], [0.716, [0.896, 0.666, 0.010]], [0.718, [0.896, 0.666, 0.010]], [0.720, [0.889, 0.660, 0.013]], [0.722, [0.889, 0.660, 0.013]], [0.724, [0.882, 0.654, 0.016]], [0.726, [0.882, 0.654, 0.016]], [0.728, [0.875, 0.649, 0.019]], [0.730, [0.875, 0.649, 0.019]], [0.732, [0.868, 0.643, 0.022]], [0.734, [0.868, 0.643, 0.022]], [0.736, [0.862, 0.637, 0.025]], [0.738, [0.862, 0.637, 0.025]], [0.740, [0.855, 0.631, 0.028]], [0.742, [0.855, 0.631, 0.028]], [0.744, [0.848, 0.626, 0.031]], [0.746, [0.848, 0.626, 0.031]], [0.748, [0.841, 0.620, 0.034]], [0.750, [0.841, 0.620, 0.034]], [0.751, [0.834, 0.614, 0.036]], [0.753, [0.834, 0.614, 0.036]], [0.755, [0.827, 0.609, 0.039]], [0.757, [0.827, 0.609, 0.039]], [0.759, [0.820, 0.603, 0.042]], [0.761, [0.820, 0.603, 0.042]], [0.763, [0.813, 0.597, 0.045]], [0.765, [0.813, 0.597, 0.045]], [0.767, [0.806, 0.592, 0.048]], [0.769, [0.806, 0.592, 0.048]], [0.771, [0.800, 0.586, 0.051]], [0.773, [0.800, 0.586, 0.051]], [0.775, [0.793, 0.580, 0.054]], [0.777, [0.793, 0.580, 0.054]], [0.779, [0.786, 0.574, 0.057]], [0.781, [0.786, 0.574, 0.057]], [0.783, [0.779, 0.569, 0.060]], [0.785, [0.779, 0.569, 0.060]], [0.787, [0.772, 0.563, 0.063]], [0.789, [0.772, 0.563, 0.063]], [0.791, [0.765, 0.557, 0.066]], [0.793, [0.765, 0.557, 0.066]], [0.795, [0.758, 0.552, 0.068]], [0.796, [0.758, 0.552, 0.068]], [0.798, [0.751, 0.546, 0.071]], [0.800, [0.751, 0.546, 0.071]], [0.802, [0.744, 0.540, 0.074]], [0.804, [0.744, 0.540, 0.074]], [0.806, [0.738, 0.534, 0.077]], [0.808, [0.738, 0.534, 0.077]], [0.810, [0.731, 0.529, 0.080]], [0.812, [0.731, 0.529, 0.080]], [0.814, [0.724, 0.523, 0.083]], [0.816, [0.724, 0.523, 0.083]], [0.818, [0.717, 0.517, 0.086]], [0.820, [0.717, 0.517, 0.086]], [0.822, [0.710, 0.512, 0.089]], [0.824, [0.710, 0.512, 0.089]], [0.826, [0.703, 0.506, 0.092]], [0.828, [0.703, 0.506, 0.092]], [0.830, [0.696, 0.500, 0.095]], [0.832, [0.696, 0.500, 0.095]], [0.834, [0.689, 0.495, 0.098]], [0.836, [0.689, 0.495, 0.098]], [0.838, [0.682, 0.489, 0.100]], [0.840, [0.682, 0.489, 0.100]], [0.841, [0.676, 0.483, 0.103]], [0.843, [0.676, 0.483, 0.103]], [0.845, [0.669, 0.477, 0.106]], [0.847, [0.669, 0.477, 0.106]], [0.849, [0.662, 0.472, 0.109]], [0.851, [0.662, 0.472, 0.109]], [0.853, [0.655, 0.466, 0.112]], [0.855, [0.655, 0.466, 0.112]], [0.857, [0.648, 0.462, 0.117]], [0.859, [0.648, 0.462, 0.117]], [0.861, [0.641, 0.460, 0.125]], [0.863, [0.641, 0.460, 0.125]], [0.865, [0.634, 0.459, 0.133]], [0.867, [0.634, 0.459, 0.133]], [0.869, [0.627, 0.457, 0.141]], [0.871, [0.627, 0.457, 0.141]], [0.873, [0.620, 0.455, 0.149]], [0.875, [0.620, 0.455, 0.149]], [0.877, [0.614, 0.453, 0.156]], [0.879, [0.614, 0.453, 0.156]], [0.881, [0.607, 0.452, 0.164]], [0.883, [0.607, 0.452, 0.164]], [0.885, [0.600, 0.450, 0.172]], [0.886, [0.600, 0.450, 0.172]], [0.888, [0.593, 0.448, 0.180]], [0.890, [0.593, 0.448, 0.180]], [0.892, [0.586, 0.447, 0.188]], [0.894, [0.586, 0.447, 0.188]], [0.896, [0.579, 0.445, 0.196]], [0.898, [0.579, 0.445, 0.196]], [0.900, [0.572, 0.443, 0.204]], [0.902, [0.572, 0.443, 0.204]], [0.904, [0.565, 0.441, 0.211]], [0.906, [0.565, 0.441, 0.211]], [0.908, [0.558, 0.440, 0.219]], [0.910, [0.558, 0.440, 0.219]], [0.912, [0.552, 0.438, 0.227]], [0.914, [0.552, 0.438, 0.227]], [0.916, [0.545, 0.436, 0.235]], [0.918, [0.545, 0.436, 0.235]], [0.920, [0.538, 0.434, 0.243]], [0.922, [0.538, 0.434, 0.243]], [0.924, [0.531, 0.433, 0.251]], [0.926, [0.531, 0.433, 0.251]], [0.928, [0.524, 0.431, 0.259]], [0.930, [0.524, 0.431, 0.259]], [0.932, [0.517, 0.429, 0.266]], [0.933, [0.517, 0.429, 0.266]], [0.935, [0.510, 0.428, 0.274]], [0.937, [0.510, 0.428, 0.274]], [0.939, [0.503, 0.426, 0.282]], [0.941, [0.503, 0.426, 0.282]], [0.943, [0.496, 0.424, 0.290]], [0.945, [0.496, 0.424, 0.290]], [0.947, [0.490, 0.422, 0.298]], [0.949, [0.490, 0.422, 0.298]], [0.951, [0.483, 0.421, 0.306]], [0.953, [0.483, 0.421, 0.306]], [0.955, [0.476, 0.419, 0.314]], [0.957, [0.476, 0.419, 0.314]], [0.959, [0.469, 0.417, 0.321]], [0.961, [0.469, 0.417, 0.321]], [0.963, [0.462, 0.416, 0.329]], [0.965, [0.462, 0.416, 0.329]], [0.967, [0.455, 0.414, 0.337]], [0.969, [0.455, 0.414, 0.337]], [0.971, [0.448, 0.412, 0.345]], [0.973, [0.448, 0.412, 0.345]], [0.975, [0.441, 0.410, 0.353]], [0.977, [0.441, 0.410, 0.353]], [0.978, [0.434, 0.409, 0.361]], [0.980, [0.434, 0.409, 0.361]], [0.982, [0.428, 0.407, 0.369]], [0.984, [0.428, 0.407, 0.369]], [0.986, [0.421, 0.405, 0.376]], [0.988, [0.421, 0.405, 0.376]], [0.990, [0.414, 0.403, 0.384]], [0.992, [0.414, 0.403, 0.384]], [0.994, [0.407, 0.402, 0.392]], [0.996, [0.407, 0.402, 0.392]], [0.998, [0.400, 0.400, 0.400]], [1.000, [0.400, 0.400, 0.400]]]; +var Paired = [[0.000, [0.651, 0.808, 0.890]], [0.002, [0.651, 0.808, 0.890]], [0.004, [0.628, 0.793, 0.882]], [0.006, [0.628, 0.793, 0.882]], [0.008, [0.605, 0.779, 0.874]], [0.010, [0.605, 0.779, 0.874]], [0.012, [0.582, 0.764, 0.866]], [0.014, [0.582, 0.764, 0.866]], [0.016, [0.560, 0.750, 0.858]], [0.018, [0.560, 0.750, 0.858]], [0.020, [0.537, 0.735, 0.850]], [0.022, [0.537, 0.735, 0.850]], [0.023, [0.514, 0.721, 0.842]], [0.025, [0.514, 0.721, 0.842]], [0.027, [0.491, 0.706, 0.835]], [0.029, [0.491, 0.706, 0.835]], [0.031, [0.468, 0.691, 0.827]], [0.033, [0.468, 0.691, 0.827]], [0.035, [0.445, 0.677, 0.819]], [0.037, [0.445, 0.677, 0.819]], [0.039, [0.423, 0.662, 0.811]], [0.041, [0.423, 0.662, 0.811]], [0.043, [0.400, 0.648, 0.803]], [0.045, [0.400, 0.648, 0.803]], [0.047, [0.377, 0.633, 0.795]], [0.049, [0.377, 0.633, 0.795]], [0.051, [0.354, 0.619, 0.787]], [0.053, [0.354, 0.619, 0.787]], [0.055, [0.331, 0.604, 0.779]], [0.057, [0.331, 0.604, 0.779]], [0.059, [0.308, 0.590, 0.771]], [0.061, [0.308, 0.590, 0.771]], [0.063, [0.286, 0.575, 0.763]], [0.065, [0.286, 0.575, 0.763]], [0.067, [0.263, 0.561, 0.755]], [0.068, [0.263, 0.561, 0.755]], [0.070, [0.240, 0.546, 0.747]], [0.072, [0.240, 0.546, 0.747]], [0.074, [0.217, 0.531, 0.739]], [0.076, [0.217, 0.531, 0.739]], [0.078, [0.194, 0.517, 0.731]], [0.080, [0.194, 0.517, 0.731]], [0.082, [0.171, 0.502, 0.723]], [0.084, [0.171, 0.502, 0.723]], [0.086, [0.149, 0.488, 0.715]], [0.088, [0.149, 0.488, 0.715]], [0.090, [0.126, 0.473, 0.707]], [0.092, [0.126, 0.473, 0.707]], [0.094, [0.142, 0.485, 0.700]], [0.096, [0.142, 0.485, 0.700]], [0.098, [0.167, 0.502, 0.693]], [0.100, [0.167, 0.502, 0.693]], [0.102, [0.192, 0.520, 0.686]], [0.104, [0.192, 0.520, 0.686]], [0.106, [0.217, 0.537, 0.679]], [0.108, [0.217, 0.537, 0.679]], [0.110, [0.241, 0.555, 0.672]], [0.112, [0.241, 0.555, 0.672]], [0.114, [0.266, 0.572, 0.665]], [0.115, [0.266, 0.572, 0.665]], [0.117, [0.291, 0.589, 0.657]], [0.119, [0.291, 0.589, 0.657]], [0.121, [0.316, 0.607, 0.650]], [0.123, [0.316, 0.607, 0.650]], [0.125, [0.341, 0.624, 0.643]], [0.127, [0.341, 0.624, 0.643]], [0.129, [0.366, 0.642, 0.636]], [0.131, [0.366, 0.642, 0.636]], [0.133, [0.391, 0.659, 0.629]], [0.135, [0.391, 0.659, 0.629]], [0.137, [0.415, 0.677, 0.622]], [0.139, [0.415, 0.677, 0.622]], [0.141, [0.440, 0.694, 0.615]], [0.143, [0.440, 0.694, 0.615]], [0.145, [0.465, 0.711, 0.608]], [0.147, [0.465, 0.711, 0.608]], [0.149, [0.490, 0.729, 0.601]], [0.151, [0.490, 0.729, 0.601]], [0.153, [0.515, 0.746, 0.593]], [0.155, [0.515, 0.746, 0.593]], [0.157, [0.540, 0.764, 0.586]], [0.159, [0.540, 0.764, 0.586]], [0.160, [0.565, 0.781, 0.579]], [0.162, [0.565, 0.781, 0.579]], [0.164, [0.590, 0.798, 0.572]], [0.166, [0.590, 0.798, 0.572]], [0.168, [0.614, 0.816, 0.565]], [0.170, [0.614, 0.816, 0.565]], [0.172, [0.639, 0.833, 0.558]], [0.174, [0.639, 0.833, 0.558]], [0.176, [0.664, 0.851, 0.551]], [0.178, [0.664, 0.851, 0.551]], [0.180, [0.689, 0.868, 0.544]], [0.182, [0.689, 0.868, 0.544]], [0.184, [0.684, 0.868, 0.531]], [0.186, [0.684, 0.868, 0.531]], [0.188, [0.663, 0.857, 0.515]], [0.190, [0.663, 0.857, 0.515]], [0.192, [0.641, 0.846, 0.499]], [0.194, [0.641, 0.846, 0.499]], [0.196, [0.620, 0.836, 0.483]], [0.198, [0.620, 0.836, 0.483]], [0.200, [0.598, 0.825, 0.467]], [0.202, [0.598, 0.825, 0.467]], [0.204, [0.577, 0.814, 0.452]], [0.205, [0.577, 0.814, 0.452]], [0.207, [0.555, 0.804, 0.436]], [0.209, [0.555, 0.804, 0.436]], [0.211, [0.534, 0.793, 0.420]], [0.213, [0.534, 0.793, 0.420]], [0.215, [0.512, 0.782, 0.404]], [0.217, [0.512, 0.782, 0.404]], [0.219, [0.491, 0.772, 0.388]], [0.221, [0.491, 0.772, 0.388]], [0.223, [0.470, 0.761, 0.372]], [0.225, [0.470, 0.761, 0.372]], [0.227, [0.448, 0.750, 0.356]], [0.229, [0.448, 0.750, 0.356]], [0.231, [0.427, 0.740, 0.340]], [0.233, [0.427, 0.740, 0.340]], [0.235, [0.405, 0.729, 0.324]], [0.237, [0.405, 0.729, 0.324]], [0.239, [0.384, 0.719, 0.308]], [0.241, [0.384, 0.719, 0.308]], [0.243, [0.362, 0.708, 0.293]], [0.245, [0.362, 0.708, 0.293]], [0.247, [0.341, 0.697, 0.277]], [0.249, [0.341, 0.697, 0.277]], [0.250, [0.319, 0.687, 0.261]], [0.252, [0.319, 0.687, 0.261]], [0.254, [0.298, 0.676, 0.245]], [0.256, [0.298, 0.676, 0.245]], [0.258, [0.276, 0.665, 0.229]], [0.260, [0.276, 0.665, 0.229]], [0.262, [0.255, 0.655, 0.213]], [0.264, [0.255, 0.655, 0.213]], [0.266, [0.233, 0.644, 0.197]], [0.268, [0.233, 0.644, 0.197]], [0.270, [0.212, 0.633, 0.181]], [0.272, [0.212, 0.633, 0.181]], [0.274, [0.215, 0.627, 0.181]], [0.276, [0.215, 0.627, 0.181]], [0.278, [0.249, 0.626, 0.199]], [0.280, [0.249, 0.626, 0.199]], [0.282, [0.283, 0.625, 0.218]], [0.284, [0.283, 0.625, 0.218]], [0.286, [0.317, 0.624, 0.236]], [0.288, [0.317, 0.624, 0.236]], [0.290, [0.351, 0.623, 0.255]], [0.292, [0.351, 0.623, 0.255]], [0.294, [0.385, 0.622, 0.273]], [0.295, [0.385, 0.622, 0.273]], [0.297, [0.418, 0.621, 0.292]], [0.299, [0.418, 0.621, 0.292]], [0.301, [0.452, 0.620, 0.310]], [0.303, [0.452, 0.620, 0.310]], [0.305, [0.486, 0.619, 0.328]], [0.307, [0.486, 0.619, 0.328]], [0.309, [0.520, 0.618, 0.347]], [0.311, [0.520, 0.618, 0.347]], [0.313, [0.554, 0.617, 0.365]], [0.315, [0.554, 0.617, 0.365]], [0.317, [0.588, 0.616, 0.384]], [0.319, [0.588, 0.616, 0.384]], [0.321, [0.621, 0.615, 0.402]], [0.323, [0.621, 0.615, 0.402]], [0.325, [0.655, 0.614, 0.421]], [0.327, [0.655, 0.614, 0.421]], [0.329, [0.689, 0.613, 0.439]], [0.331, [0.689, 0.613, 0.439]], [0.333, [0.723, 0.612, 0.458]], [0.335, [0.723, 0.612, 0.458]], [0.337, [0.757, 0.611, 0.476]], [0.339, [0.757, 0.611, 0.476]], [0.341, [0.791, 0.610, 0.494]], [0.342, [0.791, 0.610, 0.494]], [0.344, [0.824, 0.609, 0.513]], [0.346, [0.824, 0.609, 0.513]], [0.348, [0.858, 0.608, 0.531]], [0.350, [0.858, 0.608, 0.531]], [0.352, [0.892, 0.607, 0.550]], [0.354, [0.892, 0.607, 0.550]], [0.356, [0.926, 0.606, 0.568]], [0.358, [0.926, 0.606, 0.568]], [0.360, [0.960, 0.605, 0.587]], [0.362, [0.960, 0.605, 0.587]], [0.364, [0.983, 0.598, 0.594]], [0.366, [0.983, 0.598, 0.594]], [0.368, [0.979, 0.576, 0.573]], [0.370, [0.979, 0.576, 0.573]], [0.372, [0.975, 0.555, 0.552]], [0.374, [0.975, 0.555, 0.552]], [0.376, [0.971, 0.533, 0.531]], [0.378, [0.971, 0.533, 0.531]], [0.380, [0.967, 0.511, 0.510]], [0.382, [0.967, 0.511, 0.510]], [0.384, [0.963, 0.490, 0.489]], [0.386, [0.963, 0.490, 0.489]], [0.387, [0.959, 0.468, 0.467]], [0.389, [0.959, 0.468, 0.467]], [0.391, [0.955, 0.446, 0.446]], [0.393, [0.955, 0.446, 0.446]], [0.395, [0.951, 0.425, 0.425]], [0.397, [0.951, 0.425, 0.425]], [0.399, [0.947, 0.403, 0.404]], [0.401, [0.947, 0.403, 0.404]], [0.403, [0.943, 0.381, 0.383]], [0.405, [0.943, 0.381, 0.383]], [0.407, [0.939, 0.360, 0.362]], [0.409, [0.939, 0.360, 0.362]], [0.411, [0.934, 0.338, 0.340]], [0.413, [0.934, 0.338, 0.340]], [0.415, [0.930, 0.317, 0.319]], [0.417, [0.930, 0.317, 0.319]], [0.419, [0.926, 0.295, 0.298]], [0.421, [0.926, 0.295, 0.298]], [0.423, [0.922, 0.273, 0.277]], [0.425, [0.922, 0.273, 0.277]], [0.427, [0.918, 0.252, 0.256]], [0.429, [0.918, 0.252, 0.256]], [0.431, [0.914, 0.230, 0.235]], [0.432, [0.914, 0.230, 0.235]], [0.434, [0.910, 0.208, 0.214]], [0.436, [0.910, 0.208, 0.214]], [0.438, [0.906, 0.187, 0.192]], [0.440, [0.906, 0.187, 0.192]], [0.442, [0.902, 0.165, 0.171]], [0.444, [0.902, 0.165, 0.171]], [0.446, [0.898, 0.143, 0.150]], [0.448, [0.898, 0.143, 0.150]], [0.450, [0.894, 0.122, 0.129]], [0.452, [0.894, 0.122, 0.129]], [0.454, [0.891, 0.104, 0.111]], [0.456, [0.891, 0.104, 0.111]], [0.458, [0.895, 0.132, 0.125]], [0.460, [0.895, 0.132, 0.125]], [0.462, [0.899, 0.160, 0.139]], [0.464, [0.899, 0.160, 0.139]], [0.466, [0.904, 0.188, 0.153]], [0.468, [0.904, 0.188, 0.153]], [0.470, [0.908, 0.216, 0.167]], [0.472, [0.908, 0.216, 0.167]], [0.474, [0.913, 0.244, 0.181]], [0.476, [0.913, 0.244, 0.181]], [0.477, [0.917, 0.272, 0.195]], [0.479, [0.917, 0.272, 0.195]], [0.481, [0.921, 0.300, 0.209]], [0.483, [0.921, 0.300, 0.209]], [0.485, [0.926, 0.328, 0.223]], [0.487, [0.926, 0.328, 0.223]], [0.489, [0.930, 0.356, 0.237]], [0.491, [0.930, 0.356, 0.237]], [0.493, [0.935, 0.384, 0.251]], [0.495, [0.935, 0.384, 0.251]], [0.497, [0.939, 0.412, 0.266]], [0.499, [0.939, 0.412, 0.266]], [0.501, [0.943, 0.439, 0.280]], [0.503, [0.943, 0.439, 0.280]], [0.505, [0.948, 0.467, 0.294]], [0.507, [0.948, 0.467, 0.294]], [0.509, [0.952, 0.495, 0.308]], [0.511, [0.952, 0.495, 0.308]], [0.513, [0.957, 0.523, 0.322]], [0.515, [0.957, 0.523, 0.322]], [0.517, [0.961, 0.551, 0.336]], [0.519, [0.961, 0.551, 0.336]], [0.521, [0.965, 0.579, 0.350]], [0.523, [0.965, 0.579, 0.350]], [0.524, [0.970, 0.607, 0.364]], [0.526, [0.970, 0.607, 0.364]], [0.528, [0.974, 0.635, 0.378]], [0.530, [0.974, 0.635, 0.378]], [0.532, [0.979, 0.663, 0.392]], [0.534, [0.979, 0.663, 0.392]], [0.536, [0.983, 0.691, 0.406]], [0.538, [0.983, 0.691, 0.406]], [0.540, [0.987, 0.719, 0.420]], [0.542, [0.987, 0.719, 0.420]], [0.544, [0.992, 0.746, 0.434]], [0.546, [0.992, 0.746, 0.434]], [0.548, [0.992, 0.739, 0.418]], [0.550, [0.992, 0.739, 0.418]], [0.552, [0.993, 0.728, 0.399]], [0.554, [0.993, 0.728, 0.399]], [0.556, [0.993, 0.718, 0.381]], [0.558, [0.993, 0.718, 0.381]], [0.560, [0.993, 0.707, 0.362]], [0.562, [0.993, 0.707, 0.362]], [0.564, [0.994, 0.696, 0.343]], [0.566, [0.994, 0.696, 0.343]], [0.568, [0.994, 0.685, 0.324]], [0.569, [0.994, 0.685, 0.324]], [0.571, [0.994, 0.674, 0.306]], [0.573, [0.994, 0.674, 0.306]], [0.575, [0.995, 0.663, 0.287]], [0.577, [0.995, 0.663, 0.287]], [0.579, [0.995, 0.653, 0.268]], [0.581, [0.995, 0.653, 0.268]], [0.583, [0.996, 0.642, 0.249]], [0.585, [0.996, 0.642, 0.249]], [0.587, [0.996, 0.631, 0.230]], [0.589, [0.996, 0.631, 0.230]], [0.591, [0.996, 0.620, 0.212]], [0.593, [0.996, 0.620, 0.212]], [0.595, [0.997, 0.609, 0.193]], [0.597, [0.997, 0.609, 0.193]], [0.599, [0.997, 0.598, 0.174]], [0.601, [0.997, 0.598, 0.174]], [0.603, [0.997, 0.588, 0.155]], [0.605, [0.997, 0.588, 0.155]], [0.607, [0.998, 0.577, 0.137]], [0.609, [0.998, 0.577, 0.137]], [0.611, [0.998, 0.566, 0.118]], [0.613, [0.998, 0.566, 0.118]], [0.614, [0.998, 0.555, 0.099]], [0.616, [0.998, 0.555, 0.099]], [0.618, [0.999, 0.544, 0.080]], [0.620, [0.999, 0.544, 0.080]], [0.622, [0.999, 0.533, 0.061]], [0.624, [0.999, 0.533, 0.061]], [0.626, [0.999, 0.523, 0.043]], [0.628, [0.999, 0.523, 0.043]], [0.630, [1.000, 0.512, 0.024]], [0.632, [1.000, 0.512, 0.024]], [0.634, [1.000, 0.501, 0.005]], [0.636, [1.000, 0.501, 0.005]], [0.638, [0.993, 0.504, 0.026]], [0.640, [0.993, 0.504, 0.026]], [0.642, [0.985, 0.513, 0.063]], [0.644, [0.985, 0.513, 0.063]], [0.646, [0.976, 0.522, 0.099]], [0.648, [0.976, 0.522, 0.099]], [0.650, [0.967, 0.530, 0.135]], [0.652, [0.967, 0.530, 0.135]], [0.654, [0.958, 0.539, 0.171]], [0.656, [0.958, 0.539, 0.171]], [0.658, [0.949, 0.547, 0.207]], [0.659, [0.949, 0.547, 0.207]], [0.661, [0.940, 0.556, 0.244]], [0.663, [0.940, 0.556, 0.244]], [0.665, [0.931, 0.565, 0.280]], [0.667, [0.931, 0.565, 0.280]], [0.669, [0.922, 0.573, 0.316]], [0.671, [0.922, 0.573, 0.316]], [0.673, [0.913, 0.582, 0.352]], [0.675, [0.913, 0.582, 0.352]], [0.677, [0.904, 0.591, 0.388]], [0.679, [0.904, 0.591, 0.388]], [0.681, [0.895, 0.599, 0.425]], [0.683, [0.895, 0.599, 0.425]], [0.685, [0.886, 0.608, 0.461]], [0.687, [0.886, 0.608, 0.461]], [0.689, [0.877, 0.616, 0.497]], [0.691, [0.877, 0.616, 0.497]], [0.693, [0.868, 0.625, 0.533]], [0.695, [0.868, 0.625, 0.533]], [0.697, [0.859, 0.634, 0.569]], [0.699, [0.859, 0.634, 0.569]], [0.701, [0.850, 0.642, 0.606]], [0.703, [0.850, 0.642, 0.606]], [0.705, [0.841, 0.651, 0.642]], [0.706, [0.841, 0.651, 0.642]], [0.708, [0.832, 0.660, 0.678]], [0.710, [0.832, 0.660, 0.678]], [0.712, [0.823, 0.668, 0.714]], [0.714, [0.823, 0.668, 0.714]], [0.716, [0.814, 0.677, 0.750]], [0.718, [0.814, 0.677, 0.750]], [0.720, [0.805, 0.685, 0.787]], [0.722, [0.805, 0.685, 0.787]], [0.724, [0.796, 0.694, 0.823]], [0.726, [0.796, 0.694, 0.823]], [0.728, [0.783, 0.687, 0.834]], [0.730, [0.783, 0.687, 0.834]], [0.732, [0.767, 0.667, 0.824]], [0.734, [0.767, 0.667, 0.824]], [0.736, [0.751, 0.648, 0.813]], [0.738, [0.751, 0.648, 0.813]], [0.740, [0.735, 0.628, 0.803]], [0.742, [0.735, 0.628, 0.803]], [0.744, [0.718, 0.608, 0.793]], [0.746, [0.718, 0.608, 0.793]], [0.748, [0.702, 0.588, 0.783]], [0.750, [0.702, 0.588, 0.783]], [0.751, [0.686, 0.568, 0.773]], [0.753, [0.686, 0.568, 0.773]], [0.755, [0.670, 0.549, 0.763]], [0.757, [0.670, 0.549, 0.763]], [0.759, [0.653, 0.529, 0.752]], [0.761, [0.653, 0.529, 0.752]], [0.763, [0.637, 0.509, 0.742]], [0.765, [0.637, 0.509, 0.742]], [0.767, [0.621, 0.489, 0.732]], [0.769, [0.621, 0.489, 0.732]], [0.771, [0.605, 0.470, 0.722]], [0.773, [0.605, 0.470, 0.722]], [0.775, [0.588, 0.450, 0.712]], [0.777, [0.588, 0.450, 0.712]], [0.779, [0.572, 0.430, 0.702]], [0.781, [0.572, 0.430, 0.702]], [0.783, [0.556, 0.410, 0.692]], [0.785, [0.556, 0.410, 0.692]], [0.787, [0.540, 0.390, 0.681]], [0.789, [0.540, 0.390, 0.681]], [0.791, [0.523, 0.371, 0.671]], [0.793, [0.523, 0.371, 0.671]], [0.795, [0.507, 0.351, 0.661]], [0.796, [0.507, 0.351, 0.661]], [0.798, [0.491, 0.331, 0.651]], [0.800, [0.491, 0.331, 0.651]], [0.802, [0.475, 0.311, 0.641]], [0.804, [0.475, 0.311, 0.641]], [0.806, [0.459, 0.291, 0.631]], [0.808, [0.459, 0.291, 0.631]], [0.810, [0.442, 0.272, 0.621]], [0.812, [0.442, 0.272, 0.621]], [0.814, [0.426, 0.252, 0.610]], [0.816, [0.426, 0.252, 0.610]], [0.818, [0.425, 0.251, 0.604]], [0.820, [0.425, 0.251, 0.604]], [0.822, [0.450, 0.284, 0.604]], [0.824, [0.450, 0.284, 0.604]], [0.826, [0.475, 0.317, 0.604]], [0.828, [0.475, 0.317, 0.604]], [0.830, [0.500, 0.350, 0.603]], [0.832, [0.500, 0.350, 0.603]], [0.834, [0.526, 0.382, 0.603]], [0.836, [0.526, 0.382, 0.603]], [0.838, [0.551, 0.415, 0.603]], [0.840, [0.551, 0.415, 0.603]], [0.841, [0.576, 0.448, 0.603]], [0.843, [0.576, 0.448, 0.603]], [0.845, [0.601, 0.481, 0.603]], [0.847, [0.601, 0.481, 0.603]], [0.849, [0.626, 0.514, 0.603]], [0.851, [0.626, 0.514, 0.603]], [0.853, [0.652, 0.547, 0.602]], [0.855, [0.652, 0.547, 0.602]], [0.857, [0.677, 0.579, 0.602]], [0.859, [0.677, 0.579, 0.602]], [0.861, [0.702, 0.612, 0.602]], [0.863, [0.702, 0.612, 0.602]], [0.865, [0.727, 0.645, 0.602]], [0.867, [0.727, 0.645, 0.602]], [0.869, [0.753, 0.678, 0.602]], [0.871, [0.753, 0.678, 0.602]], [0.873, [0.778, 0.711, 0.601]], [0.875, [0.778, 0.711, 0.601]], [0.877, [0.803, 0.743, 0.601]], [0.879, [0.803, 0.743, 0.601]], [0.881, [0.828, 0.776, 0.601]], [0.883, [0.828, 0.776, 0.601]], [0.885, [0.853, 0.809, 0.601]], [0.886, [0.853, 0.809, 0.601]], [0.888, [0.879, 0.842, 0.601]], [0.890, [0.879, 0.842, 0.601]], [0.892, [0.904, 0.875, 0.601]], [0.894, [0.904, 0.875, 0.601]], [0.896, [0.929, 0.908, 0.600]], [0.898, [0.929, 0.908, 0.600]], [0.900, [0.954, 0.940, 0.600]], [0.902, [0.954, 0.940, 0.600]], [0.904, [0.979, 0.973, 0.600]], [0.906, [0.979, 0.973, 0.600]], [0.908, [0.998, 0.995, 0.597]], [0.910, [0.998, 0.995, 0.597]], [0.912, [0.984, 0.967, 0.577]], [0.914, [0.984, 0.967, 0.577]], [0.916, [0.971, 0.939, 0.558]], [0.918, [0.971, 0.939, 0.558]], [0.920, [0.958, 0.911, 0.539]], [0.922, [0.958, 0.911, 0.539]], [0.924, [0.945, 0.883, 0.520]], [0.926, [0.945, 0.883, 0.520]], [0.928, [0.932, 0.854, 0.501]], [0.930, [0.932, 0.854, 0.501]], [0.932, [0.918, 0.826, 0.482]], [0.933, [0.918, 0.826, 0.482]], [0.935, [0.905, 0.798, 0.463]], [0.937, [0.905, 0.798, 0.463]], [0.939, [0.892, 0.770, 0.444]], [0.941, [0.892, 0.770, 0.444]], [0.943, [0.879, 0.742, 0.424]], [0.945, [0.879, 0.742, 0.424]], [0.947, [0.866, 0.714, 0.405]], [0.949, [0.866, 0.714, 0.405]], [0.951, [0.852, 0.686, 0.386]], [0.953, [0.852, 0.686, 0.386]], [0.955, [0.839, 0.658, 0.367]], [0.957, [0.839, 0.658, 0.367]], [0.959, [0.826, 0.630, 0.348]], [0.961, [0.826, 0.630, 0.348]], [0.963, [0.813, 0.602, 0.329]], [0.965, [0.813, 0.602, 0.329]], [0.967, [0.800, 0.574, 0.310]], [0.969, [0.800, 0.574, 0.310]], [0.971, [0.786, 0.546, 0.291]], [0.973, [0.786, 0.546, 0.291]], [0.975, [0.773, 0.518, 0.272]], [0.977, [0.773, 0.518, 0.272]], [0.978, [0.760, 0.489, 0.252]], [0.980, [0.760, 0.489, 0.252]], [0.982, [0.747, 0.461, 0.233]], [0.984, [0.747, 0.461, 0.233]], [0.986, [0.734, 0.433, 0.214]], [0.988, [0.734, 0.433, 0.214]], [0.990, [0.721, 0.405, 0.195]], [0.992, [0.721, 0.405, 0.195]], [0.994, [0.707, 0.377, 0.176]], [0.996, [0.707, 0.377, 0.176]], [0.998, [0.694, 0.349, 0.157]], [1.000, [0.694, 0.349, 0.157]]]; +var Pastel1 = [[0.000, [0.984, 0.706, 0.682]], [0.002, [0.984, 0.706, 0.682]], [0.004, [0.975, 0.709, 0.689]], [0.006, [0.975, 0.709, 0.689]], [0.008, [0.967, 0.712, 0.695]], [0.010, [0.967, 0.712, 0.695]], [0.012, [0.958, 0.715, 0.702]], [0.014, [0.958, 0.715, 0.702]], [0.016, [0.949, 0.718, 0.708]], [0.018, [0.949, 0.718, 0.708]], [0.020, [0.940, 0.721, 0.715]], [0.022, [0.940, 0.721, 0.715]], [0.023, [0.931, 0.724, 0.721]], [0.025, [0.931, 0.724, 0.721]], [0.027, [0.922, 0.727, 0.728]], [0.029, [0.922, 0.727, 0.728]], [0.031, [0.913, 0.730, 0.735]], [0.033, [0.913, 0.730, 0.735]], [0.035, [0.905, 0.734, 0.741]], [0.037, [0.905, 0.734, 0.741]], [0.039, [0.896, 0.737, 0.748]], [0.041, [0.896, 0.737, 0.748]], [0.043, [0.887, 0.740, 0.754]], [0.045, [0.887, 0.740, 0.754]], [0.047, [0.878, 0.743, 0.761]], [0.049, [0.878, 0.743, 0.761]], [0.051, [0.869, 0.746, 0.767]], [0.053, [0.869, 0.746, 0.767]], [0.055, [0.860, 0.749, 0.774]], [0.057, [0.860, 0.749, 0.774]], [0.059, [0.851, 0.752, 0.780]], [0.061, [0.851, 0.752, 0.780]], [0.063, [0.843, 0.755, 0.787]], [0.065, [0.843, 0.755, 0.787]], [0.067, [0.834, 0.758, 0.793]], [0.068, [0.834, 0.758, 0.793]], [0.070, [0.825, 0.761, 0.800]], [0.072, [0.825, 0.761, 0.800]], [0.074, [0.816, 0.764, 0.806]], [0.076, [0.816, 0.764, 0.806]], [0.078, [0.807, 0.767, 0.813]], [0.080, [0.807, 0.767, 0.813]], [0.082, [0.798, 0.770, 0.819]], [0.084, [0.798, 0.770, 0.819]], [0.086, [0.789, 0.774, 0.826]], [0.088, [0.789, 0.774, 0.826]], [0.090, [0.781, 0.777, 0.832]], [0.092, [0.781, 0.777, 0.832]], [0.094, [0.772, 0.780, 0.839]], [0.096, [0.772, 0.780, 0.839]], [0.098, [0.763, 0.783, 0.845]], [0.100, [0.763, 0.783, 0.845]], [0.102, [0.754, 0.786, 0.852]], [0.104, [0.754, 0.786, 0.852]], [0.106, [0.745, 0.789, 0.858]], [0.108, [0.745, 0.789, 0.858]], [0.110, [0.736, 0.792, 0.865]], [0.112, [0.736, 0.792, 0.865]], [0.114, [0.727, 0.795, 0.871]], [0.115, [0.727, 0.795, 0.871]], [0.117, [0.719, 0.798, 0.878]], [0.119, [0.719, 0.798, 0.878]], [0.121, [0.710, 0.801, 0.884]], [0.123, [0.710, 0.801, 0.884]], [0.125, [0.702, 0.804, 0.890]], [0.127, [0.702, 0.804, 0.890]], [0.129, [0.705, 0.808, 0.886]], [0.131, [0.705, 0.808, 0.886]], [0.133, [0.708, 0.812, 0.882]], [0.135, [0.708, 0.812, 0.882]], [0.137, [0.712, 0.815, 0.879]], [0.139, [0.712, 0.815, 0.879]], [0.141, [0.715, 0.819, 0.875]], [0.143, [0.715, 0.819, 0.875]], [0.145, [0.718, 0.823, 0.871]], [0.147, [0.718, 0.823, 0.871]], [0.149, [0.721, 0.827, 0.868]], [0.151, [0.721, 0.827, 0.868]], [0.153, [0.724, 0.830, 0.864]], [0.155, [0.724, 0.830, 0.864]], [0.157, [0.727, 0.834, 0.860]], [0.159, [0.727, 0.834, 0.860]], [0.160, [0.730, 0.838, 0.857]], [0.162, [0.730, 0.838, 0.857]], [0.164, [0.733, 0.841, 0.853]], [0.166, [0.733, 0.841, 0.853]], [0.168, [0.736, 0.845, 0.849]], [0.170, [0.736, 0.845, 0.849]], [0.172, [0.739, 0.849, 0.845]], [0.174, [0.739, 0.849, 0.845]], [0.176, [0.742, 0.852, 0.842]], [0.178, [0.742, 0.852, 0.842]], [0.180, [0.745, 0.856, 0.838]], [0.182, [0.745, 0.856, 0.838]], [0.184, [0.748, 0.860, 0.834]], [0.186, [0.748, 0.860, 0.834]], [0.188, [0.752, 0.863, 0.831]], [0.190, [0.752, 0.863, 0.831]], [0.192, [0.755, 0.867, 0.827]], [0.194, [0.755, 0.867, 0.827]], [0.196, [0.758, 0.871, 0.823]], [0.198, [0.758, 0.871, 0.823]], [0.200, [0.761, 0.875, 0.820]], [0.202, [0.761, 0.875, 0.820]], [0.204, [0.764, 0.878, 0.816]], [0.205, [0.764, 0.878, 0.816]], [0.207, [0.767, 0.882, 0.812]], [0.209, [0.767, 0.882, 0.812]], [0.211, [0.770, 0.886, 0.809]], [0.213, [0.770, 0.886, 0.809]], [0.215, [0.773, 0.889, 0.805]], [0.217, [0.773, 0.889, 0.805]], [0.219, [0.776, 0.893, 0.801]], [0.221, [0.776, 0.893, 0.801]], [0.223, [0.779, 0.897, 0.797]], [0.225, [0.779, 0.897, 0.797]], [0.227, [0.782, 0.900, 0.794]], [0.229, [0.782, 0.900, 0.794]], [0.231, [0.785, 0.904, 0.790]], [0.233, [0.785, 0.904, 0.790]], [0.235, [0.788, 0.908, 0.786]], [0.237, [0.788, 0.908, 0.786]], [0.239, [0.792, 0.911, 0.783]], [0.241, [0.792, 0.911, 0.783]], [0.243, [0.795, 0.915, 0.779]], [0.245, [0.795, 0.915, 0.779]], [0.247, [0.798, 0.919, 0.775]], [0.249, [0.798, 0.919, 0.775]], [0.250, [0.801, 0.921, 0.774]], [0.252, [0.801, 0.921, 0.774]], [0.254, [0.803, 0.917, 0.777]], [0.256, [0.803, 0.917, 0.777]], [0.258, [0.805, 0.913, 0.781]], [0.260, [0.805, 0.913, 0.781]], [0.262, [0.807, 0.909, 0.785]], [0.264, [0.807, 0.909, 0.785]], [0.266, [0.809, 0.905, 0.789]], [0.268, [0.809, 0.905, 0.789]], [0.270, [0.812, 0.901, 0.793]], [0.272, [0.812, 0.901, 0.793]], [0.274, [0.814, 0.897, 0.796]], [0.276, [0.814, 0.897, 0.796]], [0.278, [0.816, 0.893, 0.800]], [0.280, [0.816, 0.893, 0.800]], [0.282, [0.818, 0.889, 0.804]], [0.284, [0.818, 0.889, 0.804]], [0.286, [0.820, 0.885, 0.808]], [0.288, [0.820, 0.885, 0.808]], [0.290, [0.823, 0.881, 0.812]], [0.292, [0.823, 0.881, 0.812]], [0.294, [0.825, 0.877, 0.815]], [0.295, [0.825, 0.877, 0.815]], [0.297, [0.827, 0.873, 0.819]], [0.299, [0.827, 0.873, 0.819]], [0.301, [0.829, 0.869, 0.823]], [0.303, [0.829, 0.869, 0.823]], [0.305, [0.832, 0.865, 0.827]], [0.307, [0.832, 0.865, 0.827]], [0.309, [0.834, 0.862, 0.831]], [0.311, [0.834, 0.862, 0.831]], [0.313, [0.836, 0.858, 0.835]], [0.315, [0.836, 0.858, 0.835]], [0.317, [0.838, 0.854, 0.838]], [0.319, [0.838, 0.854, 0.838]], [0.321, [0.840, 0.850, 0.842]], [0.323, [0.840, 0.850, 0.842]], [0.325, [0.843, 0.846, 0.846]], [0.327, [0.843, 0.846, 0.846]], [0.329, [0.845, 0.842, 0.850]], [0.331, [0.845, 0.842, 0.850]], [0.333, [0.847, 0.838, 0.854]], [0.335, [0.847, 0.838, 0.854]], [0.337, [0.849, 0.834, 0.857]], [0.339, [0.849, 0.834, 0.857]], [0.341, [0.851, 0.830, 0.861]], [0.342, [0.851, 0.830, 0.861]], [0.344, [0.854, 0.826, 0.865]], [0.346, [0.854, 0.826, 0.865]], [0.348, [0.856, 0.822, 0.869]], [0.350, [0.856, 0.822, 0.869]], [0.352, [0.858, 0.818, 0.873]], [0.354, [0.858, 0.818, 0.873]], [0.356, [0.860, 0.814, 0.876]], [0.358, [0.860, 0.814, 0.876]], [0.360, [0.863, 0.810, 0.880]], [0.362, [0.863, 0.810, 0.880]], [0.364, [0.865, 0.806, 0.884]], [0.366, [0.865, 0.806, 0.884]], [0.368, [0.867, 0.802, 0.888]], [0.370, [0.867, 0.802, 0.888]], [0.372, [0.869, 0.799, 0.892]], [0.374, [0.869, 0.799, 0.892]], [0.376, [0.872, 0.797, 0.891]], [0.378, [0.872, 0.797, 0.891]], [0.380, [0.876, 0.798, 0.884]], [0.382, [0.876, 0.798, 0.884]], [0.384, [0.880, 0.800, 0.876]], [0.386, [0.880, 0.800, 0.876]], [0.387, [0.884, 0.802, 0.868]], [0.389, [0.884, 0.802, 0.868]], [0.391, [0.888, 0.804, 0.861]], [0.393, [0.888, 0.804, 0.861]], [0.395, [0.892, 0.805, 0.853]], [0.397, [0.892, 0.805, 0.853]], [0.399, [0.896, 0.807, 0.845]], [0.401, [0.896, 0.807, 0.845]], [0.403, [0.900, 0.809, 0.838]], [0.405, [0.900, 0.809, 0.838]], [0.407, [0.904, 0.811, 0.830]], [0.409, [0.904, 0.811, 0.830]], [0.411, [0.907, 0.812, 0.823]], [0.413, [0.907, 0.812, 0.823]], [0.415, [0.911, 0.814, 0.815]], [0.417, [0.911, 0.814, 0.815]], [0.419, [0.915, 0.816, 0.807]], [0.421, [0.915, 0.816, 0.807]], [0.423, [0.919, 0.817, 0.800]], [0.425, [0.919, 0.817, 0.800]], [0.427, [0.923, 0.819, 0.792]], [0.429, [0.923, 0.819, 0.792]], [0.431, [0.927, 0.821, 0.784]], [0.432, [0.927, 0.821, 0.784]], [0.434, [0.931, 0.823, 0.777]], [0.436, [0.931, 0.823, 0.777]], [0.438, [0.935, 0.824, 0.769]], [0.440, [0.935, 0.824, 0.769]], [0.442, [0.939, 0.826, 0.762]], [0.444, [0.939, 0.826, 0.762]], [0.446, [0.943, 0.828, 0.754]], [0.448, [0.943, 0.828, 0.754]], [0.450, [0.947, 0.829, 0.746]], [0.452, [0.947, 0.829, 0.746]], [0.454, [0.951, 0.831, 0.739]], [0.456, [0.951, 0.831, 0.739]], [0.458, [0.955, 0.833, 0.731]], [0.460, [0.955, 0.833, 0.731]], [0.462, [0.959, 0.835, 0.723]], [0.464, [0.959, 0.835, 0.723]], [0.466, [0.963, 0.836, 0.716]], [0.468, [0.963, 0.836, 0.716]], [0.470, [0.967, 0.838, 0.708]], [0.472, [0.967, 0.838, 0.708]], [0.474, [0.970, 0.840, 0.701]], [0.476, [0.970, 0.840, 0.701]], [0.477, [0.974, 0.842, 0.693]], [0.479, [0.974, 0.842, 0.693]], [0.481, [0.978, 0.843, 0.685]], [0.483, [0.978, 0.843, 0.685]], [0.485, [0.982, 0.845, 0.678]], [0.487, [0.982, 0.845, 0.678]], [0.489, [0.986, 0.847, 0.670]], [0.491, [0.986, 0.847, 0.670]], [0.493, [0.990, 0.848, 0.662]], [0.495, [0.990, 0.848, 0.662]], [0.497, [0.994, 0.850, 0.655]], [0.499, [0.994, 0.850, 0.655]], [0.501, [0.996, 0.853, 0.653]], [0.503, [0.996, 0.853, 0.653]], [0.505, [0.996, 0.858, 0.658]], [0.507, [0.996, 0.858, 0.658]], [0.509, [0.996, 0.863, 0.663]], [0.511, [0.996, 0.863, 0.663]], [0.513, [0.997, 0.867, 0.667]], [0.515, [0.997, 0.867, 0.667]], [0.517, [0.997, 0.872, 0.672]], [0.519, [0.997, 0.872, 0.672]], [0.521, [0.997, 0.877, 0.677]], [0.523, [0.997, 0.877, 0.677]], [0.524, [0.997, 0.881, 0.681]], [0.526, [0.997, 0.881, 0.681]], [0.528, [0.997, 0.886, 0.686]], [0.530, [0.997, 0.886, 0.686]], [0.532, [0.997, 0.891, 0.691]], [0.534, [0.997, 0.891, 0.691]], [0.536, [0.997, 0.895, 0.695]], [0.538, [0.997, 0.895, 0.695]], [0.540, [0.997, 0.900, 0.700]], [0.542, [0.997, 0.900, 0.700]], [0.544, [0.997, 0.905, 0.705]], [0.546, [0.997, 0.905, 0.705]], [0.548, [0.998, 0.909, 0.709]], [0.550, [0.998, 0.909, 0.709]], [0.552, [0.998, 0.914, 0.714]], [0.554, [0.998, 0.914, 0.714]], [0.556, [0.998, 0.919, 0.719]], [0.558, [0.998, 0.919, 0.719]], [0.560, [0.998, 0.923, 0.723]], [0.562, [0.998, 0.923, 0.723]], [0.564, [0.998, 0.928, 0.728]], [0.566, [0.998, 0.928, 0.728]], [0.568, [0.998, 0.933, 0.733]], [0.569, [0.998, 0.933, 0.733]], [0.571, [0.998, 0.937, 0.737]], [0.573, [0.998, 0.937, 0.737]], [0.575, [0.998, 0.942, 0.742]], [0.577, [0.998, 0.942, 0.742]], [0.579, [0.999, 0.947, 0.747]], [0.581, [0.999, 0.947, 0.747]], [0.583, [0.999, 0.951, 0.751]], [0.585, [0.999, 0.951, 0.751]], [0.587, [0.999, 0.956, 0.756]], [0.589, [0.999, 0.956, 0.756]], [0.591, [0.999, 0.961, 0.761]], [0.593, [0.999, 0.961, 0.761]], [0.595, [0.999, 0.966, 0.766]], [0.597, [0.999, 0.966, 0.766]], [0.599, [0.999, 0.970, 0.770]], [0.601, [0.999, 0.970, 0.770]], [0.603, [0.999, 0.975, 0.775]], [0.605, [0.999, 0.975, 0.775]], [0.607, [0.999, 0.980, 0.780]], [0.609, [0.999, 0.980, 0.780]], [0.611, [1.000, 0.984, 0.784]], [0.613, [1.000, 0.984, 0.784]], [0.614, [1.000, 0.989, 0.789]], [0.616, [1.000, 0.989, 0.789]], [0.618, [1.000, 0.994, 0.794]], [0.620, [1.000, 0.994, 0.794]], [0.622, [1.000, 0.998, 0.798]], [0.624, [1.000, 0.998, 0.798]], [0.626, [0.998, 0.997, 0.799]], [0.628, [0.998, 0.997, 0.799]], [0.630, [0.995, 0.992, 0.797]], [0.632, [0.995, 0.992, 0.797]], [0.634, [0.992, 0.987, 0.795]], [0.636, [0.992, 0.987, 0.795]], [0.638, [0.988, 0.983, 0.793]], [0.640, [0.988, 0.983, 0.793]], [0.642, [0.985, 0.978, 0.791]], [0.644, [0.985, 0.978, 0.791]], [0.646, [0.982, 0.973, 0.790]], [0.648, [0.982, 0.973, 0.790]], [0.650, [0.979, 0.968, 0.788]], [0.652, [0.979, 0.968, 0.788]], [0.654, [0.976, 0.963, 0.786]], [0.656, [0.976, 0.963, 0.786]], [0.658, [0.972, 0.959, 0.784]], [0.659, [0.972, 0.959, 0.784]], [0.661, [0.969, 0.954, 0.782]], [0.663, [0.969, 0.954, 0.782]], [0.665, [0.966, 0.949, 0.780]], [0.667, [0.966, 0.949, 0.780]], [0.669, [0.963, 0.944, 0.779]], [0.671, [0.963, 0.944, 0.779]], [0.673, [0.960, 0.939, 0.777]], [0.675, [0.960, 0.939, 0.777]], [0.677, [0.956, 0.935, 0.775]], [0.679, [0.956, 0.935, 0.775]], [0.681, [0.953, 0.930, 0.773]], [0.683, [0.953, 0.930, 0.773]], [0.685, [0.950, 0.925, 0.771]], [0.687, [0.950, 0.925, 0.771]], [0.689, [0.947, 0.920, 0.769]], [0.691, [0.947, 0.920, 0.769]], [0.693, [0.944, 0.915, 0.767]], [0.695, [0.944, 0.915, 0.767]], [0.697, [0.940, 0.911, 0.766]], [0.699, [0.940, 0.911, 0.766]], [0.701, [0.937, 0.906, 0.764]], [0.703, [0.937, 0.906, 0.764]], [0.705, [0.934, 0.901, 0.762]], [0.706, [0.934, 0.901, 0.762]], [0.708, [0.931, 0.896, 0.760]], [0.710, [0.931, 0.896, 0.760]], [0.712, [0.928, 0.891, 0.758]], [0.714, [0.928, 0.891, 0.758]], [0.716, [0.924, 0.887, 0.756]], [0.718, [0.924, 0.887, 0.756]], [0.720, [0.921, 0.882, 0.755]], [0.722, [0.921, 0.882, 0.755]], [0.724, [0.918, 0.877, 0.753]], [0.726, [0.918, 0.877, 0.753]], [0.728, [0.915, 0.872, 0.751]], [0.730, [0.915, 0.872, 0.751]], [0.732, [0.912, 0.867, 0.749]], [0.734, [0.912, 0.867, 0.749]], [0.736, [0.908, 0.863, 0.747]], [0.738, [0.908, 0.863, 0.747]], [0.740, [0.905, 0.858, 0.745]], [0.742, [0.905, 0.858, 0.745]], [0.744, [0.902, 0.853, 0.743]], [0.746, [0.902, 0.853, 0.743]], [0.748, [0.899, 0.848, 0.742]], [0.750, [0.899, 0.848, 0.742]], [0.751, [0.900, 0.847, 0.746]], [0.753, [0.900, 0.847, 0.746]], [0.755, [0.903, 0.847, 0.751]], [0.757, [0.903, 0.847, 0.751]], [0.759, [0.906, 0.848, 0.757]], [0.761, [0.906, 0.848, 0.757]], [0.763, [0.909, 0.848, 0.763]], [0.765, [0.909, 0.848, 0.763]], [0.767, [0.912, 0.848, 0.769]], [0.769, [0.912, 0.848, 0.769]], [0.771, [0.915, 0.848, 0.774]], [0.773, [0.915, 0.848, 0.774]], [0.775, [0.918, 0.849, 0.780]], [0.777, [0.918, 0.849, 0.780]], [0.779, [0.921, 0.849, 0.786]], [0.781, [0.921, 0.849, 0.786]], [0.783, [0.924, 0.849, 0.792]], [0.785, [0.924, 0.849, 0.792]], [0.787, [0.927, 0.849, 0.798]], [0.789, [0.927, 0.849, 0.798]], [0.791, [0.930, 0.850, 0.803]], [0.793, [0.930, 0.850, 0.803]], [0.795, [0.933, 0.850, 0.809]], [0.796, [0.933, 0.850, 0.809]], [0.798, [0.936, 0.850, 0.815]], [0.800, [0.936, 0.850, 0.815]], [0.802, [0.939, 0.850, 0.821]], [0.804, [0.939, 0.850, 0.821]], [0.806, [0.942, 0.851, 0.826]], [0.808, [0.942, 0.851, 0.826]], [0.810, [0.945, 0.851, 0.832]], [0.812, [0.945, 0.851, 0.832]], [0.814, [0.947, 0.851, 0.838]], [0.816, [0.947, 0.851, 0.838]], [0.818, [0.950, 0.851, 0.844]], [0.820, [0.950, 0.851, 0.844]], [0.822, [0.953, 0.852, 0.850]], [0.824, [0.953, 0.852, 0.850]], [0.826, [0.956, 0.852, 0.855]], [0.828, [0.956, 0.852, 0.855]], [0.830, [0.959, 0.852, 0.861]], [0.832, [0.959, 0.852, 0.861]], [0.834, [0.962, 0.852, 0.867]], [0.836, [0.962, 0.852, 0.867]], [0.838, [0.965, 0.853, 0.873]], [0.840, [0.965, 0.853, 0.873]], [0.841, [0.968, 0.853, 0.879]], [0.843, [0.968, 0.853, 0.879]], [0.845, [0.971, 0.853, 0.884]], [0.847, [0.971, 0.853, 0.884]], [0.849, [0.974, 0.853, 0.890]], [0.851, [0.974, 0.853, 0.890]], [0.853, [0.977, 0.854, 0.896]], [0.855, [0.977, 0.854, 0.896]], [0.857, [0.980, 0.854, 0.902]], [0.859, [0.980, 0.854, 0.902]], [0.861, [0.983, 0.854, 0.907]], [0.863, [0.983, 0.854, 0.907]], [0.865, [0.986, 0.854, 0.913]], [0.867, [0.986, 0.854, 0.913]], [0.869, [0.989, 0.855, 0.919]], [0.871, [0.989, 0.855, 0.919]], [0.873, [0.992, 0.855, 0.925]], [0.875, [0.992, 0.855, 0.925]], [0.877, [0.991, 0.857, 0.926]], [0.879, [0.991, 0.857, 0.926]], [0.881, [0.990, 0.860, 0.927]], [0.883, [0.990, 0.860, 0.927]], [0.885, [0.988, 0.863, 0.928]], [0.886, [0.988, 0.863, 0.928]], [0.888, [0.987, 0.866, 0.928]], [0.890, [0.987, 0.866, 0.928]], [0.892, [0.986, 0.869, 0.929]], [0.894, [0.986, 0.869, 0.929]], [0.896, [0.984, 0.872, 0.930]], [0.898, [0.984, 0.872, 0.930]], [0.900, [0.983, 0.875, 0.931]], [0.902, [0.983, 0.875, 0.931]], [0.904, [0.981, 0.878, 0.931]], [0.906, [0.981, 0.878, 0.931]], [0.908, [0.980, 0.881, 0.932]], [0.910, [0.980, 0.881, 0.932]], [0.912, [0.979, 0.884, 0.933]], [0.914, [0.979, 0.884, 0.933]], [0.916, [0.977, 0.887, 0.934]], [0.918, [0.977, 0.887, 0.934]], [0.920, [0.976, 0.890, 0.934]], [0.922, [0.976, 0.890, 0.934]], [0.924, [0.975, 0.893, 0.935]], [0.926, [0.975, 0.893, 0.935]], [0.928, [0.973, 0.896, 0.936]], [0.930, [0.973, 0.896, 0.936]], [0.932, [0.972, 0.899, 0.936]], [0.933, [0.972, 0.899, 0.936]], [0.935, [0.971, 0.902, 0.937]], [0.937, [0.971, 0.902, 0.937]], [0.939, [0.969, 0.905, 0.938]], [0.941, [0.969, 0.905, 0.938]], [0.943, [0.968, 0.908, 0.939]], [0.945, [0.968, 0.908, 0.939]], [0.947, [0.967, 0.911, 0.939]], [0.949, [0.967, 0.911, 0.939]], [0.951, [0.965, 0.914, 0.940]], [0.953, [0.965, 0.914, 0.940]], [0.955, [0.964, 0.917, 0.941]], [0.957, [0.964, 0.917, 0.941]], [0.959, [0.963, 0.919, 0.942]], [0.961, [0.963, 0.919, 0.942]], [0.963, [0.961, 0.922, 0.942]], [0.965, [0.961, 0.922, 0.942]], [0.967, [0.960, 0.925, 0.943]], [0.969, [0.960, 0.925, 0.943]], [0.971, [0.958, 0.928, 0.944]], [0.973, [0.958, 0.928, 0.944]], [0.975, [0.957, 0.931, 0.945]], [0.977, [0.957, 0.931, 0.945]], [0.978, [0.956, 0.934, 0.945]], [0.980, [0.956, 0.934, 0.945]], [0.982, [0.954, 0.937, 0.946]], [0.984, [0.954, 0.937, 0.946]], [0.986, [0.953, 0.940, 0.947]], [0.988, [0.953, 0.940, 0.947]], [0.990, [0.952, 0.943, 0.948]], [0.992, [0.952, 0.943, 0.948]], [0.994, [0.950, 0.946, 0.948]], [0.996, [0.950, 0.946, 0.948]], [0.998, [0.949, 0.949, 0.949]], [1.000, [0.949, 0.949, 0.949]]]; +var Pastel2 = [[0.000, [0.702, 0.886, 0.804]], [0.002, [0.702, 0.886, 0.804]], [0.004, [0.710, 0.884, 0.800]], [0.006, [0.710, 0.884, 0.800]], [0.008, [0.718, 0.882, 0.797]], [0.010, [0.718, 0.882, 0.797]], [0.012, [0.726, 0.879, 0.793]], [0.014, [0.726, 0.879, 0.793]], [0.016, [0.734, 0.877, 0.790]], [0.018, [0.734, 0.877, 0.790]], [0.020, [0.742, 0.875, 0.786]], [0.022, [0.742, 0.875, 0.786]], [0.023, [0.750, 0.873, 0.783]], [0.025, [0.750, 0.873, 0.783]], [0.027, [0.758, 0.870, 0.779]], [0.029, [0.758, 0.870, 0.779]], [0.031, [0.766, 0.868, 0.776]], [0.033, [0.766, 0.868, 0.776]], [0.035, [0.774, 0.866, 0.772]], [0.037, [0.774, 0.866, 0.772]], [0.039, [0.782, 0.864, 0.768]], [0.041, [0.782, 0.864, 0.768]], [0.043, [0.790, 0.861, 0.765]], [0.045, [0.790, 0.861, 0.765]], [0.047, [0.798, 0.859, 0.761]], [0.049, [0.798, 0.859, 0.761]], [0.051, [0.806, 0.857, 0.758]], [0.053, [0.806, 0.857, 0.758]], [0.055, [0.813, 0.855, 0.754]], [0.057, [0.813, 0.855, 0.754]], [0.059, [0.821, 0.852, 0.751]], [0.061, [0.821, 0.852, 0.751]], [0.063, [0.829, 0.850, 0.747]], [0.065, [0.829, 0.850, 0.747]], [0.067, [0.837, 0.848, 0.744]], [0.068, [0.837, 0.848, 0.744]], [0.070, [0.845, 0.846, 0.740]], [0.072, [0.845, 0.846, 0.740]], [0.074, [0.853, 0.843, 0.736]], [0.076, [0.853, 0.843, 0.736]], [0.078, [0.861, 0.841, 0.733]], [0.080, [0.861, 0.841, 0.733]], [0.082, [0.869, 0.839, 0.729]], [0.084, [0.869, 0.839, 0.729]], [0.086, [0.877, 0.837, 0.726]], [0.088, [0.877, 0.837, 0.726]], [0.090, [0.885, 0.834, 0.722]], [0.092, [0.885, 0.834, 0.722]], [0.094, [0.893, 0.832, 0.719]], [0.096, [0.893, 0.832, 0.719]], [0.098, [0.901, 0.830, 0.715]], [0.100, [0.901, 0.830, 0.715]], [0.102, [0.909, 0.827, 0.712]], [0.104, [0.909, 0.827, 0.712]], [0.106, [0.917, 0.825, 0.708]], [0.108, [0.917, 0.825, 0.708]], [0.110, [0.925, 0.823, 0.704]], [0.112, [0.925, 0.823, 0.704]], [0.114, [0.933, 0.821, 0.701]], [0.115, [0.933, 0.821, 0.701]], [0.117, [0.941, 0.818, 0.697]], [0.119, [0.941, 0.818, 0.697]], [0.121, [0.949, 0.816, 0.694]], [0.123, [0.949, 0.816, 0.694]], [0.125, [0.957, 0.814, 0.690]], [0.127, [0.957, 0.814, 0.690]], [0.129, [0.965, 0.812, 0.687]], [0.131, [0.965, 0.812, 0.687]], [0.133, [0.973, 0.809, 0.683]], [0.135, [0.973, 0.809, 0.683]], [0.137, [0.981, 0.807, 0.680]], [0.139, [0.981, 0.807, 0.680]], [0.141, [0.989, 0.805, 0.676]], [0.143, [0.989, 0.805, 0.676]], [0.145, [0.989, 0.804, 0.678]], [0.147, [0.989, 0.804, 0.678]], [0.149, [0.984, 0.805, 0.685]], [0.151, [0.984, 0.805, 0.685]], [0.153, [0.978, 0.806, 0.691]], [0.155, [0.978, 0.806, 0.691]], [0.157, [0.973, 0.807, 0.698]], [0.159, [0.973, 0.807, 0.698]], [0.160, [0.968, 0.808, 0.704]], [0.162, [0.968, 0.808, 0.704]], [0.164, [0.962, 0.809, 0.710]], [0.166, [0.962, 0.809, 0.710]], [0.168, [0.957, 0.810, 0.717]], [0.170, [0.957, 0.810, 0.717]], [0.172, [0.951, 0.810, 0.723]], [0.174, [0.951, 0.810, 0.723]], [0.176, [0.946, 0.811, 0.730]], [0.178, [0.946, 0.811, 0.730]], [0.180, [0.941, 0.812, 0.736]], [0.182, [0.941, 0.812, 0.736]], [0.184, [0.935, 0.813, 0.743]], [0.186, [0.935, 0.813, 0.743]], [0.188, [0.930, 0.814, 0.749]], [0.190, [0.930, 0.814, 0.749]], [0.192, [0.924, 0.815, 0.756]], [0.194, [0.924, 0.815, 0.756]], [0.196, [0.919, 0.816, 0.762]], [0.198, [0.919, 0.816, 0.762]], [0.200, [0.914, 0.816, 0.769]], [0.202, [0.914, 0.816, 0.769]], [0.204, [0.908, 0.817, 0.775]], [0.205, [0.908, 0.817, 0.775]], [0.207, [0.903, 0.818, 0.782]], [0.209, [0.903, 0.818, 0.782]], [0.211, [0.898, 0.819, 0.788]], [0.213, [0.898, 0.819, 0.788]], [0.215, [0.892, 0.820, 0.794]], [0.217, [0.892, 0.820, 0.794]], [0.219, [0.887, 0.821, 0.801]], [0.221, [0.887, 0.821, 0.801]], [0.223, [0.881, 0.822, 0.807]], [0.225, [0.881, 0.822, 0.807]], [0.227, [0.876, 0.822, 0.814]], [0.229, [0.876, 0.822, 0.814]], [0.231, [0.871, 0.823, 0.820]], [0.233, [0.871, 0.823, 0.820]], [0.235, [0.865, 0.824, 0.827]], [0.237, [0.865, 0.824, 0.827]], [0.239, [0.860, 0.825, 0.833]], [0.241, [0.860, 0.825, 0.833]], [0.243, [0.855, 0.826, 0.840]], [0.245, [0.855, 0.826, 0.840]], [0.247, [0.849, 0.827, 0.846]], [0.249, [0.849, 0.827, 0.846]], [0.250, [0.844, 0.828, 0.853]], [0.252, [0.844, 0.828, 0.853]], [0.254, [0.838, 0.829, 0.859]], [0.256, [0.838, 0.829, 0.859]], [0.258, [0.833, 0.829, 0.866]], [0.260, [0.833, 0.829, 0.866]], [0.262, [0.828, 0.830, 0.872]], [0.264, [0.828, 0.830, 0.872]], [0.266, [0.822, 0.831, 0.878]], [0.268, [0.822, 0.831, 0.878]], [0.270, [0.817, 0.832, 0.885]], [0.272, [0.817, 0.832, 0.885]], [0.274, [0.811, 0.833, 0.891]], [0.276, [0.811, 0.833, 0.891]], [0.278, [0.806, 0.834, 0.898]], [0.280, [0.806, 0.834, 0.898]], [0.282, [0.801, 0.835, 0.904]], [0.284, [0.801, 0.835, 0.904]], [0.286, [0.797, 0.835, 0.910]], [0.288, [0.797, 0.835, 0.910]], [0.290, [0.801, 0.834, 0.909]], [0.292, [0.801, 0.834, 0.909]], [0.294, [0.806, 0.833, 0.909]], [0.295, [0.806, 0.833, 0.909]], [0.297, [0.810, 0.832, 0.908]], [0.299, [0.810, 0.832, 0.908]], [0.301, [0.814, 0.830, 0.908]], [0.303, [0.814, 0.830, 0.908]], [0.305, [0.819, 0.829, 0.908]], [0.307, [0.819, 0.829, 0.908]], [0.309, [0.823, 0.828, 0.907]], [0.311, [0.823, 0.828, 0.907]], [0.313, [0.828, 0.827, 0.907]], [0.315, [0.828, 0.827, 0.907]], [0.317, [0.832, 0.826, 0.906]], [0.319, [0.832, 0.826, 0.906]], [0.321, [0.836, 0.824, 0.906]], [0.323, [0.836, 0.824, 0.906]], [0.325, [0.841, 0.823, 0.905]], [0.327, [0.841, 0.823, 0.905]], [0.329, [0.845, 0.822, 0.905]], [0.331, [0.845, 0.822, 0.905]], [0.333, [0.850, 0.821, 0.905]], [0.335, [0.850, 0.821, 0.905]], [0.337, [0.854, 0.820, 0.904]], [0.339, [0.854, 0.820, 0.904]], [0.341, [0.859, 0.819, 0.904]], [0.342, [0.859, 0.819, 0.904]], [0.344, [0.863, 0.817, 0.903]], [0.346, [0.863, 0.817, 0.903]], [0.348, [0.867, 0.816, 0.903]], [0.350, [0.867, 0.816, 0.903]], [0.352, [0.872, 0.815, 0.902]], [0.354, [0.872, 0.815, 0.902]], [0.356, [0.876, 0.814, 0.902]], [0.358, [0.876, 0.814, 0.902]], [0.360, [0.881, 0.813, 0.902]], [0.362, [0.881, 0.813, 0.902]], [0.364, [0.885, 0.811, 0.901]], [0.366, [0.885, 0.811, 0.901]], [0.368, [0.889, 0.810, 0.901]], [0.370, [0.889, 0.810, 0.901]], [0.372, [0.894, 0.809, 0.900]], [0.374, [0.894, 0.809, 0.900]], [0.376, [0.898, 0.808, 0.900]], [0.378, [0.898, 0.808, 0.900]], [0.380, [0.903, 0.807, 0.899]], [0.382, [0.903, 0.807, 0.899]], [0.384, [0.907, 0.806, 0.899]], [0.386, [0.907, 0.806, 0.899]], [0.387, [0.911, 0.804, 0.899]], [0.389, [0.911, 0.804, 0.899]], [0.391, [0.916, 0.803, 0.898]], [0.393, [0.916, 0.803, 0.898]], [0.395, [0.920, 0.802, 0.898]], [0.397, [0.920, 0.802, 0.898]], [0.399, [0.925, 0.801, 0.897]], [0.401, [0.925, 0.801, 0.897]], [0.403, [0.929, 0.800, 0.897]], [0.405, [0.929, 0.800, 0.897]], [0.407, [0.934, 0.798, 0.896]], [0.409, [0.934, 0.798, 0.896]], [0.411, [0.938, 0.797, 0.896]], [0.413, [0.938, 0.797, 0.896]], [0.415, [0.942, 0.796, 0.896]], [0.417, [0.942, 0.796, 0.896]], [0.419, [0.947, 0.795, 0.895]], [0.421, [0.947, 0.795, 0.895]], [0.423, [0.951, 0.794, 0.895]], [0.425, [0.951, 0.794, 0.895]], [0.427, [0.956, 0.792, 0.894]], [0.429, [0.956, 0.792, 0.894]], [0.431, [0.956, 0.795, 0.892]], [0.432, [0.956, 0.795, 0.892]], [0.434, [0.954, 0.800, 0.889]], [0.436, [0.954, 0.800, 0.889]], [0.438, [0.953, 0.805, 0.886]], [0.440, [0.953, 0.805, 0.886]], [0.442, [0.951, 0.809, 0.883]], [0.444, [0.951, 0.809, 0.883]], [0.446, [0.950, 0.814, 0.880]], [0.448, [0.950, 0.814, 0.880]], [0.450, [0.948, 0.819, 0.878]], [0.452, [0.948, 0.819, 0.878]], [0.454, [0.947, 0.823, 0.875]], [0.456, [0.947, 0.823, 0.875]], [0.458, [0.945, 0.828, 0.872]], [0.460, [0.945, 0.828, 0.872]], [0.462, [0.944, 0.832, 0.869]], [0.464, [0.944, 0.832, 0.869]], [0.466, [0.942, 0.837, 0.866]], [0.468, [0.942, 0.837, 0.866]], [0.470, [0.941, 0.842, 0.863]], [0.472, [0.941, 0.842, 0.863]], [0.474, [0.939, 0.846, 0.860]], [0.476, [0.939, 0.846, 0.860]], [0.477, [0.938, 0.851, 0.857]], [0.479, [0.938, 0.851, 0.857]], [0.481, [0.936, 0.856, 0.854]], [0.483, [0.936, 0.856, 0.854]], [0.485, [0.935, 0.860, 0.851]], [0.487, [0.935, 0.860, 0.851]], [0.489, [0.933, 0.865, 0.848]], [0.491, [0.933, 0.865, 0.848]], [0.493, [0.932, 0.870, 0.846]], [0.495, [0.932, 0.870, 0.846]], [0.497, [0.930, 0.874, 0.843]], [0.499, [0.930, 0.874, 0.843]], [0.501, [0.929, 0.879, 0.840]], [0.503, [0.929, 0.879, 0.840]], [0.505, [0.927, 0.883, 0.837]], [0.507, [0.927, 0.883, 0.837]], [0.509, [0.926, 0.888, 0.834]], [0.511, [0.926, 0.888, 0.834]], [0.513, [0.924, 0.893, 0.831]], [0.515, [0.924, 0.893, 0.831]], [0.517, [0.923, 0.897, 0.828]], [0.519, [0.923, 0.897, 0.828]], [0.521, [0.921, 0.902, 0.825]], [0.523, [0.921, 0.902, 0.825]], [0.524, [0.920, 0.907, 0.822]], [0.526, [0.920, 0.907, 0.822]], [0.528, [0.918, 0.911, 0.819]], [0.530, [0.918, 0.911, 0.819]], [0.532, [0.917, 0.916, 0.816]], [0.534, [0.917, 0.916, 0.816]], [0.536, [0.915, 0.920, 0.814]], [0.538, [0.915, 0.920, 0.814]], [0.540, [0.914, 0.925, 0.811]], [0.542, [0.914, 0.925, 0.811]], [0.544, [0.912, 0.930, 0.808]], [0.546, [0.912, 0.930, 0.808]], [0.548, [0.911, 0.934, 0.805]], [0.550, [0.911, 0.934, 0.805]], [0.552, [0.909, 0.939, 0.802]], [0.554, [0.909, 0.939, 0.802]], [0.556, [0.908, 0.944, 0.799]], [0.558, [0.908, 0.944, 0.799]], [0.560, [0.906, 0.948, 0.796]], [0.562, [0.906, 0.948, 0.796]], [0.564, [0.905, 0.953, 0.793]], [0.566, [0.905, 0.953, 0.793]], [0.568, [0.903, 0.957, 0.790]], [0.569, [0.903, 0.957, 0.790]], [0.571, [0.903, 0.961, 0.787]], [0.573, [0.903, 0.961, 0.787]], [0.575, [0.905, 0.960, 0.784]], [0.577, [0.905, 0.960, 0.784]], [0.579, [0.908, 0.960, 0.782]], [0.581, [0.908, 0.960, 0.782]], [0.583, [0.911, 0.960, 0.779]], [0.585, [0.911, 0.960, 0.779]], [0.587, [0.913, 0.959, 0.776]], [0.589, [0.913, 0.959, 0.776]], [0.591, [0.916, 0.959, 0.773]], [0.593, [0.916, 0.959, 0.773]], [0.595, [0.919, 0.959, 0.770]], [0.597, [0.919, 0.959, 0.770]], [0.599, [0.922, 0.958, 0.767]], [0.601, [0.922, 0.958, 0.767]], [0.603, [0.924, 0.958, 0.764]], [0.605, [0.924, 0.958, 0.764]], [0.607, [0.927, 0.958, 0.761]], [0.609, [0.927, 0.958, 0.761]], [0.611, [0.930, 0.957, 0.758]], [0.613, [0.930, 0.957, 0.758]], [0.614, [0.932, 0.957, 0.755]], [0.616, [0.932, 0.957, 0.755]], [0.618, [0.935, 0.957, 0.753]], [0.620, [0.935, 0.957, 0.753]], [0.622, [0.938, 0.956, 0.750]], [0.624, [0.938, 0.956, 0.750]], [0.626, [0.940, 0.956, 0.747]], [0.628, [0.940, 0.956, 0.747]], [0.630, [0.943, 0.956, 0.744]], [0.632, [0.943, 0.956, 0.744]], [0.634, [0.946, 0.956, 0.741]], [0.636, [0.946, 0.956, 0.741]], [0.638, [0.948, 0.955, 0.738]], [0.640, [0.948, 0.955, 0.738]], [0.642, [0.951, 0.955, 0.735]], [0.644, [0.951, 0.955, 0.735]], [0.646, [0.954, 0.955, 0.732]], [0.648, [0.954, 0.955, 0.732]], [0.650, [0.957, 0.954, 0.729]], [0.652, [0.957, 0.954, 0.729]], [0.654, [0.959, 0.954, 0.726]], [0.656, [0.959, 0.954, 0.726]], [0.658, [0.962, 0.954, 0.723]], [0.659, [0.962, 0.954, 0.723]], [0.661, [0.965, 0.953, 0.721]], [0.663, [0.965, 0.953, 0.721]], [0.665, [0.967, 0.953, 0.718]], [0.667, [0.967, 0.953, 0.718]], [0.669, [0.970, 0.953, 0.715]], [0.671, [0.970, 0.953, 0.715]], [0.673, [0.973, 0.952, 0.712]], [0.675, [0.973, 0.952, 0.712]], [0.677, [0.975, 0.952, 0.709]], [0.679, [0.975, 0.952, 0.709]], [0.681, [0.978, 0.952, 0.706]], [0.683, [0.978, 0.952, 0.706]], [0.685, [0.981, 0.951, 0.703]], [0.687, [0.981, 0.951, 0.703]], [0.689, [0.983, 0.951, 0.700]], [0.691, [0.983, 0.951, 0.700]], [0.693, [0.986, 0.951, 0.697]], [0.695, [0.986, 0.951, 0.697]], [0.697, [0.989, 0.950, 0.694]], [0.699, [0.989, 0.950, 0.694]], [0.701, [0.992, 0.950, 0.691]], [0.703, [0.992, 0.950, 0.691]], [0.705, [0.994, 0.950, 0.689]], [0.706, [0.994, 0.950, 0.689]], [0.708, [0.997, 0.949, 0.686]], [0.710, [0.997, 0.949, 0.686]], [0.712, [1.000, 0.949, 0.683]], [0.714, [1.000, 0.949, 0.683]], [0.716, [0.999, 0.948, 0.685]], [0.718, [0.999, 0.948, 0.685]], [0.720, [0.997, 0.946, 0.688]], [0.722, [0.997, 0.946, 0.688]], [0.724, [0.996, 0.944, 0.692]], [0.726, [0.996, 0.944, 0.692]], [0.728, [0.994, 0.942, 0.695]], [0.730, [0.994, 0.942, 0.695]], [0.732, [0.993, 0.941, 0.698]], [0.734, [0.993, 0.941, 0.698]], [0.736, [0.991, 0.939, 0.701]], [0.738, [0.991, 0.939, 0.701]], [0.740, [0.990, 0.937, 0.704]], [0.742, [0.990, 0.937, 0.704]], [0.744, [0.988, 0.935, 0.708]], [0.746, [0.988, 0.935, 0.708]], [0.748, [0.987, 0.934, 0.711]], [0.750, [0.987, 0.934, 0.711]], [0.751, [0.985, 0.932, 0.714]], [0.753, [0.985, 0.932, 0.714]], [0.755, [0.984, 0.930, 0.717]], [0.757, [0.984, 0.930, 0.717]], [0.759, [0.982, 0.929, 0.721]], [0.761, [0.982, 0.929, 0.721]], [0.763, [0.981, 0.927, 0.724]], [0.765, [0.981, 0.927, 0.724]], [0.767, [0.979, 0.925, 0.727]], [0.769, [0.979, 0.925, 0.727]], [0.771, [0.978, 0.923, 0.730]], [0.773, [0.978, 0.923, 0.730]], [0.775, [0.976, 0.922, 0.734]], [0.777, [0.976, 0.922, 0.734]], [0.779, [0.975, 0.920, 0.737]], [0.781, [0.975, 0.920, 0.737]], [0.783, [0.973, 0.918, 0.740]], [0.785, [0.973, 0.918, 0.740]], [0.787, [0.972, 0.917, 0.743]], [0.789, [0.972, 0.917, 0.743]], [0.791, [0.970, 0.915, 0.746]], [0.793, [0.970, 0.915, 0.746]], [0.795, [0.969, 0.913, 0.750]], [0.796, [0.969, 0.913, 0.750]], [0.798, [0.967, 0.911, 0.753]], [0.800, [0.967, 0.911, 0.753]], [0.802, [0.966, 0.910, 0.756]], [0.804, [0.966, 0.910, 0.756]], [0.806, [0.964, 0.908, 0.759]], [0.808, [0.964, 0.908, 0.759]], [0.810, [0.963, 0.906, 0.763]], [0.812, [0.963, 0.906, 0.763]], [0.814, [0.961, 0.904, 0.766]], [0.816, [0.961, 0.904, 0.766]], [0.818, [0.960, 0.903, 0.769]], [0.820, [0.960, 0.903, 0.769]], [0.822, [0.958, 0.901, 0.772]], [0.824, [0.958, 0.901, 0.772]], [0.826, [0.957, 0.899, 0.776]], [0.828, [0.957, 0.899, 0.776]], [0.830, [0.955, 0.898, 0.779]], [0.832, [0.955, 0.898, 0.779]], [0.834, [0.953, 0.896, 0.782]], [0.836, [0.953, 0.896, 0.782]], [0.838, [0.952, 0.894, 0.785]], [0.840, [0.952, 0.894, 0.785]], [0.841, [0.950, 0.892, 0.788]], [0.843, [0.950, 0.892, 0.788]], [0.845, [0.949, 0.891, 0.792]], [0.847, [0.949, 0.891, 0.792]], [0.849, [0.947, 0.889, 0.795]], [0.851, [0.947, 0.889, 0.795]], [0.853, [0.946, 0.887, 0.798]], [0.855, [0.946, 0.887, 0.798]], [0.857, [0.943, 0.885, 0.800]], [0.859, [0.943, 0.885, 0.800]], [0.861, [0.939, 0.883, 0.800]], [0.863, [0.939, 0.883, 0.800]], [0.865, [0.935, 0.881, 0.800]], [0.867, [0.935, 0.881, 0.800]], [0.869, [0.931, 0.878, 0.800]], [0.871, [0.931, 0.878, 0.800]], [0.873, [0.927, 0.876, 0.800]], [0.875, [0.927, 0.876, 0.800]], [0.877, [0.923, 0.873, 0.800]], [0.879, [0.923, 0.873, 0.800]], [0.881, [0.919, 0.871, 0.800]], [0.883, [0.919, 0.871, 0.800]], [0.885, [0.916, 0.869, 0.800]], [0.886, [0.916, 0.869, 0.800]], [0.888, [0.912, 0.866, 0.800]], [0.890, [0.912, 0.866, 0.800]], [0.892, [0.908, 0.864, 0.800]], [0.894, [0.908, 0.864, 0.800]], [0.896, [0.904, 0.862, 0.800]], [0.898, [0.904, 0.862, 0.800]], [0.900, [0.900, 0.859, 0.800]], [0.902, [0.900, 0.859, 0.800]], [0.904, [0.896, 0.857, 0.800]], [0.906, [0.896, 0.857, 0.800]], [0.908, [0.892, 0.854, 0.800]], [0.910, [0.892, 0.854, 0.800]], [0.912, [0.888, 0.852, 0.800]], [0.914, [0.888, 0.852, 0.800]], [0.916, [0.884, 0.850, 0.800]], [0.918, [0.884, 0.850, 0.800]], [0.920, [0.880, 0.847, 0.800]], [0.922, [0.880, 0.847, 0.800]], [0.924, [0.876, 0.845, 0.800]], [0.926, [0.876, 0.845, 0.800]], [0.928, [0.872, 0.843, 0.800]], [0.930, [0.872, 0.843, 0.800]], [0.932, [0.868, 0.840, 0.800]], [0.933, [0.868, 0.840, 0.800]], [0.935, [0.864, 0.838, 0.800]], [0.937, [0.864, 0.838, 0.800]], [0.939, [0.860, 0.836, 0.800]], [0.941, [0.860, 0.836, 0.800]], [0.943, [0.856, 0.833, 0.800]], [0.945, [0.856, 0.833, 0.800]], [0.947, [0.852, 0.831, 0.800]], [0.949, [0.852, 0.831, 0.800]], [0.951, [0.848, 0.828, 0.800]], [0.953, [0.848, 0.828, 0.800]], [0.955, [0.844, 0.826, 0.800]], [0.957, [0.844, 0.826, 0.800]], [0.959, [0.840, 0.824, 0.800]], [0.961, [0.840, 0.824, 0.800]], [0.963, [0.836, 0.821, 0.800]], [0.965, [0.836, 0.821, 0.800]], [0.967, [0.832, 0.819, 0.800]], [0.969, [0.832, 0.819, 0.800]], [0.971, [0.828, 0.817, 0.800]], [0.973, [0.828, 0.817, 0.800]], [0.975, [0.824, 0.814, 0.800]], [0.977, [0.824, 0.814, 0.800]], [0.978, [0.820, 0.812, 0.800]], [0.980, [0.820, 0.812, 0.800]], [0.982, [0.816, 0.809, 0.800]], [0.984, [0.816, 0.809, 0.800]], [0.986, [0.812, 0.807, 0.800]], [0.988, [0.812, 0.807, 0.800]], [0.990, [0.808, 0.805, 0.800]], [0.992, [0.808, 0.805, 0.800]], [0.994, [0.804, 0.802, 0.800]], [0.996, [0.804, 0.802, 0.800]], [0.998, [0.800, 0.800, 0.800]], [1.000, [0.800, 0.800, 0.800]]]; +var Set1 = [[0.000, [0.894, 0.102, 0.110]], [0.002, [0.894, 0.102, 0.110]], [0.004, [0.873, 0.114, 0.129]], [0.006, [0.873, 0.114, 0.129]], [0.008, [0.852, 0.127, 0.148]], [0.010, [0.852, 0.127, 0.148]], [0.012, [0.830, 0.139, 0.167]], [0.014, [0.830, 0.139, 0.167]], [0.016, [0.809, 0.151, 0.187]], [0.018, [0.809, 0.151, 0.187]], [0.020, [0.788, 0.163, 0.206]], [0.022, [0.788, 0.163, 0.206]], [0.023, [0.766, 0.176, 0.225]], [0.025, [0.766, 0.176, 0.225]], [0.027, [0.745, 0.188, 0.244]], [0.029, [0.745, 0.188, 0.244]], [0.031, [0.724, 0.200, 0.263]], [0.033, [0.724, 0.200, 0.263]], [0.035, [0.703, 0.213, 0.283]], [0.037, [0.703, 0.213, 0.283]], [0.039, [0.681, 0.225, 0.302]], [0.041, [0.681, 0.225, 0.302]], [0.043, [0.660, 0.237, 0.321]], [0.045, [0.660, 0.237, 0.321]], [0.047, [0.639, 0.250, 0.340]], [0.049, [0.639, 0.250, 0.340]], [0.051, [0.617, 0.262, 0.359]], [0.053, [0.617, 0.262, 0.359]], [0.055, [0.596, 0.274, 0.379]], [0.057, [0.596, 0.274, 0.379]], [0.059, [0.575, 0.287, 0.398]], [0.061, [0.575, 0.287, 0.398]], [0.063, [0.554, 0.299, 0.417]], [0.065, [0.554, 0.299, 0.417]], [0.067, [0.532, 0.311, 0.436]], [0.068, [0.532, 0.311, 0.436]], [0.070, [0.511, 0.323, 0.455]], [0.072, [0.511, 0.323, 0.455]], [0.074, [0.490, 0.336, 0.474]], [0.076, [0.490, 0.336, 0.474]], [0.078, [0.468, 0.348, 0.494]], [0.080, [0.468, 0.348, 0.494]], [0.082, [0.447, 0.360, 0.513]], [0.084, [0.447, 0.360, 0.513]], [0.086, [0.426, 0.373, 0.532]], [0.088, [0.426, 0.373, 0.532]], [0.090, [0.405, 0.385, 0.551]], [0.092, [0.405, 0.385, 0.551]], [0.094, [0.383, 0.397, 0.570]], [0.096, [0.383, 0.397, 0.570]], [0.098, [0.362, 0.410, 0.590]], [0.100, [0.362, 0.410, 0.590]], [0.102, [0.341, 0.422, 0.609]], [0.104, [0.341, 0.422, 0.609]], [0.106, [0.319, 0.434, 0.628]], [0.108, [0.319, 0.434, 0.628]], [0.110, [0.298, 0.446, 0.647]], [0.112, [0.298, 0.446, 0.647]], [0.114, [0.277, 0.459, 0.666]], [0.115, [0.277, 0.459, 0.666]], [0.117, [0.256, 0.471, 0.686]], [0.119, [0.256, 0.471, 0.686]], [0.121, [0.234, 0.483, 0.705]], [0.123, [0.234, 0.483, 0.705]], [0.125, [0.216, 0.495, 0.720]], [0.127, [0.216, 0.495, 0.720]], [0.129, [0.219, 0.501, 0.706]], [0.131, [0.219, 0.501, 0.706]], [0.133, [0.221, 0.507, 0.693]], [0.135, [0.221, 0.507, 0.693]], [0.137, [0.224, 0.513, 0.679]], [0.139, [0.224, 0.513, 0.679]], [0.141, [0.227, 0.519, 0.666]], [0.143, [0.227, 0.519, 0.666]], [0.145, [0.230, 0.525, 0.652]], [0.147, [0.230, 0.525, 0.652]], [0.149, [0.232, 0.531, 0.639]], [0.151, [0.232, 0.531, 0.639]], [0.153, [0.235, 0.537, 0.625]], [0.155, [0.235, 0.537, 0.625]], [0.157, [0.238, 0.543, 0.612]], [0.159, [0.238, 0.543, 0.612]], [0.160, [0.240, 0.549, 0.598]], [0.162, [0.240, 0.549, 0.598]], [0.164, [0.243, 0.555, 0.585]], [0.166, [0.243, 0.555, 0.585]], [0.168, [0.246, 0.561, 0.571]], [0.170, [0.246, 0.561, 0.571]], [0.172, [0.249, 0.567, 0.557]], [0.174, [0.249, 0.567, 0.557]], [0.176, [0.251, 0.573, 0.544]], [0.178, [0.251, 0.573, 0.544]], [0.180, [0.254, 0.579, 0.530]], [0.182, [0.254, 0.579, 0.530]], [0.184, [0.257, 0.585, 0.517]], [0.186, [0.257, 0.585, 0.517]], [0.188, [0.259, 0.591, 0.503]], [0.190, [0.259, 0.591, 0.503]], [0.192, [0.262, 0.597, 0.490]], [0.194, [0.262, 0.597, 0.490]], [0.196, [0.265, 0.603, 0.476]], [0.198, [0.265, 0.603, 0.476]], [0.200, [0.267, 0.609, 0.463]], [0.202, [0.267, 0.609, 0.463]], [0.204, [0.270, 0.615, 0.449]], [0.205, [0.270, 0.615, 0.449]], [0.207, [0.273, 0.621, 0.436]], [0.209, [0.273, 0.621, 0.436]], [0.211, [0.276, 0.627, 0.422]], [0.213, [0.276, 0.627, 0.422]], [0.215, [0.278, 0.634, 0.409]], [0.217, [0.278, 0.634, 0.409]], [0.219, [0.281, 0.640, 0.395]], [0.221, [0.281, 0.640, 0.395]], [0.223, [0.284, 0.646, 0.382]], [0.225, [0.284, 0.646, 0.382]], [0.227, [0.286, 0.652, 0.368]], [0.229, [0.286, 0.652, 0.368]], [0.231, [0.289, 0.658, 0.354]], [0.233, [0.289, 0.658, 0.354]], [0.235, [0.292, 0.664, 0.341]], [0.237, [0.292, 0.664, 0.341]], [0.239, [0.295, 0.670, 0.327]], [0.241, [0.295, 0.670, 0.327]], [0.243, [0.297, 0.676, 0.314]], [0.245, [0.297, 0.676, 0.314]], [0.247, [0.300, 0.682, 0.300]], [0.249, [0.300, 0.682, 0.300]], [0.250, [0.304, 0.683, 0.293]], [0.252, [0.304, 0.683, 0.293]], [0.254, [0.313, 0.671, 0.304]], [0.256, [0.313, 0.671, 0.304]], [0.258, [0.323, 0.659, 0.315]], [0.260, [0.323, 0.659, 0.315]], [0.262, [0.332, 0.647, 0.326]], [0.264, [0.332, 0.647, 0.326]], [0.266, [0.341, 0.636, 0.337]], [0.268, [0.341, 0.636, 0.337]], [0.270, [0.350, 0.624, 0.348]], [0.272, [0.350, 0.624, 0.348]], [0.274, [0.360, 0.612, 0.359]], [0.276, [0.360, 0.612, 0.359]], [0.278, [0.369, 0.600, 0.370]], [0.280, [0.369, 0.600, 0.370]], [0.282, [0.378, 0.588, 0.381]], [0.284, [0.378, 0.588, 0.381]], [0.286, [0.387, 0.576, 0.391]], [0.288, [0.387, 0.576, 0.391]], [0.290, [0.397, 0.564, 0.402]], [0.292, [0.397, 0.564, 0.402]], [0.294, [0.406, 0.552, 0.413]], [0.295, [0.406, 0.552, 0.413]], [0.297, [0.415, 0.540, 0.424]], [0.299, [0.415, 0.540, 0.424]], [0.301, [0.424, 0.528, 0.435]], [0.303, [0.424, 0.528, 0.435]], [0.305, [0.433, 0.516, 0.446]], [0.307, [0.433, 0.516, 0.446]], [0.309, [0.443, 0.504, 0.457]], [0.311, [0.443, 0.504, 0.457]], [0.313, [0.452, 0.492, 0.468]], [0.315, [0.452, 0.492, 0.468]], [0.317, [0.461, 0.480, 0.479]], [0.319, [0.461, 0.480, 0.479]], [0.321, [0.470, 0.468, 0.490]], [0.323, [0.470, 0.468, 0.490]], [0.325, [0.480, 0.457, 0.501]], [0.327, [0.480, 0.457, 0.501]], [0.329, [0.489, 0.445, 0.512]], [0.331, [0.489, 0.445, 0.512]], [0.333, [0.498, 0.433, 0.523]], [0.335, [0.498, 0.433, 0.523]], [0.337, [0.507, 0.421, 0.534]], [0.339, [0.507, 0.421, 0.534]], [0.341, [0.516, 0.409, 0.545]], [0.342, [0.516, 0.409, 0.545]], [0.344, [0.526, 0.397, 0.556]], [0.346, [0.526, 0.397, 0.556]], [0.348, [0.535, 0.385, 0.567]], [0.350, [0.535, 0.385, 0.567]], [0.352, [0.544, 0.373, 0.578]], [0.354, [0.544, 0.373, 0.578]], [0.356, [0.553, 0.361, 0.589]], [0.358, [0.553, 0.361, 0.589]], [0.360, [0.563, 0.349, 0.600]], [0.362, [0.563, 0.349, 0.600]], [0.364, [0.572, 0.337, 0.610]], [0.366, [0.572, 0.337, 0.610]], [0.368, [0.581, 0.325, 0.621]], [0.370, [0.581, 0.325, 0.621]], [0.372, [0.590, 0.313, 0.632]], [0.374, [0.590, 0.313, 0.632]], [0.376, [0.601, 0.308, 0.632]], [0.378, [0.601, 0.308, 0.632]], [0.380, [0.614, 0.314, 0.612]], [0.382, [0.614, 0.314, 0.612]], [0.384, [0.626, 0.320, 0.592]], [0.386, [0.626, 0.320, 0.592]], [0.387, [0.639, 0.326, 0.572]], [0.389, [0.639, 0.326, 0.572]], [0.391, [0.652, 0.332, 0.551]], [0.393, [0.652, 0.332, 0.551]], [0.395, [0.664, 0.338, 0.531]], [0.397, [0.664, 0.338, 0.531]], [0.399, [0.677, 0.344, 0.511]], [0.401, [0.677, 0.344, 0.511]], [0.403, [0.690, 0.350, 0.491]], [0.405, [0.690, 0.350, 0.491]], [0.407, [0.702, 0.356, 0.471]], [0.409, [0.702, 0.356, 0.471]], [0.411, [0.715, 0.362, 0.451]], [0.413, [0.715, 0.362, 0.451]], [0.415, [0.728, 0.368, 0.431]], [0.417, [0.728, 0.368, 0.431]], [0.419, [0.740, 0.374, 0.411]], [0.421, [0.740, 0.374, 0.411]], [0.423, [0.753, 0.380, 0.391]], [0.425, [0.753, 0.380, 0.391]], [0.427, [0.766, 0.387, 0.371]], [0.429, [0.766, 0.387, 0.371]], [0.431, [0.778, 0.393, 0.351]], [0.432, [0.778, 0.393, 0.351]], [0.434, [0.791, 0.399, 0.331]], [0.436, [0.791, 0.399, 0.331]], [0.438, [0.804, 0.405, 0.311]], [0.440, [0.804, 0.405, 0.311]], [0.442, [0.816, 0.411, 0.291]], [0.444, [0.816, 0.411, 0.291]], [0.446, [0.829, 0.417, 0.271]], [0.448, [0.829, 0.417, 0.271]], [0.450, [0.842, 0.423, 0.251]], [0.452, [0.842, 0.423, 0.251]], [0.454, [0.854, 0.429, 0.231]], [0.456, [0.854, 0.429, 0.231]], [0.458, [0.867, 0.435, 0.211]], [0.460, [0.867, 0.435, 0.211]], [0.462, [0.880, 0.441, 0.191]], [0.464, [0.880, 0.441, 0.191]], [0.466, [0.892, 0.447, 0.170]], [0.468, [0.892, 0.447, 0.170]], [0.470, [0.905, 0.453, 0.150]], [0.472, [0.905, 0.453, 0.150]], [0.474, [0.918, 0.459, 0.130]], [0.476, [0.918, 0.459, 0.130]], [0.477, [0.930, 0.465, 0.110]], [0.479, [0.930, 0.465, 0.110]], [0.481, [0.943, 0.471, 0.090]], [0.483, [0.943, 0.471, 0.090]], [0.485, [0.956, 0.477, 0.070]], [0.487, [0.956, 0.477, 0.070]], [0.489, [0.968, 0.483, 0.050]], [0.491, [0.968, 0.483, 0.050]], [0.493, [0.981, 0.489, 0.030]], [0.495, [0.981, 0.489, 0.030]], [0.497, [0.994, 0.495, 0.010]], [0.499, [0.994, 0.495, 0.010]], [0.501, [1.000, 0.506, 0.003]], [0.503, [1.000, 0.506, 0.003]], [0.505, [1.000, 0.522, 0.009]], [0.507, [1.000, 0.522, 0.009]], [0.509, [1.000, 0.537, 0.016]], [0.511, [1.000, 0.537, 0.016]], [0.513, [1.000, 0.553, 0.022]], [0.515, [1.000, 0.553, 0.022]], [0.517, [1.000, 0.569, 0.028]], [0.519, [1.000, 0.569, 0.028]], [0.521, [1.000, 0.585, 0.035]], [0.523, [1.000, 0.585, 0.035]], [0.524, [1.000, 0.600, 0.041]], [0.526, [1.000, 0.600, 0.041]], [0.528, [1.000, 0.616, 0.047]], [0.530, [1.000, 0.616, 0.047]], [0.532, [1.000, 0.632, 0.053]], [0.534, [1.000, 0.632, 0.053]], [0.536, [1.000, 0.648, 0.060]], [0.538, [1.000, 0.648, 0.060]], [0.540, [1.000, 0.663, 0.066]], [0.542, [1.000, 0.663, 0.066]], [0.544, [1.000, 0.679, 0.072]], [0.546, [1.000, 0.679, 0.072]], [0.548, [1.000, 0.695, 0.078]], [0.550, [1.000, 0.695, 0.078]], [0.552, [1.000, 0.711, 0.085]], [0.554, [1.000, 0.711, 0.085]], [0.556, [1.000, 0.726, 0.091]], [0.558, [1.000, 0.726, 0.091]], [0.560, [1.000, 0.742, 0.097]], [0.562, [1.000, 0.742, 0.097]], [0.564, [1.000, 0.758, 0.104]], [0.566, [1.000, 0.758, 0.104]], [0.568, [1.000, 0.774, 0.110]], [0.569, [1.000, 0.774, 0.110]], [0.571, [1.000, 0.789, 0.116]], [0.573, [1.000, 0.789, 0.116]], [0.575, [1.000, 0.805, 0.122]], [0.577, [1.000, 0.805, 0.122]], [0.579, [1.000, 0.821, 0.129]], [0.581, [1.000, 0.821, 0.129]], [0.583, [1.000, 0.837, 0.135]], [0.585, [1.000, 0.837, 0.135]], [0.587, [1.000, 0.852, 0.141]], [0.589, [1.000, 0.852, 0.141]], [0.591, [1.000, 0.868, 0.147]], [0.593, [1.000, 0.868, 0.147]], [0.595, [1.000, 0.884, 0.154]], [0.597, [1.000, 0.884, 0.154]], [0.599, [1.000, 0.900, 0.160]], [0.601, [1.000, 0.900, 0.160]], [0.603, [1.000, 0.915, 0.166]], [0.605, [1.000, 0.915, 0.166]], [0.607, [1.000, 0.931, 0.173]], [0.609, [1.000, 0.931, 0.173]], [0.611, [1.000, 0.947, 0.179]], [0.613, [1.000, 0.947, 0.179]], [0.614, [1.000, 0.963, 0.185]], [0.616, [1.000, 0.963, 0.185]], [0.618, [1.000, 0.978, 0.191]], [0.620, [1.000, 0.978, 0.191]], [0.622, [1.000, 0.994, 0.198]], [0.624, [1.000, 0.994, 0.198]], [0.626, [0.993, 0.987, 0.199]], [0.628, [0.993, 0.987, 0.199]], [0.630, [0.982, 0.966, 0.198]], [0.632, [0.982, 0.966, 0.198]], [0.634, [0.971, 0.945, 0.196]], [0.636, [0.971, 0.945, 0.196]], [0.638, [0.960, 0.925, 0.195]], [0.640, [0.960, 0.925, 0.195]], [0.642, [0.949, 0.904, 0.194]], [0.644, [0.949, 0.904, 0.194]], [0.646, [0.938, 0.883, 0.192]], [0.648, [0.938, 0.883, 0.192]], [0.650, [0.927, 0.862, 0.191]], [0.652, [0.927, 0.862, 0.191]], [0.654, [0.917, 0.841, 0.190]], [0.656, [0.917, 0.841, 0.190]], [0.658, [0.906, 0.821, 0.188]], [0.659, [0.906, 0.821, 0.188]], [0.661, [0.895, 0.800, 0.187]], [0.663, [0.895, 0.800, 0.187]], [0.665, [0.884, 0.779, 0.186]], [0.667, [0.884, 0.779, 0.186]], [0.669, [0.873, 0.758, 0.184]], [0.671, [0.873, 0.758, 0.184]], [0.673, [0.862, 0.738, 0.183]], [0.675, [0.862, 0.738, 0.183]], [0.677, [0.851, 0.717, 0.182]], [0.679, [0.851, 0.717, 0.182]], [0.681, [0.840, 0.696, 0.180]], [0.683, [0.840, 0.696, 0.180]], [0.685, [0.829, 0.675, 0.179]], [0.687, [0.829, 0.675, 0.179]], [0.689, [0.818, 0.654, 0.178]], [0.691, [0.818, 0.654, 0.178]], [0.693, [0.807, 0.634, 0.176]], [0.695, [0.807, 0.634, 0.176]], [0.697, [0.796, 0.613, 0.175]], [0.699, [0.796, 0.613, 0.175]], [0.701, [0.785, 0.592, 0.173]], [0.703, [0.785, 0.592, 0.173]], [0.705, [0.774, 0.571, 0.172]], [0.706, [0.774, 0.571, 0.172]], [0.708, [0.763, 0.550, 0.171]], [0.710, [0.763, 0.550, 0.171]], [0.712, [0.752, 0.530, 0.169]], [0.714, [0.752, 0.530, 0.169]], [0.716, [0.741, 0.509, 0.168]], [0.718, [0.741, 0.509, 0.168]], [0.720, [0.730, 0.488, 0.167]], [0.722, [0.730, 0.488, 0.167]], [0.724, [0.719, 0.467, 0.165]], [0.726, [0.719, 0.467, 0.165]], [0.728, [0.708, 0.446, 0.164]], [0.730, [0.708, 0.446, 0.164]], [0.732, [0.698, 0.426, 0.163]], [0.734, [0.698, 0.426, 0.163]], [0.736, [0.687, 0.405, 0.161]], [0.738, [0.687, 0.405, 0.161]], [0.740, [0.676, 0.384, 0.160]], [0.742, [0.676, 0.384, 0.160]], [0.744, [0.665, 0.363, 0.159]], [0.746, [0.665, 0.363, 0.159]], [0.748, [0.654, 0.342, 0.157]], [0.750, [0.654, 0.342, 0.157]], [0.751, [0.658, 0.341, 0.171]], [0.753, [0.658, 0.341, 0.171]], [0.755, [0.668, 0.347, 0.189]], [0.757, [0.668, 0.347, 0.189]], [0.759, [0.678, 0.352, 0.208]], [0.761, [0.678, 0.352, 0.208]], [0.763, [0.688, 0.357, 0.227]], [0.765, [0.688, 0.357, 0.227]], [0.767, [0.698, 0.362, 0.245]], [0.769, [0.698, 0.362, 0.245]], [0.771, [0.708, 0.368, 0.264]], [0.773, [0.708, 0.368, 0.264]], [0.775, [0.718, 0.373, 0.282]], [0.777, [0.718, 0.373, 0.282]], [0.779, [0.728, 0.378, 0.301]], [0.781, [0.728, 0.378, 0.301]], [0.783, [0.738, 0.384, 0.319]], [0.785, [0.738, 0.384, 0.319]], [0.787, [0.748, 0.389, 0.338]], [0.789, [0.748, 0.389, 0.338]], [0.791, [0.758, 0.394, 0.357]], [0.793, [0.758, 0.394, 0.357]], [0.795, [0.768, 0.399, 0.375]], [0.796, [0.768, 0.399, 0.375]], [0.798, [0.778, 0.405, 0.394]], [0.800, [0.778, 0.405, 0.394]], [0.802, [0.788, 0.410, 0.412]], [0.804, [0.788, 0.410, 0.412]], [0.806, [0.798, 0.415, 0.431]], [0.808, [0.798, 0.415, 0.431]], [0.810, [0.808, 0.421, 0.449]], [0.812, [0.808, 0.421, 0.449]], [0.814, [0.818, 0.426, 0.468]], [0.816, [0.818, 0.426, 0.468]], [0.818, [0.828, 0.431, 0.487]], [0.820, [0.828, 0.431, 0.487]], [0.822, [0.838, 0.436, 0.505]], [0.824, [0.838, 0.436, 0.505]], [0.826, [0.848, 0.442, 0.524]], [0.828, [0.848, 0.442, 0.524]], [0.830, [0.858, 0.447, 0.542]], [0.832, [0.858, 0.447, 0.542]], [0.834, [0.868, 0.452, 0.561]], [0.836, [0.868, 0.452, 0.561]], [0.838, [0.878, 0.458, 0.580]], [0.840, [0.878, 0.458, 0.580]], [0.841, [0.888, 0.463, 0.598]], [0.843, [0.888, 0.463, 0.598]], [0.845, [0.898, 0.468, 0.617]], [0.847, [0.898, 0.468, 0.617]], [0.849, [0.908, 0.473, 0.635]], [0.851, [0.908, 0.473, 0.635]], [0.853, [0.918, 0.479, 0.654]], [0.855, [0.918, 0.479, 0.654]], [0.857, [0.928, 0.484, 0.672]], [0.859, [0.928, 0.484, 0.672]], [0.861, [0.937, 0.489, 0.691]], [0.863, [0.937, 0.489, 0.691]], [0.865, [0.947, 0.495, 0.710]], [0.867, [0.947, 0.495, 0.710]], [0.869, [0.957, 0.500, 0.728]], [0.871, [0.957, 0.500, 0.728]], [0.873, [0.967, 0.505, 0.747]], [0.875, [0.967, 0.505, 0.747]], [0.877, [0.959, 0.508, 0.745]], [0.879, [0.959, 0.508, 0.745]], [0.881, [0.947, 0.511, 0.740]], [0.883, [0.947, 0.511, 0.740]], [0.885, [0.935, 0.514, 0.736]], [0.886, [0.935, 0.514, 0.736]], [0.888, [0.924, 0.517, 0.731]], [0.890, [0.924, 0.517, 0.731]], [0.892, [0.912, 0.520, 0.726]], [0.894, [0.912, 0.520, 0.726]], [0.896, [0.901, 0.523, 0.722]], [0.898, [0.901, 0.523, 0.722]], [0.900, [0.889, 0.526, 0.717]], [0.902, [0.889, 0.526, 0.717]], [0.904, [0.878, 0.529, 0.712]], [0.906, [0.878, 0.529, 0.712]], [0.908, [0.866, 0.532, 0.708]], [0.910, [0.866, 0.532, 0.708]], [0.912, [0.854, 0.535, 0.703]], [0.914, [0.854, 0.535, 0.703]], [0.916, [0.843, 0.538, 0.698]], [0.918, [0.843, 0.538, 0.698]], [0.920, [0.831, 0.541, 0.694]], [0.922, [0.831, 0.541, 0.694]], [0.924, [0.820, 0.544, 0.689]], [0.926, [0.820, 0.544, 0.689]], [0.928, [0.808, 0.547, 0.684]], [0.930, [0.808, 0.547, 0.684]], [0.932, [0.797, 0.550, 0.679]], [0.933, [0.797, 0.550, 0.679]], [0.935, [0.785, 0.553, 0.675]], [0.937, [0.785, 0.553, 0.675]], [0.939, [0.773, 0.556, 0.670]], [0.941, [0.773, 0.556, 0.670]], [0.943, [0.762, 0.559, 0.665]], [0.945, [0.762, 0.559, 0.665]], [0.947, [0.750, 0.562, 0.661]], [0.949, [0.750, 0.562, 0.661]], [0.951, [0.739, 0.565, 0.656]], [0.953, [0.739, 0.565, 0.656]], [0.955, [0.727, 0.568, 0.651]], [0.957, [0.727, 0.568, 0.651]], [0.959, [0.716, 0.570, 0.647]], [0.961, [0.716, 0.570, 0.647]], [0.963, [0.704, 0.573, 0.642]], [0.965, [0.704, 0.573, 0.642]], [0.967, [0.693, 0.576, 0.637]], [0.969, [0.693, 0.576, 0.637]], [0.971, [0.681, 0.579, 0.633]], [0.973, [0.681, 0.579, 0.633]], [0.975, [0.669, 0.582, 0.628]], [0.977, [0.669, 0.582, 0.628]], [0.978, [0.658, 0.585, 0.623]], [0.980, [0.658, 0.585, 0.623]], [0.982, [0.646, 0.588, 0.619]], [0.984, [0.646, 0.588, 0.619]], [0.986, [0.635, 0.591, 0.614]], [0.988, [0.635, 0.591, 0.614]], [0.990, [0.623, 0.594, 0.609]], [0.992, [0.623, 0.594, 0.609]], [0.994, [0.612, 0.597, 0.605]], [0.996, [0.612, 0.597, 0.605]], [0.998, [0.600, 0.600, 0.600]], [1.000, [0.600, 0.600, 0.600]]]; +var Set2 = [[0.000, [0.400, 0.761, 0.647]], [0.002, [0.400, 0.761, 0.647]], [0.004, [0.416, 0.755, 0.640]], [0.006, [0.416, 0.755, 0.640]], [0.008, [0.432, 0.749, 0.633]], [0.010, [0.432, 0.749, 0.633]], [0.012, [0.448, 0.744, 0.625]], [0.014, [0.448, 0.744, 0.625]], [0.016, [0.465, 0.738, 0.618]], [0.018, [0.465, 0.738, 0.618]], [0.020, [0.481, 0.732, 0.611]], [0.022, [0.481, 0.732, 0.611]], [0.023, [0.497, 0.727, 0.604]], [0.025, [0.497, 0.727, 0.604]], [0.027, [0.513, 0.721, 0.597]], [0.029, [0.513, 0.721, 0.597]], [0.031, [0.529, 0.715, 0.589]], [0.033, [0.529, 0.715, 0.589]], [0.035, [0.545, 0.709, 0.582]], [0.037, [0.545, 0.709, 0.582]], [0.039, [0.561, 0.704, 0.575]], [0.041, [0.561, 0.704, 0.575]], [0.043, [0.578, 0.698, 0.568]], [0.045, [0.578, 0.698, 0.568]], [0.047, [0.594, 0.692, 0.561]], [0.049, [0.594, 0.692, 0.561]], [0.051, [0.610, 0.687, 0.553]], [0.053, [0.610, 0.687, 0.553]], [0.055, [0.626, 0.681, 0.546]], [0.057, [0.626, 0.681, 0.546]], [0.059, [0.642, 0.675, 0.539]], [0.061, [0.642, 0.675, 0.539]], [0.063, [0.658, 0.669, 0.532]], [0.065, [0.658, 0.669, 0.532]], [0.067, [0.675, 0.664, 0.524]], [0.068, [0.675, 0.664, 0.524]], [0.070, [0.691, 0.658, 0.517]], [0.072, [0.691, 0.658, 0.517]], [0.074, [0.707, 0.652, 0.510]], [0.076, [0.707, 0.652, 0.510]], [0.078, [0.723, 0.647, 0.503]], [0.080, [0.723, 0.647, 0.503]], [0.082, [0.739, 0.641, 0.496]], [0.084, [0.739, 0.641, 0.496]], [0.086, [0.755, 0.635, 0.488]], [0.088, [0.755, 0.635, 0.488]], [0.090, [0.771, 0.630, 0.481]], [0.092, [0.771, 0.630, 0.481]], [0.094, [0.788, 0.624, 0.474]], [0.096, [0.788, 0.624, 0.474]], [0.098, [0.804, 0.618, 0.467]], [0.100, [0.804, 0.618, 0.467]], [0.102, [0.820, 0.612, 0.460]], [0.104, [0.820, 0.612, 0.460]], [0.106, [0.836, 0.607, 0.452]], [0.108, [0.836, 0.607, 0.452]], [0.110, [0.852, 0.601, 0.445]], [0.112, [0.852, 0.601, 0.445]], [0.114, [0.868, 0.595, 0.438]], [0.115, [0.868, 0.595, 0.438]], [0.117, [0.884, 0.590, 0.431]], [0.119, [0.884, 0.590, 0.431]], [0.121, [0.901, 0.584, 0.423]], [0.123, [0.901, 0.584, 0.423]], [0.125, [0.917, 0.578, 0.416]], [0.127, [0.917, 0.578, 0.416]], [0.129, [0.933, 0.573, 0.409]], [0.131, [0.933, 0.573, 0.409]], [0.133, [0.949, 0.567, 0.402]], [0.135, [0.949, 0.567, 0.402]], [0.137, [0.965, 0.561, 0.395]], [0.139, [0.965, 0.561, 0.395]], [0.141, [0.981, 0.555, 0.387]], [0.143, [0.981, 0.555, 0.387]], [0.145, [0.981, 0.554, 0.391]], [0.147, [0.981, 0.554, 0.391]], [0.149, [0.969, 0.556, 0.402]], [0.151, [0.969, 0.556, 0.402]], [0.153, [0.958, 0.558, 0.413]], [0.155, [0.958, 0.558, 0.413]], [0.157, [0.946, 0.560, 0.425]], [0.159, [0.946, 0.560, 0.425]], [0.160, [0.934, 0.562, 0.436]], [0.162, [0.934, 0.562, 0.436]], [0.164, [0.922, 0.564, 0.447]], [0.166, [0.922, 0.564, 0.447]], [0.168, [0.910, 0.566, 0.459]], [0.170, [0.910, 0.566, 0.459]], [0.172, [0.898, 0.568, 0.470]], [0.174, [0.898, 0.568, 0.470]], [0.176, [0.886, 0.570, 0.481]], [0.178, [0.886, 0.570, 0.481]], [0.180, [0.874, 0.573, 0.493]], [0.182, [0.874, 0.573, 0.493]], [0.184, [0.862, 0.575, 0.504]], [0.186, [0.862, 0.575, 0.504]], [0.188, [0.850, 0.577, 0.515]], [0.190, [0.850, 0.577, 0.515]], [0.192, [0.838, 0.579, 0.526]], [0.194, [0.838, 0.579, 0.526]], [0.196, [0.826, 0.581, 0.538]], [0.198, [0.826, 0.581, 0.538]], [0.200, [0.814, 0.583, 0.549]], [0.202, [0.814, 0.583, 0.549]], [0.204, [0.802, 0.585, 0.560]], [0.205, [0.802, 0.585, 0.560]], [0.207, [0.790, 0.587, 0.572]], [0.209, [0.790, 0.587, 0.572]], [0.211, [0.778, 0.589, 0.583]], [0.213, [0.778, 0.589, 0.583]], [0.215, [0.766, 0.591, 0.594]], [0.217, [0.766, 0.591, 0.594]], [0.219, [0.754, 0.593, 0.606]], [0.221, [0.754, 0.593, 0.606]], [0.223, [0.742, 0.595, 0.617]], [0.225, [0.742, 0.595, 0.617]], [0.227, [0.730, 0.597, 0.628]], [0.229, [0.730, 0.597, 0.628]], [0.231, [0.719, 0.599, 0.639]], [0.233, [0.719, 0.599, 0.639]], [0.235, [0.707, 0.601, 0.651]], [0.237, [0.707, 0.601, 0.651]], [0.239, [0.695, 0.603, 0.662]], [0.241, [0.695, 0.603, 0.662]], [0.243, [0.683, 0.605, 0.673]], [0.245, [0.683, 0.605, 0.673]], [0.247, [0.671, 0.607, 0.685]], [0.249, [0.671, 0.607, 0.685]], [0.250, [0.659, 0.609, 0.696]], [0.252, [0.659, 0.609, 0.696]], [0.254, [0.647, 0.611, 0.707]], [0.256, [0.647, 0.611, 0.707]], [0.258, [0.635, 0.613, 0.719]], [0.260, [0.635, 0.613, 0.719]], [0.262, [0.623, 0.615, 0.730]], [0.264, [0.623, 0.615, 0.730]], [0.266, [0.611, 0.618, 0.741]], [0.268, [0.611, 0.618, 0.741]], [0.270, [0.599, 0.620, 0.752]], [0.272, [0.599, 0.620, 0.752]], [0.274, [0.587, 0.622, 0.764]], [0.276, [0.587, 0.622, 0.764]], [0.278, [0.575, 0.624, 0.775]], [0.280, [0.575, 0.624, 0.775]], [0.282, [0.563, 0.626, 0.786]], [0.284, [0.563, 0.626, 0.786]], [0.286, [0.554, 0.627, 0.796]], [0.288, [0.554, 0.627, 0.796]], [0.290, [0.564, 0.625, 0.795]], [0.292, [0.564, 0.625, 0.795]], [0.294, [0.574, 0.622, 0.794]], [0.295, [0.574, 0.622, 0.794]], [0.297, [0.583, 0.620, 0.793]], [0.299, [0.583, 0.620, 0.793]], [0.301, [0.593, 0.618, 0.793]], [0.303, [0.593, 0.618, 0.793]], [0.305, [0.603, 0.615, 0.792]], [0.307, [0.603, 0.615, 0.792]], [0.309, [0.612, 0.613, 0.791]], [0.311, [0.612, 0.613, 0.791]], [0.313, [0.622, 0.611, 0.790]], [0.315, [0.622, 0.611, 0.790]], [0.317, [0.632, 0.608, 0.789]], [0.319, [0.632, 0.608, 0.789]], [0.321, [0.642, 0.606, 0.788]], [0.323, [0.642, 0.606, 0.788]], [0.325, [0.651, 0.603, 0.787]], [0.327, [0.651, 0.603, 0.787]], [0.329, [0.661, 0.601, 0.786]], [0.331, [0.661, 0.601, 0.786]], [0.333, [0.671, 0.599, 0.786]], [0.335, [0.671, 0.599, 0.786]], [0.337, [0.680, 0.596, 0.785]], [0.339, [0.680, 0.596, 0.785]], [0.341, [0.690, 0.594, 0.784]], [0.342, [0.690, 0.594, 0.784]], [0.344, [0.700, 0.592, 0.783]], [0.346, [0.700, 0.592, 0.783]], [0.348, [0.709, 0.589, 0.782]], [0.350, [0.709, 0.589, 0.782]], [0.352, [0.719, 0.587, 0.781]], [0.354, [0.719, 0.587, 0.781]], [0.356, [0.729, 0.584, 0.780]], [0.358, [0.729, 0.584, 0.780]], [0.360, [0.738, 0.582, 0.780]], [0.362, [0.738, 0.582, 0.780]], [0.364, [0.748, 0.580, 0.779]], [0.366, [0.748, 0.580, 0.779]], [0.368, [0.758, 0.577, 0.778]], [0.370, [0.758, 0.577, 0.778]], [0.372, [0.767, 0.575, 0.777]], [0.374, [0.767, 0.575, 0.777]], [0.376, [0.777, 0.573, 0.776]], [0.378, [0.777, 0.573, 0.776]], [0.380, [0.787, 0.570, 0.775]], [0.382, [0.787, 0.570, 0.775]], [0.384, [0.797, 0.568, 0.774]], [0.386, [0.797, 0.568, 0.774]], [0.387, [0.806, 0.566, 0.774]], [0.389, [0.806, 0.566, 0.774]], [0.391, [0.816, 0.563, 0.773]], [0.393, [0.816, 0.563, 0.773]], [0.395, [0.826, 0.561, 0.772]], [0.397, [0.826, 0.561, 0.772]], [0.399, [0.835, 0.558, 0.771]], [0.401, [0.835, 0.558, 0.771]], [0.403, [0.845, 0.556, 0.770]], [0.405, [0.845, 0.556, 0.770]], [0.407, [0.855, 0.554, 0.769]], [0.409, [0.855, 0.554, 0.769]], [0.411, [0.864, 0.551, 0.768]], [0.413, [0.864, 0.551, 0.768]], [0.415, [0.874, 0.549, 0.768]], [0.417, [0.874, 0.549, 0.768]], [0.419, [0.884, 0.547, 0.767]], [0.421, [0.884, 0.547, 0.767]], [0.423, [0.893, 0.544, 0.766]], [0.425, [0.893, 0.544, 0.766]], [0.427, [0.903, 0.542, 0.765]], [0.429, [0.903, 0.542, 0.765]], [0.431, [0.901, 0.547, 0.756]], [0.432, [0.901, 0.547, 0.756]], [0.434, [0.894, 0.556, 0.744]], [0.436, [0.894, 0.556, 0.744]], [0.438, [0.887, 0.564, 0.732]], [0.440, [0.887, 0.564, 0.732]], [0.442, [0.880, 0.572, 0.720]], [0.444, [0.880, 0.572, 0.720]], [0.446, [0.873, 0.581, 0.708]], [0.448, [0.873, 0.581, 0.708]], [0.450, [0.866, 0.589, 0.696]], [0.452, [0.866, 0.589, 0.696]], [0.454, [0.859, 0.598, 0.684]], [0.456, [0.859, 0.598, 0.684]], [0.458, [0.852, 0.606, 0.673]], [0.460, [0.852, 0.606, 0.673]], [0.462, [0.845, 0.614, 0.661]], [0.464, [0.845, 0.614, 0.661]], [0.466, [0.838, 0.623, 0.649]], [0.468, [0.838, 0.623, 0.649]], [0.470, [0.831, 0.631, 0.637]], [0.472, [0.831, 0.631, 0.637]], [0.474, [0.824, 0.640, 0.625]], [0.476, [0.824, 0.640, 0.625]], [0.477, [0.817, 0.648, 0.613]], [0.479, [0.817, 0.648, 0.613]], [0.481, [0.810, 0.656, 0.601]], [0.483, [0.810, 0.656, 0.601]], [0.485, [0.803, 0.665, 0.589]], [0.487, [0.803, 0.665, 0.589]], [0.489, [0.796, 0.673, 0.577]], [0.491, [0.796, 0.673, 0.577]], [0.493, [0.789, 0.682, 0.565]], [0.495, [0.789, 0.682, 0.565]], [0.497, [0.782, 0.690, 0.553]], [0.499, [0.782, 0.690, 0.553]], [0.501, [0.775, 0.698, 0.541]], [0.503, [0.775, 0.698, 0.541]], [0.505, [0.768, 0.707, 0.529]], [0.507, [0.768, 0.707, 0.529]], [0.509, [0.761, 0.715, 0.517]], [0.511, [0.761, 0.715, 0.517]], [0.513, [0.754, 0.724, 0.505]], [0.515, [0.754, 0.724, 0.505]], [0.517, [0.747, 0.732, 0.493]], [0.519, [0.747, 0.732, 0.493]], [0.521, [0.740, 0.740, 0.481]], [0.523, [0.740, 0.740, 0.481]], [0.524, [0.733, 0.749, 0.469]], [0.526, [0.733, 0.749, 0.469]], [0.528, [0.726, 0.757, 0.457]], [0.530, [0.726, 0.757, 0.457]], [0.532, [0.719, 0.765, 0.445]], [0.534, [0.719, 0.765, 0.445]], [0.536, [0.712, 0.774, 0.434]], [0.538, [0.712, 0.774, 0.434]], [0.540, [0.705, 0.782, 0.422]], [0.542, [0.705, 0.782, 0.422]], [0.544, [0.698, 0.791, 0.410]], [0.546, [0.698, 0.791, 0.410]], [0.548, [0.691, 0.799, 0.398]], [0.550, [0.691, 0.799, 0.398]], [0.552, [0.684, 0.807, 0.386]], [0.554, [0.684, 0.807, 0.386]], [0.556, [0.677, 0.816, 0.374]], [0.558, [0.677, 0.816, 0.374]], [0.560, [0.670, 0.824, 0.362]], [0.562, [0.670, 0.824, 0.362]], [0.564, [0.663, 0.833, 0.350]], [0.566, [0.663, 0.833, 0.350]], [0.568, [0.656, 0.841, 0.338]], [0.569, [0.656, 0.841, 0.338]], [0.571, [0.654, 0.847, 0.328]], [0.573, [0.654, 0.847, 0.328]], [0.575, [0.663, 0.847, 0.324]], [0.577, [0.663, 0.847, 0.324]], [0.579, [0.673, 0.847, 0.320]], [0.581, [0.673, 0.847, 0.320]], [0.583, [0.682, 0.847, 0.316]], [0.585, [0.682, 0.847, 0.316]], [0.587, [0.692, 0.848, 0.312]], [0.589, [0.692, 0.848, 0.312]], [0.591, [0.702, 0.848, 0.308]], [0.593, [0.702, 0.848, 0.308]], [0.595, [0.711, 0.848, 0.304]], [0.597, [0.711, 0.848, 0.304]], [0.599, [0.721, 0.848, 0.300]], [0.601, [0.721, 0.848, 0.300]], [0.603, [0.730, 0.848, 0.296]], [0.605, [0.730, 0.848, 0.296]], [0.607, [0.740, 0.848, 0.292]], [0.609, [0.740, 0.848, 0.292]], [0.611, [0.750, 0.848, 0.288]], [0.613, [0.750, 0.848, 0.288]], [0.614, [0.759, 0.848, 0.284]], [0.616, [0.759, 0.848, 0.284]], [0.618, [0.769, 0.848, 0.280]], [0.620, [0.769, 0.848, 0.280]], [0.622, [0.778, 0.848, 0.276]], [0.624, [0.778, 0.848, 0.276]], [0.626, [0.788, 0.849, 0.273]], [0.628, [0.788, 0.849, 0.273]], [0.630, [0.797, 0.849, 0.269]], [0.632, [0.797, 0.849, 0.269]], [0.634, [0.807, 0.849, 0.265]], [0.636, [0.807, 0.849, 0.265]], [0.638, [0.817, 0.849, 0.261]], [0.640, [0.817, 0.849, 0.261]], [0.642, [0.826, 0.849, 0.257]], [0.644, [0.826, 0.849, 0.257]], [0.646, [0.836, 0.849, 0.253]], [0.648, [0.836, 0.849, 0.253]], [0.650, [0.845, 0.849, 0.249]], [0.652, [0.845, 0.849, 0.249]], [0.654, [0.855, 0.849, 0.245]], [0.656, [0.855, 0.849, 0.245]], [0.658, [0.864, 0.849, 0.241]], [0.659, [0.864, 0.849, 0.241]], [0.661, [0.874, 0.850, 0.237]], [0.663, [0.874, 0.850, 0.237]], [0.665, [0.884, 0.850, 0.233]], [0.667, [0.884, 0.850, 0.233]], [0.669, [0.893, 0.850, 0.229]], [0.671, [0.893, 0.850, 0.229]], [0.673, [0.903, 0.850, 0.225]], [0.675, [0.903, 0.850, 0.225]], [0.677, [0.912, 0.850, 0.221]], [0.679, [0.912, 0.850, 0.221]], [0.681, [0.922, 0.850, 0.217]], [0.683, [0.922, 0.850, 0.217]], [0.685, [0.932, 0.850, 0.213]], [0.687, [0.932, 0.850, 0.213]], [0.689, [0.941, 0.850, 0.209]], [0.691, [0.941, 0.850, 0.209]], [0.693, [0.951, 0.850, 0.205]], [0.695, [0.951, 0.850, 0.205]], [0.697, [0.960, 0.851, 0.201]], [0.699, [0.960, 0.851, 0.201]], [0.701, [0.970, 0.851, 0.197]], [0.703, [0.970, 0.851, 0.197]], [0.705, [0.979, 0.851, 0.193]], [0.706, [0.979, 0.851, 0.193]], [0.708, [0.989, 0.851, 0.189]], [0.710, [0.989, 0.851, 0.189]], [0.712, [0.999, 0.851, 0.185]], [0.714, [0.999, 0.851, 0.185]], [0.716, [0.998, 0.849, 0.194]], [0.718, [0.998, 0.849, 0.194]], [0.720, [0.995, 0.847, 0.205]], [0.722, [0.995, 0.847, 0.205]], [0.724, [0.992, 0.845, 0.215]], [0.726, [0.992, 0.845, 0.215]], [0.728, [0.989, 0.842, 0.226]], [0.730, [0.989, 0.842, 0.226]], [0.732, [0.986, 0.840, 0.237]], [0.734, [0.986, 0.840, 0.237]], [0.736, [0.984, 0.838, 0.248]], [0.738, [0.984, 0.838, 0.248]], [0.740, [0.981, 0.835, 0.259]], [0.742, [0.981, 0.835, 0.259]], [0.744, [0.978, 0.833, 0.270]], [0.746, [0.978, 0.833, 0.270]], [0.748, [0.975, 0.831, 0.281]], [0.750, [0.975, 0.831, 0.281]], [0.751, [0.972, 0.829, 0.291]], [0.753, [0.972, 0.829, 0.291]], [0.755, [0.970, 0.826, 0.302]], [0.757, [0.970, 0.826, 0.302]], [0.759, [0.967, 0.824, 0.313]], [0.761, [0.967, 0.824, 0.313]], [0.763, [0.964, 0.822, 0.324]], [0.765, [0.964, 0.822, 0.324]], [0.767, [0.961, 0.820, 0.335]], [0.769, [0.961, 0.820, 0.335]], [0.771, [0.958, 0.817, 0.346]], [0.773, [0.958, 0.817, 0.346]], [0.775, [0.956, 0.815, 0.357]], [0.777, [0.956, 0.815, 0.357]], [0.779, [0.953, 0.813, 0.368]], [0.781, [0.953, 0.813, 0.368]], [0.783, [0.950, 0.811, 0.378]], [0.785, [0.950, 0.811, 0.378]], [0.787, [0.947, 0.808, 0.389]], [0.789, [0.947, 0.808, 0.389]], [0.791, [0.944, 0.806, 0.400]], [0.793, [0.944, 0.806, 0.400]], [0.795, [0.942, 0.804, 0.411]], [0.796, [0.942, 0.804, 0.411]], [0.798, [0.939, 0.802, 0.422]], [0.800, [0.939, 0.802, 0.422]], [0.802, [0.936, 0.799, 0.433]], [0.804, [0.936, 0.799, 0.433]], [0.806, [0.933, 0.797, 0.444]], [0.808, [0.933, 0.797, 0.444]], [0.810, [0.930, 0.795, 0.455]], [0.812, [0.930, 0.795, 0.455]], [0.814, [0.928, 0.793, 0.465]], [0.816, [0.928, 0.793, 0.465]], [0.818, [0.925, 0.790, 0.476]], [0.820, [0.925, 0.790, 0.476]], [0.822, [0.922, 0.788, 0.487]], [0.824, [0.922, 0.788, 0.487]], [0.826, [0.919, 0.786, 0.498]], [0.828, [0.919, 0.786, 0.498]], [0.830, [0.916, 0.783, 0.509]], [0.832, [0.916, 0.783, 0.509]], [0.834, [0.914, 0.781, 0.520]], [0.836, [0.914, 0.781, 0.520]], [0.838, [0.911, 0.779, 0.531]], [0.840, [0.911, 0.779, 0.531]], [0.841, [0.908, 0.777, 0.542]], [0.843, [0.908, 0.777, 0.542]], [0.845, [0.905, 0.774, 0.552]], [0.847, [0.905, 0.774, 0.552]], [0.849, [0.902, 0.772, 0.563]], [0.851, [0.902, 0.772, 0.563]], [0.853, [0.900, 0.770, 0.574]], [0.855, [0.900, 0.770, 0.574]], [0.857, [0.896, 0.768, 0.582]], [0.859, [0.896, 0.768, 0.582]], [0.861, [0.890, 0.766, 0.585]], [0.863, [0.890, 0.766, 0.585]], [0.865, [0.885, 0.764, 0.588]], [0.867, [0.885, 0.764, 0.588]], [0.869, [0.880, 0.762, 0.592]], [0.871, [0.880, 0.762, 0.592]], [0.873, [0.874, 0.761, 0.595]], [0.875, [0.874, 0.761, 0.595]], [0.877, [0.869, 0.759, 0.599]], [0.879, [0.869, 0.759, 0.599]], [0.881, [0.863, 0.757, 0.602]], [0.883, [0.863, 0.757, 0.602]], [0.885, [0.858, 0.755, 0.605]], [0.886, [0.858, 0.755, 0.605]], [0.888, [0.853, 0.753, 0.609]], [0.890, [0.853, 0.753, 0.609]], [0.892, [0.847, 0.751, 0.612]], [0.894, [0.847, 0.751, 0.612]], [0.896, [0.842, 0.750, 0.615]], [0.898, [0.842, 0.750, 0.615]], [0.900, [0.837, 0.748, 0.619]], [0.902, [0.837, 0.748, 0.619]], [0.904, [0.831, 0.746, 0.622]], [0.906, [0.831, 0.746, 0.622]], [0.908, [0.826, 0.744, 0.625]], [0.910, [0.826, 0.744, 0.625]], [0.912, [0.820, 0.742, 0.629]], [0.914, [0.820, 0.742, 0.629]], [0.916, [0.815, 0.740, 0.632]], [0.918, [0.815, 0.740, 0.632]], [0.920, [0.810, 0.739, 0.635]], [0.922, [0.810, 0.739, 0.635]], [0.924, [0.804, 0.737, 0.639]], [0.926, [0.804, 0.737, 0.639]], [0.928, [0.799, 0.735, 0.642]], [0.930, [0.799, 0.735, 0.642]], [0.932, [0.793, 0.733, 0.645]], [0.933, [0.793, 0.733, 0.645]], [0.935, [0.788, 0.731, 0.649]], [0.937, [0.788, 0.731, 0.649]], [0.939, [0.783, 0.729, 0.652]], [0.941, [0.783, 0.729, 0.652]], [0.943, [0.777, 0.728, 0.655]], [0.945, [0.777, 0.728, 0.655]], [0.947, [0.772, 0.726, 0.659]], [0.949, [0.772, 0.726, 0.659]], [0.951, [0.767, 0.724, 0.662]], [0.953, [0.767, 0.724, 0.662]], [0.955, [0.761, 0.722, 0.665]], [0.957, [0.761, 0.722, 0.665]], [0.959, [0.756, 0.720, 0.669]], [0.961, [0.756, 0.720, 0.669]], [0.963, [0.750, 0.718, 0.672]], [0.965, [0.750, 0.718, 0.672]], [0.967, [0.745, 0.717, 0.675]], [0.969, [0.745, 0.717, 0.675]], [0.971, [0.740, 0.715, 0.679]], [0.973, [0.740, 0.715, 0.679]], [0.975, [0.734, 0.713, 0.682]], [0.977, [0.734, 0.713, 0.682]], [0.978, [0.729, 0.711, 0.685]], [0.980, [0.729, 0.711, 0.685]], [0.982, [0.723, 0.709, 0.689]], [0.984, [0.723, 0.709, 0.689]], [0.986, [0.718, 0.707, 0.692]], [0.988, [0.718, 0.707, 0.692]], [0.990, [0.713, 0.706, 0.695]], [0.992, [0.713, 0.706, 0.695]], [0.994, [0.707, 0.704, 0.699]], [0.996, [0.707, 0.704, 0.699]], [0.998, [0.702, 0.702, 0.702]], [1.000, [0.702, 0.702, 0.702]]]; +var Set3 = [[0.000, [0.553, 0.827, 0.780]], [0.002, [0.553, 0.827, 0.780]], [0.004, [0.572, 0.835, 0.777]], [0.006, [0.572, 0.835, 0.777]], [0.008, [0.592, 0.842, 0.774]], [0.010, [0.592, 0.842, 0.774]], [0.012, [0.611, 0.850, 0.770]], [0.014, [0.611, 0.850, 0.770]], [0.016, [0.630, 0.857, 0.767]], [0.018, [0.630, 0.857, 0.767]], [0.020, [0.649, 0.865, 0.763]], [0.022, [0.649, 0.865, 0.763]], [0.023, [0.669, 0.872, 0.760]], [0.025, [0.669, 0.872, 0.760]], [0.027, [0.688, 0.880, 0.757]], [0.029, [0.688, 0.880, 0.757]], [0.031, [0.707, 0.887, 0.753]], [0.033, [0.707, 0.887, 0.753]], [0.035, [0.727, 0.894, 0.750]], [0.037, [0.727, 0.894, 0.750]], [0.039, [0.746, 0.902, 0.747]], [0.041, [0.746, 0.902, 0.747]], [0.043, [0.765, 0.909, 0.743]], [0.045, [0.765, 0.909, 0.743]], [0.047, [0.784, 0.917, 0.740]], [0.049, [0.784, 0.917, 0.740]], [0.051, [0.804, 0.924, 0.736]], [0.053, [0.804, 0.924, 0.736]], [0.055, [0.823, 0.932, 0.733]], [0.057, [0.823, 0.932, 0.733]], [0.059, [0.842, 0.939, 0.730]], [0.061, [0.842, 0.939, 0.730]], [0.063, [0.861, 0.947, 0.726]], [0.065, [0.861, 0.947, 0.726]], [0.067, [0.881, 0.954, 0.723]], [0.068, [0.881, 0.954, 0.723]], [0.070, [0.900, 0.961, 0.719]], [0.072, [0.900, 0.961, 0.719]], [0.074, [0.919, 0.969, 0.716]], [0.076, [0.919, 0.969, 0.716]], [0.078, [0.939, 0.976, 0.713]], [0.080, [0.939, 0.976, 0.713]], [0.082, [0.958, 0.984, 0.709]], [0.084, [0.958, 0.984, 0.709]], [0.086, [0.977, 0.991, 0.706]], [0.088, [0.977, 0.991, 0.706]], [0.090, [0.996, 0.999, 0.703]], [0.092, [0.996, 0.999, 0.703]], [0.094, [0.991, 0.990, 0.707]], [0.096, [0.991, 0.990, 0.707]], [0.098, [0.980, 0.979, 0.714]], [0.100, [0.980, 0.979, 0.714]], [0.102, [0.969, 0.967, 0.721]], [0.104, [0.969, 0.967, 0.721]], [0.106, [0.958, 0.955, 0.727]], [0.108, [0.958, 0.955, 0.727]], [0.110, [0.947, 0.944, 0.734]], [0.112, [0.947, 0.944, 0.734]], [0.114, [0.936, 0.932, 0.740]], [0.115, [0.936, 0.932, 0.740]], [0.117, [0.925, 0.920, 0.747]], [0.119, [0.925, 0.920, 0.747]], [0.121, [0.914, 0.909, 0.754]], [0.123, [0.914, 0.909, 0.754]], [0.125, [0.903, 0.897, 0.760]], [0.127, [0.903, 0.897, 0.760]], [0.129, [0.892, 0.885, 0.767]], [0.131, [0.892, 0.885, 0.767]], [0.133, [0.881, 0.874, 0.773]], [0.135, [0.881, 0.874, 0.773]], [0.137, [0.870, 0.862, 0.780]], [0.139, [0.870, 0.862, 0.780]], [0.141, [0.859, 0.850, 0.787]], [0.143, [0.859, 0.850, 0.787]], [0.145, [0.848, 0.839, 0.793]], [0.147, [0.848, 0.839, 0.793]], [0.149, [0.837, 0.827, 0.800]], [0.151, [0.837, 0.827, 0.800]], [0.153, [0.826, 0.815, 0.806]], [0.155, [0.826, 0.815, 0.806]], [0.157, [0.815, 0.804, 0.813]], [0.159, [0.815, 0.804, 0.813]], [0.160, [0.804, 0.792, 0.820]], [0.162, [0.804, 0.792, 0.820]], [0.164, [0.793, 0.780, 0.826]], [0.166, [0.793, 0.780, 0.826]], [0.168, [0.782, 0.769, 0.833]], [0.170, [0.782, 0.769, 0.833]], [0.172, [0.771, 0.757, 0.839]], [0.174, [0.771, 0.757, 0.839]], [0.176, [0.760, 0.745, 0.846]], [0.178, [0.760, 0.745, 0.846]], [0.180, [0.749, 0.734, 0.853]], [0.182, [0.749, 0.734, 0.853]], [0.184, [0.752, 0.723, 0.844]], [0.186, [0.752, 0.723, 0.844]], [0.188, [0.762, 0.713, 0.826]], [0.190, [0.762, 0.713, 0.826]], [0.192, [0.772, 0.704, 0.809]], [0.194, [0.772, 0.704, 0.809]], [0.196, [0.783, 0.694, 0.791]], [0.198, [0.783, 0.694, 0.791]], [0.200, [0.793, 0.684, 0.773]], [0.202, [0.793, 0.684, 0.773]], [0.204, [0.803, 0.674, 0.756]], [0.205, [0.803, 0.674, 0.756]], [0.207, [0.814, 0.664, 0.738]], [0.209, [0.814, 0.664, 0.738]], [0.211, [0.824, 0.654, 0.721]], [0.213, [0.824, 0.654, 0.721]], [0.215, [0.834, 0.645, 0.703]], [0.217, [0.834, 0.645, 0.703]], [0.219, [0.845, 0.635, 0.685]], [0.221, [0.845, 0.635, 0.685]], [0.223, [0.855, 0.625, 0.668]], [0.225, [0.855, 0.625, 0.668]], [0.227, [0.865, 0.615, 0.650]], [0.229, [0.865, 0.615, 0.650]], [0.231, [0.875, 0.605, 0.633]], [0.233, [0.875, 0.605, 0.633]], [0.235, [0.886, 0.596, 0.615]], [0.237, [0.886, 0.596, 0.615]], [0.239, [0.896, 0.586, 0.597]], [0.241, [0.896, 0.586, 0.597]], [0.243, [0.906, 0.576, 0.580]], [0.245, [0.906, 0.576, 0.580]], [0.247, [0.917, 0.566, 0.562]], [0.249, [0.917, 0.566, 0.562]], [0.250, [0.927, 0.556, 0.545]], [0.252, [0.927, 0.556, 0.545]], [0.254, [0.937, 0.547, 0.527]], [0.256, [0.937, 0.547, 0.527]], [0.258, [0.948, 0.537, 0.509]], [0.260, [0.948, 0.537, 0.509]], [0.262, [0.958, 0.527, 0.492]], [0.264, [0.958, 0.527, 0.492]], [0.266, [0.968, 0.517, 0.474]], [0.268, [0.968, 0.517, 0.474]], [0.270, [0.979, 0.507, 0.457]], [0.272, [0.979, 0.507, 0.457]], [0.274, [0.975, 0.506, 0.455]], [0.276, [0.975, 0.506, 0.455]], [0.278, [0.954, 0.514, 0.471]], [0.280, [0.954, 0.514, 0.471]], [0.282, [0.933, 0.522, 0.487]], [0.284, [0.933, 0.522, 0.487]], [0.286, [0.912, 0.531, 0.504]], [0.288, [0.912, 0.531, 0.504]], [0.290, [0.892, 0.539, 0.520]], [0.292, [0.892, 0.539, 0.520]], [0.294, [0.871, 0.547, 0.537]], [0.295, [0.871, 0.547, 0.537]], [0.297, [0.850, 0.555, 0.553]], [0.299, [0.850, 0.555, 0.553]], [0.301, [0.829, 0.564, 0.569]], [0.303, [0.829, 0.564, 0.569]], [0.305, [0.808, 0.572, 0.586]], [0.307, [0.808, 0.572, 0.586]], [0.309, [0.788, 0.580, 0.602]], [0.311, [0.788, 0.580, 0.602]], [0.313, [0.767, 0.589, 0.619]], [0.315, [0.767, 0.589, 0.619]], [0.317, [0.746, 0.597, 0.635]], [0.319, [0.746, 0.597, 0.635]], [0.321, [0.725, 0.605, 0.651]], [0.323, [0.725, 0.605, 0.651]], [0.325, [0.704, 0.613, 0.668]], [0.327, [0.704, 0.613, 0.668]], [0.329, [0.684, 0.622, 0.684]], [0.331, [0.684, 0.622, 0.684]], [0.333, [0.663, 0.630, 0.701]], [0.335, [0.663, 0.630, 0.701]], [0.337, [0.642, 0.638, 0.717]], [0.339, [0.642, 0.638, 0.717]], [0.341, [0.621, 0.647, 0.733]], [0.342, [0.621, 0.647, 0.733]], [0.344, [0.600, 0.655, 0.750]], [0.346, [0.600, 0.655, 0.750]], [0.348, [0.580, 0.663, 0.766]], [0.350, [0.580, 0.663, 0.766]], [0.352, [0.559, 0.672, 0.783]], [0.354, [0.559, 0.672, 0.783]], [0.356, [0.538, 0.680, 0.799]], [0.358, [0.538, 0.680, 0.799]], [0.360, [0.517, 0.688, 0.816]], [0.362, [0.517, 0.688, 0.816]], [0.364, [0.508, 0.694, 0.822]], [0.366, [0.508, 0.694, 0.822]], [0.368, [0.529, 0.695, 0.803]], [0.370, [0.529, 0.695, 0.803]], [0.372, [0.550, 0.695, 0.784]], [0.374, [0.550, 0.695, 0.784]], [0.376, [0.571, 0.696, 0.765]], [0.378, [0.571, 0.696, 0.765]], [0.380, [0.592, 0.696, 0.746]], [0.382, [0.592, 0.696, 0.746]], [0.384, [0.613, 0.697, 0.727]], [0.386, [0.613, 0.697, 0.727]], [0.387, [0.635, 0.697, 0.708]], [0.389, [0.635, 0.697, 0.708]], [0.391, [0.656, 0.698, 0.688]], [0.393, [0.656, 0.698, 0.688]], [0.395, [0.677, 0.698, 0.669]], [0.397, [0.677, 0.698, 0.669]], [0.399, [0.698, 0.699, 0.650]], [0.401, [0.698, 0.699, 0.650]], [0.403, [0.719, 0.699, 0.631]], [0.405, [0.719, 0.699, 0.631]], [0.407, [0.740, 0.700, 0.612]], [0.409, [0.740, 0.700, 0.612]], [0.411, [0.761, 0.700, 0.593]], [0.413, [0.761, 0.700, 0.593]], [0.415, [0.783, 0.701, 0.574]], [0.417, [0.783, 0.701, 0.574]], [0.419, [0.804, 0.701, 0.555]], [0.421, [0.804, 0.701, 0.555]], [0.423, [0.825, 0.702, 0.536]], [0.425, [0.825, 0.702, 0.536]], [0.427, [0.846, 0.702, 0.516]], [0.429, [0.846, 0.702, 0.516]], [0.431, [0.867, 0.703, 0.497]], [0.432, [0.867, 0.703, 0.497]], [0.434, [0.888, 0.703, 0.478]], [0.436, [0.888, 0.703, 0.478]], [0.438, [0.909, 0.704, 0.459]], [0.440, [0.909, 0.704, 0.459]], [0.442, [0.931, 0.704, 0.440]], [0.444, [0.931, 0.704, 0.440]], [0.446, [0.952, 0.705, 0.421]], [0.448, [0.952, 0.705, 0.421]], [0.450, [0.973, 0.705, 0.402]], [0.452, [0.973, 0.705, 0.402]], [0.454, [0.991, 0.707, 0.384]], [0.456, [0.991, 0.707, 0.384]], [0.458, [0.979, 0.714, 0.386]], [0.460, [0.979, 0.714, 0.386]], [0.462, [0.966, 0.721, 0.387]], [0.464, [0.966, 0.721, 0.387]], [0.466, [0.953, 0.728, 0.388]], [0.468, [0.953, 0.728, 0.388]], [0.470, [0.941, 0.735, 0.389]], [0.472, [0.941, 0.735, 0.389]], [0.474, [0.928, 0.742, 0.390]], [0.476, [0.928, 0.742, 0.390]], [0.477, [0.916, 0.749, 0.392]], [0.479, [0.916, 0.749, 0.392]], [0.481, [0.903, 0.756, 0.393]], [0.483, [0.903, 0.756, 0.393]], [0.485, [0.891, 0.763, 0.394]], [0.487, [0.891, 0.763, 0.394]], [0.489, [0.878, 0.770, 0.395]], [0.491, [0.878, 0.770, 0.395]], [0.493, [0.866, 0.778, 0.396]], [0.495, [0.866, 0.778, 0.396]], [0.497, [0.853, 0.785, 0.397]], [0.499, [0.853, 0.785, 0.397]], [0.501, [0.841, 0.792, 0.399]], [0.503, [0.841, 0.792, 0.399]], [0.505, [0.828, 0.799, 0.400]], [0.507, [0.828, 0.799, 0.400]], [0.509, [0.816, 0.806, 0.401]], [0.511, [0.816, 0.806, 0.401]], [0.513, [0.803, 0.813, 0.402]], [0.515, [0.803, 0.813, 0.402]], [0.517, [0.791, 0.820, 0.403]], [0.519, [0.791, 0.820, 0.403]], [0.521, [0.778, 0.827, 0.405]], [0.523, [0.778, 0.827, 0.405]], [0.524, [0.766, 0.834, 0.406]], [0.526, [0.766, 0.834, 0.406]], [0.528, [0.753, 0.842, 0.407]], [0.530, [0.753, 0.842, 0.407]], [0.532, [0.741, 0.849, 0.408]], [0.534, [0.741, 0.849, 0.408]], [0.536, [0.728, 0.856, 0.409]], [0.538, [0.728, 0.856, 0.409]], [0.540, [0.716, 0.863, 0.410]], [0.542, [0.716, 0.863, 0.410]], [0.544, [0.703, 0.870, 0.412]], [0.546, [0.703, 0.870, 0.412]], [0.548, [0.713, 0.868, 0.431]], [0.550, [0.713, 0.868, 0.431]], [0.552, [0.726, 0.865, 0.452]], [0.554, [0.726, 0.865, 0.452]], [0.556, [0.738, 0.862, 0.473]], [0.558, [0.738, 0.862, 0.473]], [0.560, [0.750, 0.859, 0.494]], [0.562, [0.750, 0.859, 0.494]], [0.564, [0.763, 0.856, 0.515]], [0.566, [0.763, 0.856, 0.515]], [0.568, [0.775, 0.854, 0.536]], [0.569, [0.775, 0.854, 0.536]], [0.571, [0.787, 0.851, 0.557]], [0.573, [0.787, 0.851, 0.557]], [0.575, [0.800, 0.848, 0.578]], [0.577, [0.800, 0.848, 0.578]], [0.579, [0.812, 0.845, 0.599]], [0.581, [0.812, 0.845, 0.599]], [0.583, [0.824, 0.842, 0.620]], [0.585, [0.824, 0.842, 0.620]], [0.587, [0.837, 0.839, 0.641]], [0.589, [0.837, 0.839, 0.641]], [0.591, [0.849, 0.836, 0.662]], [0.593, [0.849, 0.836, 0.662]], [0.595, [0.861, 0.833, 0.683]], [0.597, [0.861, 0.833, 0.683]], [0.599, [0.874, 0.831, 0.704]], [0.601, [0.874, 0.831, 0.704]], [0.603, [0.886, 0.828, 0.725]], [0.605, [0.886, 0.828, 0.725]], [0.607, [0.898, 0.825, 0.745]], [0.609, [0.898, 0.825, 0.745]], [0.611, [0.911, 0.822, 0.766]], [0.613, [0.911, 0.822, 0.766]], [0.614, [0.923, 0.819, 0.787]], [0.616, [0.923, 0.819, 0.787]], [0.618, [0.935, 0.816, 0.808]], [0.620, [0.935, 0.816, 0.808]], [0.622, [0.948, 0.813, 0.829]], [0.624, [0.948, 0.813, 0.829]], [0.626, [0.960, 0.810, 0.850]], [0.628, [0.960, 0.810, 0.850]], [0.630, [0.973, 0.808, 0.871]], [0.632, [0.973, 0.808, 0.871]], [0.634, [0.985, 0.805, 0.892]], [0.636, [0.985, 0.805, 0.892]], [0.638, [0.984, 0.805, 0.897]], [0.640, [0.984, 0.805, 0.897]], [0.642, [0.978, 0.807, 0.895]], [0.644, [0.978, 0.807, 0.895]], [0.646, [0.972, 0.809, 0.893]], [0.648, [0.972, 0.809, 0.893]], [0.650, [0.966, 0.811, 0.890]], [0.652, [0.966, 0.811, 0.890]], [0.654, [0.960, 0.814, 0.888]], [0.656, [0.960, 0.814, 0.888]], [0.658, [0.954, 0.816, 0.886]], [0.659, [0.954, 0.816, 0.886]], [0.661, [0.948, 0.818, 0.884]], [0.663, [0.948, 0.818, 0.884]], [0.665, [0.942, 0.820, 0.882]], [0.667, [0.942, 0.820, 0.882]], [0.669, [0.937, 0.822, 0.880]], [0.671, [0.937, 0.822, 0.880]], [0.673, [0.931, 0.824, 0.878]], [0.675, [0.931, 0.824, 0.878]], [0.677, [0.925, 0.826, 0.876]], [0.679, [0.925, 0.826, 0.876]], [0.681, [0.919, 0.828, 0.874]], [0.683, [0.919, 0.828, 0.874]], [0.685, [0.913, 0.830, 0.872]], [0.687, [0.913, 0.830, 0.872]], [0.689, [0.907, 0.832, 0.870]], [0.691, [0.907, 0.832, 0.870]], [0.693, [0.901, 0.834, 0.868]], [0.695, [0.901, 0.834, 0.868]], [0.697, [0.895, 0.836, 0.866]], [0.699, [0.895, 0.836, 0.866]], [0.701, [0.889, 0.838, 0.864]], [0.703, [0.889, 0.838, 0.864]], [0.705, [0.883, 0.840, 0.862]], [0.706, [0.883, 0.840, 0.862]], [0.708, [0.877, 0.842, 0.860]], [0.710, [0.877, 0.842, 0.860]], [0.712, [0.871, 0.844, 0.858]], [0.714, [0.871, 0.844, 0.858]], [0.716, [0.866, 0.846, 0.856]], [0.718, [0.866, 0.846, 0.856]], [0.720, [0.860, 0.848, 0.854]], [0.722, [0.860, 0.848, 0.854]], [0.724, [0.854, 0.850, 0.852]], [0.726, [0.854, 0.850, 0.852]], [0.728, [0.848, 0.843, 0.848]], [0.730, [0.848, 0.843, 0.848]], [0.732, [0.843, 0.828, 0.844]], [0.734, [0.843, 0.828, 0.844]], [0.736, [0.838, 0.813, 0.839]], [0.738, [0.838, 0.813, 0.839]], [0.740, [0.834, 0.798, 0.834]], [0.742, [0.834, 0.798, 0.834]], [0.744, [0.829, 0.783, 0.829]], [0.746, [0.829, 0.783, 0.829]], [0.748, [0.824, 0.767, 0.825]], [0.750, [0.824, 0.767, 0.825]], [0.751, [0.819, 0.752, 0.820]], [0.753, [0.819, 0.752, 0.820]], [0.755, [0.814, 0.737, 0.815]], [0.757, [0.814, 0.737, 0.815]], [0.759, [0.809, 0.722, 0.811]], [0.761, [0.809, 0.722, 0.811]], [0.763, [0.804, 0.707, 0.806]], [0.765, [0.804, 0.707, 0.806]], [0.767, [0.799, 0.692, 0.801]], [0.769, [0.799, 0.692, 0.801]], [0.771, [0.794, 0.677, 0.796]], [0.773, [0.794, 0.677, 0.796]], [0.775, [0.789, 0.662, 0.792]], [0.777, [0.789, 0.662, 0.792]], [0.779, [0.785, 0.647, 0.787]], [0.781, [0.785, 0.647, 0.787]], [0.783, [0.780, 0.632, 0.782]], [0.785, [0.780, 0.632, 0.782]], [0.787, [0.775, 0.617, 0.777]], [0.789, [0.775, 0.617, 0.777]], [0.791, [0.770, 0.602, 0.773]], [0.793, [0.770, 0.602, 0.773]], [0.795, [0.765, 0.587, 0.768]], [0.796, [0.765, 0.587, 0.768]], [0.798, [0.760, 0.572, 0.763]], [0.800, [0.760, 0.572, 0.763]], [0.802, [0.755, 0.557, 0.758]], [0.804, [0.755, 0.557, 0.758]], [0.806, [0.750, 0.542, 0.754]], [0.808, [0.750, 0.542, 0.754]], [0.810, [0.745, 0.527, 0.749]], [0.812, [0.745, 0.527, 0.749]], [0.814, [0.740, 0.512, 0.744]], [0.816, [0.740, 0.512, 0.744]], [0.818, [0.738, 0.509, 0.742]], [0.820, [0.738, 0.509, 0.742]], [0.822, [0.741, 0.527, 0.743]], [0.824, [0.741, 0.527, 0.743]], [0.826, [0.744, 0.545, 0.744]], [0.828, [0.744, 0.545, 0.744]], [0.830, [0.746, 0.563, 0.746]], [0.832, [0.746, 0.563, 0.746]], [0.834, [0.749, 0.581, 0.747]], [0.836, [0.749, 0.581, 0.747]], [0.838, [0.752, 0.599, 0.748]], [0.840, [0.752, 0.599, 0.748]], [0.841, [0.754, 0.617, 0.750]], [0.843, [0.754, 0.617, 0.750]], [0.845, [0.757, 0.635, 0.751]], [0.847, [0.757, 0.635, 0.751]], [0.849, [0.760, 0.653, 0.752]], [0.851, [0.760, 0.653, 0.752]], [0.853, [0.763, 0.671, 0.754]], [0.855, [0.763, 0.671, 0.754]], [0.857, [0.765, 0.690, 0.755]], [0.859, [0.765, 0.690, 0.755]], [0.861, [0.768, 0.708, 0.757]], [0.863, [0.768, 0.708, 0.757]], [0.865, [0.771, 0.726, 0.758]], [0.867, [0.771, 0.726, 0.758]], [0.869, [0.773, 0.744, 0.759]], [0.871, [0.773, 0.744, 0.759]], [0.873, [0.776, 0.762, 0.761]], [0.875, [0.776, 0.762, 0.761]], [0.877, [0.779, 0.780, 0.762]], [0.879, [0.779, 0.780, 0.762]], [0.881, [0.782, 0.798, 0.763]], [0.883, [0.782, 0.798, 0.763]], [0.885, [0.784, 0.816, 0.765]], [0.886, [0.784, 0.816, 0.765]], [0.888, [0.787, 0.834, 0.766]], [0.890, [0.787, 0.834, 0.766]], [0.892, [0.790, 0.852, 0.767]], [0.894, [0.790, 0.852, 0.767]], [0.896, [0.792, 0.871, 0.769]], [0.898, [0.792, 0.871, 0.769]], [0.900, [0.795, 0.889, 0.770]], [0.902, [0.795, 0.889, 0.770]], [0.904, [0.798, 0.907, 0.771]], [0.906, [0.798, 0.907, 0.771]], [0.908, [0.802, 0.922, 0.770]], [0.910, [0.802, 0.922, 0.770]], [0.912, [0.810, 0.922, 0.755]], [0.914, [0.810, 0.922, 0.755]], [0.916, [0.819, 0.922, 0.741]], [0.918, [0.819, 0.922, 0.741]], [0.920, [0.827, 0.923, 0.726]], [0.922, [0.827, 0.923, 0.726]], [0.924, [0.836, 0.923, 0.712]], [0.926, [0.836, 0.923, 0.712]], [0.928, [0.845, 0.923, 0.697]], [0.930, [0.845, 0.923, 0.697]], [0.932, [0.853, 0.924, 0.683]], [0.933, [0.853, 0.924, 0.683]], [0.935, [0.862, 0.924, 0.668]], [0.937, [0.862, 0.924, 0.668]], [0.939, [0.871, 0.924, 0.654]], [0.941, [0.871, 0.924, 0.654]], [0.943, [0.879, 0.925, 0.639]], [0.945, [0.879, 0.925, 0.639]], [0.947, [0.888, 0.925, 0.624]], [0.949, [0.888, 0.925, 0.624]], [0.951, [0.896, 0.925, 0.610]], [0.953, [0.896, 0.925, 0.610]], [0.955, [0.905, 0.926, 0.595]], [0.957, [0.905, 0.926, 0.595]], [0.959, [0.914, 0.926, 0.581]], [0.961, [0.914, 0.926, 0.581]], [0.963, [0.922, 0.926, 0.566]], [0.965, [0.922, 0.926, 0.566]], [0.967, [0.931, 0.927, 0.552]], [0.969, [0.931, 0.927, 0.552]], [0.971, [0.940, 0.927, 0.537]], [0.973, [0.940, 0.927, 0.537]], [0.975, [0.948, 0.927, 0.523]], [0.977, [0.948, 0.927, 0.523]], [0.978, [0.957, 0.928, 0.508]], [0.980, [0.957, 0.928, 0.508]], [0.982, [0.965, 0.928, 0.493]], [0.984, [0.965, 0.928, 0.493]], [0.986, [0.974, 0.928, 0.479]], [0.988, [0.974, 0.928, 0.479]], [0.990, [0.983, 0.929, 0.464]], [0.992, [0.983, 0.929, 0.464]], [0.994, [0.991, 0.929, 0.450]], [0.996, [0.991, 0.929, 0.450]], [0.998, [1.000, 0.929, 0.435]], [1.000, [1.000, 0.929, 0.435]]]; + +// Sequential +var Blues = [[0.000, [0.969, 0.984, 1.000]], [0.002, [0.969, 0.984, 1.000]], [0.004, [0.966, 0.982, 0.999]], [0.006, [0.966, 0.982, 0.999]], [0.008, [0.962, 0.980, 0.998]], [0.010, [0.962, 0.980, 0.998]], [0.012, [0.959, 0.978, 0.997]], [0.014, [0.959, 0.978, 0.997]], [0.016, [0.956, 0.976, 0.996]], [0.018, [0.956, 0.976, 0.996]], [0.020, [0.953, 0.974, 0.995]], [0.022, [0.953, 0.974, 0.995]], [0.023, [0.950, 0.973, 0.994]], [0.025, [0.950, 0.973, 0.994]], [0.027, [0.947, 0.971, 0.993]], [0.029, [0.947, 0.971, 0.993]], [0.031, [0.944, 0.969, 0.992]], [0.033, [0.944, 0.969, 0.992]], [0.035, [0.941, 0.967, 0.991]], [0.037, [0.941, 0.967, 0.991]], [0.039, [0.938, 0.965, 0.990]], [0.041, [0.938, 0.965, 0.990]], [0.043, [0.935, 0.963, 0.989]], [0.045, [0.935, 0.963, 0.989]], [0.047, [0.932, 0.961, 0.988]], [0.049, [0.932, 0.961, 0.988]], [0.051, [0.929, 0.959, 0.987]], [0.053, [0.929, 0.959, 0.987]], [0.055, [0.926, 0.957, 0.986]], [0.057, [0.926, 0.957, 0.986]], [0.059, [0.922, 0.955, 0.985]], [0.061, [0.922, 0.955, 0.985]], [0.063, [0.919, 0.953, 0.984]], [0.065, [0.919, 0.953, 0.984]], [0.067, [0.916, 0.951, 0.983]], [0.068, [0.916, 0.951, 0.983]], [0.070, [0.913, 0.949, 0.982]], [0.072, [0.913, 0.949, 0.982]], [0.074, [0.910, 0.947, 0.981]], [0.076, [0.910, 0.947, 0.981]], [0.078, [0.907, 0.945, 0.980]], [0.080, [0.907, 0.945, 0.980]], [0.082, [0.904, 0.943, 0.979]], [0.084, [0.904, 0.943, 0.979]], [0.086, [0.901, 0.941, 0.978]], [0.088, [0.901, 0.941, 0.978]], [0.090, [0.898, 0.939, 0.977]], [0.092, [0.898, 0.939, 0.977]], [0.094, [0.895, 0.937, 0.976]], [0.096, [0.895, 0.937, 0.976]], [0.098, [0.892, 0.935, 0.975]], [0.100, [0.892, 0.935, 0.975]], [0.102, [0.889, 0.933, 0.974]], [0.104, [0.889, 0.933, 0.974]], [0.106, [0.886, 0.931, 0.973]], [0.108, [0.886, 0.931, 0.973]], [0.110, [0.883, 0.929, 0.972]], [0.112, [0.883, 0.929, 0.972]], [0.114, [0.879, 0.927, 0.971]], [0.115, [0.879, 0.927, 0.971]], [0.117, [0.876, 0.925, 0.970]], [0.119, [0.876, 0.925, 0.970]], [0.121, [0.873, 0.923, 0.969]], [0.123, [0.873, 0.923, 0.969]], [0.125, [0.870, 0.921, 0.969]], [0.127, [0.870, 0.921, 0.969]], [0.129, [0.867, 0.919, 0.968]], [0.131, [0.867, 0.919, 0.968]], [0.133, [0.864, 0.917, 0.967]], [0.135, [0.864, 0.917, 0.967]], [0.137, [0.861, 0.915, 0.966]], [0.139, [0.861, 0.915, 0.966]], [0.141, [0.858, 0.913, 0.965]], [0.143, [0.858, 0.913, 0.965]], [0.145, [0.855, 0.911, 0.964]], [0.147, [0.855, 0.911, 0.964]], [0.149, [0.853, 0.910, 0.963]], [0.151, [0.853, 0.910, 0.963]], [0.153, [0.850, 0.908, 0.962]], [0.155, [0.850, 0.908, 0.962]], [0.157, [0.847, 0.906, 0.961]], [0.159, [0.847, 0.906, 0.961]], [0.160, [0.844, 0.904, 0.960]], [0.162, [0.844, 0.904, 0.960]], [0.164, [0.841, 0.902, 0.959]], [0.166, [0.841, 0.902, 0.959]], [0.168, [0.838, 0.900, 0.958]], [0.170, [0.838, 0.900, 0.958]], [0.172, [0.835, 0.898, 0.957]], [0.174, [0.835, 0.898, 0.957]], [0.176, [0.832, 0.896, 0.956]], [0.178, [0.832, 0.896, 0.956]], [0.180, [0.829, 0.894, 0.955]], [0.182, [0.829, 0.894, 0.955]], [0.184, [0.826, 0.892, 0.954]], [0.186, [0.826, 0.892, 0.954]], [0.188, [0.823, 0.890, 0.953]], [0.190, [0.823, 0.890, 0.953]], [0.192, [0.820, 0.888, 0.952]], [0.194, [0.820, 0.888, 0.952]], [0.196, [0.817, 0.886, 0.951]], [0.198, [0.817, 0.886, 0.951]], [0.200, [0.814, 0.884, 0.950]], [0.202, [0.814, 0.884, 0.950]], [0.204, [0.811, 0.882, 0.949]], [0.205, [0.811, 0.882, 0.949]], [0.207, [0.808, 0.880, 0.948]], [0.209, [0.808, 0.880, 0.948]], [0.211, [0.805, 0.878, 0.947]], [0.213, [0.805, 0.878, 0.947]], [0.215, [0.802, 0.876, 0.946]], [0.217, [0.802, 0.876, 0.946]], [0.219, [0.799, 0.874, 0.945]], [0.221, [0.799, 0.874, 0.945]], [0.223, [0.796, 0.872, 0.944]], [0.225, [0.796, 0.872, 0.944]], [0.227, [0.793, 0.870, 0.943]], [0.229, [0.793, 0.870, 0.943]], [0.231, [0.790, 0.868, 0.942]], [0.233, [0.790, 0.868, 0.942]], [0.235, [0.788, 0.866, 0.941]], [0.237, [0.788, 0.866, 0.941]], [0.239, [0.785, 0.864, 0.940]], [0.241, [0.785, 0.864, 0.940]], [0.243, [0.782, 0.862, 0.939]], [0.245, [0.782, 0.862, 0.939]], [0.247, [0.779, 0.860, 0.938]], [0.249, [0.779, 0.860, 0.938]], [0.250, [0.775, 0.858, 0.937]], [0.252, [0.775, 0.858, 0.937]], [0.254, [0.770, 0.856, 0.935]], [0.256, [0.770, 0.856, 0.935]], [0.258, [0.765, 0.854, 0.933]], [0.260, [0.765, 0.854, 0.933]], [0.262, [0.760, 0.852, 0.932]], [0.264, [0.760, 0.852, 0.932]], [0.266, [0.756, 0.850, 0.930]], [0.268, [0.756, 0.850, 0.930]], [0.270, [0.751, 0.848, 0.928]], [0.272, [0.751, 0.848, 0.928]], [0.274, [0.746, 0.846, 0.926]], [0.276, [0.746, 0.846, 0.926]], [0.278, [0.741, 0.844, 0.925]], [0.280, [0.741, 0.844, 0.925]], [0.282, [0.736, 0.842, 0.923]], [0.284, [0.736, 0.842, 0.923]], [0.286, [0.731, 0.839, 0.921]], [0.288, [0.731, 0.839, 0.921]], [0.290, [0.726, 0.837, 0.920]], [0.292, [0.726, 0.837, 0.920]], [0.294, [0.721, 0.835, 0.918]], [0.295, [0.721, 0.835, 0.918]], [0.297, [0.716, 0.833, 0.916]], [0.299, [0.716, 0.833, 0.916]], [0.301, [0.711, 0.831, 0.914]], [0.303, [0.711, 0.831, 0.914]], [0.305, [0.706, 0.829, 0.913]], [0.307, [0.706, 0.829, 0.913]], [0.309, [0.701, 0.827, 0.911]], [0.311, [0.701, 0.827, 0.911]], [0.313, [0.697, 0.825, 0.909]], [0.315, [0.697, 0.825, 0.909]], [0.317, [0.692, 0.823, 0.908]], [0.319, [0.692, 0.823, 0.908]], [0.321, [0.687, 0.821, 0.906]], [0.323, [0.687, 0.821, 0.906]], [0.325, [0.682, 0.819, 0.904]], [0.327, [0.682, 0.819, 0.904]], [0.329, [0.677, 0.816, 0.902]], [0.331, [0.677, 0.816, 0.902]], [0.333, [0.672, 0.814, 0.901]], [0.335, [0.672, 0.814, 0.901]], [0.337, [0.667, 0.812, 0.899]], [0.339, [0.667, 0.812, 0.899]], [0.341, [0.662, 0.810, 0.897]], [0.342, [0.662, 0.810, 0.897]], [0.344, [0.657, 0.808, 0.895]], [0.346, [0.657, 0.808, 0.895]], [0.348, [0.652, 0.806, 0.894]], [0.350, [0.652, 0.806, 0.894]], [0.352, [0.647, 0.804, 0.892]], [0.354, [0.647, 0.804, 0.892]], [0.356, [0.642, 0.802, 0.890]], [0.358, [0.642, 0.802, 0.890]], [0.360, [0.637, 0.800, 0.889]], [0.362, [0.637, 0.800, 0.889]], [0.364, [0.633, 0.798, 0.887]], [0.366, [0.633, 0.798, 0.887]], [0.368, [0.628, 0.796, 0.885]], [0.370, [0.628, 0.796, 0.885]], [0.372, [0.623, 0.793, 0.883]], [0.374, [0.623, 0.793, 0.883]], [0.376, [0.617, 0.791, 0.882]], [0.378, [0.617, 0.791, 0.882]], [0.380, [0.611, 0.787, 0.880]], [0.382, [0.611, 0.787, 0.880]], [0.384, [0.605, 0.784, 0.879]], [0.386, [0.605, 0.784, 0.879]], [0.387, [0.598, 0.781, 0.878]], [0.389, [0.598, 0.781, 0.878]], [0.391, [0.592, 0.777, 0.876]], [0.393, [0.592, 0.777, 0.876]], [0.395, [0.586, 0.774, 0.875]], [0.397, [0.586, 0.774, 0.875]], [0.399, [0.580, 0.770, 0.874]], [0.401, [0.580, 0.770, 0.874]], [0.403, [0.573, 0.767, 0.872]], [0.405, [0.573, 0.767, 0.872]], [0.407, [0.567, 0.763, 0.871]], [0.409, [0.567, 0.763, 0.871]], [0.411, [0.561, 0.760, 0.870]], [0.413, [0.561, 0.760, 0.870]], [0.415, [0.555, 0.756, 0.868]], [0.417, [0.555, 0.756, 0.868]], [0.419, [0.548, 0.753, 0.867]], [0.421, [0.548, 0.753, 0.867]], [0.423, [0.542, 0.750, 0.866]], [0.425, [0.542, 0.750, 0.866]], [0.427, [0.536, 0.746, 0.864]], [0.429, [0.536, 0.746, 0.864]], [0.431, [0.529, 0.743, 0.863]], [0.432, [0.529, 0.743, 0.863]], [0.434, [0.523, 0.739, 0.862]], [0.436, [0.523, 0.739, 0.862]], [0.438, [0.517, 0.736, 0.860]], [0.440, [0.517, 0.736, 0.860]], [0.442, [0.511, 0.732, 0.859]], [0.444, [0.511, 0.732, 0.859]], [0.446, [0.504, 0.729, 0.857]], [0.448, [0.504, 0.729, 0.857]], [0.450, [0.498, 0.725, 0.856]], [0.452, [0.498, 0.725, 0.856]], [0.454, [0.492, 0.722, 0.855]], [0.456, [0.492, 0.722, 0.855]], [0.458, [0.485, 0.719, 0.853]], [0.460, [0.485, 0.719, 0.853]], [0.462, [0.479, 0.715, 0.852]], [0.464, [0.479, 0.715, 0.852]], [0.466, [0.473, 0.712, 0.851]], [0.468, [0.473, 0.712, 0.851]], [0.470, [0.467, 0.708, 0.849]], [0.472, [0.467, 0.708, 0.849]], [0.474, [0.460, 0.705, 0.848]], [0.476, [0.460, 0.705, 0.848]], [0.477, [0.454, 0.701, 0.847]], [0.479, [0.454, 0.701, 0.847]], [0.481, [0.448, 0.698, 0.845]], [0.483, [0.448, 0.698, 0.845]], [0.485, [0.442, 0.694, 0.844]], [0.487, [0.442, 0.694, 0.844]], [0.489, [0.435, 0.691, 0.843]], [0.491, [0.435, 0.691, 0.843]], [0.493, [0.429, 0.688, 0.841]], [0.495, [0.429, 0.688, 0.841]], [0.497, [0.423, 0.684, 0.840]], [0.499, [0.423, 0.684, 0.840]], [0.501, [0.417, 0.681, 0.838]], [0.503, [0.417, 0.681, 0.838]], [0.505, [0.412, 0.677, 0.836]], [0.507, [0.412, 0.677, 0.836]], [0.509, [0.407, 0.674, 0.834]], [0.511, [0.407, 0.674, 0.834]], [0.513, [0.402, 0.670, 0.832]], [0.515, [0.402, 0.670, 0.832]], [0.517, [0.397, 0.667, 0.830]], [0.519, [0.397, 0.667, 0.830]], [0.521, [0.392, 0.663, 0.828]], [0.523, [0.392, 0.663, 0.828]], [0.524, [0.387, 0.660, 0.826]], [0.526, [0.387, 0.660, 0.826]], [0.528, [0.382, 0.657, 0.824]], [0.530, [0.382, 0.657, 0.824]], [0.532, [0.377, 0.653, 0.822]], [0.534, [0.377, 0.653, 0.822]], [0.536, [0.372, 0.650, 0.821]], [0.538, [0.372, 0.650, 0.821]], [0.540, [0.367, 0.646, 0.819]], [0.542, [0.367, 0.646, 0.819]], [0.544, [0.362, 0.643, 0.817]], [0.546, [0.362, 0.643, 0.817]], [0.548, [0.357, 0.639, 0.815]], [0.550, [0.357, 0.639, 0.815]], [0.552, [0.352, 0.636, 0.813]], [0.554, [0.352, 0.636, 0.813]], [0.556, [0.346, 0.632, 0.811]], [0.558, [0.346, 0.632, 0.811]], [0.560, [0.341, 0.629, 0.809]], [0.562, [0.341, 0.629, 0.809]], [0.564, [0.336, 0.626, 0.807]], [0.566, [0.336, 0.626, 0.807]], [0.568, [0.331, 0.622, 0.805]], [0.569, [0.331, 0.622, 0.805]], [0.571, [0.326, 0.619, 0.803]], [0.573, [0.326, 0.619, 0.803]], [0.575, [0.321, 0.615, 0.801]], [0.577, [0.321, 0.615, 0.801]], [0.579, [0.316, 0.612, 0.799]], [0.581, [0.316, 0.612, 0.799]], [0.583, [0.311, 0.608, 0.797]], [0.585, [0.311, 0.608, 0.797]], [0.587, [0.306, 0.605, 0.795]], [0.589, [0.306, 0.605, 0.795]], [0.591, [0.301, 0.601, 0.793]], [0.593, [0.301, 0.601, 0.793]], [0.595, [0.296, 0.598, 0.791]], [0.597, [0.296, 0.598, 0.791]], [0.599, [0.291, 0.595, 0.789]], [0.601, [0.291, 0.595, 0.789]], [0.603, [0.286, 0.591, 0.787]], [0.605, [0.286, 0.591, 0.787]], [0.607, [0.281, 0.588, 0.785]], [0.609, [0.281, 0.588, 0.785]], [0.611, [0.276, 0.584, 0.783]], [0.613, [0.276, 0.584, 0.783]], [0.614, [0.271, 0.581, 0.781]], [0.616, [0.271, 0.581, 0.781]], [0.618, [0.266, 0.577, 0.779]], [0.620, [0.266, 0.577, 0.779]], [0.622, [0.261, 0.574, 0.777]], [0.624, [0.261, 0.574, 0.777]], [0.626, [0.256, 0.570, 0.775]], [0.628, [0.256, 0.570, 0.775]], [0.630, [0.252, 0.566, 0.773]], [0.632, [0.252, 0.566, 0.773]], [0.634, [0.248, 0.562, 0.771]], [0.636, [0.248, 0.562, 0.771]], [0.638, [0.244, 0.558, 0.769]], [0.640, [0.244, 0.558, 0.769]], [0.642, [0.240, 0.554, 0.767]], [0.644, [0.240, 0.554, 0.767]], [0.646, [0.236, 0.550, 0.765]], [0.648, [0.236, 0.550, 0.765]], [0.650, [0.232, 0.546, 0.763]], [0.652, [0.232, 0.546, 0.763]], [0.654, [0.228, 0.542, 0.761]], [0.656, [0.228, 0.542, 0.761]], [0.658, [0.224, 0.538, 0.758]], [0.659, [0.224, 0.538, 0.758]], [0.661, [0.220, 0.533, 0.756]], [0.663, [0.220, 0.533, 0.756]], [0.665, [0.216, 0.529, 0.754]], [0.667, [0.216, 0.529, 0.754]], [0.669, [0.212, 0.525, 0.752]], [0.671, [0.212, 0.525, 0.752]], [0.673, [0.208, 0.521, 0.750]], [0.675, [0.208, 0.521, 0.750]], [0.677, [0.204, 0.517, 0.748]], [0.679, [0.204, 0.517, 0.748]], [0.681, [0.199, 0.513, 0.746]], [0.683, [0.199, 0.513, 0.746]], [0.685, [0.195, 0.509, 0.744]], [0.687, [0.195, 0.509, 0.744]], [0.689, [0.191, 0.505, 0.742]], [0.691, [0.191, 0.505, 0.742]], [0.693, [0.187, 0.501, 0.740]], [0.695, [0.187, 0.501, 0.740]], [0.697, [0.183, 0.497, 0.738]], [0.699, [0.183, 0.497, 0.738]], [0.701, [0.179, 0.493, 0.735]], [0.703, [0.179, 0.493, 0.735]], [0.705, [0.175, 0.489, 0.733]], [0.706, [0.175, 0.489, 0.733]], [0.708, [0.171, 0.485, 0.731]], [0.710, [0.171, 0.485, 0.731]], [0.712, [0.167, 0.481, 0.729]], [0.714, [0.167, 0.481, 0.729]], [0.716, [0.163, 0.477, 0.727]], [0.718, [0.163, 0.477, 0.727]], [0.720, [0.159, 0.473, 0.725]], [0.722, [0.159, 0.473, 0.725]], [0.724, [0.155, 0.469, 0.723]], [0.726, [0.155, 0.469, 0.723]], [0.728, [0.151, 0.464, 0.721]], [0.730, [0.151, 0.464, 0.721]], [0.732, [0.147, 0.460, 0.719]], [0.734, [0.147, 0.460, 0.719]], [0.736, [0.143, 0.456, 0.717]], [0.738, [0.143, 0.456, 0.717]], [0.740, [0.139, 0.452, 0.715]], [0.742, [0.139, 0.452, 0.715]], [0.744, [0.134, 0.448, 0.712]], [0.746, [0.134, 0.448, 0.712]], [0.748, [0.130, 0.444, 0.710]], [0.750, [0.130, 0.444, 0.710]], [0.751, [0.127, 0.440, 0.707]], [0.753, [0.127, 0.440, 0.707]], [0.755, [0.124, 0.436, 0.704]], [0.757, [0.124, 0.436, 0.704]], [0.759, [0.121, 0.432, 0.701]], [0.761, [0.121, 0.432, 0.701]], [0.763, [0.118, 0.428, 0.698]], [0.765, [0.118, 0.428, 0.698]], [0.767, [0.115, 0.424, 0.695]], [0.769, [0.115, 0.424, 0.695]], [0.771, [0.112, 0.420, 0.692]], [0.773, [0.112, 0.420, 0.692]], [0.775, [0.109, 0.417, 0.689]], [0.777, [0.109, 0.417, 0.689]], [0.779, [0.106, 0.413, 0.686]], [0.781, [0.106, 0.413, 0.686]], [0.783, [0.102, 0.409, 0.683]], [0.785, [0.102, 0.409, 0.683]], [0.787, [0.099, 0.405, 0.680]], [0.789, [0.099, 0.405, 0.680]], [0.791, [0.096, 0.401, 0.677]], [0.793, [0.096, 0.401, 0.677]], [0.795, [0.093, 0.397, 0.674]], [0.796, [0.093, 0.397, 0.674]], [0.798, [0.090, 0.393, 0.671]], [0.800, [0.090, 0.393, 0.671]], [0.802, [0.087, 0.389, 0.668]], [0.804, [0.087, 0.389, 0.668]], [0.806, [0.084, 0.385, 0.664]], [0.808, [0.084, 0.385, 0.664]], [0.810, [0.081, 0.381, 0.661]], [0.812, [0.081, 0.381, 0.661]], [0.814, [0.078, 0.377, 0.658]], [0.816, [0.078, 0.377, 0.658]], [0.818, [0.075, 0.373, 0.655]], [0.820, [0.075, 0.373, 0.655]], [0.822, [0.072, 0.369, 0.652]], [0.824, [0.072, 0.369, 0.652]], [0.826, [0.069, 0.365, 0.649]], [0.828, [0.069, 0.365, 0.649]], [0.830, [0.066, 0.361, 0.646]], [0.832, [0.066, 0.361, 0.646]], [0.834, [0.063, 0.358, 0.643]], [0.836, [0.063, 0.358, 0.643]], [0.838, [0.059, 0.354, 0.640]], [0.840, [0.059, 0.354, 0.640]], [0.841, [0.056, 0.350, 0.637]], [0.843, [0.056, 0.350, 0.637]], [0.845, [0.053, 0.346, 0.634]], [0.847, [0.053, 0.346, 0.634]], [0.849, [0.050, 0.342, 0.631]], [0.851, [0.050, 0.342, 0.631]], [0.853, [0.047, 0.338, 0.628]], [0.855, [0.047, 0.338, 0.628]], [0.857, [0.044, 0.334, 0.624]], [0.859, [0.044, 0.334, 0.624]], [0.861, [0.041, 0.330, 0.621]], [0.863, [0.041, 0.330, 0.621]], [0.865, [0.038, 0.326, 0.618]], [0.867, [0.038, 0.326, 0.618]], [0.869, [0.035, 0.322, 0.615]], [0.871, [0.035, 0.322, 0.615]], [0.873, [0.032, 0.318, 0.612]], [0.875, [0.032, 0.318, 0.612]], [0.877, [0.031, 0.314, 0.606]], [0.879, [0.031, 0.314, 0.606]], [0.881, [0.031, 0.310, 0.600]], [0.883, [0.031, 0.310, 0.600]], [0.885, [0.031, 0.306, 0.594]], [0.886, [0.031, 0.306, 0.594]], [0.888, [0.031, 0.302, 0.588]], [0.890, [0.031, 0.302, 0.588]], [0.892, [0.031, 0.298, 0.582]], [0.894, [0.031, 0.298, 0.582]], [0.896, [0.031, 0.294, 0.576]], [0.898, [0.031, 0.294, 0.576]], [0.900, [0.031, 0.290, 0.570]], [0.902, [0.031, 0.290, 0.570]], [0.904, [0.031, 0.286, 0.564]], [0.906, [0.031, 0.286, 0.564]], [0.908, [0.031, 0.282, 0.558]], [0.910, [0.031, 0.282, 0.558]], [0.912, [0.031, 0.278, 0.552]], [0.914, [0.031, 0.278, 0.552]], [0.916, [0.031, 0.273, 0.546]], [0.918, [0.031, 0.273, 0.546]], [0.920, [0.031, 0.269, 0.540]], [0.922, [0.031, 0.269, 0.540]], [0.924, [0.031, 0.265, 0.534]], [0.926, [0.031, 0.265, 0.534]], [0.928, [0.031, 0.261, 0.528]], [0.930, [0.031, 0.261, 0.528]], [0.932, [0.031, 0.257, 0.522]], [0.933, [0.031, 0.257, 0.522]], [0.935, [0.031, 0.253, 0.516]], [0.937, [0.031, 0.253, 0.516]], [0.939, [0.031, 0.249, 0.510]], [0.941, [0.031, 0.249, 0.510]], [0.943, [0.031, 0.245, 0.504]], [0.945, [0.031, 0.245, 0.504]], [0.947, [0.031, 0.241, 0.498]], [0.949, [0.031, 0.241, 0.498]], [0.951, [0.031, 0.237, 0.492]], [0.953, [0.031, 0.237, 0.492]], [0.955, [0.031, 0.233, 0.486]], [0.957, [0.031, 0.233, 0.486]], [0.959, [0.031, 0.229, 0.480]], [0.961, [0.031, 0.229, 0.480]], [0.963, [0.031, 0.225, 0.474]], [0.965, [0.031, 0.225, 0.474]], [0.967, [0.031, 0.221, 0.468]], [0.969, [0.031, 0.221, 0.468]], [0.971, [0.031, 0.217, 0.462]], [0.973, [0.031, 0.217, 0.462]], [0.975, [0.031, 0.213, 0.456]], [0.977, [0.031, 0.213, 0.456]], [0.978, [0.031, 0.209, 0.450]], [0.980, [0.031, 0.209, 0.450]], [0.982, [0.031, 0.204, 0.444]], [0.984, [0.031, 0.204, 0.444]], [0.986, [0.031, 0.200, 0.438]], [0.988, [0.031, 0.200, 0.438]], [0.990, [0.031, 0.196, 0.432]], [0.992, [0.031, 0.196, 0.432]], [0.994, [0.031, 0.192, 0.426]], [0.996, [0.031, 0.192, 0.426]], [0.998, [0.031, 0.188, 0.420]], [1.000, [0.031, 0.188, 0.420]]]; +var BuGn = [[0.000, [0.969, 0.988, 0.992]], [0.002, [0.969, 0.988, 0.992]], [0.004, [0.966, 0.987, 0.992]], [0.006, [0.966, 0.987, 0.992]], [0.008, [0.964, 0.987, 0.991]], [0.010, [0.964, 0.987, 0.991]], [0.012, [0.962, 0.986, 0.991]], [0.014, [0.962, 0.986, 0.991]], [0.016, [0.960, 0.985, 0.990]], [0.018, [0.960, 0.985, 0.990]], [0.020, [0.958, 0.984, 0.990]], [0.022, [0.958, 0.984, 0.990]], [0.023, [0.955, 0.983, 0.989]], [0.025, [0.955, 0.983, 0.989]], [0.027, [0.953, 0.982, 0.989]], [0.029, [0.953, 0.982, 0.989]], [0.031, [0.951, 0.981, 0.988]], [0.033, [0.951, 0.981, 0.988]], [0.035, [0.949, 0.980, 0.988]], [0.037, [0.949, 0.980, 0.988]], [0.039, [0.946, 0.980, 0.987]], [0.041, [0.946, 0.980, 0.987]], [0.043, [0.944, 0.979, 0.987]], [0.045, [0.944, 0.979, 0.987]], [0.047, [0.942, 0.978, 0.986]], [0.049, [0.942, 0.978, 0.986]], [0.051, [0.940, 0.977, 0.986]], [0.053, [0.940, 0.977, 0.986]], [0.055, [0.938, 0.976, 0.985]], [0.057, [0.938, 0.976, 0.985]], [0.059, [0.935, 0.975, 0.985]], [0.061, [0.935, 0.975, 0.985]], [0.063, [0.933, 0.974, 0.984]], [0.065, [0.933, 0.974, 0.984]], [0.067, [0.931, 0.974, 0.984]], [0.068, [0.931, 0.974, 0.984]], [0.070, [0.929, 0.973, 0.983]], [0.072, [0.929, 0.973, 0.983]], [0.074, [0.927, 0.972, 0.983]], [0.076, [0.927, 0.972, 0.983]], [0.078, [0.924, 0.971, 0.982]], [0.080, [0.924, 0.971, 0.982]], [0.082, [0.922, 0.970, 0.982]], [0.084, [0.922, 0.970, 0.982]], [0.086, [0.920, 0.969, 0.981]], [0.088, [0.920, 0.969, 0.981]], [0.090, [0.918, 0.968, 0.981]], [0.092, [0.918, 0.968, 0.981]], [0.094, [0.915, 0.968, 0.980]], [0.096, [0.915, 0.968, 0.980]], [0.098, [0.913, 0.967, 0.980]], [0.100, [0.913, 0.967, 0.980]], [0.102, [0.911, 0.966, 0.979]], [0.104, [0.911, 0.966, 0.979]], [0.106, [0.909, 0.965, 0.979]], [0.108, [0.909, 0.965, 0.979]], [0.110, [0.907, 0.964, 0.978]], [0.112, [0.907, 0.964, 0.978]], [0.114, [0.904, 0.963, 0.978]], [0.115, [0.904, 0.963, 0.978]], [0.117, [0.902, 0.962, 0.977]], [0.119, [0.902, 0.962, 0.977]], [0.121, [0.900, 0.962, 0.977]], [0.123, [0.900, 0.962, 0.977]], [0.125, [0.898, 0.961, 0.976]], [0.127, [0.898, 0.961, 0.976]], [0.129, [0.895, 0.960, 0.974]], [0.131, [0.895, 0.960, 0.974]], [0.133, [0.892, 0.958, 0.972]], [0.135, [0.892, 0.958, 0.972]], [0.137, [0.888, 0.957, 0.969]], [0.139, [0.888, 0.957, 0.969]], [0.141, [0.885, 0.956, 0.967]], [0.143, [0.885, 0.956, 0.967]], [0.145, [0.882, 0.955, 0.964]], [0.147, [0.882, 0.955, 0.964]], [0.149, [0.879, 0.954, 0.962]], [0.151, [0.879, 0.954, 0.962]], [0.153, [0.876, 0.953, 0.960]], [0.155, [0.876, 0.953, 0.960]], [0.157, [0.873, 0.952, 0.957]], [0.159, [0.873, 0.952, 0.957]], [0.160, [0.870, 0.951, 0.955]], [0.162, [0.870, 0.951, 0.955]], [0.164, [0.867, 0.950, 0.953]], [0.166, [0.867, 0.950, 0.953]], [0.168, [0.864, 0.948, 0.950]], [0.170, [0.864, 0.948, 0.950]], [0.172, [0.861, 0.947, 0.948]], [0.174, [0.861, 0.947, 0.948]], [0.176, [0.858, 0.946, 0.946]], [0.178, [0.858, 0.946, 0.946]], [0.180, [0.855, 0.945, 0.943]], [0.182, [0.855, 0.945, 0.943]], [0.184, [0.852, 0.944, 0.941]], [0.186, [0.852, 0.944, 0.941]], [0.188, [0.848, 0.943, 0.939]], [0.190, [0.848, 0.943, 0.939]], [0.192, [0.845, 0.942, 0.936]], [0.194, [0.845, 0.942, 0.936]], [0.196, [0.842, 0.941, 0.934]], [0.198, [0.842, 0.941, 0.934]], [0.200, [0.839, 0.940, 0.932]], [0.202, [0.839, 0.940, 0.932]], [0.204, [0.836, 0.939, 0.929]], [0.205, [0.836, 0.939, 0.929]], [0.207, [0.833, 0.937, 0.927]], [0.209, [0.833, 0.937, 0.927]], [0.211, [0.830, 0.936, 0.925]], [0.213, [0.830, 0.936, 0.925]], [0.215, [0.827, 0.935, 0.922]], [0.217, [0.827, 0.935, 0.922]], [0.219, [0.824, 0.934, 0.920]], [0.221, [0.824, 0.934, 0.920]], [0.223, [0.821, 0.933, 0.918]], [0.225, [0.821, 0.933, 0.918]], [0.227, [0.818, 0.932, 0.915]], [0.229, [0.818, 0.932, 0.915]], [0.231, [0.815, 0.931, 0.913]], [0.233, [0.815, 0.931, 0.913]], [0.235, [0.812, 0.930, 0.911]], [0.237, [0.812, 0.930, 0.911]], [0.239, [0.808, 0.929, 0.908]], [0.241, [0.808, 0.929, 0.908]], [0.243, [0.805, 0.927, 0.906]], [0.245, [0.805, 0.927, 0.906]], [0.247, [0.802, 0.926, 0.904]], [0.249, [0.802, 0.926, 0.904]], [0.250, [0.798, 0.925, 0.901]], [0.252, [0.798, 0.925, 0.901]], [0.254, [0.792, 0.922, 0.898]], [0.256, [0.792, 0.922, 0.898]], [0.258, [0.786, 0.920, 0.894]], [0.260, [0.786, 0.920, 0.894]], [0.262, [0.780, 0.917, 0.890]], [0.264, [0.780, 0.917, 0.890]], [0.266, [0.773, 0.915, 0.887]], [0.268, [0.773, 0.915, 0.887]], [0.270, [0.767, 0.913, 0.883]], [0.272, [0.767, 0.913, 0.883]], [0.274, [0.761, 0.910, 0.880]], [0.276, [0.761, 0.910, 0.880]], [0.278, [0.755, 0.908, 0.876]], [0.280, [0.755, 0.908, 0.876]], [0.282, [0.748, 0.905, 0.873]], [0.284, [0.748, 0.905, 0.873]], [0.286, [0.742, 0.903, 0.869]], [0.288, [0.742, 0.903, 0.869]], [0.290, [0.736, 0.900, 0.865]], [0.292, [0.736, 0.900, 0.865]], [0.294, [0.729, 0.898, 0.862]], [0.295, [0.729, 0.898, 0.862]], [0.297, [0.723, 0.895, 0.858]], [0.299, [0.723, 0.895, 0.858]], [0.301, [0.717, 0.893, 0.855]], [0.303, [0.717, 0.893, 0.855]], [0.305, [0.711, 0.890, 0.851]], [0.307, [0.711, 0.890, 0.851]], [0.309, [0.704, 0.888, 0.848]], [0.311, [0.704, 0.888, 0.848]], [0.313, [0.698, 0.886, 0.844]], [0.315, [0.698, 0.886, 0.844]], [0.317, [0.692, 0.883, 0.840]], [0.319, [0.692, 0.883, 0.840]], [0.321, [0.685, 0.881, 0.837]], [0.323, [0.685, 0.881, 0.837]], [0.325, [0.679, 0.878, 0.833]], [0.327, [0.679, 0.878, 0.833]], [0.329, [0.673, 0.876, 0.830]], [0.331, [0.673, 0.876, 0.830]], [0.333, [0.667, 0.873, 0.826]], [0.335, [0.667, 0.873, 0.826]], [0.337, [0.660, 0.871, 0.823]], [0.339, [0.660, 0.871, 0.823]], [0.341, [0.654, 0.868, 0.819]], [0.342, [0.654, 0.868, 0.819]], [0.344, [0.648, 0.866, 0.815]], [0.346, [0.648, 0.866, 0.815]], [0.348, [0.642, 0.863, 0.812]], [0.350, [0.642, 0.863, 0.812]], [0.352, [0.635, 0.861, 0.808]], [0.354, [0.635, 0.861, 0.808]], [0.356, [0.629, 0.858, 0.805]], [0.358, [0.629, 0.858, 0.805]], [0.360, [0.623, 0.856, 0.801]], [0.362, [0.623, 0.856, 0.801]], [0.364, [0.616, 0.854, 0.798]], [0.366, [0.616, 0.854, 0.798]], [0.368, [0.610, 0.851, 0.794]], [0.370, [0.610, 0.851, 0.794]], [0.372, [0.604, 0.849, 0.790]], [0.374, [0.604, 0.849, 0.790]], [0.376, [0.598, 0.846, 0.787]], [0.378, [0.598, 0.846, 0.787]], [0.380, [0.591, 0.843, 0.782]], [0.382, [0.591, 0.843, 0.782]], [0.384, [0.585, 0.841, 0.777]], [0.386, [0.585, 0.841, 0.777]], [0.387, [0.579, 0.838, 0.773]], [0.389, [0.579, 0.838, 0.773]], [0.391, [0.573, 0.835, 0.768]], [0.393, [0.573, 0.835, 0.768]], [0.395, [0.566, 0.833, 0.764]], [0.397, [0.566, 0.833, 0.764]], [0.399, [0.560, 0.830, 0.759]], [0.401, [0.560, 0.830, 0.759]], [0.403, [0.554, 0.827, 0.755]], [0.405, [0.554, 0.827, 0.755]], [0.407, [0.547, 0.824, 0.750]], [0.409, [0.547, 0.824, 0.750]], [0.411, [0.541, 0.822, 0.746]], [0.413, [0.541, 0.822, 0.746]], [0.415, [0.535, 0.819, 0.741]], [0.417, [0.535, 0.819, 0.741]], [0.419, [0.529, 0.816, 0.736]], [0.421, [0.529, 0.816, 0.736]], [0.423, [0.522, 0.814, 0.732]], [0.425, [0.522, 0.814, 0.732]], [0.427, [0.516, 0.811, 0.727]], [0.429, [0.516, 0.811, 0.727]], [0.431, [0.510, 0.808, 0.723]], [0.432, [0.510, 0.808, 0.723]], [0.434, [0.504, 0.805, 0.718]], [0.436, [0.504, 0.805, 0.718]], [0.438, [0.497, 0.803, 0.714]], [0.440, [0.497, 0.803, 0.714]], [0.442, [0.491, 0.800, 0.709]], [0.444, [0.491, 0.800, 0.709]], [0.446, [0.485, 0.797, 0.705]], [0.448, [0.485, 0.797, 0.705]], [0.450, [0.478, 0.795, 0.700]], [0.452, [0.478, 0.795, 0.700]], [0.454, [0.472, 0.792, 0.695]], [0.456, [0.472, 0.792, 0.695]], [0.458, [0.466, 0.789, 0.691]], [0.460, [0.466, 0.789, 0.691]], [0.462, [0.460, 0.786, 0.686]], [0.464, [0.460, 0.786, 0.686]], [0.466, [0.453, 0.784, 0.682]], [0.468, [0.453, 0.784, 0.682]], [0.470, [0.447, 0.781, 0.677]], [0.472, [0.447, 0.781, 0.677]], [0.474, [0.441, 0.778, 0.673]], [0.476, [0.441, 0.778, 0.673]], [0.477, [0.435, 0.776, 0.668]], [0.479, [0.435, 0.776, 0.668]], [0.481, [0.428, 0.773, 0.664]], [0.483, [0.428, 0.773, 0.664]], [0.485, [0.422, 0.770, 0.659]], [0.487, [0.422, 0.770, 0.659]], [0.489, [0.416, 0.768, 0.655]], [0.491, [0.416, 0.768, 0.655]], [0.493, [0.409, 0.765, 0.650]], [0.495, [0.409, 0.765, 0.650]], [0.497, [0.403, 0.762, 0.645]], [0.499, [0.403, 0.762, 0.645]], [0.501, [0.398, 0.760, 0.640]], [0.503, [0.398, 0.760, 0.640]], [0.505, [0.393, 0.757, 0.635]], [0.507, [0.393, 0.757, 0.635]], [0.509, [0.389, 0.755, 0.629]], [0.511, [0.389, 0.755, 0.629]], [0.513, [0.384, 0.752, 0.623]], [0.515, [0.384, 0.752, 0.623]], [0.517, [0.380, 0.750, 0.618]], [0.519, [0.380, 0.750, 0.618]], [0.521, [0.375, 0.747, 0.612]], [0.523, [0.375, 0.747, 0.612]], [0.524, [0.370, 0.745, 0.606]], [0.526, [0.370, 0.745, 0.606]], [0.528, [0.366, 0.742, 0.601]], [0.530, [0.366, 0.742, 0.601]], [0.532, [0.361, 0.740, 0.595]], [0.534, [0.361, 0.740, 0.595]], [0.536, [0.357, 0.737, 0.589]], [0.538, [0.357, 0.737, 0.589]], [0.540, [0.352, 0.735, 0.584]], [0.542, [0.352, 0.735, 0.584]], [0.544, [0.348, 0.732, 0.578]], [0.546, [0.348, 0.732, 0.578]], [0.548, [0.343, 0.730, 0.572]], [0.550, [0.343, 0.730, 0.572]], [0.552, [0.339, 0.728, 0.567]], [0.554, [0.339, 0.728, 0.567]], [0.556, [0.334, 0.725, 0.561]], [0.558, [0.334, 0.725, 0.561]], [0.560, [0.329, 0.723, 0.555]], [0.562, [0.329, 0.723, 0.555]], [0.564, [0.325, 0.720, 0.550]], [0.566, [0.325, 0.720, 0.550]], [0.568, [0.320, 0.718, 0.544]], [0.569, [0.320, 0.718, 0.544]], [0.571, [0.316, 0.715, 0.538]], [0.573, [0.316, 0.715, 0.538]], [0.575, [0.311, 0.713, 0.533]], [0.577, [0.311, 0.713, 0.533]], [0.579, [0.307, 0.710, 0.527]], [0.581, [0.307, 0.710, 0.527]], [0.583, [0.302, 0.708, 0.521]], [0.585, [0.302, 0.708, 0.521]], [0.587, [0.298, 0.705, 0.516]], [0.589, [0.298, 0.705, 0.516]], [0.591, [0.293, 0.703, 0.510]], [0.593, [0.293, 0.703, 0.510]], [0.595, [0.288, 0.700, 0.504]], [0.597, [0.288, 0.700, 0.504]], [0.599, [0.284, 0.698, 0.499]], [0.601, [0.284, 0.698, 0.499]], [0.603, [0.279, 0.696, 0.493]], [0.605, [0.279, 0.696, 0.493]], [0.607, [0.275, 0.693, 0.488]], [0.609, [0.275, 0.693, 0.488]], [0.611, [0.270, 0.691, 0.482]], [0.613, [0.270, 0.691, 0.482]], [0.614, [0.266, 0.688, 0.476]], [0.616, [0.266, 0.688, 0.476]], [0.618, [0.261, 0.686, 0.471]], [0.620, [0.261, 0.686, 0.471]], [0.622, [0.257, 0.683, 0.465]], [0.624, [0.257, 0.683, 0.465]], [0.626, [0.253, 0.680, 0.459]], [0.628, [0.253, 0.680, 0.459]], [0.630, [0.249, 0.675, 0.453]], [0.632, [0.249, 0.675, 0.453]], [0.634, [0.245, 0.671, 0.447]], [0.636, [0.245, 0.671, 0.447]], [0.638, [0.242, 0.667, 0.441]], [0.640, [0.242, 0.667, 0.441]], [0.642, [0.238, 0.662, 0.435]], [0.644, [0.238, 0.662, 0.435]], [0.646, [0.234, 0.658, 0.429]], [0.648, [0.234, 0.658, 0.429]], [0.650, [0.230, 0.654, 0.423]], [0.652, [0.230, 0.654, 0.423]], [0.654, [0.227, 0.650, 0.417]], [0.656, [0.227, 0.650, 0.417]], [0.658, [0.223, 0.645, 0.411]], [0.659, [0.223, 0.645, 0.411]], [0.661, [0.219, 0.641, 0.405]], [0.663, [0.219, 0.641, 0.405]], [0.665, [0.216, 0.637, 0.399]], [0.667, [0.216, 0.637, 0.399]], [0.669, [0.212, 0.632, 0.393]], [0.671, [0.212, 0.632, 0.393]], [0.673, [0.208, 0.628, 0.387]], [0.675, [0.208, 0.628, 0.387]], [0.677, [0.205, 0.624, 0.381]], [0.679, [0.205, 0.624, 0.381]], [0.681, [0.201, 0.619, 0.375]], [0.683, [0.201, 0.619, 0.375]], [0.685, [0.197, 0.615, 0.369]], [0.687, [0.197, 0.615, 0.369]], [0.689, [0.194, 0.611, 0.363]], [0.691, [0.194, 0.611, 0.363]], [0.693, [0.190, 0.606, 0.356]], [0.695, [0.190, 0.606, 0.356]], [0.697, [0.186, 0.602, 0.350]], [0.699, [0.186, 0.602, 0.350]], [0.701, [0.182, 0.598, 0.344]], [0.703, [0.182, 0.598, 0.344]], [0.705, [0.179, 0.594, 0.338]], [0.706, [0.179, 0.594, 0.338]], [0.708, [0.175, 0.589, 0.332]], [0.710, [0.175, 0.589, 0.332]], [0.712, [0.171, 0.585, 0.326]], [0.714, [0.171, 0.585, 0.326]], [0.716, [0.168, 0.581, 0.320]], [0.718, [0.168, 0.581, 0.320]], [0.720, [0.164, 0.576, 0.314]], [0.722, [0.164, 0.576, 0.314]], [0.724, [0.160, 0.572, 0.308]], [0.726, [0.160, 0.572, 0.308]], [0.728, [0.157, 0.568, 0.302]], [0.730, [0.157, 0.568, 0.302]], [0.732, [0.153, 0.563, 0.296]], [0.734, [0.153, 0.563, 0.296]], [0.736, [0.149, 0.559, 0.290]], [0.738, [0.149, 0.559, 0.290]], [0.740, [0.146, 0.555, 0.284]], [0.742, [0.146, 0.555, 0.284]], [0.744, [0.142, 0.550, 0.278]], [0.746, [0.142, 0.550, 0.278]], [0.748, [0.138, 0.546, 0.272]], [0.750, [0.138, 0.546, 0.272]], [0.751, [0.134, 0.542, 0.268]], [0.753, [0.134, 0.542, 0.268]], [0.755, [0.130, 0.539, 0.265]], [0.757, [0.130, 0.539, 0.265]], [0.759, [0.125, 0.535, 0.262]], [0.761, [0.125, 0.535, 0.262]], [0.763, [0.121, 0.531, 0.259]], [0.765, [0.121, 0.531, 0.259]], [0.767, [0.117, 0.528, 0.256]], [0.769, [0.117, 0.528, 0.256]], [0.771, [0.112, 0.524, 0.253]], [0.773, [0.112, 0.524, 0.253]], [0.775, [0.108, 0.520, 0.250]], [0.777, [0.108, 0.520, 0.250]], [0.779, [0.104, 0.516, 0.247]], [0.781, [0.104, 0.516, 0.247]], [0.783, [0.100, 0.513, 0.244]], [0.785, [0.100, 0.513, 0.244]], [0.787, [0.095, 0.509, 0.241]], [0.789, [0.095, 0.509, 0.241]], [0.791, [0.091, 0.505, 0.238]], [0.793, [0.091, 0.505, 0.238]], [0.795, [0.087, 0.502, 0.234]], [0.796, [0.087, 0.502, 0.234]], [0.798, [0.082, 0.498, 0.231]], [0.800, [0.082, 0.498, 0.231]], [0.802, [0.078, 0.494, 0.228]], [0.804, [0.078, 0.494, 0.228]], [0.806, [0.074, 0.491, 0.225]], [0.808, [0.074, 0.491, 0.225]], [0.810, [0.069, 0.487, 0.222]], [0.812, [0.069, 0.487, 0.222]], [0.814, [0.065, 0.483, 0.219]], [0.816, [0.065, 0.483, 0.219]], [0.818, [0.061, 0.480, 0.216]], [0.820, [0.061, 0.480, 0.216]], [0.822, [0.057, 0.476, 0.213]], [0.824, [0.057, 0.476, 0.213]], [0.826, [0.052, 0.472, 0.210]], [0.828, [0.052, 0.472, 0.210]], [0.830, [0.048, 0.469, 0.207]], [0.832, [0.048, 0.469, 0.207]], [0.834, [0.044, 0.465, 0.204]], [0.836, [0.044, 0.465, 0.204]], [0.838, [0.039, 0.461, 0.201]], [0.840, [0.039, 0.461, 0.201]], [0.841, [0.035, 0.457, 0.198]], [0.843, [0.035, 0.457, 0.198]], [0.845, [0.031, 0.454, 0.194]], [0.847, [0.031, 0.454, 0.194]], [0.849, [0.026, 0.450, 0.191]], [0.851, [0.026, 0.450, 0.191]], [0.853, [0.022, 0.446, 0.188]], [0.855, [0.022, 0.446, 0.188]], [0.857, [0.018, 0.443, 0.185]], [0.859, [0.018, 0.443, 0.185]], [0.861, [0.013, 0.439, 0.182]], [0.863, [0.013, 0.439, 0.182]], [0.865, [0.009, 0.435, 0.179]], [0.867, [0.009, 0.435, 0.179]], [0.869, [0.005, 0.432, 0.176]], [0.871, [0.005, 0.432, 0.176]], [0.873, [0.001, 0.428, 0.173]], [0.875, [0.001, 0.428, 0.173]], [0.877, [0.000, 0.423, 0.171]], [0.879, [0.000, 0.423, 0.171]], [0.881, [0.000, 0.418, 0.169]], [0.883, [0.000, 0.418, 0.169]], [0.885, [0.000, 0.413, 0.167]], [0.886, [0.000, 0.413, 0.167]], [0.888, [0.000, 0.408, 0.164]], [0.890, [0.000, 0.408, 0.164]], [0.892, [0.000, 0.403, 0.162]], [0.894, [0.000, 0.403, 0.162]], [0.896, [0.000, 0.398, 0.160]], [0.898, [0.000, 0.398, 0.160]], [0.900, [0.000, 0.393, 0.158]], [0.902, [0.000, 0.393, 0.158]], [0.904, [0.000, 0.388, 0.156]], [0.906, [0.000, 0.388, 0.156]], [0.908, [0.000, 0.383, 0.154]], [0.910, [0.000, 0.383, 0.154]], [0.912, [0.000, 0.378, 0.152]], [0.914, [0.000, 0.378, 0.152]], [0.916, [0.000, 0.373, 0.150]], [0.918, [0.000, 0.373, 0.150]], [0.920, [0.000, 0.368, 0.148]], [0.922, [0.000, 0.368, 0.148]], [0.924, [0.000, 0.363, 0.146]], [0.926, [0.000, 0.363, 0.146]], [0.928, [0.000, 0.357, 0.144]], [0.930, [0.000, 0.357, 0.144]], [0.932, [0.000, 0.352, 0.141]], [0.933, [0.000, 0.352, 0.141]], [0.935, [0.000, 0.347, 0.139]], [0.937, [0.000, 0.347, 0.139]], [0.939, [0.000, 0.342, 0.137]], [0.941, [0.000, 0.342, 0.137]], [0.943, [0.000, 0.337, 0.135]], [0.945, [0.000, 0.337, 0.135]], [0.947, [0.000, 0.332, 0.133]], [0.949, [0.000, 0.332, 0.133]], [0.951, [0.000, 0.327, 0.131]], [0.953, [0.000, 0.327, 0.131]], [0.955, [0.000, 0.322, 0.129]], [0.957, [0.000, 0.322, 0.129]], [0.959, [0.000, 0.317, 0.127]], [0.961, [0.000, 0.317, 0.127]], [0.963, [0.000, 0.312, 0.125]], [0.965, [0.000, 0.312, 0.125]], [0.967, [0.000, 0.307, 0.123]], [0.969, [0.000, 0.307, 0.123]], [0.971, [0.000, 0.302, 0.121]], [0.973, [0.000, 0.302, 0.121]], [0.975, [0.000, 0.297, 0.118]], [0.977, [0.000, 0.297, 0.118]], [0.978, [0.000, 0.292, 0.116]], [0.980, [0.000, 0.292, 0.116]], [0.982, [0.000, 0.287, 0.114]], [0.984, [0.000, 0.287, 0.114]], [0.986, [0.000, 0.282, 0.112]], [0.988, [0.000, 0.282, 0.112]], [0.990, [0.000, 0.277, 0.110]], [0.992, [0.000, 0.277, 0.110]], [0.994, [0.000, 0.272, 0.108]], [0.996, [0.000, 0.272, 0.108]], [0.998, [0.000, 0.267, 0.106]], [1.000, [0.000, 0.267, 0.106]]]; +var BuPu = [[0.000, [0.969, 0.988, 0.992]], [0.002, [0.969, 0.988, 0.992]], [0.004, [0.966, 0.986, 0.991]], [0.006, [0.966, 0.986, 0.991]], [0.008, [0.963, 0.984, 0.990]], [0.010, [0.963, 0.984, 0.990]], [0.012, [0.960, 0.982, 0.989]], [0.014, [0.960, 0.982, 0.989]], [0.016, [0.957, 0.980, 0.988]], [0.018, [0.957, 0.980, 0.988]], [0.020, [0.954, 0.978, 0.987]], [0.022, [0.954, 0.978, 0.987]], [0.023, [0.952, 0.976, 0.986]], [0.025, [0.952, 0.976, 0.986]], [0.027, [0.949, 0.974, 0.984]], [0.029, [0.949, 0.974, 0.984]], [0.031, [0.946, 0.972, 0.983]], [0.033, [0.946, 0.972, 0.983]], [0.035, [0.943, 0.971, 0.982]], [0.037, [0.943, 0.971, 0.982]], [0.039, [0.940, 0.969, 0.981]], [0.041, [0.940, 0.969, 0.981]], [0.043, [0.938, 0.967, 0.980]], [0.045, [0.938, 0.967, 0.980]], [0.047, [0.935, 0.965, 0.979]], [0.049, [0.935, 0.965, 0.979]], [0.051, [0.932, 0.963, 0.978]], [0.053, [0.932, 0.963, 0.978]], [0.055, [0.929, 0.961, 0.977]], [0.057, [0.929, 0.961, 0.977]], [0.059, [0.926, 0.959, 0.976]], [0.061, [0.926, 0.959, 0.976]], [0.063, [0.923, 0.957, 0.974]], [0.065, [0.923, 0.957, 0.974]], [0.067, [0.921, 0.955, 0.973]], [0.068, [0.921, 0.955, 0.973]], [0.070, [0.918, 0.953, 0.972]], [0.072, [0.918, 0.953, 0.972]], [0.074, [0.915, 0.951, 0.971]], [0.076, [0.915, 0.951, 0.971]], [0.078, [0.912, 0.949, 0.970]], [0.080, [0.912, 0.949, 0.970]], [0.082, [0.909, 0.947, 0.969]], [0.084, [0.909, 0.947, 0.969]], [0.086, [0.906, 0.945, 0.968]], [0.088, [0.906, 0.945, 0.968]], [0.090, [0.904, 0.943, 0.967]], [0.092, [0.904, 0.943, 0.967]], [0.094, [0.901, 0.941, 0.966]], [0.096, [0.901, 0.941, 0.966]], [0.098, [0.898, 0.939, 0.964]], [0.100, [0.898, 0.939, 0.964]], [0.102, [0.895, 0.937, 0.963]], [0.104, [0.895, 0.937, 0.963]], [0.106, [0.892, 0.935, 0.962]], [0.108, [0.892, 0.935, 0.962]], [0.110, [0.889, 0.933, 0.961]], [0.112, [0.889, 0.933, 0.961]], [0.114, [0.887, 0.931, 0.960]], [0.115, [0.887, 0.931, 0.960]], [0.117, [0.884, 0.929, 0.959]], [0.119, [0.884, 0.929, 0.959]], [0.121, [0.881, 0.927, 0.958]], [0.123, [0.881, 0.927, 0.958]], [0.125, [0.878, 0.925, 0.957]], [0.127, [0.878, 0.925, 0.957]], [0.129, [0.874, 0.922, 0.955]], [0.131, [0.874, 0.922, 0.955]], [0.133, [0.870, 0.919, 0.953]], [0.135, [0.870, 0.919, 0.953]], [0.137, [0.866, 0.916, 0.951]], [0.139, [0.866, 0.916, 0.951]], [0.141, [0.862, 0.913, 0.950]], [0.143, [0.862, 0.913, 0.950]], [0.145, [0.858, 0.910, 0.948]], [0.147, [0.858, 0.910, 0.948]], [0.149, [0.854, 0.907, 0.946]], [0.151, [0.854, 0.907, 0.946]], [0.153, [0.850, 0.904, 0.945]], [0.155, [0.850, 0.904, 0.945]], [0.157, [0.845, 0.900, 0.943]], [0.159, [0.845, 0.900, 0.943]], [0.160, [0.841, 0.897, 0.941]], [0.162, [0.841, 0.897, 0.941]], [0.164, [0.837, 0.894, 0.939]], [0.166, [0.837, 0.894, 0.939]], [0.168, [0.833, 0.891, 0.938]], [0.170, [0.833, 0.891, 0.938]], [0.172, [0.829, 0.888, 0.936]], [0.174, [0.829, 0.888, 0.936]], [0.176, [0.825, 0.885, 0.934]], [0.178, [0.825, 0.885, 0.934]], [0.180, [0.821, 0.882, 0.933]], [0.182, [0.821, 0.882, 0.933]], [0.184, [0.817, 0.879, 0.931]], [0.186, [0.817, 0.879, 0.931]], [0.188, [0.813, 0.876, 0.929]], [0.190, [0.813, 0.876, 0.929]], [0.192, [0.809, 0.873, 0.927]], [0.194, [0.809, 0.873, 0.927]], [0.196, [0.805, 0.870, 0.926]], [0.198, [0.805, 0.870, 0.926]], [0.200, [0.801, 0.867, 0.924]], [0.202, [0.801, 0.867, 0.924]], [0.204, [0.797, 0.864, 0.922]], [0.205, [0.797, 0.864, 0.922]], [0.207, [0.793, 0.861, 0.920]], [0.209, [0.793, 0.861, 0.920]], [0.211, [0.789, 0.857, 0.919]], [0.213, [0.789, 0.857, 0.919]], [0.215, [0.785, 0.854, 0.917]], [0.217, [0.785, 0.854, 0.917]], [0.219, [0.780, 0.851, 0.915]], [0.221, [0.780, 0.851, 0.915]], [0.223, [0.776, 0.848, 0.914]], [0.225, [0.776, 0.848, 0.914]], [0.227, [0.772, 0.845, 0.912]], [0.229, [0.772, 0.845, 0.912]], [0.231, [0.768, 0.842, 0.910]], [0.233, [0.768, 0.842, 0.910]], [0.235, [0.764, 0.839, 0.908]], [0.237, [0.764, 0.839, 0.908]], [0.239, [0.760, 0.836, 0.907]], [0.241, [0.760, 0.836, 0.907]], [0.243, [0.756, 0.833, 0.905]], [0.245, [0.756, 0.833, 0.905]], [0.247, [0.752, 0.830, 0.903]], [0.249, [0.752, 0.830, 0.903]], [0.250, [0.748, 0.827, 0.902]], [0.252, [0.748, 0.827, 0.902]], [0.254, [0.744, 0.824, 0.900]], [0.256, [0.744, 0.824, 0.900]], [0.258, [0.740, 0.821, 0.899]], [0.260, [0.740, 0.821, 0.899]], [0.262, [0.736, 0.818, 0.897]], [0.264, [0.736, 0.818, 0.897]], [0.266, [0.732, 0.815, 0.896]], [0.268, [0.732, 0.815, 0.896]], [0.270, [0.728, 0.813, 0.894]], [0.272, [0.728, 0.813, 0.894]], [0.274, [0.724, 0.810, 0.893]], [0.276, [0.724, 0.810, 0.893]], [0.278, [0.720, 0.807, 0.891]], [0.280, [0.720, 0.807, 0.891]], [0.282, [0.716, 0.804, 0.890]], [0.284, [0.716, 0.804, 0.890]], [0.286, [0.711, 0.801, 0.888]], [0.288, [0.711, 0.801, 0.888]], [0.290, [0.707, 0.798, 0.887]], [0.292, [0.707, 0.798, 0.887]], [0.294, [0.703, 0.796, 0.885]], [0.295, [0.703, 0.796, 0.885]], [0.297, [0.699, 0.793, 0.884]], [0.299, [0.699, 0.793, 0.884]], [0.301, [0.695, 0.790, 0.882]], [0.303, [0.695, 0.790, 0.882]], [0.305, [0.691, 0.787, 0.881]], [0.307, [0.691, 0.787, 0.881]], [0.309, [0.687, 0.784, 0.879]], [0.311, [0.687, 0.784, 0.879]], [0.313, [0.683, 0.781, 0.878]], [0.315, [0.683, 0.781, 0.878]], [0.317, [0.679, 0.779, 0.876]], [0.319, [0.679, 0.779, 0.876]], [0.321, [0.675, 0.776, 0.875]], [0.323, [0.675, 0.776, 0.875]], [0.325, [0.671, 0.773, 0.874]], [0.327, [0.671, 0.773, 0.874]], [0.329, [0.667, 0.770, 0.872]], [0.331, [0.667, 0.770, 0.872]], [0.333, [0.663, 0.767, 0.871]], [0.335, [0.663, 0.767, 0.871]], [0.337, [0.659, 0.764, 0.869]], [0.339, [0.659, 0.764, 0.869]], [0.341, [0.655, 0.762, 0.868]], [0.342, [0.655, 0.762, 0.868]], [0.344, [0.651, 0.759, 0.866]], [0.346, [0.651, 0.759, 0.866]], [0.348, [0.647, 0.756, 0.865]], [0.350, [0.647, 0.756, 0.865]], [0.352, [0.642, 0.753, 0.863]], [0.354, [0.642, 0.753, 0.863]], [0.356, [0.638, 0.750, 0.862]], [0.358, [0.638, 0.750, 0.862]], [0.360, [0.634, 0.748, 0.860]], [0.362, [0.634, 0.748, 0.860]], [0.364, [0.630, 0.745, 0.859]], [0.366, [0.630, 0.745, 0.859]], [0.368, [0.626, 0.742, 0.857]], [0.370, [0.626, 0.742, 0.857]], [0.372, [0.622, 0.739, 0.856]], [0.374, [0.622, 0.739, 0.856]], [0.376, [0.619, 0.736, 0.854]], [0.378, [0.619, 0.736, 0.854]], [0.380, [0.617, 0.731, 0.852]], [0.382, [0.617, 0.731, 0.852]], [0.384, [0.614, 0.726, 0.849]], [0.386, [0.614, 0.726, 0.849]], [0.387, [0.612, 0.721, 0.847]], [0.389, [0.612, 0.721, 0.847]], [0.391, [0.610, 0.717, 0.844]], [0.393, [0.610, 0.717, 0.844]], [0.395, [0.608, 0.712, 0.842]], [0.397, [0.608, 0.712, 0.842]], [0.399, [0.605, 0.707, 0.839]], [0.401, [0.605, 0.707, 0.839]], [0.403, [0.603, 0.703, 0.837]], [0.405, [0.603, 0.703, 0.837]], [0.407, [0.601, 0.698, 0.834]], [0.409, [0.601, 0.698, 0.834]], [0.411, [0.599, 0.693, 0.832]], [0.413, [0.599, 0.693, 0.832]], [0.415, [0.597, 0.689, 0.829]], [0.417, [0.597, 0.689, 0.829]], [0.419, [0.594, 0.684, 0.827]], [0.421, [0.594, 0.684, 0.827]], [0.423, [0.592, 0.679, 0.824]], [0.425, [0.592, 0.679, 0.824]], [0.427, [0.590, 0.675, 0.822]], [0.429, [0.590, 0.675, 0.822]], [0.431, [0.588, 0.670, 0.820]], [0.432, [0.588, 0.670, 0.820]], [0.434, [0.586, 0.665, 0.817]], [0.436, [0.586, 0.665, 0.817]], [0.438, [0.583, 0.661, 0.815]], [0.440, [0.583, 0.661, 0.815]], [0.442, [0.581, 0.656, 0.812]], [0.444, [0.581, 0.656, 0.812]], [0.446, [0.579, 0.651, 0.810]], [0.448, [0.579, 0.651, 0.810]], [0.450, [0.577, 0.647, 0.807]], [0.452, [0.577, 0.647, 0.807]], [0.454, [0.574, 0.642, 0.805]], [0.456, [0.574, 0.642, 0.805]], [0.458, [0.572, 0.637, 0.802]], [0.460, [0.572, 0.637, 0.802]], [0.462, [0.570, 0.633, 0.800]], [0.464, [0.570, 0.633, 0.800]], [0.466, [0.568, 0.628, 0.797]], [0.468, [0.568, 0.628, 0.797]], [0.470, [0.566, 0.623, 0.795]], [0.472, [0.566, 0.623, 0.795]], [0.474, [0.563, 0.619, 0.792]], [0.476, [0.563, 0.619, 0.792]], [0.477, [0.561, 0.614, 0.790]], [0.479, [0.561, 0.614, 0.790]], [0.481, [0.559, 0.609, 0.788]], [0.483, [0.559, 0.609, 0.788]], [0.485, [0.557, 0.605, 0.785]], [0.487, [0.557, 0.605, 0.785]], [0.489, [0.555, 0.600, 0.783]], [0.491, [0.555, 0.600, 0.783]], [0.493, [0.552, 0.595, 0.780]], [0.495, [0.552, 0.595, 0.780]], [0.497, [0.550, 0.591, 0.778]], [0.499, [0.550, 0.591, 0.778]], [0.501, [0.549, 0.586, 0.775]], [0.503, [0.549, 0.586, 0.775]], [0.505, [0.549, 0.580, 0.773]], [0.507, [0.549, 0.580, 0.773]], [0.509, [0.549, 0.575, 0.770]], [0.511, [0.549, 0.575, 0.770]], [0.513, [0.549, 0.570, 0.767]], [0.515, [0.549, 0.570, 0.767]], [0.517, [0.549, 0.564, 0.765]], [0.519, [0.549, 0.564, 0.765]], [0.521, [0.549, 0.559, 0.762]], [0.523, [0.549, 0.559, 0.762]], [0.524, [0.549, 0.554, 0.760]], [0.526, [0.549, 0.554, 0.760]], [0.528, [0.549, 0.549, 0.757]], [0.530, [0.549, 0.549, 0.757]], [0.532, [0.549, 0.543, 0.755]], [0.534, [0.549, 0.543, 0.755]], [0.536, [0.549, 0.538, 0.752]], [0.538, [0.549, 0.538, 0.752]], [0.540, [0.549, 0.533, 0.749]], [0.542, [0.549, 0.533, 0.749]], [0.544, [0.549, 0.527, 0.747]], [0.546, [0.549, 0.527, 0.747]], [0.548, [0.549, 0.522, 0.744]], [0.550, [0.549, 0.522, 0.744]], [0.552, [0.549, 0.517, 0.742]], [0.554, [0.549, 0.517, 0.742]], [0.556, [0.549, 0.512, 0.739]], [0.558, [0.549, 0.512, 0.739]], [0.560, [0.549, 0.506, 0.736]], [0.562, [0.549, 0.506, 0.736]], [0.564, [0.549, 0.501, 0.734]], [0.566, [0.549, 0.501, 0.734]], [0.568, [0.549, 0.496, 0.731]], [0.569, [0.549, 0.496, 0.731]], [0.571, [0.549, 0.490, 0.729]], [0.573, [0.549, 0.490, 0.729]], [0.575, [0.549, 0.485, 0.726]], [0.577, [0.549, 0.485, 0.726]], [0.579, [0.549, 0.480, 0.724]], [0.581, [0.549, 0.480, 0.724]], [0.583, [0.549, 0.474, 0.721]], [0.585, [0.549, 0.474, 0.721]], [0.587, [0.549, 0.469, 0.718]], [0.589, [0.549, 0.469, 0.718]], [0.591, [0.549, 0.464, 0.716]], [0.593, [0.549, 0.464, 0.716]], [0.595, [0.549, 0.459, 0.713]], [0.597, [0.549, 0.459, 0.713]], [0.599, [0.549, 0.453, 0.711]], [0.601, [0.549, 0.453, 0.711]], [0.603, [0.549, 0.448, 0.708]], [0.605, [0.549, 0.448, 0.708]], [0.607, [0.549, 0.443, 0.705]], [0.609, [0.549, 0.443, 0.705]], [0.611, [0.549, 0.437, 0.703]], [0.613, [0.549, 0.437, 0.703]], [0.614, [0.549, 0.432, 0.700]], [0.616, [0.549, 0.432, 0.700]], [0.618, [0.549, 0.427, 0.698]], [0.620, [0.549, 0.427, 0.698]], [0.622, [0.549, 0.422, 0.695]], [0.624, [0.549, 0.422, 0.695]], [0.626, [0.549, 0.416, 0.693]], [0.628, [0.549, 0.416, 0.693]], [0.630, [0.548, 0.411, 0.690]], [0.632, [0.548, 0.411, 0.690]], [0.634, [0.548, 0.406, 0.688]], [0.636, [0.548, 0.406, 0.688]], [0.638, [0.547, 0.401, 0.685]], [0.640, [0.547, 0.401, 0.685]], [0.642, [0.547, 0.396, 0.683]], [0.644, [0.547, 0.396, 0.683]], [0.646, [0.546, 0.391, 0.680]], [0.648, [0.546, 0.391, 0.680]], [0.650, [0.546, 0.385, 0.678]], [0.652, [0.546, 0.385, 0.678]], [0.654, [0.545, 0.380, 0.675]], [0.656, [0.545, 0.380, 0.675]], [0.658, [0.545, 0.375, 0.673]], [0.659, [0.545, 0.375, 0.673]], [0.661, [0.544, 0.370, 0.670]], [0.663, [0.544, 0.370, 0.670]], [0.665, [0.544, 0.365, 0.668]], [0.667, [0.544, 0.365, 0.668]], [0.669, [0.543, 0.360, 0.666]], [0.671, [0.543, 0.360, 0.666]], [0.673, [0.543, 0.354, 0.663]], [0.675, [0.543, 0.354, 0.663]], [0.677, [0.542, 0.349, 0.661]], [0.679, [0.542, 0.349, 0.661]], [0.681, [0.542, 0.344, 0.658]], [0.683, [0.542, 0.344, 0.658]], [0.685, [0.541, 0.339, 0.656]], [0.687, [0.541, 0.339, 0.656]], [0.689, [0.541, 0.334, 0.653]], [0.691, [0.541, 0.334, 0.653]], [0.693, [0.540, 0.329, 0.651]], [0.695, [0.540, 0.329, 0.651]], [0.697, [0.540, 0.323, 0.648]], [0.699, [0.540, 0.323, 0.648]], [0.701, [0.539, 0.318, 0.646]], [0.703, [0.539, 0.318, 0.646]], [0.705, [0.539, 0.313, 0.643]], [0.706, [0.539, 0.313, 0.643]], [0.708, [0.538, 0.308, 0.641]], [0.710, [0.538, 0.308, 0.641]], [0.712, [0.538, 0.303, 0.638]], [0.714, [0.538, 0.303, 0.638]], [0.716, [0.537, 0.298, 0.636]], [0.718, [0.537, 0.298, 0.636]], [0.720, [0.537, 0.292, 0.634]], [0.722, [0.537, 0.292, 0.634]], [0.724, [0.536, 0.287, 0.631]], [0.726, [0.536, 0.287, 0.631]], [0.728, [0.536, 0.282, 0.629]], [0.730, [0.536, 0.282, 0.629]], [0.732, [0.535, 0.277, 0.626]], [0.734, [0.535, 0.277, 0.626]], [0.736, [0.535, 0.272, 0.624]], [0.738, [0.535, 0.272, 0.624]], [0.740, [0.534, 0.267, 0.621]], [0.742, [0.534, 0.267, 0.621]], [0.744, [0.534, 0.261, 0.619]], [0.746, [0.534, 0.261, 0.619]], [0.748, [0.533, 0.256, 0.616]], [0.750, [0.533, 0.256, 0.616]], [0.751, [0.533, 0.250, 0.613]], [0.753, [0.533, 0.250, 0.613]], [0.755, [0.532, 0.244, 0.609]], [0.757, [0.532, 0.244, 0.609]], [0.759, [0.531, 0.238, 0.605]], [0.761, [0.531, 0.238, 0.605]], [0.763, [0.530, 0.232, 0.600]], [0.765, [0.530, 0.232, 0.600]], [0.767, [0.529, 0.226, 0.596]], [0.769, [0.529, 0.226, 0.596]], [0.771, [0.528, 0.220, 0.592]], [0.773, [0.528, 0.220, 0.592]], [0.775, [0.528, 0.213, 0.588]], [0.777, [0.528, 0.213, 0.588]], [0.779, [0.527, 0.207, 0.584]], [0.781, [0.527, 0.207, 0.584]], [0.783, [0.526, 0.201, 0.580]], [0.785, [0.526, 0.201, 0.580]], [0.787, [0.525, 0.195, 0.576]], [0.789, [0.525, 0.195, 0.576]], [0.791, [0.524, 0.189, 0.572]], [0.793, [0.524, 0.189, 0.572]], [0.795, [0.523, 0.183, 0.568]], [0.796, [0.523, 0.183, 0.568]], [0.798, [0.522, 0.176, 0.564]], [0.800, [0.522, 0.176, 0.564]], [0.802, [0.521, 0.170, 0.560]], [0.804, [0.521, 0.170, 0.560]], [0.806, [0.521, 0.164, 0.556]], [0.808, [0.521, 0.164, 0.556]], [0.810, [0.520, 0.158, 0.552]], [0.812, [0.520, 0.158, 0.552]], [0.814, [0.519, 0.152, 0.548]], [0.816, [0.519, 0.152, 0.548]], [0.818, [0.518, 0.146, 0.544]], [0.820, [0.518, 0.146, 0.544]], [0.822, [0.517, 0.140, 0.540]], [0.824, [0.517, 0.140, 0.540]], [0.826, [0.516, 0.133, 0.536]], [0.828, [0.516, 0.133, 0.536]], [0.830, [0.515, 0.127, 0.531]], [0.832, [0.515, 0.127, 0.531]], [0.834, [0.515, 0.121, 0.527]], [0.836, [0.515, 0.121, 0.527]], [0.838, [0.514, 0.115, 0.523]], [0.840, [0.514, 0.115, 0.523]], [0.841, [0.513, 0.109, 0.519]], [0.843, [0.513, 0.109, 0.519]], [0.845, [0.512, 0.103, 0.515]], [0.847, [0.512, 0.103, 0.515]], [0.849, [0.511, 0.097, 0.511]], [0.851, [0.511, 0.097, 0.511]], [0.853, [0.510, 0.090, 0.507]], [0.855, [0.510, 0.090, 0.507]], [0.857, [0.509, 0.084, 0.503]], [0.859, [0.509, 0.084, 0.503]], [0.861, [0.509, 0.078, 0.499]], [0.863, [0.509, 0.078, 0.499]], [0.865, [0.508, 0.072, 0.495]], [0.867, [0.508, 0.072, 0.495]], [0.869, [0.507, 0.066, 0.491]], [0.871, [0.507, 0.066, 0.491]], [0.873, [0.506, 0.060, 0.487]], [0.875, [0.506, 0.060, 0.487]], [0.877, [0.500, 0.057, 0.481]], [0.879, [0.500, 0.057, 0.481]], [0.881, [0.494, 0.055, 0.475]], [0.883, [0.494, 0.055, 0.475]], [0.885, [0.487, 0.054, 0.469]], [0.886, [0.487, 0.054, 0.469]], [0.888, [0.481, 0.052, 0.463]], [0.890, [0.481, 0.052, 0.463]], [0.892, [0.475, 0.050, 0.457]], [0.894, [0.475, 0.050, 0.457]], [0.896, [0.468, 0.048, 0.451]], [0.898, [0.468, 0.048, 0.451]], [0.900, [0.462, 0.046, 0.445]], [0.902, [0.462, 0.046, 0.445]], [0.904, [0.456, 0.044, 0.439]], [0.906, [0.456, 0.044, 0.439]], [0.908, [0.449, 0.042, 0.433]], [0.910, [0.449, 0.042, 0.433]], [0.912, [0.443, 0.041, 0.427]], [0.914, [0.443, 0.041, 0.427]], [0.916, [0.436, 0.039, 0.421]], [0.918, [0.436, 0.039, 0.421]], [0.920, [0.430, 0.037, 0.415]], [0.922, [0.430, 0.037, 0.415]], [0.924, [0.424, 0.035, 0.409]], [0.926, [0.424, 0.035, 0.409]], [0.928, [0.417, 0.033, 0.403]], [0.930, [0.417, 0.033, 0.403]], [0.932, [0.411, 0.031, 0.397]], [0.933, [0.411, 0.031, 0.397]], [0.935, [0.404, 0.030, 0.391]], [0.937, [0.404, 0.030, 0.391]], [0.939, [0.398, 0.028, 0.385]], [0.941, [0.398, 0.028, 0.385]], [0.943, [0.392, 0.026, 0.379]], [0.945, [0.392, 0.026, 0.379]], [0.947, [0.385, 0.024, 0.372]], [0.949, [0.385, 0.024, 0.372]], [0.951, [0.379, 0.022, 0.366]], [0.953, [0.379, 0.022, 0.366]], [0.955, [0.372, 0.020, 0.360]], [0.957, [0.372, 0.020, 0.360]], [0.959, [0.366, 0.018, 0.354]], [0.961, [0.366, 0.018, 0.354]], [0.963, [0.360, 0.017, 0.348]], [0.965, [0.360, 0.017, 0.348]], [0.967, [0.353, 0.015, 0.342]], [0.969, [0.353, 0.015, 0.342]], [0.971, [0.347, 0.013, 0.336]], [0.973, [0.347, 0.013, 0.336]], [0.975, [0.340, 0.011, 0.330]], [0.977, [0.340, 0.011, 0.330]], [0.978, [0.334, 0.009, 0.324]], [0.980, [0.334, 0.009, 0.324]], [0.982, [0.328, 0.007, 0.318]], [0.984, [0.328, 0.007, 0.318]], [0.986, [0.321, 0.006, 0.312]], [0.988, [0.321, 0.006, 0.312]], [0.990, [0.315, 0.004, 0.306]], [0.992, [0.315, 0.004, 0.306]], [0.994, [0.308, 0.002, 0.300]], [0.996, [0.308, 0.002, 0.300]], [0.998, [0.302, 0.000, 0.294]], [1.000, [0.302, 0.000, 0.294]]]; +var GnBu = [[0.000, [0.969, 0.988, 0.941]], [0.002, [0.969, 0.988, 0.941]], [0.004, [0.966, 0.987, 0.939]], [0.006, [0.966, 0.987, 0.939]], [0.008, [0.963, 0.986, 0.936]], [0.010, [0.963, 0.986, 0.936]], [0.012, [0.960, 0.985, 0.933]], [0.014, [0.960, 0.985, 0.933]], [0.016, [0.957, 0.984, 0.931]], [0.018, [0.957, 0.984, 0.931]], [0.020, [0.954, 0.983, 0.928]], [0.022, [0.954, 0.983, 0.928]], [0.023, [0.952, 0.982, 0.926]], [0.025, [0.952, 0.982, 0.926]], [0.027, [0.949, 0.980, 0.923]], [0.029, [0.949, 0.980, 0.923]], [0.031, [0.946, 0.979, 0.921]], [0.033, [0.946, 0.979, 0.921]], [0.035, [0.943, 0.978, 0.918]], [0.037, [0.943, 0.978, 0.918]], [0.039, [0.940, 0.977, 0.915]], [0.041, [0.940, 0.977, 0.915]], [0.043, [0.938, 0.976, 0.913]], [0.045, [0.938, 0.976, 0.913]], [0.047, [0.935, 0.975, 0.910]], [0.049, [0.935, 0.975, 0.910]], [0.051, [0.932, 0.974, 0.908]], [0.053, [0.932, 0.974, 0.908]], [0.055, [0.929, 0.973, 0.905]], [0.057, [0.929, 0.973, 0.905]], [0.059, [0.926, 0.972, 0.902]], [0.061, [0.926, 0.972, 0.902]], [0.063, [0.923, 0.971, 0.900]], [0.065, [0.923, 0.971, 0.900]], [0.067, [0.921, 0.969, 0.897]], [0.068, [0.921, 0.969, 0.897]], [0.070, [0.918, 0.968, 0.895]], [0.072, [0.918, 0.968, 0.895]], [0.074, [0.915, 0.967, 0.892]], [0.076, [0.915, 0.967, 0.892]], [0.078, [0.912, 0.966, 0.890]], [0.080, [0.912, 0.966, 0.890]], [0.082, [0.909, 0.965, 0.887]], [0.084, [0.909, 0.965, 0.887]], [0.086, [0.906, 0.964, 0.884]], [0.088, [0.906, 0.964, 0.884]], [0.090, [0.904, 0.963, 0.882]], [0.092, [0.904, 0.963, 0.882]], [0.094, [0.901, 0.962, 0.879]], [0.096, [0.901, 0.962, 0.879]], [0.098, [0.898, 0.961, 0.877]], [0.100, [0.898, 0.961, 0.877]], [0.102, [0.895, 0.959, 0.874]], [0.104, [0.895, 0.959, 0.874]], [0.106, [0.892, 0.958, 0.871]], [0.108, [0.892, 0.958, 0.871]], [0.110, [0.889, 0.957, 0.869]], [0.112, [0.889, 0.957, 0.869]], [0.114, [0.887, 0.956, 0.866]], [0.115, [0.887, 0.956, 0.866]], [0.117, [0.884, 0.955, 0.864]], [0.119, [0.884, 0.955, 0.864]], [0.121, [0.881, 0.954, 0.861]], [0.123, [0.881, 0.954, 0.861]], [0.125, [0.878, 0.953, 0.858]], [0.127, [0.878, 0.953, 0.858]], [0.129, [0.876, 0.952, 0.856]], [0.131, [0.876, 0.952, 0.856]], [0.133, [0.873, 0.951, 0.853]], [0.135, [0.873, 0.951, 0.853]], [0.137, [0.871, 0.950, 0.850]], [0.139, [0.871, 0.950, 0.850]], [0.141, [0.868, 0.949, 0.848]], [0.143, [0.868, 0.949, 0.848]], [0.145, [0.866, 0.948, 0.845]], [0.147, [0.866, 0.948, 0.845]], [0.149, [0.863, 0.947, 0.842]], [0.151, [0.863, 0.947, 0.842]], [0.153, [0.861, 0.946, 0.840]], [0.155, [0.861, 0.946, 0.840]], [0.157, [0.858, 0.945, 0.837]], [0.159, [0.858, 0.945, 0.837]], [0.160, [0.856, 0.944, 0.834]], [0.162, [0.856, 0.944, 0.834]], [0.164, [0.854, 0.943, 0.831]], [0.166, [0.854, 0.943, 0.831]], [0.168, [0.851, 0.942, 0.829]], [0.170, [0.851, 0.942, 0.829]], [0.172, [0.849, 0.941, 0.826]], [0.174, [0.849, 0.941, 0.826]], [0.176, [0.846, 0.940, 0.823]], [0.178, [0.846, 0.940, 0.823]], [0.180, [0.844, 0.939, 0.821]], [0.182, [0.844, 0.939, 0.821]], [0.184, [0.841, 0.938, 0.818]], [0.186, [0.841, 0.938, 0.818]], [0.188, [0.839, 0.937, 0.815]], [0.190, [0.839, 0.937, 0.815]], [0.192, [0.836, 0.936, 0.812]], [0.194, [0.836, 0.936, 0.812]], [0.196, [0.834, 0.935, 0.810]], [0.198, [0.834, 0.935, 0.810]], [0.200, [0.831, 0.934, 0.807]], [0.202, [0.831, 0.934, 0.807]], [0.204, [0.829, 0.933, 0.804]], [0.205, [0.829, 0.933, 0.804]], [0.207, [0.826, 0.932, 0.802]], [0.209, [0.826, 0.932, 0.802]], [0.211, [0.824, 0.931, 0.799]], [0.213, [0.824, 0.931, 0.799]], [0.215, [0.822, 0.930, 0.796]], [0.217, [0.822, 0.930, 0.796]], [0.219, [0.819, 0.929, 0.794]], [0.221, [0.819, 0.929, 0.794]], [0.223, [0.817, 0.928, 0.791]], [0.225, [0.817, 0.928, 0.791]], [0.227, [0.814, 0.927, 0.788]], [0.229, [0.814, 0.927, 0.788]], [0.231, [0.812, 0.926, 0.785]], [0.233, [0.812, 0.926, 0.785]], [0.235, [0.809, 0.925, 0.783]], [0.237, [0.809, 0.925, 0.783]], [0.239, [0.807, 0.924, 0.780]], [0.241, [0.807, 0.924, 0.780]], [0.243, [0.804, 0.923, 0.777]], [0.245, [0.804, 0.923, 0.777]], [0.247, [0.802, 0.922, 0.775]], [0.249, [0.802, 0.922, 0.775]], [0.250, [0.799, 0.921, 0.772]], [0.252, [0.799, 0.921, 0.772]], [0.254, [0.794, 0.919, 0.770]], [0.256, [0.794, 0.919, 0.770]], [0.258, [0.790, 0.918, 0.768]], [0.260, [0.790, 0.918, 0.768]], [0.262, [0.786, 0.916, 0.766]], [0.264, [0.786, 0.916, 0.766]], [0.266, [0.781, 0.914, 0.764]], [0.268, [0.781, 0.914, 0.764]], [0.270, [0.777, 0.913, 0.762]], [0.272, [0.777, 0.913, 0.762]], [0.274, [0.772, 0.911, 0.760]], [0.276, [0.772, 0.911, 0.760]], [0.278, [0.768, 0.909, 0.758]], [0.280, [0.768, 0.909, 0.758]], [0.282, [0.763, 0.907, 0.756]], [0.284, [0.763, 0.907, 0.756]], [0.286, [0.759, 0.906, 0.754]], [0.288, [0.759, 0.906, 0.754]], [0.290, [0.755, 0.904, 0.752]], [0.292, [0.755, 0.904, 0.752]], [0.294, [0.750, 0.902, 0.750]], [0.295, [0.750, 0.902, 0.750]], [0.297, [0.746, 0.900, 0.748]], [0.299, [0.746, 0.900, 0.748]], [0.301, [0.741, 0.899, 0.746]], [0.303, [0.741, 0.899, 0.746]], [0.305, [0.737, 0.897, 0.744]], [0.307, [0.737, 0.897, 0.744]], [0.309, [0.732, 0.895, 0.743]], [0.311, [0.732, 0.895, 0.743]], [0.313, [0.728, 0.894, 0.741]], [0.315, [0.728, 0.894, 0.741]], [0.317, [0.724, 0.892, 0.739]], [0.319, [0.724, 0.892, 0.739]], [0.321, [0.719, 0.890, 0.737]], [0.323, [0.719, 0.890, 0.737]], [0.325, [0.715, 0.888, 0.735]], [0.327, [0.715, 0.888, 0.735]], [0.329, [0.710, 0.887, 0.733]], [0.331, [0.710, 0.887, 0.733]], [0.333, [0.706, 0.885, 0.731]], [0.335, [0.706, 0.885, 0.731]], [0.337, [0.701, 0.883, 0.729]], [0.339, [0.701, 0.883, 0.729]], [0.341, [0.697, 0.882, 0.727]], [0.342, [0.697, 0.882, 0.727]], [0.344, [0.693, 0.880, 0.725]], [0.346, [0.693, 0.880, 0.725]], [0.348, [0.688, 0.878, 0.723]], [0.350, [0.688, 0.878, 0.723]], [0.352, [0.684, 0.876, 0.721]], [0.354, [0.684, 0.876, 0.721]], [0.356, [0.679, 0.875, 0.719]], [0.358, [0.679, 0.875, 0.719]], [0.360, [0.675, 0.873, 0.717]], [0.362, [0.675, 0.873, 0.717]], [0.364, [0.670, 0.871, 0.715]], [0.366, [0.670, 0.871, 0.715]], [0.368, [0.666, 0.869, 0.713]], [0.370, [0.666, 0.869, 0.713]], [0.372, [0.662, 0.868, 0.711]], [0.374, [0.662, 0.868, 0.711]], [0.376, [0.657, 0.866, 0.710]], [0.378, [0.657, 0.866, 0.710]], [0.380, [0.651, 0.864, 0.712]], [0.382, [0.651, 0.864, 0.712]], [0.384, [0.646, 0.862, 0.714]], [0.386, [0.646, 0.862, 0.714]], [0.387, [0.640, 0.860, 0.716]], [0.389, [0.640, 0.860, 0.716]], [0.391, [0.635, 0.858, 0.718]], [0.393, [0.635, 0.858, 0.718]], [0.395, [0.629, 0.855, 0.720]], [0.397, [0.629, 0.855, 0.720]], [0.399, [0.624, 0.853, 0.722]], [0.401, [0.624, 0.853, 0.722]], [0.403, [0.618, 0.851, 0.723]], [0.405, [0.618, 0.851, 0.723]], [0.407, [0.612, 0.849, 0.725]], [0.409, [0.612, 0.849, 0.725]], [0.411, [0.607, 0.847, 0.727]], [0.413, [0.607, 0.847, 0.727]], [0.415, [0.601, 0.845, 0.729]], [0.417, [0.601, 0.845, 0.729]], [0.419, [0.596, 0.843, 0.731]], [0.421, [0.596, 0.843, 0.731]], [0.423, [0.590, 0.841, 0.733]], [0.425, [0.590, 0.841, 0.733]], [0.427, [0.585, 0.839, 0.734]], [0.429, [0.585, 0.839, 0.734]], [0.431, [0.579, 0.837, 0.736]], [0.432, [0.579, 0.837, 0.736]], [0.434, [0.574, 0.835, 0.738]], [0.436, [0.574, 0.835, 0.738]], [0.438, [0.568, 0.832, 0.740]], [0.440, [0.568, 0.832, 0.740]], [0.442, [0.563, 0.830, 0.742]], [0.444, [0.563, 0.830, 0.742]], [0.446, [0.557, 0.828, 0.744]], [0.448, [0.557, 0.828, 0.744]], [0.450, [0.552, 0.826, 0.746]], [0.452, [0.552, 0.826, 0.746]], [0.454, [0.546, 0.824, 0.747]], [0.456, [0.546, 0.824, 0.747]], [0.458, [0.540, 0.822, 0.749]], [0.460, [0.540, 0.822, 0.749]], [0.462, [0.535, 0.820, 0.751]], [0.464, [0.535, 0.820, 0.751]], [0.466, [0.529, 0.818, 0.753]], [0.468, [0.529, 0.818, 0.753]], [0.470, [0.524, 0.816, 0.755]], [0.472, [0.524, 0.816, 0.755]], [0.474, [0.518, 0.814, 0.757]], [0.476, [0.518, 0.814, 0.757]], [0.477, [0.513, 0.812, 0.758]], [0.479, [0.513, 0.812, 0.758]], [0.481, [0.507, 0.809, 0.760]], [0.483, [0.507, 0.809, 0.760]], [0.485, [0.502, 0.807, 0.762]], [0.487, [0.502, 0.807, 0.762]], [0.489, [0.496, 0.805, 0.764]], [0.491, [0.496, 0.805, 0.764]], [0.493, [0.491, 0.803, 0.766]], [0.495, [0.491, 0.803, 0.766]], [0.497, [0.485, 0.801, 0.768]], [0.499, [0.485, 0.801, 0.768]], [0.501, [0.480, 0.798, 0.770]], [0.503, [0.480, 0.798, 0.770]], [0.505, [0.474, 0.795, 0.771]], [0.507, [0.474, 0.795, 0.771]], [0.509, [0.469, 0.792, 0.773]], [0.511, [0.469, 0.792, 0.773]], [0.513, [0.463, 0.789, 0.775]], [0.515, [0.463, 0.789, 0.775]], [0.517, [0.457, 0.786, 0.777]], [0.519, [0.457, 0.786, 0.777]], [0.521, [0.452, 0.783, 0.779]], [0.523, [0.452, 0.783, 0.779]], [0.524, [0.446, 0.780, 0.781]], [0.526, [0.446, 0.780, 0.781]], [0.528, [0.441, 0.777, 0.782]], [0.530, [0.441, 0.777, 0.782]], [0.532, [0.435, 0.774, 0.784]], [0.534, [0.435, 0.774, 0.784]], [0.536, [0.430, 0.771, 0.786]], [0.538, [0.430, 0.771, 0.786]], [0.540, [0.424, 0.768, 0.788]], [0.542, [0.424, 0.768, 0.788]], [0.544, [0.419, 0.765, 0.790]], [0.546, [0.419, 0.765, 0.790]], [0.548, [0.413, 0.762, 0.792]], [0.550, [0.413, 0.762, 0.792]], [0.552, [0.408, 0.758, 0.794]], [0.554, [0.408, 0.758, 0.794]], [0.556, [0.402, 0.755, 0.795]], [0.558, [0.402, 0.755, 0.795]], [0.560, [0.397, 0.752, 0.797]], [0.562, [0.397, 0.752, 0.797]], [0.564, [0.391, 0.749, 0.799]], [0.566, [0.391, 0.749, 0.799]], [0.568, [0.385, 0.746, 0.801]], [0.569, [0.385, 0.746, 0.801]], [0.571, [0.380, 0.743, 0.803]], [0.573, [0.380, 0.743, 0.803]], [0.575, [0.374, 0.740, 0.805]], [0.577, [0.374, 0.740, 0.805]], [0.579, [0.369, 0.737, 0.806]], [0.581, [0.369, 0.737, 0.806]], [0.583, [0.363, 0.734, 0.808]], [0.585, [0.363, 0.734, 0.808]], [0.587, [0.358, 0.731, 0.810]], [0.589, [0.358, 0.731, 0.810]], [0.591, [0.352, 0.728, 0.812]], [0.593, [0.352, 0.728, 0.812]], [0.595, [0.347, 0.725, 0.814]], [0.597, [0.347, 0.725, 0.814]], [0.599, [0.341, 0.722, 0.816]], [0.601, [0.341, 0.722, 0.816]], [0.603, [0.336, 0.718, 0.818]], [0.605, [0.336, 0.718, 0.818]], [0.607, [0.330, 0.715, 0.819]], [0.609, [0.330, 0.715, 0.819]], [0.611, [0.325, 0.712, 0.821]], [0.613, [0.325, 0.712, 0.821]], [0.614, [0.319, 0.709, 0.823]], [0.616, [0.319, 0.709, 0.823]], [0.618, [0.313, 0.706, 0.825]], [0.620, [0.313, 0.706, 0.825]], [0.622, [0.308, 0.703, 0.827]], [0.624, [0.308, 0.703, 0.827]], [0.626, [0.303, 0.699, 0.826]], [0.628, [0.303, 0.699, 0.826]], [0.630, [0.299, 0.694, 0.823]], [0.632, [0.299, 0.694, 0.823]], [0.634, [0.295, 0.689, 0.821]], [0.636, [0.295, 0.689, 0.821]], [0.638, [0.290, 0.685, 0.818]], [0.640, [0.290, 0.685, 0.818]], [0.642, [0.286, 0.680, 0.816]], [0.644, [0.286, 0.680, 0.816]], [0.646, [0.282, 0.675, 0.813]], [0.648, [0.282, 0.675, 0.813]], [0.650, [0.277, 0.670, 0.810]], [0.652, [0.277, 0.670, 0.810]], [0.654, [0.273, 0.665, 0.808]], [0.656, [0.273, 0.665, 0.808]], [0.658, [0.269, 0.661, 0.805]], [0.659, [0.269, 0.661, 0.805]], [0.661, [0.264, 0.656, 0.803]], [0.663, [0.264, 0.656, 0.803]], [0.665, [0.260, 0.651, 0.800]], [0.667, [0.260, 0.651, 0.800]], [0.669, [0.256, 0.646, 0.797]], [0.671, [0.256, 0.646, 0.797]], [0.673, [0.252, 0.641, 0.795]], [0.675, [0.252, 0.641, 0.795]], [0.677, [0.247, 0.637, 0.792]], [0.679, [0.247, 0.637, 0.792]], [0.681, [0.243, 0.632, 0.790]], [0.683, [0.243, 0.632, 0.790]], [0.685, [0.239, 0.627, 0.787]], [0.687, [0.239, 0.627, 0.787]], [0.689, [0.234, 0.622, 0.784]], [0.691, [0.234, 0.622, 0.784]], [0.693, [0.230, 0.617, 0.782]], [0.695, [0.230, 0.617, 0.782]], [0.697, [0.226, 0.613, 0.779]], [0.699, [0.226, 0.613, 0.779]], [0.701, [0.221, 0.608, 0.777]], [0.703, [0.221, 0.608, 0.777]], [0.705, [0.217, 0.603, 0.774]], [0.706, [0.217, 0.603, 0.774]], [0.708, [0.213, 0.598, 0.772]], [0.710, [0.213, 0.598, 0.772]], [0.712, [0.208, 0.593, 0.769]], [0.714, [0.208, 0.593, 0.769]], [0.716, [0.204, 0.589, 0.766]], [0.718, [0.204, 0.589, 0.766]], [0.720, [0.200, 0.584, 0.764]], [0.722, [0.200, 0.584, 0.764]], [0.724, [0.196, 0.579, 0.761]], [0.726, [0.196, 0.579, 0.761]], [0.728, [0.191, 0.574, 0.759]], [0.730, [0.191, 0.574, 0.759]], [0.732, [0.187, 0.569, 0.756]], [0.734, [0.187, 0.569, 0.756]], [0.736, [0.183, 0.565, 0.753]], [0.738, [0.183, 0.565, 0.753]], [0.740, [0.178, 0.560, 0.751]], [0.742, [0.178, 0.560, 0.751]], [0.744, [0.174, 0.555, 0.748]], [0.746, [0.174, 0.555, 0.748]], [0.748, [0.170, 0.550, 0.746]], [0.750, [0.170, 0.550, 0.746]], [0.751, [0.165, 0.546, 0.743]], [0.753, [0.165, 0.546, 0.743]], [0.755, [0.161, 0.541, 0.741]], [0.757, [0.161, 0.541, 0.741]], [0.759, [0.157, 0.537, 0.739]], [0.761, [0.157, 0.537, 0.739]], [0.763, [0.152, 0.532, 0.737]], [0.765, [0.152, 0.532, 0.737]], [0.767, [0.148, 0.528, 0.735]], [0.769, [0.148, 0.528, 0.735]], [0.771, [0.144, 0.524, 0.732]], [0.773, [0.144, 0.524, 0.732]], [0.775, [0.140, 0.519, 0.730]], [0.777, [0.140, 0.519, 0.730]], [0.779, [0.135, 0.515, 0.728]], [0.781, [0.135, 0.515, 0.728]], [0.783, [0.131, 0.510, 0.726]], [0.785, [0.131, 0.510, 0.726]], [0.787, [0.127, 0.506, 0.724]], [0.789, [0.127, 0.506, 0.724]], [0.791, [0.122, 0.501, 0.721]], [0.793, [0.122, 0.501, 0.721]], [0.795, [0.118, 0.497, 0.719]], [0.796, [0.118, 0.497, 0.719]], [0.798, [0.114, 0.493, 0.717]], [0.800, [0.114, 0.493, 0.717]], [0.802, [0.109, 0.488, 0.715]], [0.804, [0.109, 0.488, 0.715]], [0.806, [0.105, 0.484, 0.712]], [0.808, [0.105, 0.484, 0.712]], [0.810, [0.101, 0.479, 0.710]], [0.812, [0.101, 0.479, 0.710]], [0.814, [0.097, 0.475, 0.708]], [0.816, [0.097, 0.475, 0.708]], [0.818, [0.092, 0.470, 0.706]], [0.820, [0.092, 0.470, 0.706]], [0.822, [0.088, 0.466, 0.704]], [0.824, [0.088, 0.466, 0.704]], [0.826, [0.084, 0.462, 0.701]], [0.828, [0.084, 0.462, 0.701]], [0.830, [0.079, 0.457, 0.699]], [0.832, [0.079, 0.457, 0.699]], [0.834, [0.075, 0.453, 0.697]], [0.836, [0.075, 0.453, 0.697]], [0.838, [0.071, 0.448, 0.695]], [0.840, [0.071, 0.448, 0.695]], [0.841, [0.066, 0.444, 0.693]], [0.843, [0.066, 0.444, 0.693]], [0.845, [0.062, 0.439, 0.690]], [0.847, [0.062, 0.439, 0.690]], [0.849, [0.058, 0.435, 0.688]], [0.851, [0.058, 0.435, 0.688]], [0.853, [0.053, 0.431, 0.686]], [0.855, [0.053, 0.431, 0.686]], [0.857, [0.049, 0.426, 0.684]], [0.859, [0.049, 0.426, 0.684]], [0.861, [0.045, 0.422, 0.681]], [0.863, [0.045, 0.422, 0.681]], [0.865, [0.041, 0.417, 0.679]], [0.867, [0.041, 0.417, 0.679]], [0.869, [0.036, 0.413, 0.677]], [0.871, [0.036, 0.413, 0.677]], [0.873, [0.032, 0.408, 0.675]], [0.875, [0.032, 0.408, 0.675]], [0.877, [0.031, 0.404, 0.670]], [0.879, [0.031, 0.404, 0.670]], [0.881, [0.031, 0.399, 0.665]], [0.883, [0.031, 0.399, 0.665]], [0.885, [0.031, 0.394, 0.659]], [0.886, [0.031, 0.394, 0.659]], [0.888, [0.031, 0.389, 0.654]], [0.890, [0.031, 0.389, 0.654]], [0.892, [0.031, 0.384, 0.649]], [0.894, [0.031, 0.384, 0.649]], [0.896, [0.031, 0.379, 0.643]], [0.898, [0.031, 0.379, 0.643]], [0.900, [0.031, 0.374, 0.638]], [0.902, [0.031, 0.374, 0.638]], [0.904, [0.031, 0.369, 0.633]], [0.906, [0.031, 0.369, 0.633]], [0.908, [0.031, 0.364, 0.628]], [0.910, [0.031, 0.364, 0.628]], [0.912, [0.031, 0.359, 0.622]], [0.914, [0.031, 0.359, 0.622]], [0.916, [0.031, 0.354, 0.617]], [0.918, [0.031, 0.354, 0.617]], [0.920, [0.031, 0.349, 0.612]], [0.922, [0.031, 0.349, 0.612]], [0.924, [0.031, 0.344, 0.606]], [0.926, [0.031, 0.344, 0.606]], [0.928, [0.031, 0.340, 0.601]], [0.930, [0.031, 0.340, 0.601]], [0.932, [0.031, 0.335, 0.596]], [0.933, [0.031, 0.335, 0.596]], [0.935, [0.031, 0.330, 0.591]], [0.937, [0.031, 0.330, 0.591]], [0.939, [0.031, 0.325, 0.585]], [0.941, [0.031, 0.325, 0.585]], [0.943, [0.031, 0.320, 0.580]], [0.945, [0.031, 0.320, 0.580]], [0.947, [0.031, 0.315, 0.575]], [0.949, [0.031, 0.315, 0.575]], [0.951, [0.031, 0.310, 0.569]], [0.953, [0.031, 0.310, 0.569]], [0.955, [0.031, 0.305, 0.564]], [0.957, [0.031, 0.305, 0.564]], [0.959, [0.031, 0.300, 0.559]], [0.961, [0.031, 0.300, 0.559]], [0.963, [0.031, 0.295, 0.553]], [0.965, [0.031, 0.295, 0.553]], [0.967, [0.031, 0.290, 0.548]], [0.969, [0.031, 0.290, 0.548]], [0.971, [0.031, 0.285, 0.543]], [0.973, [0.031, 0.285, 0.543]], [0.975, [0.031, 0.281, 0.538]], [0.977, [0.031, 0.281, 0.538]], [0.978, [0.031, 0.276, 0.532]], [0.980, [0.031, 0.276, 0.532]], [0.982, [0.031, 0.271, 0.527]], [0.984, [0.031, 0.271, 0.527]], [0.986, [0.031, 0.266, 0.522]], [0.988, [0.031, 0.266, 0.522]], [0.990, [0.031, 0.261, 0.516]], [0.992, [0.031, 0.261, 0.516]], [0.994, [0.031, 0.256, 0.511]], [0.996, [0.031, 0.256, 0.511]], [0.998, [0.031, 0.251, 0.506]], [1.000, [0.031, 0.251, 0.506]]]; +var Greens = [[0.000, [0.969, 0.988, 0.961]], [0.002, [0.969, 0.988, 0.961]], [0.004, [0.966, 0.987, 0.958]], [0.006, [0.966, 0.987, 0.958]], [0.008, [0.964, 0.987, 0.956]], [0.010, [0.964, 0.987, 0.956]], [0.012, [0.962, 0.986, 0.953]], [0.014, [0.962, 0.986, 0.953]], [0.016, [0.960, 0.985, 0.950]], [0.018, [0.960, 0.985, 0.950]], [0.020, [0.958, 0.984, 0.948]], [0.022, [0.958, 0.984, 0.948]], [0.023, [0.955, 0.983, 0.945]], [0.025, [0.955, 0.983, 0.945]], [0.027, [0.953, 0.982, 0.943]], [0.029, [0.953, 0.982, 0.943]], [0.031, [0.951, 0.981, 0.940]], [0.033, [0.951, 0.981, 0.940]], [0.035, [0.949, 0.980, 0.938]], [0.037, [0.949, 0.980, 0.938]], [0.039, [0.946, 0.980, 0.935]], [0.041, [0.946, 0.980, 0.935]], [0.043, [0.944, 0.979, 0.932]], [0.045, [0.944, 0.979, 0.932]], [0.047, [0.942, 0.978, 0.930]], [0.049, [0.942, 0.978, 0.930]], [0.051, [0.940, 0.977, 0.927]], [0.053, [0.940, 0.977, 0.927]], [0.055, [0.938, 0.976, 0.925]], [0.057, [0.938, 0.976, 0.925]], [0.059, [0.935, 0.975, 0.922]], [0.061, [0.935, 0.975, 0.922]], [0.063, [0.933, 0.974, 0.919]], [0.065, [0.933, 0.974, 0.919]], [0.067, [0.931, 0.974, 0.917]], [0.068, [0.931, 0.974, 0.917]], [0.070, [0.929, 0.973, 0.914]], [0.072, [0.929, 0.973, 0.914]], [0.074, [0.927, 0.972, 0.912]], [0.076, [0.927, 0.972, 0.912]], [0.078, [0.924, 0.971, 0.909]], [0.080, [0.924, 0.971, 0.909]], [0.082, [0.922, 0.970, 0.907]], [0.084, [0.922, 0.970, 0.907]], [0.086, [0.920, 0.969, 0.904]], [0.088, [0.920, 0.969, 0.904]], [0.090, [0.918, 0.968, 0.901]], [0.092, [0.918, 0.968, 0.901]], [0.094, [0.915, 0.968, 0.899]], [0.096, [0.915, 0.968, 0.899]], [0.098, [0.913, 0.967, 0.896]], [0.100, [0.913, 0.967, 0.896]], [0.102, [0.911, 0.966, 0.894]], [0.104, [0.911, 0.966, 0.894]], [0.106, [0.909, 0.965, 0.891]], [0.108, [0.909, 0.965, 0.891]], [0.110, [0.907, 0.964, 0.888]], [0.112, [0.907, 0.964, 0.888]], [0.114, [0.904, 0.963, 0.886]], [0.115, [0.904, 0.963, 0.886]], [0.117, [0.902, 0.962, 0.883]], [0.119, [0.902, 0.962, 0.883]], [0.121, [0.900, 0.962, 0.881]], [0.123, [0.900, 0.962, 0.881]], [0.125, [0.898, 0.961, 0.878]], [0.127, [0.898, 0.961, 0.878]], [0.129, [0.894, 0.959, 0.874]], [0.131, [0.894, 0.959, 0.874]], [0.133, [0.890, 0.958, 0.870]], [0.135, [0.890, 0.958, 0.870]], [0.137, [0.887, 0.956, 0.866]], [0.139, [0.887, 0.956, 0.866]], [0.141, [0.883, 0.955, 0.862]], [0.143, [0.883, 0.955, 0.862]], [0.145, [0.879, 0.953, 0.858]], [0.147, [0.879, 0.953, 0.858]], [0.149, [0.875, 0.952, 0.854]], [0.151, [0.875, 0.952, 0.854]], [0.153, [0.872, 0.950, 0.850]], [0.155, [0.872, 0.950, 0.850]], [0.157, [0.868, 0.949, 0.846]], [0.159, [0.868, 0.949, 0.846]], [0.160, [0.864, 0.947, 0.843]], [0.162, [0.864, 0.947, 0.843]], [0.164, [0.861, 0.946, 0.839]], [0.166, [0.861, 0.946, 0.839]], [0.168, [0.857, 0.944, 0.835]], [0.170, [0.857, 0.944, 0.835]], [0.172, [0.853, 0.943, 0.831]], [0.174, [0.853, 0.943, 0.831]], [0.176, [0.850, 0.941, 0.827]], [0.178, [0.850, 0.941, 0.827]], [0.180, [0.846, 0.940, 0.823]], [0.182, [0.846, 0.940, 0.823]], [0.184, [0.842, 0.938, 0.819]], [0.186, [0.842, 0.938, 0.819]], [0.188, [0.839, 0.937, 0.815]], [0.190, [0.839, 0.937, 0.815]], [0.192, [0.835, 0.936, 0.811]], [0.194, [0.835, 0.936, 0.811]], [0.196, [0.831, 0.934, 0.807]], [0.198, [0.831, 0.934, 0.807]], [0.200, [0.827, 0.933, 0.803]], [0.202, [0.827, 0.933, 0.803]], [0.204, [0.824, 0.931, 0.799]], [0.205, [0.824, 0.931, 0.799]], [0.207, [0.820, 0.930, 0.795]], [0.209, [0.820, 0.930, 0.795]], [0.211, [0.816, 0.928, 0.791]], [0.213, [0.816, 0.928, 0.791]], [0.215, [0.813, 0.927, 0.787]], [0.217, [0.813, 0.927, 0.787]], [0.219, [0.809, 0.925, 0.783]], [0.221, [0.809, 0.925, 0.783]], [0.223, [0.805, 0.924, 0.780]], [0.225, [0.805, 0.924, 0.780]], [0.227, [0.802, 0.922, 0.776]], [0.229, [0.802, 0.922, 0.776]], [0.231, [0.798, 0.921, 0.772]], [0.233, [0.798, 0.921, 0.772]], [0.235, [0.794, 0.919, 0.768]], [0.237, [0.794, 0.919, 0.768]], [0.239, [0.791, 0.918, 0.764]], [0.241, [0.791, 0.918, 0.764]], [0.243, [0.787, 0.916, 0.760]], [0.245, [0.787, 0.916, 0.760]], [0.247, [0.783, 0.915, 0.756]], [0.249, [0.783, 0.915, 0.756]], [0.250, [0.779, 0.913, 0.752]], [0.252, [0.779, 0.913, 0.752]], [0.254, [0.775, 0.911, 0.747]], [0.256, [0.775, 0.911, 0.747]], [0.258, [0.770, 0.909, 0.743]], [0.260, [0.770, 0.909, 0.743]], [0.262, [0.765, 0.907, 0.738]], [0.264, [0.765, 0.907, 0.738]], [0.266, [0.761, 0.905, 0.734]], [0.268, [0.761, 0.905, 0.734]], [0.270, [0.756, 0.903, 0.729]], [0.272, [0.756, 0.903, 0.729]], [0.274, [0.751, 0.901, 0.724]], [0.276, [0.751, 0.901, 0.724]], [0.278, [0.746, 0.899, 0.720]], [0.280, [0.746, 0.899, 0.720]], [0.282, [0.742, 0.897, 0.715]], [0.284, [0.742, 0.897, 0.715]], [0.286, [0.737, 0.896, 0.711]], [0.288, [0.737, 0.896, 0.711]], [0.290, [0.732, 0.894, 0.706]], [0.292, [0.732, 0.894, 0.706]], [0.294, [0.728, 0.892, 0.702]], [0.295, [0.728, 0.892, 0.702]], [0.297, [0.723, 0.890, 0.697]], [0.299, [0.723, 0.890, 0.697]], [0.301, [0.718, 0.888, 0.693]], [0.303, [0.718, 0.888, 0.693]], [0.305, [0.714, 0.886, 0.688]], [0.307, [0.714, 0.886, 0.688]], [0.309, [0.709, 0.884, 0.684]], [0.311, [0.709, 0.884, 0.684]], [0.313, [0.704, 0.882, 0.679]], [0.315, [0.704, 0.882, 0.679]], [0.317, [0.700, 0.880, 0.674]], [0.319, [0.700, 0.880, 0.674]], [0.321, [0.695, 0.878, 0.670]], [0.323, [0.695, 0.878, 0.670]], [0.325, [0.690, 0.876, 0.665]], [0.327, [0.690, 0.876, 0.665]], [0.329, [0.686, 0.874, 0.661]], [0.331, [0.686, 0.874, 0.661]], [0.333, [0.681, 0.872, 0.656]], [0.335, [0.681, 0.872, 0.656]], [0.337, [0.676, 0.870, 0.652]], [0.339, [0.676, 0.870, 0.652]], [0.341, [0.672, 0.868, 0.647]], [0.342, [0.672, 0.868, 0.647]], [0.344, [0.667, 0.866, 0.643]], [0.346, [0.667, 0.866, 0.643]], [0.348, [0.662, 0.864, 0.638]], [0.350, [0.662, 0.864, 0.638]], [0.352, [0.658, 0.862, 0.633]], [0.354, [0.658, 0.862, 0.633]], [0.356, [0.653, 0.860, 0.629]], [0.358, [0.653, 0.860, 0.629]], [0.360, [0.648, 0.858, 0.624]], [0.362, [0.648, 0.858, 0.624]], [0.364, [0.644, 0.856, 0.620]], [0.366, [0.644, 0.856, 0.620]], [0.368, [0.639, 0.854, 0.615]], [0.370, [0.639, 0.854, 0.615]], [0.372, [0.634, 0.852, 0.611]], [0.374, [0.634, 0.852, 0.611]], [0.376, [0.629, 0.850, 0.606]], [0.378, [0.629, 0.850, 0.606]], [0.380, [0.624, 0.847, 0.602]], [0.382, [0.624, 0.847, 0.602]], [0.384, [0.618, 0.845, 0.597]], [0.386, [0.618, 0.845, 0.597]], [0.387, [0.613, 0.842, 0.592]], [0.389, [0.613, 0.842, 0.592]], [0.391, [0.607, 0.840, 0.588]], [0.393, [0.607, 0.840, 0.588]], [0.395, [0.602, 0.837, 0.583]], [0.397, [0.602, 0.837, 0.583]], [0.399, [0.596, 0.835, 0.579]], [0.401, [0.596, 0.835, 0.579]], [0.403, [0.591, 0.832, 0.574]], [0.405, [0.591, 0.832, 0.574]], [0.407, [0.585, 0.829, 0.570]], [0.409, [0.585, 0.829, 0.570]], [0.411, [0.579, 0.827, 0.565]], [0.413, [0.579, 0.827, 0.565]], [0.415, [0.574, 0.824, 0.561]], [0.417, [0.574, 0.824, 0.561]], [0.419, [0.568, 0.822, 0.556]], [0.421, [0.568, 0.822, 0.556]], [0.423, [0.563, 0.819, 0.552]], [0.425, [0.563, 0.819, 0.552]], [0.427, [0.557, 0.816, 0.547]], [0.429, [0.557, 0.816, 0.547]], [0.431, [0.552, 0.814, 0.542]], [0.432, [0.552, 0.814, 0.542]], [0.434, [0.546, 0.811, 0.538]], [0.436, [0.546, 0.811, 0.538]], [0.438, [0.541, 0.809, 0.533]], [0.440, [0.541, 0.809, 0.533]], [0.442, [0.535, 0.806, 0.529]], [0.444, [0.535, 0.806, 0.529]], [0.446, [0.530, 0.804, 0.524]], [0.448, [0.530, 0.804, 0.524]], [0.450, [0.524, 0.801, 0.520]], [0.452, [0.524, 0.801, 0.520]], [0.454, [0.519, 0.798, 0.515]], [0.456, [0.519, 0.798, 0.515]], [0.458, [0.513, 0.796, 0.511]], [0.460, [0.513, 0.796, 0.511]], [0.462, [0.507, 0.793, 0.506]], [0.464, [0.507, 0.793, 0.506]], [0.466, [0.502, 0.791, 0.501]], [0.468, [0.502, 0.791, 0.501]], [0.470, [0.496, 0.788, 0.497]], [0.472, [0.496, 0.788, 0.497]], [0.474, [0.491, 0.785, 0.492]], [0.476, [0.491, 0.785, 0.492]], [0.477, [0.485, 0.783, 0.488]], [0.479, [0.485, 0.783, 0.488]], [0.481, [0.480, 0.780, 0.483]], [0.483, [0.480, 0.780, 0.483]], [0.485, [0.474, 0.778, 0.479]], [0.487, [0.474, 0.778, 0.479]], [0.489, [0.469, 0.775, 0.474]], [0.491, [0.469, 0.775, 0.474]], [0.493, [0.463, 0.773, 0.470]], [0.495, [0.463, 0.773, 0.470]], [0.497, [0.458, 0.770, 0.465]], [0.499, [0.458, 0.770, 0.465]], [0.501, [0.452, 0.767, 0.461]], [0.503, [0.452, 0.767, 0.461]], [0.505, [0.445, 0.764, 0.458]], [0.507, [0.445, 0.764, 0.458]], [0.509, [0.439, 0.761, 0.455]], [0.511, [0.439, 0.761, 0.455]], [0.513, [0.433, 0.758, 0.452]], [0.515, [0.433, 0.758, 0.452]], [0.517, [0.427, 0.755, 0.449]], [0.519, [0.427, 0.755, 0.449]], [0.521, [0.420, 0.752, 0.446]], [0.523, [0.420, 0.752, 0.446]], [0.524, [0.414, 0.749, 0.443]], [0.526, [0.414, 0.749, 0.443]], [0.528, [0.408, 0.746, 0.440]], [0.530, [0.408, 0.746, 0.440]], [0.532, [0.402, 0.742, 0.437]], [0.534, [0.402, 0.742, 0.437]], [0.536, [0.395, 0.739, 0.434]], [0.538, [0.395, 0.739, 0.434]], [0.540, [0.389, 0.736, 0.430]], [0.542, [0.389, 0.736, 0.430]], [0.544, [0.383, 0.733, 0.427]], [0.546, [0.383, 0.733, 0.427]], [0.548, [0.376, 0.730, 0.424]], [0.550, [0.376, 0.730, 0.424]], [0.552, [0.370, 0.727, 0.421]], [0.554, [0.370, 0.727, 0.421]], [0.556, [0.364, 0.724, 0.418]], [0.558, [0.364, 0.724, 0.418]], [0.560, [0.358, 0.721, 0.415]], [0.562, [0.358, 0.721, 0.415]], [0.564, [0.351, 0.718, 0.412]], [0.566, [0.351, 0.718, 0.412]], [0.568, [0.345, 0.715, 0.409]], [0.569, [0.345, 0.715, 0.409]], [0.571, [0.339, 0.712, 0.406]], [0.573, [0.339, 0.712, 0.406]], [0.575, [0.333, 0.709, 0.403]], [0.577, [0.333, 0.709, 0.403]], [0.579, [0.326, 0.706, 0.400]], [0.581, [0.326, 0.706, 0.400]], [0.583, [0.320, 0.702, 0.397]], [0.585, [0.320, 0.702, 0.397]], [0.587, [0.314, 0.699, 0.394]], [0.589, [0.314, 0.699, 0.394]], [0.591, [0.307, 0.696, 0.390]], [0.593, [0.307, 0.696, 0.390]], [0.595, [0.301, 0.693, 0.387]], [0.597, [0.301, 0.693, 0.387]], [0.599, [0.295, 0.690, 0.384]], [0.601, [0.295, 0.690, 0.384]], [0.603, [0.289, 0.687, 0.381]], [0.605, [0.289, 0.687, 0.381]], [0.607, [0.282, 0.684, 0.378]], [0.609, [0.282, 0.684, 0.378]], [0.611, [0.276, 0.681, 0.375]], [0.613, [0.276, 0.681, 0.375]], [0.614, [0.270, 0.678, 0.372]], [0.616, [0.270, 0.678, 0.372]], [0.618, [0.264, 0.675, 0.369]], [0.620, [0.264, 0.675, 0.369]], [0.622, [0.257, 0.672, 0.366]], [0.624, [0.257, 0.672, 0.366]], [0.626, [0.253, 0.668, 0.363]], [0.628, [0.253, 0.668, 0.363]], [0.630, [0.249, 0.664, 0.360]], [0.632, [0.249, 0.664, 0.360]], [0.634, [0.245, 0.660, 0.357]], [0.636, [0.245, 0.660, 0.357]], [0.638, [0.242, 0.656, 0.354]], [0.640, [0.242, 0.656, 0.354]], [0.642, [0.238, 0.652, 0.351]], [0.644, [0.238, 0.652, 0.351]], [0.646, [0.234, 0.648, 0.348]], [0.648, [0.234, 0.648, 0.348]], [0.650, [0.230, 0.645, 0.345]], [0.652, [0.230, 0.645, 0.345]], [0.654, [0.227, 0.641, 0.342]], [0.656, [0.227, 0.641, 0.342]], [0.658, [0.223, 0.637, 0.339]], [0.659, [0.223, 0.637, 0.339]], [0.661, [0.219, 0.633, 0.336]], [0.663, [0.219, 0.633, 0.336]], [0.665, [0.216, 0.629, 0.333]], [0.667, [0.216, 0.629, 0.333]], [0.669, [0.212, 0.625, 0.330]], [0.671, [0.212, 0.625, 0.330]], [0.673, [0.208, 0.621, 0.327]], [0.675, [0.208, 0.621, 0.327]], [0.677, [0.205, 0.617, 0.324]], [0.679, [0.205, 0.617, 0.324]], [0.681, [0.201, 0.613, 0.322]], [0.683, [0.201, 0.613, 0.322]], [0.685, [0.197, 0.609, 0.319]], [0.687, [0.197, 0.609, 0.319]], [0.689, [0.194, 0.605, 0.316]], [0.691, [0.194, 0.605, 0.316]], [0.693, [0.190, 0.601, 0.313]], [0.695, [0.190, 0.601, 0.313]], [0.697, [0.186, 0.597, 0.310]], [0.699, [0.186, 0.597, 0.310]], [0.701, [0.182, 0.593, 0.307]], [0.703, [0.182, 0.593, 0.307]], [0.705, [0.179, 0.589, 0.304]], [0.706, [0.179, 0.589, 0.304]], [0.708, [0.175, 0.585, 0.301]], [0.710, [0.175, 0.585, 0.301]], [0.712, [0.171, 0.582, 0.298]], [0.714, [0.171, 0.582, 0.298]], [0.716, [0.168, 0.578, 0.295]], [0.718, [0.168, 0.578, 0.295]], [0.720, [0.164, 0.574, 0.292]], [0.722, [0.164, 0.574, 0.292]], [0.724, [0.160, 0.570, 0.289]], [0.726, [0.160, 0.570, 0.289]], [0.728, [0.157, 0.566, 0.286]], [0.730, [0.157, 0.566, 0.286]], [0.732, [0.153, 0.562, 0.283]], [0.734, [0.153, 0.562, 0.283]], [0.736, [0.149, 0.558, 0.280]], [0.738, [0.149, 0.558, 0.280]], [0.740, [0.146, 0.554, 0.277]], [0.742, [0.146, 0.554, 0.277]], [0.744, [0.142, 0.550, 0.274]], [0.746, [0.142, 0.550, 0.274]], [0.748, [0.138, 0.546, 0.271]], [0.750, [0.138, 0.546, 0.271]], [0.751, [0.134, 0.542, 0.268]], [0.753, [0.134, 0.542, 0.268]], [0.755, [0.130, 0.539, 0.265]], [0.757, [0.130, 0.539, 0.265]], [0.759, [0.125, 0.535, 0.262]], [0.761, [0.125, 0.535, 0.262]], [0.763, [0.121, 0.531, 0.259]], [0.765, [0.121, 0.531, 0.259]], [0.767, [0.117, 0.528, 0.256]], [0.769, [0.117, 0.528, 0.256]], [0.771, [0.112, 0.524, 0.253]], [0.773, [0.112, 0.524, 0.253]], [0.775, [0.108, 0.520, 0.250]], [0.777, [0.108, 0.520, 0.250]], [0.779, [0.104, 0.516, 0.247]], [0.781, [0.104, 0.516, 0.247]], [0.783, [0.100, 0.513, 0.244]], [0.785, [0.100, 0.513, 0.244]], [0.787, [0.095, 0.509, 0.241]], [0.789, [0.095, 0.509, 0.241]], [0.791, [0.091, 0.505, 0.238]], [0.793, [0.091, 0.505, 0.238]], [0.795, [0.087, 0.502, 0.234]], [0.796, [0.087, 0.502, 0.234]], [0.798, [0.082, 0.498, 0.231]], [0.800, [0.082, 0.498, 0.231]], [0.802, [0.078, 0.494, 0.228]], [0.804, [0.078, 0.494, 0.228]], [0.806, [0.074, 0.491, 0.225]], [0.808, [0.074, 0.491, 0.225]], [0.810, [0.069, 0.487, 0.222]], [0.812, [0.069, 0.487, 0.222]], [0.814, [0.065, 0.483, 0.219]], [0.816, [0.065, 0.483, 0.219]], [0.818, [0.061, 0.480, 0.216]], [0.820, [0.061, 0.480, 0.216]], [0.822, [0.057, 0.476, 0.213]], [0.824, [0.057, 0.476, 0.213]], [0.826, [0.052, 0.472, 0.210]], [0.828, [0.052, 0.472, 0.210]], [0.830, [0.048, 0.469, 0.207]], [0.832, [0.048, 0.469, 0.207]], [0.834, [0.044, 0.465, 0.204]], [0.836, [0.044, 0.465, 0.204]], [0.838, [0.039, 0.461, 0.201]], [0.840, [0.039, 0.461, 0.201]], [0.841, [0.035, 0.457, 0.198]], [0.843, [0.035, 0.457, 0.198]], [0.845, [0.031, 0.454, 0.194]], [0.847, [0.031, 0.454, 0.194]], [0.849, [0.026, 0.450, 0.191]], [0.851, [0.026, 0.450, 0.191]], [0.853, [0.022, 0.446, 0.188]], [0.855, [0.022, 0.446, 0.188]], [0.857, [0.018, 0.443, 0.185]], [0.859, [0.018, 0.443, 0.185]], [0.861, [0.013, 0.439, 0.182]], [0.863, [0.013, 0.439, 0.182]], [0.865, [0.009, 0.435, 0.179]], [0.867, [0.009, 0.435, 0.179]], [0.869, [0.005, 0.432, 0.176]], [0.871, [0.005, 0.432, 0.176]], [0.873, [0.001, 0.428, 0.173]], [0.875, [0.001, 0.428, 0.173]], [0.877, [0.000, 0.423, 0.171]], [0.879, [0.000, 0.423, 0.171]], [0.881, [0.000, 0.418, 0.169]], [0.883, [0.000, 0.418, 0.169]], [0.885, [0.000, 0.413, 0.167]], [0.886, [0.000, 0.413, 0.167]], [0.888, [0.000, 0.408, 0.164]], [0.890, [0.000, 0.408, 0.164]], [0.892, [0.000, 0.403, 0.162]], [0.894, [0.000, 0.403, 0.162]], [0.896, [0.000, 0.398, 0.160]], [0.898, [0.000, 0.398, 0.160]], [0.900, [0.000, 0.393, 0.158]], [0.902, [0.000, 0.393, 0.158]], [0.904, [0.000, 0.388, 0.156]], [0.906, [0.000, 0.388, 0.156]], [0.908, [0.000, 0.383, 0.154]], [0.910, [0.000, 0.383, 0.154]], [0.912, [0.000, 0.378, 0.152]], [0.914, [0.000, 0.378, 0.152]], [0.916, [0.000, 0.373, 0.150]], [0.918, [0.000, 0.373, 0.150]], [0.920, [0.000, 0.368, 0.148]], [0.922, [0.000, 0.368, 0.148]], [0.924, [0.000, 0.363, 0.146]], [0.926, [0.000, 0.363, 0.146]], [0.928, [0.000, 0.357, 0.144]], [0.930, [0.000, 0.357, 0.144]], [0.932, [0.000, 0.352, 0.141]], [0.933, [0.000, 0.352, 0.141]], [0.935, [0.000, 0.347, 0.139]], [0.937, [0.000, 0.347, 0.139]], [0.939, [0.000, 0.342, 0.137]], [0.941, [0.000, 0.342, 0.137]], [0.943, [0.000, 0.337, 0.135]], [0.945, [0.000, 0.337, 0.135]], [0.947, [0.000, 0.332, 0.133]], [0.949, [0.000, 0.332, 0.133]], [0.951, [0.000, 0.327, 0.131]], [0.953, [0.000, 0.327, 0.131]], [0.955, [0.000, 0.322, 0.129]], [0.957, [0.000, 0.322, 0.129]], [0.959, [0.000, 0.317, 0.127]], [0.961, [0.000, 0.317, 0.127]], [0.963, [0.000, 0.312, 0.125]], [0.965, [0.000, 0.312, 0.125]], [0.967, [0.000, 0.307, 0.123]], [0.969, [0.000, 0.307, 0.123]], [0.971, [0.000, 0.302, 0.121]], [0.973, [0.000, 0.302, 0.121]], [0.975, [0.000, 0.297, 0.118]], [0.977, [0.000, 0.297, 0.118]], [0.978, [0.000, 0.292, 0.116]], [0.980, [0.000, 0.292, 0.116]], [0.982, [0.000, 0.287, 0.114]], [0.984, [0.000, 0.287, 0.114]], [0.986, [0.000, 0.282, 0.112]], [0.988, [0.000, 0.282, 0.112]], [0.990, [0.000, 0.277, 0.110]], [0.992, [0.000, 0.277, 0.110]], [0.994, [0.000, 0.272, 0.108]], [0.996, [0.000, 0.272, 0.108]], [0.998, [0.000, 0.267, 0.106]], [1.000, [0.000, 0.267, 0.106]]]; +var Greys = [[0.000, [1.000, 1.000, 1.000]], [0.002, [1.000, 1.000, 1.000]], [0.004, [0.998, 0.998, 0.998]], [0.006, [0.998, 0.998, 0.998]], [0.008, [0.996, 0.996, 0.996]], [0.010, [0.996, 0.996, 0.996]], [0.012, [0.994, 0.994, 0.994]], [0.014, [0.994, 0.994, 0.994]], [0.016, [0.993, 0.993, 0.993]], [0.018, [0.993, 0.993, 0.993]], [0.020, [0.991, 0.991, 0.991]], [0.022, [0.991, 0.991, 0.991]], [0.023, [0.989, 0.989, 0.989]], [0.025, [0.989, 0.989, 0.989]], [0.027, [0.987, 0.987, 0.987]], [0.029, [0.987, 0.987, 0.987]], [0.031, [0.985, 0.985, 0.985]], [0.033, [0.985, 0.985, 0.985]], [0.035, [0.983, 0.983, 0.983]], [0.037, [0.983, 0.983, 0.983]], [0.039, [0.982, 0.982, 0.982]], [0.041, [0.982, 0.982, 0.982]], [0.043, [0.980, 0.980, 0.980]], [0.045, [0.980, 0.980, 0.980]], [0.047, [0.978, 0.978, 0.978]], [0.049, [0.978, 0.978, 0.978]], [0.051, [0.976, 0.976, 0.976]], [0.053, [0.976, 0.976, 0.976]], [0.055, [0.974, 0.974, 0.974]], [0.057, [0.974, 0.974, 0.974]], [0.059, [0.972, 0.972, 0.972]], [0.061, [0.972, 0.972, 0.972]], [0.063, [0.970, 0.970, 0.970]], [0.065, [0.970, 0.970, 0.970]], [0.067, [0.969, 0.969, 0.969]], [0.068, [0.969, 0.969, 0.969]], [0.070, [0.967, 0.967, 0.967]], [0.072, [0.967, 0.967, 0.967]], [0.074, [0.965, 0.965, 0.965]], [0.076, [0.965, 0.965, 0.965]], [0.078, [0.963, 0.963, 0.963]], [0.080, [0.963, 0.963, 0.963]], [0.082, [0.961, 0.961, 0.961]], [0.084, [0.961, 0.961, 0.961]], [0.086, [0.959, 0.959, 0.959]], [0.088, [0.959, 0.959, 0.959]], [0.090, [0.958, 0.958, 0.958]], [0.092, [0.958, 0.958, 0.958]], [0.094, [0.956, 0.956, 0.956]], [0.096, [0.956, 0.956, 0.956]], [0.098, [0.954, 0.954, 0.954]], [0.100, [0.954, 0.954, 0.954]], [0.102, [0.952, 0.952, 0.952]], [0.104, [0.952, 0.952, 0.952]], [0.106, [0.950, 0.950, 0.950]], [0.108, [0.950, 0.950, 0.950]], [0.110, [0.948, 0.948, 0.948]], [0.112, [0.948, 0.948, 0.948]], [0.114, [0.946, 0.946, 0.946]], [0.115, [0.946, 0.946, 0.946]], [0.117, [0.945, 0.945, 0.945]], [0.119, [0.945, 0.945, 0.945]], [0.121, [0.943, 0.943, 0.943]], [0.123, [0.943, 0.943, 0.943]], [0.125, [0.941, 0.941, 0.941]], [0.127, [0.941, 0.941, 0.941]], [0.129, [0.938, 0.938, 0.938]], [0.131, [0.938, 0.938, 0.938]], [0.133, [0.935, 0.935, 0.935]], [0.135, [0.935, 0.935, 0.935]], [0.137, [0.932, 0.932, 0.932]], [0.139, [0.932, 0.932, 0.932]], [0.141, [0.930, 0.930, 0.930]], [0.143, [0.930, 0.930, 0.930]], [0.145, [0.927, 0.927, 0.927]], [0.147, [0.927, 0.927, 0.927]], [0.149, [0.924, 0.924, 0.924]], [0.151, [0.924, 0.924, 0.924]], [0.153, [0.921, 0.921, 0.921]], [0.155, [0.921, 0.921, 0.921]], [0.157, [0.918, 0.918, 0.918]], [0.159, [0.918, 0.918, 0.918]], [0.160, [0.915, 0.915, 0.915]], [0.162, [0.915, 0.915, 0.915]], [0.164, [0.913, 0.913, 0.913]], [0.166, [0.913, 0.913, 0.913]], [0.168, [0.910, 0.910, 0.910]], [0.170, [0.910, 0.910, 0.910]], [0.172, [0.907, 0.907, 0.907]], [0.174, [0.907, 0.907, 0.907]], [0.176, [0.904, 0.904, 0.904]], [0.178, [0.904, 0.904, 0.904]], [0.180, [0.901, 0.901, 0.901]], [0.182, [0.901, 0.901, 0.901]], [0.184, [0.898, 0.898, 0.898]], [0.186, [0.898, 0.898, 0.898]], [0.188, [0.896, 0.896, 0.896]], [0.190, [0.896, 0.896, 0.896]], [0.192, [0.893, 0.893, 0.893]], [0.194, [0.893, 0.893, 0.893]], [0.196, [0.890, 0.890, 0.890]], [0.198, [0.890, 0.890, 0.890]], [0.200, [0.887, 0.887, 0.887]], [0.202, [0.887, 0.887, 0.887]], [0.204, [0.884, 0.884, 0.884]], [0.205, [0.884, 0.884, 0.884]], [0.207, [0.881, 0.881, 0.881]], [0.209, [0.881, 0.881, 0.881]], [0.211, [0.879, 0.879, 0.879]], [0.213, [0.879, 0.879, 0.879]], [0.215, [0.876, 0.876, 0.876]], [0.217, [0.876, 0.876, 0.876]], [0.219, [0.873, 0.873, 0.873]], [0.221, [0.873, 0.873, 0.873]], [0.223, [0.870, 0.870, 0.870]], [0.225, [0.870, 0.870, 0.870]], [0.227, [0.867, 0.867, 0.867]], [0.229, [0.867, 0.867, 0.867]], [0.231, [0.864, 0.864, 0.864]], [0.233, [0.864, 0.864, 0.864]], [0.235, [0.862, 0.862, 0.862]], [0.237, [0.862, 0.862, 0.862]], [0.239, [0.859, 0.859, 0.859]], [0.241, [0.859, 0.859, 0.859]], [0.243, [0.856, 0.856, 0.856]], [0.245, [0.856, 0.856, 0.856]], [0.247, [0.853, 0.853, 0.853]], [0.249, [0.853, 0.853, 0.853]], [0.250, [0.850, 0.850, 0.850]], [0.252, [0.850, 0.850, 0.850]], [0.254, [0.847, 0.847, 0.847]], [0.256, [0.847, 0.847, 0.847]], [0.258, [0.843, 0.843, 0.843]], [0.260, [0.843, 0.843, 0.843]], [0.262, [0.840, 0.840, 0.840]], [0.264, [0.840, 0.840, 0.840]], [0.266, [0.836, 0.836, 0.836]], [0.268, [0.836, 0.836, 0.836]], [0.270, [0.833, 0.833, 0.833]], [0.272, [0.833, 0.833, 0.833]], [0.274, [0.829, 0.829, 0.829]], [0.276, [0.829, 0.829, 0.829]], [0.278, [0.826, 0.826, 0.826]], [0.280, [0.826, 0.826, 0.826]], [0.282, [0.823, 0.823, 0.823]], [0.284, [0.823, 0.823, 0.823]], [0.286, [0.819, 0.819, 0.819]], [0.288, [0.819, 0.819, 0.819]], [0.290, [0.816, 0.816, 0.816]], [0.292, [0.816, 0.816, 0.816]], [0.294, [0.812, 0.812, 0.812]], [0.295, [0.812, 0.812, 0.812]], [0.297, [0.809, 0.809, 0.809]], [0.299, [0.809, 0.809, 0.809]], [0.301, [0.805, 0.805, 0.805]], [0.303, [0.805, 0.805, 0.805]], [0.305, [0.802, 0.802, 0.802]], [0.307, [0.802, 0.802, 0.802]], [0.309, [0.798, 0.798, 0.798]], [0.311, [0.798, 0.798, 0.798]], [0.313, [0.795, 0.795, 0.795]], [0.315, [0.795, 0.795, 0.795]], [0.317, [0.792, 0.792, 0.792]], [0.319, [0.792, 0.792, 0.792]], [0.321, [0.788, 0.788, 0.788]], [0.323, [0.788, 0.788, 0.788]], [0.325, [0.785, 0.785, 0.785]], [0.327, [0.785, 0.785, 0.785]], [0.329, [0.781, 0.781, 0.781]], [0.331, [0.781, 0.781, 0.781]], [0.333, [0.778, 0.778, 0.778]], [0.335, [0.778, 0.778, 0.778]], [0.337, [0.774, 0.774, 0.774]], [0.339, [0.774, 0.774, 0.774]], [0.341, [0.771, 0.771, 0.771]], [0.342, [0.771, 0.771, 0.771]], [0.344, [0.767, 0.767, 0.767]], [0.346, [0.767, 0.767, 0.767]], [0.348, [0.764, 0.764, 0.764]], [0.350, [0.764, 0.764, 0.764]], [0.352, [0.761, 0.761, 0.761]], [0.354, [0.761, 0.761, 0.761]], [0.356, [0.757, 0.757, 0.757]], [0.358, [0.757, 0.757, 0.757]], [0.360, [0.754, 0.754, 0.754]], [0.362, [0.754, 0.754, 0.754]], [0.364, [0.750, 0.750, 0.750]], [0.366, [0.750, 0.750, 0.750]], [0.368, [0.747, 0.747, 0.747]], [0.370, [0.747, 0.747, 0.747]], [0.372, [0.743, 0.743, 0.743]], [0.374, [0.743, 0.743, 0.743]], [0.376, [0.739, 0.739, 0.739]], [0.378, [0.739, 0.739, 0.739]], [0.380, [0.735, 0.735, 0.735]], [0.382, [0.735, 0.735, 0.735]], [0.384, [0.730, 0.730, 0.730]], [0.386, [0.730, 0.730, 0.730]], [0.387, [0.725, 0.725, 0.725]], [0.389, [0.725, 0.725, 0.725]], [0.391, [0.720, 0.720, 0.720]], [0.393, [0.720, 0.720, 0.720]], [0.395, [0.715, 0.715, 0.715]], [0.397, [0.715, 0.715, 0.715]], [0.399, [0.711, 0.711, 0.711]], [0.401, [0.711, 0.711, 0.711]], [0.403, [0.706, 0.706, 0.706]], [0.405, [0.706, 0.706, 0.706]], [0.407, [0.701, 0.701, 0.701]], [0.409, [0.701, 0.701, 0.701]], [0.411, [0.696, 0.696, 0.696]], [0.413, [0.696, 0.696, 0.696]], [0.415, [0.691, 0.691, 0.691]], [0.417, [0.691, 0.691, 0.691]], [0.419, [0.687, 0.687, 0.687]], [0.421, [0.687, 0.687, 0.687]], [0.423, [0.682, 0.682, 0.682]], [0.425, [0.682, 0.682, 0.682]], [0.427, [0.677, 0.677, 0.677]], [0.429, [0.677, 0.677, 0.677]], [0.431, [0.672, 0.672, 0.672]], [0.432, [0.672, 0.672, 0.672]], [0.434, [0.667, 0.667, 0.667]], [0.436, [0.667, 0.667, 0.667]], [0.438, [0.663, 0.663, 0.663]], [0.440, [0.663, 0.663, 0.663]], [0.442, [0.658, 0.658, 0.658]], [0.444, [0.658, 0.658, 0.658]], [0.446, [0.653, 0.653, 0.653]], [0.448, [0.653, 0.653, 0.653]], [0.450, [0.648, 0.648, 0.648]], [0.452, [0.648, 0.648, 0.648]], [0.454, [0.643, 0.643, 0.643]], [0.456, [0.643, 0.643, 0.643]], [0.458, [0.639, 0.639, 0.639]], [0.460, [0.639, 0.639, 0.639]], [0.462, [0.634, 0.634, 0.634]], [0.464, [0.634, 0.634, 0.634]], [0.466, [0.629, 0.629, 0.629]], [0.468, [0.629, 0.629, 0.629]], [0.470, [0.624, 0.624, 0.624]], [0.472, [0.624, 0.624, 0.624]], [0.474, [0.619, 0.619, 0.619]], [0.476, [0.619, 0.619, 0.619]], [0.477, [0.615, 0.615, 0.615]], [0.479, [0.615, 0.615, 0.615]], [0.481, [0.610, 0.610, 0.610]], [0.483, [0.610, 0.610, 0.610]], [0.485, [0.605, 0.605, 0.605]], [0.487, [0.605, 0.605, 0.605]], [0.489, [0.600, 0.600, 0.600]], [0.491, [0.600, 0.600, 0.600]], [0.493, [0.595, 0.595, 0.595]], [0.495, [0.595, 0.595, 0.595]], [0.497, [0.591, 0.591, 0.591]], [0.499, [0.591, 0.591, 0.591]], [0.501, [0.586, 0.586, 0.586]], [0.503, [0.586, 0.586, 0.586]], [0.505, [0.582, 0.582, 0.582]], [0.507, [0.582, 0.582, 0.582]], [0.509, [0.577, 0.577, 0.577]], [0.511, [0.577, 0.577, 0.577]], [0.513, [0.573, 0.573, 0.573]], [0.515, [0.573, 0.573, 0.573]], [0.517, [0.569, 0.569, 0.569]], [0.519, [0.569, 0.569, 0.569]], [0.521, [0.565, 0.565, 0.565]], [0.523, [0.565, 0.565, 0.565]], [0.524, [0.560, 0.560, 0.560]], [0.526, [0.560, 0.560, 0.560]], [0.528, [0.556, 0.556, 0.556]], [0.530, [0.556, 0.556, 0.556]], [0.532, [0.552, 0.552, 0.552]], [0.534, [0.552, 0.552, 0.552]], [0.536, [0.547, 0.547, 0.547]], [0.538, [0.547, 0.547, 0.547]], [0.540, [0.543, 0.543, 0.543]], [0.542, [0.543, 0.543, 0.543]], [0.544, [0.539, 0.539, 0.539]], [0.546, [0.539, 0.539, 0.539]], [0.548, [0.534, 0.534, 0.534]], [0.550, [0.534, 0.534, 0.534]], [0.552, [0.530, 0.530, 0.530]], [0.554, [0.530, 0.530, 0.530]], [0.556, [0.526, 0.526, 0.526]], [0.558, [0.526, 0.526, 0.526]], [0.560, [0.521, 0.521, 0.521]], [0.562, [0.521, 0.521, 0.521]], [0.564, [0.517, 0.517, 0.517]], [0.566, [0.517, 0.517, 0.517]], [0.568, [0.513, 0.513, 0.513]], [0.569, [0.513, 0.513, 0.513]], [0.571, [0.509, 0.509, 0.509]], [0.573, [0.509, 0.509, 0.509]], [0.575, [0.504, 0.504, 0.504]], [0.577, [0.504, 0.504, 0.504]], [0.579, [0.500, 0.500, 0.500]], [0.581, [0.500, 0.500, 0.500]], [0.583, [0.496, 0.496, 0.496]], [0.585, [0.496, 0.496, 0.496]], [0.587, [0.491, 0.491, 0.491]], [0.589, [0.491, 0.491, 0.491]], [0.591, [0.487, 0.487, 0.487]], [0.593, [0.487, 0.487, 0.487]], [0.595, [0.483, 0.483, 0.483]], [0.597, [0.483, 0.483, 0.483]], [0.599, [0.478, 0.478, 0.478]], [0.601, [0.478, 0.478, 0.478]], [0.603, [0.474, 0.474, 0.474]], [0.605, [0.474, 0.474, 0.474]], [0.607, [0.470, 0.470, 0.470]], [0.609, [0.470, 0.470, 0.470]], [0.611, [0.466, 0.466, 0.466]], [0.613, [0.466, 0.466, 0.466]], [0.614, [0.461, 0.461, 0.461]], [0.616, [0.461, 0.461, 0.461]], [0.618, [0.457, 0.457, 0.457]], [0.620, [0.457, 0.457, 0.457]], [0.622, [0.453, 0.453, 0.453]], [0.624, [0.453, 0.453, 0.453]], [0.626, [0.448, 0.448, 0.448]], [0.628, [0.448, 0.448, 0.448]], [0.630, [0.444, 0.444, 0.444]], [0.632, [0.444, 0.444, 0.444]], [0.634, [0.440, 0.440, 0.440]], [0.636, [0.440, 0.440, 0.440]], [0.638, [0.436, 0.436, 0.436]], [0.640, [0.436, 0.436, 0.436]], [0.642, [0.432, 0.432, 0.432]], [0.644, [0.432, 0.432, 0.432]], [0.646, [0.428, 0.428, 0.428]], [0.648, [0.428, 0.428, 0.428]], [0.650, [0.424, 0.424, 0.424]], [0.652, [0.424, 0.424, 0.424]], [0.654, [0.420, 0.420, 0.420]], [0.656, [0.420, 0.420, 0.420]], [0.658, [0.416, 0.416, 0.416]], [0.659, [0.416, 0.416, 0.416]], [0.661, [0.412, 0.412, 0.412]], [0.663, [0.412, 0.412, 0.412]], [0.665, [0.408, 0.408, 0.408]], [0.667, [0.408, 0.408, 0.408]], [0.669, [0.404, 0.404, 0.404]], [0.671, [0.404, 0.404, 0.404]], [0.673, [0.400, 0.400, 0.400]], [0.675, [0.400, 0.400, 0.400]], [0.677, [0.396, 0.396, 0.396]], [0.679, [0.396, 0.396, 0.396]], [0.681, [0.392, 0.392, 0.392]], [0.683, [0.392, 0.392, 0.392]], [0.685, [0.388, 0.388, 0.388]], [0.687, [0.388, 0.388, 0.388]], [0.689, [0.383, 0.383, 0.383]], [0.691, [0.383, 0.383, 0.383]], [0.693, [0.379, 0.379, 0.379]], [0.695, [0.379, 0.379, 0.379]], [0.697, [0.375, 0.375, 0.375]], [0.699, [0.375, 0.375, 0.375]], [0.701, [0.371, 0.371, 0.371]], [0.703, [0.371, 0.371, 0.371]], [0.705, [0.367, 0.367, 0.367]], [0.706, [0.367, 0.367, 0.367]], [0.708, [0.363, 0.363, 0.363]], [0.710, [0.363, 0.363, 0.363]], [0.712, [0.359, 0.359, 0.359]], [0.714, [0.359, 0.359, 0.359]], [0.716, [0.355, 0.355, 0.355]], [0.718, [0.355, 0.355, 0.355]], [0.720, [0.351, 0.351, 0.351]], [0.722, [0.351, 0.351, 0.351]], [0.724, [0.347, 0.347, 0.347]], [0.726, [0.347, 0.347, 0.347]], [0.728, [0.343, 0.343, 0.343]], [0.730, [0.343, 0.343, 0.343]], [0.732, [0.339, 0.339, 0.339]], [0.734, [0.339, 0.339, 0.339]], [0.736, [0.335, 0.335, 0.335]], [0.738, [0.335, 0.335, 0.335]], [0.740, [0.331, 0.331, 0.331]], [0.742, [0.331, 0.331, 0.331]], [0.744, [0.327, 0.327, 0.327]], [0.746, [0.327, 0.327, 0.327]], [0.748, [0.323, 0.323, 0.323]], [0.750, [0.323, 0.323, 0.323]], [0.751, [0.317, 0.317, 0.317]], [0.753, [0.317, 0.317, 0.317]], [0.755, [0.312, 0.312, 0.312]], [0.757, [0.312, 0.312, 0.312]], [0.759, [0.306, 0.306, 0.306]], [0.761, [0.306, 0.306, 0.306]], [0.763, [0.301, 0.301, 0.301]], [0.765, [0.301, 0.301, 0.301]], [0.767, [0.295, 0.295, 0.295]], [0.769, [0.295, 0.295, 0.295]], [0.771, [0.290, 0.290, 0.290]], [0.773, [0.290, 0.290, 0.290]], [0.775, [0.284, 0.284, 0.284]], [0.777, [0.284, 0.284, 0.284]], [0.779, [0.279, 0.279, 0.279]], [0.781, [0.279, 0.279, 0.279]], [0.783, [0.273, 0.273, 0.273]], [0.785, [0.273, 0.273, 0.273]], [0.787, [0.268, 0.268, 0.268]], [0.789, [0.268, 0.268, 0.268]], [0.791, [0.262, 0.262, 0.262]], [0.793, [0.262, 0.262, 0.262]], [0.795, [0.257, 0.257, 0.257]], [0.796, [0.257, 0.257, 0.257]], [0.798, [0.251, 0.251, 0.251]], [0.800, [0.251, 0.251, 0.251]], [0.802, [0.245, 0.245, 0.245]], [0.804, [0.245, 0.245, 0.245]], [0.806, [0.240, 0.240, 0.240]], [0.808, [0.240, 0.240, 0.240]], [0.810, [0.234, 0.234, 0.234]], [0.812, [0.234, 0.234, 0.234]], [0.814, [0.229, 0.229, 0.229]], [0.816, [0.229, 0.229, 0.229]], [0.818, [0.223, 0.223, 0.223]], [0.820, [0.223, 0.223, 0.223]], [0.822, [0.218, 0.218, 0.218]], [0.824, [0.218, 0.218, 0.218]], [0.826, [0.212, 0.212, 0.212]], [0.828, [0.212, 0.212, 0.212]], [0.830, [0.207, 0.207, 0.207]], [0.832, [0.207, 0.207, 0.207]], [0.834, [0.201, 0.201, 0.201]], [0.836, [0.201, 0.201, 0.201]], [0.838, [0.196, 0.196, 0.196]], [0.840, [0.196, 0.196, 0.196]], [0.841, [0.190, 0.190, 0.190]], [0.843, [0.190, 0.190, 0.190]], [0.845, [0.185, 0.185, 0.185]], [0.847, [0.185, 0.185, 0.185]], [0.849, [0.179, 0.179, 0.179]], [0.851, [0.179, 0.179, 0.179]], [0.853, [0.173, 0.173, 0.173]], [0.855, [0.173, 0.173, 0.173]], [0.857, [0.168, 0.168, 0.168]], [0.859, [0.168, 0.168, 0.168]], [0.861, [0.162, 0.162, 0.162]], [0.863, [0.162, 0.162, 0.162]], [0.865, [0.157, 0.157, 0.157]], [0.867, [0.157, 0.157, 0.157]], [0.869, [0.151, 0.151, 0.151]], [0.871, [0.151, 0.151, 0.151]], [0.873, [0.146, 0.146, 0.146]], [0.875, [0.146, 0.146, 0.146]], [0.877, [0.141, 0.141, 0.141]], [0.879, [0.141, 0.141, 0.141]], [0.881, [0.137, 0.137, 0.137]], [0.883, [0.137, 0.137, 0.137]], [0.885, [0.132, 0.132, 0.132]], [0.886, [0.132, 0.132, 0.132]], [0.888, [0.127, 0.127, 0.127]], [0.890, [0.127, 0.127, 0.127]], [0.892, [0.123, 0.123, 0.123]], [0.894, [0.123, 0.123, 0.123]], [0.896, [0.118, 0.118, 0.118]], [0.898, [0.118, 0.118, 0.118]], [0.900, [0.114, 0.114, 0.114]], [0.902, [0.114, 0.114, 0.114]], [0.904, [0.109, 0.109, 0.109]], [0.906, [0.109, 0.109, 0.109]], [0.908, [0.105, 0.105, 0.105]], [0.910, [0.105, 0.105, 0.105]], [0.912, [0.100, 0.100, 0.100]], [0.914, [0.100, 0.100, 0.100]], [0.916, [0.096, 0.096, 0.096]], [0.918, [0.096, 0.096, 0.096]], [0.920, [0.091, 0.091, 0.091]], [0.922, [0.091, 0.091, 0.091]], [0.924, [0.086, 0.086, 0.086]], [0.926, [0.086, 0.086, 0.086]], [0.928, [0.082, 0.082, 0.082]], [0.930, [0.082, 0.082, 0.082]], [0.932, [0.077, 0.077, 0.077]], [0.933, [0.077, 0.077, 0.077]], [0.935, [0.073, 0.073, 0.073]], [0.937, [0.073, 0.073, 0.073]], [0.939, [0.068, 0.068, 0.068]], [0.941, [0.068, 0.068, 0.068]], [0.943, [0.064, 0.064, 0.064]], [0.945, [0.064, 0.064, 0.064]], [0.947, [0.059, 0.059, 0.059]], [0.949, [0.059, 0.059, 0.059]], [0.951, [0.055, 0.055, 0.055]], [0.953, [0.055, 0.055, 0.055]], [0.955, [0.050, 0.050, 0.050]], [0.957, [0.050, 0.050, 0.050]], [0.959, [0.046, 0.046, 0.046]], [0.961, [0.046, 0.046, 0.046]], [0.963, [0.041, 0.041, 0.041]], [0.965, [0.041, 0.041, 0.041]], [0.967, [0.036, 0.036, 0.036]], [0.969, [0.036, 0.036, 0.036]], [0.971, [0.032, 0.032, 0.032]], [0.973, [0.032, 0.032, 0.032]], [0.975, [0.027, 0.027, 0.027]], [0.977, [0.027, 0.027, 0.027]], [0.978, [0.023, 0.023, 0.023]], [0.980, [0.023, 0.023, 0.023]], [0.982, [0.018, 0.018, 0.018]], [0.984, [0.018, 0.018, 0.018]], [0.986, [0.014, 0.014, 0.014]], [0.988, [0.014, 0.014, 0.014]], [0.990, [0.009, 0.009, 0.009]], [0.992, [0.009, 0.009, 0.009]], [0.994, [0.005, 0.005, 0.005]], [0.996, [0.005, 0.005, 0.005]], [0.998, [0.000, 0.000, 0.000]], [1.000, [0.000, 0.000, 0.000]]]; +var OrRd = [[0.000, [1.000, 0.969, 0.925]], [0.002, [1.000, 0.969, 0.925]], [0.004, [1.000, 0.967, 0.921]], [0.006, [1.000, 0.967, 0.921]], [0.008, [1.000, 0.965, 0.917]], [0.010, [1.000, 0.965, 0.917]], [0.012, [1.000, 0.963, 0.912]], [0.014, [1.000, 0.963, 0.912]], [0.016, [1.000, 0.961, 0.908]], [0.018, [1.000, 0.961, 0.908]], [0.020, [0.999, 0.959, 0.903]], [0.022, [0.999, 0.959, 0.903]], [0.023, [0.999, 0.958, 0.899]], [0.025, [0.999, 0.958, 0.899]], [0.027, [0.999, 0.956, 0.894]], [0.029, [0.999, 0.956, 0.894]], [0.031, [0.999, 0.954, 0.890]], [0.033, [0.999, 0.954, 0.890]], [0.035, [0.999, 0.952, 0.886]], [0.037, [0.999, 0.952, 0.886]], [0.039, [0.999, 0.950, 0.881]], [0.041, [0.999, 0.950, 0.881]], [0.043, [0.999, 0.948, 0.877]], [0.045, [0.999, 0.948, 0.877]], [0.047, [0.999, 0.946, 0.872]], [0.049, [0.999, 0.946, 0.872]], [0.051, [0.998, 0.945, 0.868]], [0.053, [0.998, 0.945, 0.868]], [0.055, [0.998, 0.943, 0.863]], [0.057, [0.998, 0.943, 0.863]], [0.059, [0.998, 0.941, 0.859]], [0.061, [0.998, 0.941, 0.859]], [0.063, [0.998, 0.939, 0.855]], [0.065, [0.998, 0.939, 0.855]], [0.067, [0.998, 0.937, 0.850]], [0.068, [0.998, 0.937, 0.850]], [0.070, [0.998, 0.935, 0.846]], [0.072, [0.998, 0.935, 0.846]], [0.074, [0.998, 0.934, 0.841]], [0.076, [0.998, 0.934, 0.841]], [0.078, [0.998, 0.932, 0.837]], [0.080, [0.998, 0.932, 0.837]], [0.082, [0.997, 0.930, 0.832]], [0.084, [0.997, 0.930, 0.832]], [0.086, [0.997, 0.928, 0.828]], [0.088, [0.997, 0.928, 0.828]], [0.090, [0.997, 0.926, 0.824]], [0.092, [0.997, 0.926, 0.824]], [0.094, [0.997, 0.924, 0.819]], [0.096, [0.997, 0.924, 0.819]], [0.098, [0.997, 0.922, 0.815]], [0.100, [0.997, 0.922, 0.815]], [0.102, [0.997, 0.921, 0.810]], [0.104, [0.997, 0.921, 0.810]], [0.106, [0.997, 0.919, 0.806]], [0.108, [0.997, 0.919, 0.806]], [0.110, [0.997, 0.917, 0.801]], [0.112, [0.997, 0.917, 0.801]], [0.114, [0.996, 0.915, 0.797]], [0.115, [0.996, 0.915, 0.797]], [0.117, [0.996, 0.913, 0.793]], [0.119, [0.996, 0.913, 0.793]], [0.121, [0.996, 0.911, 0.788]], [0.123, [0.996, 0.911, 0.788]], [0.125, [0.996, 0.909, 0.784]], [0.127, [0.996, 0.909, 0.784]], [0.129, [0.996, 0.907, 0.779]], [0.131, [0.996, 0.907, 0.779]], [0.133, [0.996, 0.905, 0.773]], [0.135, [0.996, 0.905, 0.773]], [0.137, [0.996, 0.902, 0.768]], [0.139, [0.996, 0.902, 0.768]], [0.141, [0.996, 0.900, 0.763]], [0.143, [0.996, 0.900, 0.763]], [0.145, [0.995, 0.897, 0.758]], [0.147, [0.995, 0.897, 0.758]], [0.149, [0.995, 0.895, 0.753]], [0.151, [0.995, 0.895, 0.753]], [0.153, [0.995, 0.892, 0.747]], [0.155, [0.995, 0.892, 0.747]], [0.157, [0.995, 0.890, 0.742]], [0.159, [0.995, 0.890, 0.742]], [0.160, [0.995, 0.887, 0.737]], [0.162, [0.995, 0.887, 0.737]], [0.164, [0.995, 0.885, 0.732]], [0.166, [0.995, 0.885, 0.732]], [0.168, [0.995, 0.882, 0.727]], [0.170, [0.995, 0.882, 0.727]], [0.172, [0.995, 0.880, 0.722]], [0.174, [0.995, 0.880, 0.722]], [0.176, [0.994, 0.878, 0.716]], [0.178, [0.994, 0.878, 0.716]], [0.180, [0.994, 0.875, 0.711]], [0.182, [0.994, 0.875, 0.711]], [0.184, [0.994, 0.873, 0.706]], [0.186, [0.994, 0.873, 0.706]], [0.188, [0.994, 0.870, 0.701]], [0.190, [0.994, 0.870, 0.701]], [0.192, [0.994, 0.868, 0.696]], [0.194, [0.994, 0.868, 0.696]], [0.196, [0.994, 0.865, 0.691]], [0.198, [0.994, 0.865, 0.691]], [0.200, [0.994, 0.863, 0.685]], [0.202, [0.994, 0.863, 0.685]], [0.204, [0.994, 0.860, 0.680]], [0.205, [0.994, 0.860, 0.680]], [0.207, [0.993, 0.858, 0.675]], [0.209, [0.993, 0.858, 0.675]], [0.211, [0.993, 0.855, 0.670]], [0.213, [0.993, 0.855, 0.670]], [0.215, [0.993, 0.853, 0.665]], [0.217, [0.993, 0.853, 0.665]], [0.219, [0.993, 0.850, 0.660]], [0.221, [0.993, 0.850, 0.660]], [0.223, [0.993, 0.848, 0.654]], [0.225, [0.993, 0.848, 0.654]], [0.227, [0.993, 0.846, 0.649]], [0.229, [0.993, 0.846, 0.649]], [0.231, [0.993, 0.843, 0.644]], [0.233, [0.993, 0.843, 0.644]], [0.235, [0.993, 0.841, 0.639]], [0.237, [0.993, 0.841, 0.639]], [0.239, [0.992, 0.838, 0.634]], [0.241, [0.992, 0.838, 0.634]], [0.243, [0.992, 0.836, 0.629]], [0.245, [0.992, 0.836, 0.629]], [0.247, [0.992, 0.833, 0.623]], [0.249, [0.992, 0.833, 0.623]], [0.250, [0.992, 0.831, 0.619]], [0.252, [0.992, 0.831, 0.619]], [0.254, [0.992, 0.828, 0.616]], [0.256, [0.992, 0.828, 0.616]], [0.258, [0.992, 0.824, 0.612]], [0.260, [0.992, 0.824, 0.612]], [0.262, [0.992, 0.821, 0.609]], [0.264, [0.992, 0.821, 0.609]], [0.266, [0.992, 0.818, 0.606]], [0.268, [0.992, 0.818, 0.606]], [0.270, [0.992, 0.815, 0.603]], [0.272, [0.992, 0.815, 0.603]], [0.274, [0.992, 0.812, 0.600]], [0.276, [0.992, 0.812, 0.600]], [0.278, [0.992, 0.809, 0.596]], [0.280, [0.992, 0.809, 0.596]], [0.282, [0.992, 0.806, 0.593]], [0.284, [0.992, 0.806, 0.593]], [0.286, [0.992, 0.803, 0.590]], [0.288, [0.992, 0.803, 0.590]], [0.290, [0.992, 0.800, 0.587]], [0.292, [0.992, 0.800, 0.587]], [0.294, [0.992, 0.797, 0.584]], [0.295, [0.992, 0.797, 0.584]], [0.297, [0.992, 0.794, 0.580]], [0.299, [0.992, 0.794, 0.580]], [0.301, [0.992, 0.791, 0.577]], [0.303, [0.992, 0.791, 0.577]], [0.305, [0.992, 0.788, 0.574]], [0.307, [0.992, 0.788, 0.574]], [0.309, [0.992, 0.784, 0.571]], [0.311, [0.992, 0.784, 0.571]], [0.313, [0.992, 0.781, 0.568]], [0.315, [0.992, 0.781, 0.568]], [0.317, [0.992, 0.778, 0.564]], [0.319, [0.992, 0.778, 0.564]], [0.321, [0.992, 0.775, 0.561]], [0.323, [0.992, 0.775, 0.561]], [0.325, [0.992, 0.772, 0.558]], [0.327, [0.992, 0.772, 0.558]], [0.329, [0.992, 0.769, 0.555]], [0.331, [0.992, 0.769, 0.555]], [0.333, [0.992, 0.766, 0.552]], [0.335, [0.992, 0.766, 0.552]], [0.337, [0.992, 0.763, 0.548]], [0.339, [0.992, 0.763, 0.548]], [0.341, [0.992, 0.760, 0.545]], [0.342, [0.992, 0.760, 0.545]], [0.344, [0.992, 0.757, 0.542]], [0.346, [0.992, 0.757, 0.542]], [0.348, [0.992, 0.754, 0.539]], [0.350, [0.992, 0.754, 0.539]], [0.352, [0.992, 0.751, 0.536]], [0.354, [0.992, 0.751, 0.536]], [0.356, [0.992, 0.748, 0.532]], [0.358, [0.992, 0.748, 0.532]], [0.360, [0.992, 0.744, 0.529]], [0.362, [0.992, 0.744, 0.529]], [0.364, [0.992, 0.741, 0.526]], [0.366, [0.992, 0.741, 0.526]], [0.368, [0.992, 0.738, 0.523]], [0.370, [0.992, 0.738, 0.523]], [0.372, [0.992, 0.735, 0.520]], [0.374, [0.992, 0.735, 0.520]], [0.376, [0.992, 0.731, 0.516]], [0.378, [0.992, 0.731, 0.516]], [0.380, [0.992, 0.726, 0.510]], [0.382, [0.992, 0.726, 0.510]], [0.384, [0.992, 0.720, 0.505]], [0.386, [0.992, 0.720, 0.505]], [0.387, [0.992, 0.714, 0.500]], [0.389, [0.992, 0.714, 0.500]], [0.391, [0.992, 0.709, 0.495]], [0.393, [0.992, 0.709, 0.495]], [0.395, [0.991, 0.703, 0.489]], [0.397, [0.991, 0.703, 0.489]], [0.399, [0.991, 0.697, 0.484]], [0.401, [0.991, 0.697, 0.484]], [0.403, [0.991, 0.692, 0.479]], [0.405, [0.991, 0.692, 0.479]], [0.407, [0.991, 0.686, 0.473]], [0.409, [0.991, 0.686, 0.473]], [0.411, [0.991, 0.680, 0.468]], [0.413, [0.991, 0.680, 0.468]], [0.415, [0.991, 0.675, 0.463]], [0.417, [0.991, 0.675, 0.463]], [0.419, [0.991, 0.669, 0.457]], [0.421, [0.991, 0.669, 0.457]], [0.423, [0.991, 0.663, 0.452]], [0.425, [0.991, 0.663, 0.452]], [0.427, [0.991, 0.658, 0.447]], [0.429, [0.991, 0.658, 0.447]], [0.431, [0.990, 0.652, 0.442]], [0.432, [0.990, 0.652, 0.442]], [0.434, [0.990, 0.646, 0.436]], [0.436, [0.990, 0.646, 0.436]], [0.438, [0.990, 0.641, 0.431]], [0.440, [0.990, 0.641, 0.431]], [0.442, [0.990, 0.635, 0.426]], [0.444, [0.990, 0.635, 0.426]], [0.446, [0.990, 0.629, 0.420]], [0.448, [0.990, 0.629, 0.420]], [0.450, [0.990, 0.624, 0.415]], [0.452, [0.990, 0.624, 0.415]], [0.454, [0.990, 0.618, 0.410]], [0.456, [0.990, 0.618, 0.410]], [0.458, [0.990, 0.612, 0.405]], [0.460, [0.990, 0.612, 0.405]], [0.462, [0.989, 0.607, 0.399]], [0.464, [0.989, 0.607, 0.399]], [0.466, [0.989, 0.601, 0.394]], [0.468, [0.989, 0.601, 0.394]], [0.470, [0.989, 0.595, 0.389]], [0.472, [0.989, 0.595, 0.389]], [0.474, [0.989, 0.590, 0.383]], [0.476, [0.989, 0.590, 0.383]], [0.477, [0.989, 0.584, 0.378]], [0.479, [0.989, 0.584, 0.378]], [0.481, [0.989, 0.578, 0.373]], [0.483, [0.989, 0.578, 0.373]], [0.485, [0.989, 0.573, 0.368]], [0.487, [0.989, 0.573, 0.368]], [0.489, [0.989, 0.567, 0.362]], [0.491, [0.989, 0.567, 0.362]], [0.493, [0.988, 0.561, 0.357]], [0.495, [0.988, 0.561, 0.357]], [0.497, [0.988, 0.556, 0.352]], [0.499, [0.988, 0.556, 0.352]], [0.501, [0.987, 0.550, 0.348]], [0.503, [0.987, 0.550, 0.348]], [0.505, [0.986, 0.546, 0.346]], [0.507, [0.986, 0.546, 0.346]], [0.509, [0.984, 0.541, 0.344]], [0.511, [0.984, 0.541, 0.344]], [0.513, [0.983, 0.536, 0.342]], [0.515, [0.983, 0.536, 0.342]], [0.517, [0.981, 0.531, 0.340]], [0.519, [0.981, 0.531, 0.340]], [0.521, [0.979, 0.526, 0.338]], [0.523, [0.979, 0.526, 0.338]], [0.524, [0.978, 0.521, 0.335]], [0.526, [0.978, 0.521, 0.335]], [0.528, [0.976, 0.516, 0.333]], [0.530, [0.976, 0.516, 0.333]], [0.532, [0.975, 0.511, 0.331]], [0.534, [0.975, 0.511, 0.331]], [0.536, [0.973, 0.506, 0.329]], [0.538, [0.973, 0.506, 0.329]], [0.540, [0.971, 0.501, 0.327]], [0.542, [0.971, 0.501, 0.327]], [0.544, [0.970, 0.496, 0.325]], [0.546, [0.970, 0.496, 0.325]], [0.548, [0.968, 0.491, 0.323]], [0.550, [0.968, 0.491, 0.323]], [0.552, [0.967, 0.487, 0.321]], [0.554, [0.967, 0.487, 0.321]], [0.556, [0.965, 0.482, 0.319]], [0.558, [0.965, 0.482, 0.319]], [0.560, [0.963, 0.477, 0.317]], [0.562, [0.963, 0.477, 0.317]], [0.564, [0.962, 0.472, 0.315]], [0.566, [0.962, 0.472, 0.315]], [0.568, [0.960, 0.467, 0.312]], [0.569, [0.960, 0.467, 0.312]], [0.571, [0.959, 0.462, 0.310]], [0.573, [0.959, 0.462, 0.310]], [0.575, [0.957, 0.457, 0.308]], [0.577, [0.957, 0.457, 0.308]], [0.579, [0.955, 0.452, 0.306]], [0.581, [0.955, 0.452, 0.306]], [0.583, [0.954, 0.447, 0.304]], [0.585, [0.954, 0.447, 0.304]], [0.587, [0.952, 0.442, 0.302]], [0.589, [0.952, 0.442, 0.302]], [0.591, [0.951, 0.437, 0.300]], [0.593, [0.951, 0.437, 0.300]], [0.595, [0.949, 0.432, 0.298]], [0.597, [0.949, 0.432, 0.298]], [0.599, [0.947, 0.427, 0.296]], [0.601, [0.947, 0.427, 0.296]], [0.603, [0.946, 0.423, 0.294]], [0.605, [0.946, 0.423, 0.294]], [0.607, [0.944, 0.418, 0.292]], [0.609, [0.944, 0.418, 0.292]], [0.611, [0.943, 0.413, 0.289]], [0.613, [0.943, 0.413, 0.289]], [0.614, [0.941, 0.408, 0.287]], [0.616, [0.941, 0.408, 0.287]], [0.618, [0.939, 0.403, 0.285]], [0.620, [0.939, 0.403, 0.285]], [0.622, [0.938, 0.398, 0.283]], [0.624, [0.938, 0.398, 0.283]], [0.626, [0.935, 0.392, 0.279]], [0.628, [0.935, 0.392, 0.279]], [0.630, [0.932, 0.385, 0.274]], [0.632, [0.932, 0.385, 0.274]], [0.634, [0.930, 0.379, 0.269]], [0.636, [0.930, 0.379, 0.269]], [0.638, [0.927, 0.372, 0.264]], [0.640, [0.927, 0.372, 0.264]], [0.642, [0.924, 0.366, 0.259]], [0.644, [0.924, 0.366, 0.259]], [0.646, [0.921, 0.359, 0.254]], [0.648, [0.921, 0.359, 0.254]], [0.650, [0.918, 0.353, 0.249]], [0.652, [0.918, 0.353, 0.249]], [0.654, [0.915, 0.346, 0.244]], [0.656, [0.915, 0.346, 0.244]], [0.658, [0.912, 0.340, 0.239]], [0.659, [0.912, 0.340, 0.239]], [0.661, [0.909, 0.333, 0.234]], [0.663, [0.909, 0.333, 0.234]], [0.665, [0.906, 0.327, 0.229]], [0.667, [0.906, 0.327, 0.229]], [0.669, [0.903, 0.320, 0.224]], [0.671, [0.903, 0.320, 0.224]], [0.673, [0.900, 0.314, 0.219]], [0.675, [0.900, 0.314, 0.219]], [0.677, [0.897, 0.307, 0.214]], [0.679, [0.897, 0.307, 0.214]], [0.681, [0.894, 0.301, 0.209]], [0.683, [0.894, 0.301, 0.209]], [0.685, [0.891, 0.294, 0.204]], [0.687, [0.891, 0.294, 0.204]], [0.689, [0.888, 0.288, 0.198]], [0.691, [0.888, 0.288, 0.198]], [0.693, [0.885, 0.281, 0.193]], [0.695, [0.885, 0.281, 0.193]], [0.697, [0.882, 0.275, 0.188]], [0.699, [0.882, 0.275, 0.188]], [0.701, [0.879, 0.268, 0.183]], [0.703, [0.879, 0.268, 0.183]], [0.705, [0.876, 0.262, 0.178]], [0.706, [0.876, 0.262, 0.178]], [0.708, [0.873, 0.255, 0.173]], [0.710, [0.873, 0.255, 0.173]], [0.712, [0.870, 0.249, 0.168]], [0.714, [0.870, 0.249, 0.168]], [0.716, [0.867, 0.242, 0.163]], [0.718, [0.867, 0.242, 0.163]], [0.720, [0.865, 0.236, 0.158]], [0.722, [0.865, 0.236, 0.158]], [0.724, [0.862, 0.229, 0.153]], [0.726, [0.862, 0.229, 0.153]], [0.728, [0.859, 0.222, 0.148]], [0.730, [0.859, 0.222, 0.148]], [0.732, [0.856, 0.216, 0.143]], [0.734, [0.856, 0.216, 0.143]], [0.736, [0.853, 0.209, 0.138]], [0.738, [0.853, 0.209, 0.138]], [0.740, [0.850, 0.203, 0.133]], [0.742, [0.850, 0.203, 0.133]], [0.744, [0.847, 0.196, 0.128]], [0.746, [0.847, 0.196, 0.128]], [0.748, [0.844, 0.190, 0.123]], [0.750, [0.844, 0.190, 0.123]], [0.751, [0.840, 0.184, 0.119]], [0.753, [0.840, 0.184, 0.119]], [0.755, [0.835, 0.178, 0.115]], [0.757, [0.835, 0.178, 0.115]], [0.759, [0.831, 0.172, 0.111]], [0.761, [0.831, 0.172, 0.111]], [0.763, [0.827, 0.166, 0.107]], [0.765, [0.827, 0.166, 0.107]], [0.767, [0.822, 0.160, 0.103]], [0.769, [0.822, 0.160, 0.103]], [0.771, [0.818, 0.154, 0.100]], [0.773, [0.818, 0.154, 0.100]], [0.775, [0.813, 0.148, 0.096]], [0.777, [0.813, 0.148, 0.096]], [0.779, [0.809, 0.142, 0.092]], [0.781, [0.809, 0.142, 0.092]], [0.783, [0.804, 0.137, 0.088]], [0.785, [0.804, 0.137, 0.088]], [0.787, [0.800, 0.131, 0.084]], [0.789, [0.800, 0.131, 0.084]], [0.791, [0.796, 0.125, 0.081]], [0.793, [0.796, 0.125, 0.081]], [0.795, [0.791, 0.119, 0.077]], [0.796, [0.791, 0.119, 0.077]], [0.798, [0.787, 0.113, 0.073]], [0.800, [0.787, 0.113, 0.073]], [0.802, [0.782, 0.107, 0.069]], [0.804, [0.782, 0.107, 0.069]], [0.806, [0.778, 0.101, 0.065]], [0.808, [0.778, 0.101, 0.065]], [0.810, [0.773, 0.095, 0.061]], [0.812, [0.773, 0.095, 0.061]], [0.814, [0.769, 0.089, 0.058]], [0.816, [0.769, 0.089, 0.058]], [0.818, [0.765, 0.083, 0.054]], [0.820, [0.765, 0.083, 0.054]], [0.822, [0.760, 0.078, 0.050]], [0.824, [0.760, 0.078, 0.050]], [0.826, [0.756, 0.072, 0.046]], [0.828, [0.756, 0.072, 0.046]], [0.830, [0.751, 0.066, 0.042]], [0.832, [0.751, 0.066, 0.042]], [0.834, [0.747, 0.060, 0.039]], [0.836, [0.747, 0.060, 0.039]], [0.838, [0.742, 0.054, 0.035]], [0.840, [0.742, 0.054, 0.035]], [0.841, [0.738, 0.048, 0.031]], [0.843, [0.738, 0.048, 0.031]], [0.845, [0.734, 0.042, 0.027]], [0.847, [0.734, 0.042, 0.027]], [0.849, [0.729, 0.036, 0.023]], [0.851, [0.729, 0.036, 0.023]], [0.853, [0.725, 0.030, 0.020]], [0.855, [0.725, 0.030, 0.020]], [0.857, [0.720, 0.024, 0.016]], [0.859, [0.720, 0.024, 0.016]], [0.861, [0.716, 0.018, 0.012]], [0.863, [0.716, 0.018, 0.012]], [0.865, [0.711, 0.013, 0.008]], [0.867, [0.711, 0.013, 0.008]], [0.869, [0.707, 0.007, 0.004]], [0.871, [0.707, 0.007, 0.004]], [0.873, [0.703, 0.001, 0.000]], [0.875, [0.703, 0.001, 0.000]], [0.877, [0.696, 0.000, 0.000]], [0.879, [0.696, 0.000, 0.000]], [0.881, [0.690, 0.000, 0.000]], [0.883, [0.690, 0.000, 0.000]], [0.885, [0.684, 0.000, 0.000]], [0.886, [0.684, 0.000, 0.000]], [0.888, [0.677, 0.000, 0.000]], [0.890, [0.677, 0.000, 0.000]], [0.892, [0.671, 0.000, 0.000]], [0.894, [0.671, 0.000, 0.000]], [0.896, [0.664, 0.000, 0.000]], [0.898, [0.664, 0.000, 0.000]], [0.900, [0.658, 0.000, 0.000]], [0.902, [0.658, 0.000, 0.000]], [0.904, [0.652, 0.000, 0.000]], [0.906, [0.652, 0.000, 0.000]], [0.908, [0.645, 0.000, 0.000]], [0.910, [0.645, 0.000, 0.000]], [0.912, [0.639, 0.000, 0.000]], [0.914, [0.639, 0.000, 0.000]], [0.916, [0.632, 0.000, 0.000]], [0.918, [0.632, 0.000, 0.000]], [0.920, [0.626, 0.000, 0.000]], [0.922, [0.626, 0.000, 0.000]], [0.924, [0.620, 0.000, 0.000]], [0.926, [0.620, 0.000, 0.000]], [0.928, [0.613, 0.000, 0.000]], [0.930, [0.613, 0.000, 0.000]], [0.932, [0.607, 0.000, 0.000]], [0.933, [0.607, 0.000, 0.000]], [0.935, [0.600, 0.000, 0.000]], [0.937, [0.600, 0.000, 0.000]], [0.939, [0.594, 0.000, 0.000]], [0.941, [0.594, 0.000, 0.000]], [0.943, [0.588, 0.000, 0.000]], [0.945, [0.588, 0.000, 0.000]], [0.947, [0.581, 0.000, 0.000]], [0.949, [0.581, 0.000, 0.000]], [0.951, [0.575, 0.000, 0.000]], [0.953, [0.575, 0.000, 0.000]], [0.955, [0.568, 0.000, 0.000]], [0.957, [0.568, 0.000, 0.000]], [0.959, [0.562, 0.000, 0.000]], [0.961, [0.562, 0.000, 0.000]], [0.963, [0.556, 0.000, 0.000]], [0.965, [0.556, 0.000, 0.000]], [0.967, [0.549, 0.000, 0.000]], [0.969, [0.549, 0.000, 0.000]], [0.971, [0.543, 0.000, 0.000]], [0.973, [0.543, 0.000, 0.000]], [0.975, [0.536, 0.000, 0.000]], [0.977, [0.536, 0.000, 0.000]], [0.978, [0.530, 0.000, 0.000]], [0.980, [0.530, 0.000, 0.000]], [0.982, [0.524, 0.000, 0.000]], [0.984, [0.524, 0.000, 0.000]], [0.986, [0.517, 0.000, 0.000]], [0.988, [0.517, 0.000, 0.000]], [0.990, [0.511, 0.000, 0.000]], [0.992, [0.511, 0.000, 0.000]], [0.994, [0.504, 0.000, 0.000]], [0.996, [0.504, 0.000, 0.000]], [0.998, [0.498, 0.000, 0.000]], [1.000, [0.498, 0.000, 0.000]]]; +var Oranges = [[0.000, [1.000, 0.961, 0.922]], [0.002, [1.000, 0.961, 0.922]], [0.004, [1.000, 0.959, 0.918]], [0.006, [1.000, 0.959, 0.918]], [0.008, [1.000, 0.957, 0.914]], [0.010, [1.000, 0.957, 0.914]], [0.012, [1.000, 0.955, 0.911]], [0.014, [1.000, 0.955, 0.911]], [0.016, [1.000, 0.953, 0.907]], [0.018, [1.000, 0.953, 0.907]], [0.020, [0.999, 0.952, 0.904]], [0.022, [0.999, 0.952, 0.904]], [0.023, [0.999, 0.950, 0.900]], [0.025, [0.999, 0.950, 0.900]], [0.027, [0.999, 0.948, 0.897]], [0.029, [0.999, 0.948, 0.897]], [0.031, [0.999, 0.946, 0.893]], [0.033, [0.999, 0.946, 0.893]], [0.035, [0.999, 0.944, 0.889]], [0.037, [0.999, 0.944, 0.889]], [0.039, [0.999, 0.942, 0.886]], [0.041, [0.999, 0.942, 0.886]], [0.043, [0.999, 0.940, 0.882]], [0.045, [0.999, 0.940, 0.882]], [0.047, [0.999, 0.939, 0.879]], [0.049, [0.999, 0.939, 0.879]], [0.051, [0.998, 0.937, 0.875]], [0.053, [0.998, 0.937, 0.875]], [0.055, [0.998, 0.935, 0.872]], [0.057, [0.998, 0.935, 0.872]], [0.059, [0.998, 0.933, 0.868]], [0.061, [0.998, 0.933, 0.868]], [0.063, [0.998, 0.931, 0.864]], [0.065, [0.998, 0.931, 0.864]], [0.067, [0.998, 0.929, 0.861]], [0.068, [0.998, 0.929, 0.861]], [0.070, [0.998, 0.928, 0.857]], [0.072, [0.998, 0.928, 0.857]], [0.074, [0.998, 0.926, 0.854]], [0.076, [0.998, 0.926, 0.854]], [0.078, [0.998, 0.924, 0.850]], [0.080, [0.998, 0.924, 0.850]], [0.082, [0.997, 0.922, 0.847]], [0.084, [0.997, 0.922, 0.847]], [0.086, [0.997, 0.920, 0.843]], [0.088, [0.997, 0.920, 0.843]], [0.090, [0.997, 0.918, 0.840]], [0.092, [0.997, 0.918, 0.840]], [0.094, [0.997, 0.916, 0.836]], [0.096, [0.997, 0.916, 0.836]], [0.098, [0.997, 0.915, 0.832]], [0.100, [0.997, 0.915, 0.832]], [0.102, [0.997, 0.913, 0.829]], [0.104, [0.997, 0.913, 0.829]], [0.106, [0.997, 0.911, 0.825]], [0.108, [0.997, 0.911, 0.825]], [0.110, [0.997, 0.909, 0.822]], [0.112, [0.997, 0.909, 0.822]], [0.114, [0.996, 0.907, 0.818]], [0.115, [0.996, 0.907, 0.818]], [0.117, [0.996, 0.905, 0.815]], [0.119, [0.996, 0.905, 0.815]], [0.121, [0.996, 0.904, 0.811]], [0.123, [0.996, 0.904, 0.811]], [0.125, [0.996, 0.902, 0.807]], [0.127, [0.996, 0.902, 0.807]], [0.129, [0.996, 0.899, 0.802]], [0.131, [0.996, 0.899, 0.802]], [0.133, [0.996, 0.896, 0.796]], [0.135, [0.996, 0.896, 0.796]], [0.137, [0.996, 0.894, 0.791]], [0.139, [0.996, 0.894, 0.791]], [0.141, [0.996, 0.891, 0.786]], [0.143, [0.996, 0.891, 0.786]], [0.145, [0.995, 0.888, 0.780]], [0.147, [0.995, 0.888, 0.780]], [0.149, [0.995, 0.885, 0.775]], [0.151, [0.995, 0.885, 0.775]], [0.153, [0.995, 0.883, 0.769]], [0.155, [0.995, 0.883, 0.769]], [0.157, [0.995, 0.880, 0.764]], [0.159, [0.995, 0.880, 0.764]], [0.160, [0.995, 0.877, 0.758]], [0.162, [0.995, 0.877, 0.758]], [0.164, [0.995, 0.875, 0.753]], [0.166, [0.995, 0.875, 0.753]], [0.168, [0.995, 0.872, 0.748]], [0.170, [0.995, 0.872, 0.748]], [0.172, [0.995, 0.869, 0.742]], [0.174, [0.995, 0.869, 0.742]], [0.176, [0.994, 0.866, 0.737]], [0.178, [0.994, 0.866, 0.737]], [0.180, [0.994, 0.864, 0.731]], [0.182, [0.994, 0.864, 0.731]], [0.184, [0.994, 0.861, 0.726]], [0.186, [0.994, 0.861, 0.726]], [0.188, [0.994, 0.858, 0.721]], [0.190, [0.994, 0.858, 0.721]], [0.192, [0.994, 0.856, 0.715]], [0.194, [0.994, 0.856, 0.715]], [0.196, [0.994, 0.853, 0.710]], [0.198, [0.994, 0.853, 0.710]], [0.200, [0.994, 0.850, 0.704]], [0.202, [0.994, 0.850, 0.704]], [0.204, [0.994, 0.847, 0.699]], [0.205, [0.994, 0.847, 0.699]], [0.207, [0.993, 0.845, 0.693]], [0.209, [0.993, 0.845, 0.693]], [0.211, [0.993, 0.842, 0.688]], [0.213, [0.993, 0.842, 0.688]], [0.215, [0.993, 0.839, 0.683]], [0.217, [0.993, 0.839, 0.683]], [0.219, [0.993, 0.837, 0.677]], [0.221, [0.993, 0.837, 0.677]], [0.223, [0.993, 0.834, 0.672]], [0.225, [0.993, 0.834, 0.672]], [0.227, [0.993, 0.831, 0.666]], [0.229, [0.993, 0.831, 0.666]], [0.231, [0.993, 0.829, 0.661]], [0.233, [0.993, 0.829, 0.661]], [0.235, [0.993, 0.826, 0.656]], [0.237, [0.993, 0.826, 0.656]], [0.239, [0.992, 0.823, 0.650]], [0.241, [0.992, 0.823, 0.650]], [0.243, [0.992, 0.820, 0.645]], [0.245, [0.992, 0.820, 0.645]], [0.247, [0.992, 0.818, 0.639]], [0.249, [0.992, 0.818, 0.639]], [0.250, [0.992, 0.815, 0.634]], [0.252, [0.992, 0.815, 0.634]], [0.254, [0.992, 0.810, 0.627]], [0.256, [0.992, 0.810, 0.627]], [0.258, [0.992, 0.806, 0.620]], [0.260, [0.992, 0.806, 0.620]], [0.262, [0.992, 0.802, 0.613]], [0.264, [0.992, 0.802, 0.613]], [0.266, [0.992, 0.798, 0.607]], [0.268, [0.992, 0.798, 0.607]], [0.270, [0.992, 0.794, 0.600]], [0.272, [0.992, 0.794, 0.600]], [0.274, [0.992, 0.790, 0.593]], [0.276, [0.992, 0.790, 0.593]], [0.278, [0.992, 0.785, 0.586]], [0.280, [0.992, 0.785, 0.586]], [0.282, [0.992, 0.781, 0.579]], [0.284, [0.992, 0.781, 0.579]], [0.286, [0.992, 0.777, 0.573]], [0.288, [0.992, 0.777, 0.573]], [0.290, [0.992, 0.773, 0.566]], [0.292, [0.992, 0.773, 0.566]], [0.294, [0.992, 0.769, 0.559]], [0.295, [0.992, 0.769, 0.559]], [0.297, [0.992, 0.764, 0.552]], [0.299, [0.992, 0.764, 0.552]], [0.301, [0.992, 0.760, 0.546]], [0.303, [0.992, 0.760, 0.546]], [0.305, [0.992, 0.756, 0.539]], [0.307, [0.992, 0.756, 0.539]], [0.309, [0.992, 0.752, 0.532]], [0.311, [0.992, 0.752, 0.532]], [0.313, [0.992, 0.748, 0.525]], [0.315, [0.992, 0.748, 0.525]], [0.317, [0.992, 0.744, 0.519]], [0.319, [0.992, 0.744, 0.519]], [0.321, [0.992, 0.739, 0.512]], [0.323, [0.992, 0.739, 0.512]], [0.325, [0.992, 0.735, 0.505]], [0.327, [0.992, 0.735, 0.505]], [0.329, [0.992, 0.731, 0.498]], [0.331, [0.992, 0.731, 0.498]], [0.333, [0.992, 0.727, 0.492]], [0.335, [0.992, 0.727, 0.492]], [0.337, [0.992, 0.723, 0.485]], [0.339, [0.992, 0.723, 0.485]], [0.341, [0.992, 0.718, 0.478]], [0.342, [0.992, 0.718, 0.478]], [0.344, [0.992, 0.714, 0.471]], [0.346, [0.992, 0.714, 0.471]], [0.348, [0.992, 0.710, 0.464]], [0.350, [0.992, 0.710, 0.464]], [0.352, [0.992, 0.706, 0.458]], [0.354, [0.992, 0.706, 0.458]], [0.356, [0.992, 0.702, 0.451]], [0.358, [0.992, 0.702, 0.451]], [0.360, [0.992, 0.698, 0.444]], [0.362, [0.992, 0.698, 0.444]], [0.364, [0.992, 0.693, 0.437]], [0.366, [0.992, 0.693, 0.437]], [0.368, [0.992, 0.689, 0.431]], [0.370, [0.992, 0.689, 0.431]], [0.372, [0.992, 0.685, 0.424]], [0.374, [0.992, 0.685, 0.424]], [0.376, [0.992, 0.681, 0.417]], [0.378, [0.992, 0.681, 0.417]], [0.380, [0.992, 0.677, 0.412]], [0.382, [0.992, 0.677, 0.412]], [0.384, [0.992, 0.673, 0.406]], [0.386, [0.992, 0.673, 0.406]], [0.387, [0.992, 0.669, 0.400]], [0.389, [0.992, 0.669, 0.400]], [0.391, [0.992, 0.665, 0.394]], [0.393, [0.992, 0.665, 0.394]], [0.395, [0.992, 0.661, 0.389]], [0.397, [0.992, 0.661, 0.389]], [0.399, [0.992, 0.656, 0.383]], [0.401, [0.992, 0.656, 0.383]], [0.403, [0.992, 0.652, 0.377]], [0.405, [0.992, 0.652, 0.377]], [0.407, [0.992, 0.648, 0.371]], [0.409, [0.992, 0.648, 0.371]], [0.411, [0.992, 0.644, 0.365]], [0.413, [0.992, 0.644, 0.365]], [0.415, [0.992, 0.640, 0.360]], [0.417, [0.992, 0.640, 0.360]], [0.419, [0.992, 0.636, 0.354]], [0.421, [0.992, 0.636, 0.354]], [0.423, [0.992, 0.632, 0.348]], [0.425, [0.992, 0.632, 0.348]], [0.427, [0.992, 0.628, 0.342]], [0.429, [0.992, 0.628, 0.342]], [0.431, [0.992, 0.624, 0.336]], [0.432, [0.992, 0.624, 0.336]], [0.434, [0.992, 0.620, 0.331]], [0.436, [0.992, 0.620, 0.331]], [0.438, [0.992, 0.616, 0.325]], [0.440, [0.992, 0.616, 0.325]], [0.442, [0.992, 0.612, 0.319]], [0.444, [0.992, 0.612, 0.319]], [0.446, [0.992, 0.608, 0.313]], [0.448, [0.992, 0.608, 0.313]], [0.450, [0.992, 0.604, 0.308]], [0.452, [0.992, 0.604, 0.308]], [0.454, [0.992, 0.600, 0.302]], [0.456, [0.992, 0.600, 0.302]], [0.458, [0.992, 0.596, 0.296]], [0.460, [0.992, 0.596, 0.296]], [0.462, [0.992, 0.592, 0.290]], [0.464, [0.992, 0.592, 0.290]], [0.466, [0.992, 0.587, 0.284]], [0.468, [0.992, 0.587, 0.284]], [0.470, [0.992, 0.583, 0.279]], [0.472, [0.992, 0.583, 0.279]], [0.474, [0.992, 0.579, 0.273]], [0.476, [0.992, 0.579, 0.273]], [0.477, [0.992, 0.575, 0.267]], [0.479, [0.992, 0.575, 0.267]], [0.481, [0.992, 0.571, 0.261]], [0.483, [0.992, 0.571, 0.261]], [0.485, [0.992, 0.567, 0.256]], [0.487, [0.992, 0.567, 0.256]], [0.489, [0.992, 0.563, 0.250]], [0.491, [0.992, 0.563, 0.250]], [0.493, [0.992, 0.559, 0.244]], [0.495, [0.992, 0.559, 0.244]], [0.497, [0.992, 0.555, 0.238]], [0.499, [0.992, 0.555, 0.238]], [0.501, [0.991, 0.551, 0.233]], [0.503, [0.991, 0.551, 0.233]], [0.505, [0.990, 0.546, 0.228]], [0.507, [0.990, 0.546, 0.228]], [0.509, [0.988, 0.542, 0.223]], [0.511, [0.988, 0.542, 0.223]], [0.513, [0.987, 0.537, 0.218]], [0.515, [0.987, 0.537, 0.218]], [0.517, [0.986, 0.533, 0.213]], [0.519, [0.986, 0.533, 0.213]], [0.521, [0.984, 0.529, 0.208]], [0.523, [0.984, 0.529, 0.208]], [0.524, [0.983, 0.524, 0.203]], [0.526, [0.983, 0.524, 0.203]], [0.528, [0.981, 0.520, 0.197]], [0.530, [0.981, 0.520, 0.197]], [0.532, [0.980, 0.515, 0.192]], [0.534, [0.980, 0.515, 0.192]], [0.536, [0.978, 0.511, 0.187]], [0.538, [0.978, 0.511, 0.187]], [0.540, [0.977, 0.506, 0.182]], [0.542, [0.977, 0.506, 0.182]], [0.544, [0.975, 0.502, 0.177]], [0.546, [0.975, 0.502, 0.177]], [0.548, [0.974, 0.498, 0.172]], [0.550, [0.974, 0.498, 0.172]], [0.552, [0.972, 0.493, 0.167]], [0.554, [0.972, 0.493, 0.167]], [0.556, [0.971, 0.489, 0.162]], [0.558, [0.971, 0.489, 0.162]], [0.560, [0.969, 0.484, 0.157]], [0.562, [0.969, 0.484, 0.157]], [0.564, [0.968, 0.480, 0.152]], [0.566, [0.968, 0.480, 0.152]], [0.568, [0.966, 0.475, 0.147]], [0.569, [0.966, 0.475, 0.147]], [0.571, [0.965, 0.471, 0.142]], [0.573, [0.965, 0.471, 0.142]], [0.575, [0.963, 0.467, 0.137]], [0.577, [0.963, 0.467, 0.137]], [0.579, [0.962, 0.462, 0.132]], [0.581, [0.962, 0.462, 0.132]], [0.583, [0.960, 0.458, 0.127]], [0.585, [0.960, 0.458, 0.127]], [0.587, [0.959, 0.453, 0.122]], [0.589, [0.959, 0.453, 0.122]], [0.591, [0.957, 0.449, 0.117]], [0.593, [0.957, 0.449, 0.117]], [0.595, [0.956, 0.444, 0.112]], [0.597, [0.956, 0.444, 0.112]], [0.599, [0.955, 0.440, 0.107]], [0.601, [0.955, 0.440, 0.107]], [0.603, [0.953, 0.436, 0.102]], [0.605, [0.953, 0.436, 0.102]], [0.607, [0.952, 0.431, 0.097]], [0.609, [0.952, 0.431, 0.097]], [0.611, [0.950, 0.427, 0.092]], [0.613, [0.950, 0.427, 0.092]], [0.614, [0.949, 0.422, 0.086]], [0.616, [0.949, 0.422, 0.086]], [0.618, [0.947, 0.418, 0.081]], [0.620, [0.947, 0.418, 0.081]], [0.622, [0.946, 0.413, 0.076]], [0.624, [0.946, 0.413, 0.076]], [0.626, [0.943, 0.409, 0.073]], [0.628, [0.943, 0.409, 0.073]], [0.630, [0.940, 0.405, 0.071]], [0.632, [0.940, 0.405, 0.071]], [0.634, [0.937, 0.401, 0.069]], [0.636, [0.937, 0.401, 0.069]], [0.638, [0.934, 0.397, 0.066]], [0.640, [0.934, 0.397, 0.066]], [0.642, [0.931, 0.393, 0.064]], [0.644, [0.931, 0.393, 0.064]], [0.646, [0.928, 0.389, 0.062]], [0.648, [0.928, 0.389, 0.062]], [0.650, [0.926, 0.385, 0.060]], [0.652, [0.926, 0.385, 0.060]], [0.654, [0.923, 0.381, 0.058]], [0.656, [0.923, 0.381, 0.058]], [0.658, [0.920, 0.377, 0.055]], [0.659, [0.920, 0.377, 0.055]], [0.661, [0.917, 0.373, 0.053]], [0.663, [0.917, 0.373, 0.053]], [0.665, [0.914, 0.369, 0.051]], [0.667, [0.914, 0.369, 0.051]], [0.669, [0.911, 0.365, 0.049]], [0.671, [0.911, 0.365, 0.049]], [0.673, [0.908, 0.361, 0.047]], [0.675, [0.908, 0.361, 0.047]], [0.677, [0.905, 0.356, 0.044]], [0.679, [0.905, 0.356, 0.044]], [0.681, [0.902, 0.352, 0.042]], [0.683, [0.902, 0.352, 0.042]], [0.685, [0.899, 0.348, 0.040]], [0.687, [0.899, 0.348, 0.040]], [0.689, [0.896, 0.344, 0.038]], [0.691, [0.896, 0.344, 0.038]], [0.693, [0.893, 0.340, 0.035]], [0.695, [0.893, 0.340, 0.035]], [0.697, [0.890, 0.336, 0.033]], [0.699, [0.890, 0.336, 0.033]], [0.701, [0.887, 0.332, 0.031]], [0.703, [0.887, 0.332, 0.031]], [0.705, [0.884, 0.328, 0.029]], [0.706, [0.884, 0.328, 0.029]], [0.708, [0.881, 0.324, 0.027]], [0.710, [0.881, 0.324, 0.027]], [0.712, [0.878, 0.320, 0.024]], [0.714, [0.878, 0.320, 0.024]], [0.716, [0.875, 0.316, 0.022]], [0.718, [0.875, 0.316, 0.022]], [0.720, [0.872, 0.312, 0.020]], [0.722, [0.872, 0.312, 0.020]], [0.724, [0.869, 0.308, 0.018]], [0.726, [0.869, 0.308, 0.018]], [0.728, [0.866, 0.304, 0.016]], [0.730, [0.866, 0.304, 0.016]], [0.732, [0.864, 0.300, 0.013]], [0.734, [0.864, 0.300, 0.013]], [0.736, [0.861, 0.296, 0.011]], [0.738, [0.861, 0.296, 0.011]], [0.740, [0.858, 0.291, 0.009]], [0.742, [0.858, 0.291, 0.009]], [0.744, [0.855, 0.287, 0.007]], [0.746, [0.855, 0.287, 0.007]], [0.748, [0.852, 0.283, 0.004]], [0.750, [0.852, 0.283, 0.004]], [0.751, [0.846, 0.281, 0.004]], [0.753, [0.846, 0.281, 0.004]], [0.755, [0.840, 0.278, 0.004]], [0.757, [0.840, 0.278, 0.004]], [0.759, [0.834, 0.276, 0.005]], [0.761, [0.834, 0.276, 0.005]], [0.763, [0.827, 0.274, 0.005]], [0.765, [0.827, 0.274, 0.005]], [0.767, [0.821, 0.272, 0.005]], [0.769, [0.821, 0.272, 0.005]], [0.771, [0.815, 0.270, 0.005]], [0.773, [0.815, 0.270, 0.005]], [0.775, [0.809, 0.267, 0.006]], [0.777, [0.809, 0.267, 0.006]], [0.779, [0.802, 0.265, 0.006]], [0.781, [0.802, 0.265, 0.006]], [0.783, [0.796, 0.263, 0.006]], [0.785, [0.796, 0.263, 0.006]], [0.787, [0.790, 0.261, 0.006]], [0.789, [0.790, 0.261, 0.006]], [0.791, [0.784, 0.259, 0.007]], [0.793, [0.784, 0.259, 0.007]], [0.795, [0.777, 0.256, 0.007]], [0.796, [0.777, 0.256, 0.007]], [0.798, [0.771, 0.254, 0.007]], [0.800, [0.771, 0.254, 0.007]], [0.802, [0.765, 0.252, 0.007]], [0.804, [0.765, 0.252, 0.007]], [0.806, [0.758, 0.250, 0.008]], [0.808, [0.758, 0.250, 0.008]], [0.810, [0.752, 0.247, 0.008]], [0.812, [0.752, 0.247, 0.008]], [0.814, [0.746, 0.245, 0.008]], [0.816, [0.746, 0.245, 0.008]], [0.818, [0.740, 0.243, 0.008]], [0.820, [0.740, 0.243, 0.008]], [0.822, [0.733, 0.241, 0.009]], [0.824, [0.733, 0.241, 0.009]], [0.826, [0.727, 0.239, 0.009]], [0.828, [0.727, 0.239, 0.009]], [0.830, [0.721, 0.236, 0.009]], [0.832, [0.721, 0.236, 0.009]], [0.834, [0.715, 0.234, 0.009]], [0.836, [0.715, 0.234, 0.009]], [0.838, [0.708, 0.232, 0.010]], [0.840, [0.708, 0.232, 0.010]], [0.841, [0.702, 0.230, 0.010]], [0.843, [0.702, 0.230, 0.010]], [0.845, [0.696, 0.228, 0.010]], [0.847, [0.696, 0.228, 0.010]], [0.849, [0.689, 0.225, 0.010]], [0.851, [0.689, 0.225, 0.010]], [0.853, [0.683, 0.223, 0.011]], [0.855, [0.683, 0.223, 0.011]], [0.857, [0.677, 0.221, 0.011]], [0.859, [0.677, 0.221, 0.011]], [0.861, [0.671, 0.219, 0.011]], [0.863, [0.671, 0.219, 0.011]], [0.865, [0.664, 0.216, 0.011]], [0.867, [0.664, 0.216, 0.011]], [0.869, [0.658, 0.214, 0.011]], [0.871, [0.658, 0.214, 0.011]], [0.873, [0.652, 0.212, 0.012]], [0.875, [0.652, 0.212, 0.012]], [0.877, [0.647, 0.210, 0.012]], [0.879, [0.647, 0.210, 0.012]], [0.881, [0.642, 0.208, 0.012]], [0.883, [0.642, 0.208, 0.012]], [0.885, [0.637, 0.206, 0.012]], [0.886, [0.637, 0.206, 0.012]], [0.888, [0.632, 0.205, 0.012]], [0.890, [0.632, 0.205, 0.012]], [0.892, [0.628, 0.203, 0.012]], [0.894, [0.628, 0.203, 0.012]], [0.896, [0.623, 0.201, 0.012]], [0.898, [0.623, 0.201, 0.012]], [0.900, [0.618, 0.199, 0.013]], [0.902, [0.618, 0.199, 0.013]], [0.904, [0.613, 0.197, 0.013]], [0.906, [0.613, 0.197, 0.013]], [0.908, [0.608, 0.195, 0.013]], [0.910, [0.608, 0.195, 0.013]], [0.912, [0.604, 0.194, 0.013]], [0.914, [0.604, 0.194, 0.013]], [0.916, [0.599, 0.192, 0.013]], [0.918, [0.599, 0.192, 0.013]], [0.920, [0.594, 0.190, 0.013]], [0.922, [0.594, 0.190, 0.013]], [0.924, [0.589, 0.188, 0.013]], [0.926, [0.589, 0.188, 0.013]], [0.928, [0.584, 0.186, 0.013]], [0.930, [0.584, 0.186, 0.013]], [0.932, [0.580, 0.184, 0.014]], [0.933, [0.580, 0.184, 0.014]], [0.935, [0.575, 0.182, 0.014]], [0.937, [0.575, 0.182, 0.014]], [0.939, [0.570, 0.181, 0.014]], [0.941, [0.570, 0.181, 0.014]], [0.943, [0.565, 0.179, 0.014]], [0.945, [0.565, 0.179, 0.014]], [0.947, [0.560, 0.177, 0.014]], [0.949, [0.560, 0.177, 0.014]], [0.951, [0.556, 0.175, 0.014]], [0.953, [0.556, 0.175, 0.014]], [0.955, [0.551, 0.173, 0.014]], [0.957, [0.551, 0.173, 0.014]], [0.959, [0.546, 0.171, 0.014]], [0.961, [0.546, 0.171, 0.014]], [0.963, [0.541, 0.170, 0.015]], [0.965, [0.541, 0.170, 0.015]], [0.967, [0.536, 0.168, 0.015]], [0.969, [0.536, 0.168, 0.015]], [0.971, [0.532, 0.166, 0.015]], [0.973, [0.532, 0.166, 0.015]], [0.975, [0.527, 0.164, 0.015]], [0.977, [0.527, 0.164, 0.015]], [0.978, [0.522, 0.162, 0.015]], [0.980, [0.522, 0.162, 0.015]], [0.982, [0.517, 0.160, 0.015]], [0.984, [0.517, 0.160, 0.015]], [0.986, [0.512, 0.158, 0.015]], [0.988, [0.512, 0.158, 0.015]], [0.990, [0.508, 0.157, 0.015]], [0.992, [0.508, 0.157, 0.015]], [0.994, [0.503, 0.155, 0.016]], [0.996, [0.503, 0.155, 0.016]], [0.998, [0.498, 0.153, 0.016]], [1.000, [0.498, 0.153, 0.016]]]; +var PuBu = [[0.000, [1.000, 0.969, 0.984]], [0.002, [1.000, 0.969, 0.984]], [0.004, [0.998, 0.967, 0.983]], [0.006, [0.998, 0.967, 0.983]], [0.008, [0.995, 0.965, 0.982]], [0.010, [0.995, 0.965, 0.982]], [0.012, [0.993, 0.963, 0.981]], [0.014, [0.993, 0.963, 0.981]], [0.016, [0.991, 0.961, 0.980]], [0.018, [0.991, 0.961, 0.980]], [0.020, [0.988, 0.959, 0.979]], [0.022, [0.988, 0.959, 0.979]], [0.023, [0.986, 0.957, 0.978]], [0.025, [0.986, 0.957, 0.978]], [0.027, [0.984, 0.955, 0.977]], [0.029, [0.984, 0.955, 0.977]], [0.031, [0.981, 0.953, 0.975]], [0.033, [0.981, 0.953, 0.975]], [0.035, [0.979, 0.951, 0.974]], [0.037, [0.979, 0.951, 0.974]], [0.039, [0.977, 0.949, 0.973]], [0.041, [0.977, 0.949, 0.973]], [0.043, [0.974, 0.947, 0.972]], [0.045, [0.974, 0.947, 0.972]], [0.047, [0.972, 0.945, 0.971]], [0.049, [0.972, 0.945, 0.971]], [0.051, [0.970, 0.943, 0.970]], [0.053, [0.970, 0.943, 0.970]], [0.055, [0.967, 0.941, 0.969]], [0.057, [0.967, 0.941, 0.969]], [0.059, [0.965, 0.939, 0.968]], [0.061, [0.965, 0.939, 0.968]], [0.063, [0.963, 0.937, 0.967]], [0.065, [0.963, 0.937, 0.967]], [0.067, [0.960, 0.935, 0.965]], [0.068, [0.960, 0.935, 0.965]], [0.070, [0.958, 0.933, 0.964]], [0.072, [0.958, 0.933, 0.964]], [0.074, [0.956, 0.931, 0.963]], [0.076, [0.956, 0.931, 0.963]], [0.078, [0.953, 0.929, 0.962]], [0.080, [0.953, 0.929, 0.962]], [0.082, [0.951, 0.927, 0.961]], [0.084, [0.951, 0.927, 0.961]], [0.086, [0.949, 0.925, 0.960]], [0.088, [0.949, 0.925, 0.960]], [0.090, [0.946, 0.923, 0.959]], [0.092, [0.946, 0.923, 0.959]], [0.094, [0.944, 0.921, 0.958]], [0.096, [0.944, 0.921, 0.958]], [0.098, [0.942, 0.919, 0.957]], [0.100, [0.942, 0.919, 0.957]], [0.102, [0.939, 0.917, 0.956]], [0.104, [0.939, 0.917, 0.956]], [0.106, [0.937, 0.915, 0.954]], [0.108, [0.937, 0.915, 0.954]], [0.110, [0.935, 0.914, 0.953]], [0.112, [0.935, 0.914, 0.953]], [0.114, [0.932, 0.912, 0.952]], [0.115, [0.932, 0.912, 0.952]], [0.117, [0.930, 0.910, 0.951]], [0.119, [0.930, 0.910, 0.951]], [0.121, [0.928, 0.908, 0.950]], [0.123, [0.928, 0.908, 0.950]], [0.125, [0.925, 0.906, 0.949]], [0.127, [0.925, 0.906, 0.949]], [0.129, [0.922, 0.903, 0.947]], [0.131, [0.922, 0.903, 0.947]], [0.133, [0.918, 0.900, 0.946]], [0.135, [0.918, 0.900, 0.946]], [0.137, [0.915, 0.897, 0.944]], [0.139, [0.915, 0.897, 0.944]], [0.141, [0.911, 0.895, 0.943]], [0.143, [0.911, 0.895, 0.943]], [0.145, [0.908, 0.892, 0.941]], [0.147, [0.908, 0.892, 0.941]], [0.149, [0.904, 0.889, 0.940]], [0.151, [0.904, 0.889, 0.940]], [0.153, [0.901, 0.887, 0.939]], [0.155, [0.901, 0.887, 0.939]], [0.157, [0.898, 0.884, 0.937]], [0.159, [0.898, 0.884, 0.937]], [0.160, [0.894, 0.881, 0.936]], [0.162, [0.894, 0.881, 0.936]], [0.164, [0.891, 0.878, 0.934]], [0.166, [0.891, 0.878, 0.934]], [0.168, [0.887, 0.876, 0.933]], [0.170, [0.887, 0.876, 0.933]], [0.172, [0.884, 0.873, 0.931]], [0.174, [0.884, 0.873, 0.931]], [0.176, [0.880, 0.870, 0.930]], [0.178, [0.880, 0.870, 0.930]], [0.180, [0.877, 0.868, 0.928]], [0.182, [0.877, 0.868, 0.928]], [0.184, [0.873, 0.865, 0.927]], [0.186, [0.873, 0.865, 0.927]], [0.188, [0.870, 0.862, 0.925]], [0.190, [0.870, 0.862, 0.925]], [0.192, [0.866, 0.860, 0.924]], [0.194, [0.866, 0.860, 0.924]], [0.196, [0.863, 0.857, 0.922]], [0.198, [0.863, 0.857, 0.922]], [0.200, [0.860, 0.854, 0.921]], [0.202, [0.860, 0.854, 0.921]], [0.204, [0.856, 0.851, 0.919]], [0.205, [0.856, 0.851, 0.919]], [0.207, [0.853, 0.849, 0.918]], [0.209, [0.853, 0.849, 0.918]], [0.211, [0.849, 0.846, 0.916]], [0.213, [0.849, 0.846, 0.916]], [0.215, [0.846, 0.843, 0.915]], [0.217, [0.846, 0.843, 0.915]], [0.219, [0.842, 0.841, 0.913]], [0.221, [0.842, 0.841, 0.913]], [0.223, [0.839, 0.838, 0.912]], [0.225, [0.839, 0.838, 0.912]], [0.227, [0.835, 0.835, 0.910]], [0.229, [0.835, 0.835, 0.910]], [0.231, [0.832, 0.832, 0.909]], [0.233, [0.832, 0.832, 0.909]], [0.235, [0.829, 0.830, 0.907]], [0.237, [0.829, 0.830, 0.907]], [0.239, [0.825, 0.827, 0.906]], [0.241, [0.825, 0.827, 0.906]], [0.243, [0.822, 0.824, 0.905]], [0.245, [0.822, 0.824, 0.905]], [0.247, [0.818, 0.822, 0.903]], [0.249, [0.818, 0.822, 0.903]], [0.250, [0.814, 0.819, 0.902]], [0.252, [0.814, 0.819, 0.902]], [0.254, [0.809, 0.817, 0.900]], [0.256, [0.809, 0.817, 0.900]], [0.258, [0.804, 0.814, 0.899]], [0.260, [0.804, 0.814, 0.899]], [0.262, [0.799, 0.812, 0.898]], [0.264, [0.799, 0.812, 0.898]], [0.266, [0.794, 0.809, 0.896]], [0.268, [0.794, 0.809, 0.896]], [0.270, [0.789, 0.807, 0.895]], [0.272, [0.789, 0.807, 0.895]], [0.274, [0.783, 0.804, 0.894]], [0.276, [0.783, 0.804, 0.894]], [0.278, [0.778, 0.802, 0.892]], [0.280, [0.778, 0.802, 0.892]], [0.282, [0.773, 0.799, 0.891]], [0.284, [0.773, 0.799, 0.891]], [0.286, [0.768, 0.797, 0.889]], [0.288, [0.768, 0.797, 0.889]], [0.290, [0.763, 0.794, 0.888]], [0.292, [0.763, 0.794, 0.888]], [0.294, [0.758, 0.792, 0.887]], [0.295, [0.758, 0.792, 0.887]], [0.297, [0.752, 0.789, 0.885]], [0.299, [0.752, 0.789, 0.885]], [0.301, [0.747, 0.787, 0.884]], [0.303, [0.747, 0.787, 0.884]], [0.305, [0.742, 0.785, 0.883]], [0.307, [0.742, 0.785, 0.883]], [0.309, [0.737, 0.782, 0.881]], [0.311, [0.737, 0.782, 0.881]], [0.313, [0.732, 0.780, 0.880]], [0.315, [0.732, 0.780, 0.880]], [0.317, [0.727, 0.777, 0.879]], [0.319, [0.727, 0.777, 0.879]], [0.321, [0.721, 0.775, 0.877]], [0.323, [0.721, 0.775, 0.877]], [0.325, [0.716, 0.772, 0.876]], [0.327, [0.716, 0.772, 0.876]], [0.329, [0.711, 0.770, 0.875]], [0.331, [0.711, 0.770, 0.875]], [0.333, [0.706, 0.767, 0.873]], [0.335, [0.706, 0.767, 0.873]], [0.337, [0.701, 0.765, 0.872]], [0.339, [0.701, 0.765, 0.872]], [0.341, [0.696, 0.762, 0.870]], [0.342, [0.696, 0.762, 0.870]], [0.344, [0.690, 0.760, 0.869]], [0.346, [0.690, 0.760, 0.869]], [0.348, [0.685, 0.757, 0.868]], [0.350, [0.685, 0.757, 0.868]], [0.352, [0.680, 0.755, 0.866]], [0.354, [0.680, 0.755, 0.866]], [0.356, [0.675, 0.753, 0.865]], [0.358, [0.675, 0.753, 0.865]], [0.360, [0.670, 0.750, 0.864]], [0.362, [0.670, 0.750, 0.864]], [0.364, [0.665, 0.748, 0.862]], [0.366, [0.665, 0.748, 0.862]], [0.368, [0.659, 0.745, 0.861]], [0.370, [0.659, 0.745, 0.861]], [0.372, [0.654, 0.743, 0.860]], [0.374, [0.654, 0.743, 0.860]], [0.376, [0.649, 0.740, 0.858]], [0.378, [0.649, 0.740, 0.858]], [0.380, [0.643, 0.738, 0.857]], [0.382, [0.643, 0.738, 0.857]], [0.384, [0.636, 0.735, 0.855]], [0.386, [0.636, 0.735, 0.855]], [0.387, [0.630, 0.733, 0.854]], [0.389, [0.630, 0.733, 0.854]], [0.391, [0.624, 0.730, 0.852]], [0.393, [0.624, 0.730, 0.852]], [0.395, [0.618, 0.728, 0.851]], [0.397, [0.618, 0.728, 0.851]], [0.399, [0.612, 0.725, 0.849]], [0.401, [0.612, 0.725, 0.849]], [0.403, [0.606, 0.723, 0.848]], [0.405, [0.606, 0.723, 0.848]], [0.407, [0.599, 0.721, 0.846]], [0.409, [0.599, 0.721, 0.846]], [0.411, [0.593, 0.718, 0.845]], [0.413, [0.593, 0.718, 0.845]], [0.415, [0.587, 0.716, 0.844]], [0.417, [0.587, 0.716, 0.844]], [0.419, [0.581, 0.713, 0.842]], [0.421, [0.581, 0.713, 0.842]], [0.423, [0.575, 0.711, 0.841]], [0.425, [0.575, 0.711, 0.841]], [0.427, [0.569, 0.708, 0.839]], [0.429, [0.569, 0.708, 0.839]], [0.431, [0.563, 0.706, 0.838]], [0.432, [0.563, 0.706, 0.838]], [0.434, [0.556, 0.703, 0.836]], [0.436, [0.556, 0.703, 0.836]], [0.438, [0.550, 0.701, 0.835]], [0.440, [0.550, 0.701, 0.835]], [0.442, [0.544, 0.698, 0.833]], [0.444, [0.544, 0.698, 0.833]], [0.446, [0.538, 0.696, 0.832]], [0.448, [0.538, 0.696, 0.832]], [0.450, [0.532, 0.694, 0.830]], [0.452, [0.532, 0.694, 0.830]], [0.454, [0.526, 0.691, 0.829]], [0.456, [0.526, 0.691, 0.829]], [0.458, [0.519, 0.689, 0.827]], [0.460, [0.519, 0.689, 0.827]], [0.462, [0.513, 0.686, 0.826]], [0.464, [0.513, 0.686, 0.826]], [0.466, [0.507, 0.684, 0.824]], [0.468, [0.507, 0.684, 0.824]], [0.470, [0.501, 0.681, 0.823]], [0.472, [0.501, 0.681, 0.823]], [0.474, [0.495, 0.679, 0.821]], [0.476, [0.495, 0.679, 0.821]], [0.477, [0.489, 0.676, 0.820]], [0.479, [0.489, 0.676, 0.820]], [0.481, [0.483, 0.674, 0.818]], [0.483, [0.483, 0.674, 0.818]], [0.485, [0.476, 0.671, 0.817]], [0.487, [0.476, 0.671, 0.817]], [0.489, [0.470, 0.669, 0.815]], [0.491, [0.470, 0.669, 0.815]], [0.493, [0.464, 0.666, 0.814]], [0.495, [0.464, 0.666, 0.814]], [0.497, [0.458, 0.664, 0.813]], [0.499, [0.458, 0.664, 0.813]], [0.501, [0.451, 0.661, 0.811]], [0.503, [0.451, 0.661, 0.811]], [0.505, [0.443, 0.658, 0.809]], [0.507, [0.443, 0.658, 0.809]], [0.509, [0.436, 0.655, 0.807]], [0.511, [0.436, 0.655, 0.807]], [0.513, [0.428, 0.652, 0.805]], [0.515, [0.428, 0.652, 0.805]], [0.517, [0.421, 0.649, 0.803]], [0.519, [0.421, 0.649, 0.803]], [0.521, [0.413, 0.646, 0.802]], [0.523, [0.413, 0.646, 0.802]], [0.524, [0.405, 0.643, 0.800]], [0.526, [0.405, 0.643, 0.800]], [0.528, [0.398, 0.640, 0.798]], [0.530, [0.398, 0.640, 0.798]], [0.532, [0.390, 0.637, 0.796]], [0.534, [0.390, 0.637, 0.796]], [0.536, [0.382, 0.634, 0.794]], [0.538, [0.382, 0.634, 0.794]], [0.540, [0.375, 0.630, 0.792]], [0.542, [0.375, 0.630, 0.792]], [0.544, [0.367, 0.627, 0.791]], [0.546, [0.367, 0.627, 0.791]], [0.548, [0.360, 0.624, 0.789]], [0.550, [0.360, 0.624, 0.789]], [0.552, [0.352, 0.621, 0.787]], [0.554, [0.352, 0.621, 0.787]], [0.556, [0.344, 0.618, 0.785]], [0.558, [0.344, 0.618, 0.785]], [0.560, [0.337, 0.615, 0.783]], [0.562, [0.337, 0.615, 0.783]], [0.564, [0.329, 0.612, 0.781]], [0.566, [0.329, 0.612, 0.781]], [0.568, [0.321, 0.609, 0.779]], [0.569, [0.321, 0.609, 0.779]], [0.571, [0.314, 0.606, 0.778]], [0.573, [0.314, 0.606, 0.778]], [0.575, [0.306, 0.603, 0.776]], [0.577, [0.306, 0.603, 0.776]], [0.579, [0.299, 0.600, 0.774]], [0.581, [0.299, 0.600, 0.774]], [0.583, [0.291, 0.597, 0.772]], [0.585, [0.291, 0.597, 0.772]], [0.587, [0.283, 0.594, 0.770]], [0.589, [0.283, 0.594, 0.770]], [0.591, [0.276, 0.590, 0.768]], [0.593, [0.276, 0.590, 0.768]], [0.595, [0.268, 0.587, 0.767]], [0.597, [0.268, 0.587, 0.767]], [0.599, [0.260, 0.584, 0.765]], [0.601, [0.260, 0.584, 0.765]], [0.603, [0.253, 0.581, 0.763]], [0.605, [0.253, 0.581, 0.763]], [0.607, [0.245, 0.578, 0.761]], [0.609, [0.245, 0.578, 0.761]], [0.611, [0.238, 0.575, 0.759]], [0.613, [0.238, 0.575, 0.759]], [0.614, [0.230, 0.572, 0.757]], [0.616, [0.230, 0.572, 0.757]], [0.618, [0.222, 0.569, 0.755]], [0.620, [0.222, 0.569, 0.755]], [0.622, [0.215, 0.566, 0.754]], [0.624, [0.215, 0.566, 0.754]], [0.626, [0.208, 0.562, 0.752]], [0.628, [0.208, 0.562, 0.752]], [0.630, [0.202, 0.558, 0.750]], [0.632, [0.202, 0.558, 0.750]], [0.634, [0.196, 0.554, 0.748]], [0.636, [0.196, 0.554, 0.748]], [0.638, [0.190, 0.550, 0.746]], [0.640, [0.190, 0.550, 0.746]], [0.642, [0.184, 0.546, 0.744]], [0.644, [0.184, 0.546, 0.744]], [0.646, [0.178, 0.543, 0.742]], [0.648, [0.178, 0.543, 0.742]], [0.650, [0.172, 0.539, 0.740]], [0.652, [0.172, 0.539, 0.740]], [0.654, [0.166, 0.535, 0.738]], [0.656, [0.166, 0.535, 0.738]], [0.658, [0.160, 0.531, 0.736]], [0.659, [0.160, 0.531, 0.736]], [0.661, [0.154, 0.527, 0.734]], [0.663, [0.154, 0.527, 0.734]], [0.665, [0.148, 0.523, 0.732]], [0.667, [0.148, 0.523, 0.732]], [0.669, [0.142, 0.519, 0.730]], [0.671, [0.142, 0.519, 0.730]], [0.673, [0.136, 0.515, 0.728]], [0.675, [0.136, 0.515, 0.728]], [0.677, [0.130, 0.511, 0.726]], [0.679, [0.130, 0.511, 0.726]], [0.681, [0.124, 0.507, 0.724]], [0.683, [0.124, 0.507, 0.724]], [0.685, [0.118, 0.503, 0.722]], [0.687, [0.118, 0.503, 0.722]], [0.689, [0.112, 0.499, 0.720]], [0.691, [0.112, 0.499, 0.720]], [0.693, [0.106, 0.495, 0.718]], [0.695, [0.106, 0.495, 0.718]], [0.697, [0.099, 0.491, 0.716]], [0.699, [0.099, 0.491, 0.716]], [0.701, [0.093, 0.487, 0.714]], [0.703, [0.093, 0.487, 0.714]], [0.705, [0.087, 0.484, 0.712]], [0.706, [0.087, 0.484, 0.712]], [0.708, [0.081, 0.480, 0.710]], [0.710, [0.081, 0.480, 0.710]], [0.712, [0.075, 0.476, 0.708]], [0.714, [0.075, 0.476, 0.708]], [0.716, [0.069, 0.472, 0.706]], [0.718, [0.069, 0.472, 0.706]], [0.720, [0.063, 0.468, 0.704]], [0.722, [0.063, 0.468, 0.704]], [0.724, [0.057, 0.464, 0.702]], [0.726, [0.057, 0.464, 0.702]], [0.728, [0.051, 0.460, 0.701]], [0.730, [0.051, 0.460, 0.701]], [0.732, [0.045, 0.456, 0.699]], [0.734, [0.045, 0.456, 0.699]], [0.736, [0.039, 0.452, 0.697]], [0.738, [0.039, 0.452, 0.697]], [0.740, [0.033, 0.448, 0.695]], [0.742, [0.033, 0.448, 0.695]], [0.744, [0.027, 0.444, 0.693]], [0.746, [0.027, 0.444, 0.693]], [0.748, [0.021, 0.440, 0.691]], [0.750, [0.021, 0.440, 0.691]], [0.751, [0.020, 0.437, 0.687]], [0.753, [0.020, 0.437, 0.687]], [0.755, [0.019, 0.434, 0.683]], [0.757, [0.019, 0.434, 0.683]], [0.759, [0.019, 0.432, 0.678]], [0.761, [0.019, 0.432, 0.678]], [0.763, [0.019, 0.429, 0.674]], [0.765, [0.019, 0.429, 0.674]], [0.767, [0.019, 0.426, 0.670]], [0.769, [0.019, 0.426, 0.670]], [0.771, [0.019, 0.424, 0.665]], [0.773, [0.019, 0.424, 0.665]], [0.775, [0.019, 0.421, 0.661]], [0.777, [0.019, 0.421, 0.661]], [0.779, [0.019, 0.418, 0.657]], [0.781, [0.019, 0.418, 0.657]], [0.783, [0.019, 0.416, 0.653]], [0.785, [0.019, 0.416, 0.653]], [0.787, [0.018, 0.413, 0.648]], [0.789, [0.018, 0.413, 0.648]], [0.791, [0.018, 0.410, 0.644]], [0.793, [0.018, 0.410, 0.644]], [0.795, [0.018, 0.407, 0.640]], [0.796, [0.018, 0.407, 0.640]], [0.798, [0.018, 0.405, 0.635]], [0.800, [0.018, 0.405, 0.635]], [0.802, [0.018, 0.402, 0.631]], [0.804, [0.018, 0.402, 0.631]], [0.806, [0.018, 0.399, 0.627]], [0.808, [0.018, 0.399, 0.627]], [0.810, [0.018, 0.397, 0.622]], [0.812, [0.018, 0.397, 0.622]], [0.814, [0.018, 0.394, 0.618]], [0.816, [0.018, 0.394, 0.618]], [0.818, [0.017, 0.391, 0.614]], [0.820, [0.017, 0.391, 0.614]], [0.822, [0.017, 0.388, 0.609]], [0.824, [0.017, 0.388, 0.609]], [0.826, [0.017, 0.386, 0.605]], [0.828, [0.017, 0.386, 0.605]], [0.830, [0.017, 0.383, 0.601]], [0.832, [0.017, 0.383, 0.601]], [0.834, [0.017, 0.380, 0.597]], [0.836, [0.017, 0.380, 0.597]], [0.838, [0.017, 0.378, 0.592]], [0.840, [0.017, 0.378, 0.592]], [0.841, [0.017, 0.375, 0.588]], [0.843, [0.017, 0.375, 0.588]], [0.845, [0.017, 0.372, 0.584]], [0.847, [0.017, 0.372, 0.584]], [0.849, [0.016, 0.370, 0.579]], [0.851, [0.016, 0.370, 0.579]], [0.853, [0.016, 0.367, 0.575]], [0.855, [0.016, 0.367, 0.575]], [0.857, [0.016, 0.364, 0.571]], [0.859, [0.016, 0.364, 0.571]], [0.861, [0.016, 0.361, 0.566]], [0.863, [0.016, 0.361, 0.566]], [0.865, [0.016, 0.359, 0.562]], [0.867, [0.016, 0.359, 0.562]], [0.869, [0.016, 0.356, 0.558]], [0.871, [0.016, 0.356, 0.558]], [0.873, [0.016, 0.353, 0.553]], [0.875, [0.016, 0.353, 0.553]], [0.877, [0.015, 0.349, 0.547]], [0.879, [0.015, 0.349, 0.547]], [0.881, [0.015, 0.345, 0.541]], [0.883, [0.015, 0.345, 0.541]], [0.885, [0.015, 0.341, 0.534]], [0.886, [0.015, 0.341, 0.534]], [0.888, [0.015, 0.337, 0.528]], [0.890, [0.015, 0.337, 0.528]], [0.892, [0.014, 0.333, 0.521]], [0.894, [0.014, 0.333, 0.521]], [0.896, [0.014, 0.328, 0.515]], [0.898, [0.014, 0.328, 0.515]], [0.900, [0.014, 0.324, 0.508]], [0.902, [0.014, 0.324, 0.508]], [0.904, [0.014, 0.320, 0.502]], [0.906, [0.014, 0.320, 0.502]], [0.908, [0.014, 0.316, 0.495]], [0.910, [0.014, 0.316, 0.495]], [0.912, [0.013, 0.312, 0.489]], [0.914, [0.013, 0.312, 0.489]], [0.916, [0.013, 0.307, 0.482]], [0.918, [0.013, 0.307, 0.482]], [0.920, [0.013, 0.303, 0.476]], [0.922, [0.013, 0.303, 0.476]], [0.924, [0.013, 0.299, 0.469]], [0.926, [0.013, 0.299, 0.469]], [0.928, [0.012, 0.295, 0.462]], [0.930, [0.012, 0.295, 0.462]], [0.932, [0.012, 0.291, 0.456]], [0.933, [0.012, 0.291, 0.456]], [0.935, [0.012, 0.287, 0.449]], [0.937, [0.012, 0.287, 0.449]], [0.939, [0.012, 0.282, 0.443]], [0.941, [0.012, 0.282, 0.443]], [0.943, [0.011, 0.278, 0.436]], [0.945, [0.011, 0.278, 0.436]], [0.947, [0.011, 0.274, 0.430]], [0.949, [0.011, 0.274, 0.430]], [0.951, [0.011, 0.270, 0.423]], [0.953, [0.011, 0.270, 0.423]], [0.955, [0.011, 0.266, 0.417]], [0.957, [0.011, 0.266, 0.417]], [0.959, [0.010, 0.261, 0.410]], [0.961, [0.010, 0.261, 0.410]], [0.963, [0.010, 0.257, 0.404]], [0.965, [0.010, 0.257, 0.404]], [0.967, [0.010, 0.253, 0.397]], [0.969, [0.010, 0.253, 0.397]], [0.971, [0.010, 0.249, 0.391]], [0.973, [0.010, 0.249, 0.391]], [0.975, [0.009, 0.245, 0.384]], [0.977, [0.009, 0.245, 0.384]], [0.978, [0.009, 0.241, 0.378]], [0.980, [0.009, 0.241, 0.378]], [0.982, [0.009, 0.236, 0.371]], [0.984, [0.009, 0.236, 0.371]], [0.986, [0.009, 0.232, 0.365]], [0.988, [0.009, 0.232, 0.365]], [0.990, [0.008, 0.228, 0.358]], [0.992, [0.008, 0.228, 0.358]], [0.994, [0.008, 0.224, 0.352]], [0.996, [0.008, 0.224, 0.352]], [0.998, [0.008, 0.220, 0.345]], [1.000, [0.008, 0.220, 0.345]]]; +var PuBuGn = [[0.000, [1.000, 0.969, 0.984]], [0.002, [1.000, 0.969, 0.984]], [0.004, [0.998, 0.966, 0.983]], [0.006, [0.998, 0.966, 0.983]], [0.008, [0.995, 0.963, 0.982]], [0.010, [0.995, 0.963, 0.982]], [0.012, [0.993, 0.961, 0.980]], [0.014, [0.993, 0.961, 0.980]], [0.016, [0.991, 0.958, 0.979]], [0.018, [0.991, 0.958, 0.979]], [0.020, [0.988, 0.956, 0.978]], [0.022, [0.988, 0.956, 0.978]], [0.023, [0.986, 0.953, 0.976]], [0.025, [0.986, 0.953, 0.976]], [0.027, [0.984, 0.951, 0.975]], [0.029, [0.984, 0.951, 0.975]], [0.031, [0.981, 0.948, 0.973]], [0.033, [0.981, 0.948, 0.973]], [0.035, [0.979, 0.945, 0.972]], [0.037, [0.979, 0.945, 0.972]], [0.039, [0.977, 0.943, 0.971]], [0.041, [0.977, 0.943, 0.971]], [0.043, [0.974, 0.940, 0.969]], [0.045, [0.974, 0.940, 0.969]], [0.047, [0.972, 0.938, 0.968]], [0.049, [0.972, 0.938, 0.968]], [0.051, [0.970, 0.935, 0.967]], [0.053, [0.970, 0.935, 0.967]], [0.055, [0.967, 0.932, 0.965]], [0.057, [0.967, 0.932, 0.965]], [0.059, [0.965, 0.930, 0.964]], [0.061, [0.965, 0.930, 0.964]], [0.063, [0.963, 0.927, 0.963]], [0.065, [0.963, 0.927, 0.963]], [0.067, [0.960, 0.925, 0.961]], [0.068, [0.960, 0.925, 0.961]], [0.070, [0.958, 0.922, 0.960]], [0.072, [0.958, 0.922, 0.960]], [0.074, [0.956, 0.920, 0.959]], [0.076, [0.956, 0.920, 0.959]], [0.078, [0.953, 0.917, 0.957]], [0.080, [0.953, 0.917, 0.957]], [0.082, [0.951, 0.914, 0.956]], [0.084, [0.951, 0.914, 0.956]], [0.086, [0.949, 0.912, 0.955]], [0.088, [0.949, 0.912, 0.955]], [0.090, [0.946, 0.909, 0.953]], [0.092, [0.946, 0.909, 0.953]], [0.094, [0.944, 0.907, 0.952]], [0.096, [0.944, 0.907, 0.952]], [0.098, [0.942, 0.904, 0.950]], [0.100, [0.942, 0.904, 0.950]], [0.102, [0.939, 0.901, 0.949]], [0.104, [0.939, 0.901, 0.949]], [0.106, [0.937, 0.899, 0.948]], [0.108, [0.937, 0.899, 0.948]], [0.110, [0.935, 0.896, 0.946]], [0.112, [0.935, 0.896, 0.946]], [0.114, [0.932, 0.894, 0.945]], [0.115, [0.932, 0.894, 0.945]], [0.117, [0.930, 0.891, 0.944]], [0.119, [0.930, 0.891, 0.944]], [0.121, [0.928, 0.889, 0.942]], [0.123, [0.928, 0.889, 0.942]], [0.125, [0.925, 0.886, 0.941]], [0.127, [0.925, 0.886, 0.941]], [0.129, [0.922, 0.884, 0.940]], [0.131, [0.922, 0.884, 0.940]], [0.133, [0.918, 0.882, 0.939]], [0.135, [0.918, 0.882, 0.939]], [0.137, [0.915, 0.880, 0.937]], [0.139, [0.915, 0.880, 0.937]], [0.141, [0.911, 0.878, 0.936]], [0.143, [0.911, 0.878, 0.936]], [0.145, [0.908, 0.876, 0.935]], [0.147, [0.908, 0.876, 0.935]], [0.149, [0.904, 0.873, 0.934]], [0.151, [0.904, 0.873, 0.934]], [0.153, [0.901, 0.871, 0.932]], [0.155, [0.901, 0.871, 0.932]], [0.157, [0.898, 0.869, 0.931]], [0.159, [0.898, 0.869, 0.931]], [0.160, [0.894, 0.867, 0.930]], [0.162, [0.894, 0.867, 0.930]], [0.164, [0.891, 0.865, 0.929]], [0.166, [0.891, 0.865, 0.929]], [0.168, [0.887, 0.863, 0.927]], [0.170, [0.887, 0.863, 0.927]], [0.172, [0.884, 0.861, 0.926]], [0.174, [0.884, 0.861, 0.926]], [0.176, [0.880, 0.859, 0.925]], [0.178, [0.880, 0.859, 0.925]], [0.180, [0.877, 0.857, 0.924]], [0.182, [0.877, 0.857, 0.924]], [0.184, [0.873, 0.855, 0.923]], [0.186, [0.873, 0.855, 0.923]], [0.188, [0.870, 0.853, 0.921]], [0.190, [0.870, 0.853, 0.921]], [0.192, [0.866, 0.850, 0.920]], [0.194, [0.866, 0.850, 0.920]], [0.196, [0.863, 0.848, 0.919]], [0.198, [0.863, 0.848, 0.919]], [0.200, [0.860, 0.846, 0.918]], [0.202, [0.860, 0.846, 0.918]], [0.204, [0.856, 0.844, 0.916]], [0.205, [0.856, 0.844, 0.916]], [0.207, [0.853, 0.842, 0.915]], [0.209, [0.853, 0.842, 0.915]], [0.211, [0.849, 0.840, 0.914]], [0.213, [0.849, 0.840, 0.914]], [0.215, [0.846, 0.838, 0.913]], [0.217, [0.846, 0.838, 0.913]], [0.219, [0.842, 0.836, 0.911]], [0.221, [0.842, 0.836, 0.911]], [0.223, [0.839, 0.834, 0.910]], [0.225, [0.839, 0.834, 0.910]], [0.227, [0.835, 0.832, 0.909]], [0.229, [0.835, 0.832, 0.909]], [0.231, [0.832, 0.830, 0.908]], [0.233, [0.832, 0.830, 0.908]], [0.235, [0.829, 0.827, 0.907]], [0.237, [0.829, 0.827, 0.907]], [0.239, [0.825, 0.825, 0.905]], [0.241, [0.825, 0.825, 0.905]], [0.243, [0.822, 0.823, 0.904]], [0.245, [0.822, 0.823, 0.904]], [0.247, [0.818, 0.821, 0.903]], [0.249, [0.818, 0.821, 0.903]], [0.250, [0.814, 0.819, 0.902]], [0.252, [0.814, 0.819, 0.902]], [0.254, [0.809, 0.817, 0.900]], [0.256, [0.809, 0.817, 0.900]], [0.258, [0.804, 0.814, 0.899]], [0.260, [0.804, 0.814, 0.899]], [0.262, [0.799, 0.812, 0.898]], [0.264, [0.799, 0.812, 0.898]], [0.266, [0.794, 0.809, 0.896]], [0.268, [0.794, 0.809, 0.896]], [0.270, [0.789, 0.807, 0.895]], [0.272, [0.789, 0.807, 0.895]], [0.274, [0.783, 0.804, 0.894]], [0.276, [0.783, 0.804, 0.894]], [0.278, [0.778, 0.802, 0.892]], [0.280, [0.778, 0.802, 0.892]], [0.282, [0.773, 0.799, 0.891]], [0.284, [0.773, 0.799, 0.891]], [0.286, [0.768, 0.797, 0.889]], [0.288, [0.768, 0.797, 0.889]], [0.290, [0.763, 0.794, 0.888]], [0.292, [0.763, 0.794, 0.888]], [0.294, [0.758, 0.792, 0.887]], [0.295, [0.758, 0.792, 0.887]], [0.297, [0.752, 0.789, 0.885]], [0.299, [0.752, 0.789, 0.885]], [0.301, [0.747, 0.787, 0.884]], [0.303, [0.747, 0.787, 0.884]], [0.305, [0.742, 0.785, 0.883]], [0.307, [0.742, 0.785, 0.883]], [0.309, [0.737, 0.782, 0.881]], [0.311, [0.737, 0.782, 0.881]], [0.313, [0.732, 0.780, 0.880]], [0.315, [0.732, 0.780, 0.880]], [0.317, [0.727, 0.777, 0.879]], [0.319, [0.727, 0.777, 0.879]], [0.321, [0.721, 0.775, 0.877]], [0.323, [0.721, 0.775, 0.877]], [0.325, [0.716, 0.772, 0.876]], [0.327, [0.716, 0.772, 0.876]], [0.329, [0.711, 0.770, 0.875]], [0.331, [0.711, 0.770, 0.875]], [0.333, [0.706, 0.767, 0.873]], [0.335, [0.706, 0.767, 0.873]], [0.337, [0.701, 0.765, 0.872]], [0.339, [0.701, 0.765, 0.872]], [0.341, [0.696, 0.762, 0.870]], [0.342, [0.696, 0.762, 0.870]], [0.344, [0.690, 0.760, 0.869]], [0.346, [0.690, 0.760, 0.869]], [0.348, [0.685, 0.757, 0.868]], [0.350, [0.685, 0.757, 0.868]], [0.352, [0.680, 0.755, 0.866]], [0.354, [0.680, 0.755, 0.866]], [0.356, [0.675, 0.753, 0.865]], [0.358, [0.675, 0.753, 0.865]], [0.360, [0.670, 0.750, 0.864]], [0.362, [0.670, 0.750, 0.864]], [0.364, [0.665, 0.748, 0.862]], [0.366, [0.665, 0.748, 0.862]], [0.368, [0.659, 0.745, 0.861]], [0.370, [0.659, 0.745, 0.861]], [0.372, [0.654, 0.743, 0.860]], [0.374, [0.654, 0.743, 0.860]], [0.376, [0.648, 0.740, 0.858]], [0.378, [0.648, 0.740, 0.858]], [0.380, [0.640, 0.738, 0.857]], [0.382, [0.640, 0.738, 0.857]], [0.384, [0.633, 0.735, 0.855]], [0.386, [0.633, 0.735, 0.855]], [0.387, [0.625, 0.733, 0.854]], [0.389, [0.625, 0.733, 0.854]], [0.391, [0.617, 0.730, 0.852]], [0.393, [0.617, 0.730, 0.852]], [0.395, [0.609, 0.728, 0.851]], [0.397, [0.609, 0.728, 0.851]], [0.399, [0.602, 0.725, 0.849]], [0.401, [0.602, 0.725, 0.849]], [0.403, [0.594, 0.723, 0.848]], [0.405, [0.594, 0.723, 0.848]], [0.407, [0.586, 0.721, 0.846]], [0.409, [0.586, 0.721, 0.846]], [0.411, [0.578, 0.718, 0.845]], [0.413, [0.578, 0.718, 0.845]], [0.415, [0.571, 0.716, 0.844]], [0.417, [0.571, 0.716, 0.844]], [0.419, [0.563, 0.713, 0.842]], [0.421, [0.563, 0.713, 0.842]], [0.423, [0.555, 0.711, 0.841]], [0.425, [0.555, 0.711, 0.841]], [0.427, [0.547, 0.708, 0.839]], [0.429, [0.547, 0.708, 0.839]], [0.431, [0.540, 0.706, 0.838]], [0.432, [0.540, 0.706, 0.838]], [0.434, [0.532, 0.703, 0.836]], [0.436, [0.532, 0.703, 0.836]], [0.438, [0.524, 0.701, 0.835]], [0.440, [0.524, 0.701, 0.835]], [0.442, [0.516, 0.698, 0.833]], [0.444, [0.516, 0.698, 0.833]], [0.446, [0.509, 0.696, 0.832]], [0.448, [0.509, 0.696, 0.832]], [0.450, [0.501, 0.694, 0.830]], [0.452, [0.501, 0.694, 0.830]], [0.454, [0.493, 0.691, 0.829]], [0.456, [0.493, 0.691, 0.829]], [0.458, [0.485, 0.689, 0.827]], [0.460, [0.485, 0.689, 0.827]], [0.462, [0.478, 0.686, 0.826]], [0.464, [0.478, 0.686, 0.826]], [0.466, [0.470, 0.684, 0.824]], [0.468, [0.470, 0.684, 0.824]], [0.470, [0.462, 0.681, 0.823]], [0.472, [0.462, 0.681, 0.823]], [0.474, [0.454, 0.679, 0.821]], [0.476, [0.454, 0.679, 0.821]], [0.477, [0.447, 0.676, 0.820]], [0.479, [0.447, 0.676, 0.820]], [0.481, [0.439, 0.674, 0.818]], [0.483, [0.439, 0.674, 0.818]], [0.485, [0.431, 0.671, 0.817]], [0.487, [0.431, 0.671, 0.817]], [0.489, [0.423, 0.669, 0.815]], [0.491, [0.423, 0.669, 0.815]], [0.493, [0.416, 0.666, 0.814]], [0.495, [0.416, 0.666, 0.814]], [0.497, [0.408, 0.664, 0.813]], [0.499, [0.408, 0.664, 0.813]], [0.501, [0.401, 0.661, 0.811]], [0.503, [0.401, 0.661, 0.811]], [0.505, [0.395, 0.658, 0.809]], [0.507, [0.395, 0.658, 0.809]], [0.509, [0.389, 0.655, 0.807]], [0.511, [0.389, 0.655, 0.807]], [0.513, [0.383, 0.652, 0.805]], [0.515, [0.383, 0.652, 0.805]], [0.517, [0.377, 0.649, 0.803]], [0.519, [0.377, 0.649, 0.803]], [0.521, [0.371, 0.646, 0.802]], [0.523, [0.371, 0.646, 0.802]], [0.524, [0.365, 0.643, 0.800]], [0.526, [0.365, 0.643, 0.800]], [0.528, [0.359, 0.640, 0.798]], [0.530, [0.359, 0.640, 0.798]], [0.532, [0.353, 0.637, 0.796]], [0.534, [0.353, 0.637, 0.796]], [0.536, [0.347, 0.634, 0.794]], [0.538, [0.347, 0.634, 0.794]], [0.540, [0.341, 0.630, 0.792]], [0.542, [0.341, 0.630, 0.792]], [0.544, [0.335, 0.627, 0.791]], [0.546, [0.335, 0.627, 0.791]], [0.548, [0.329, 0.624, 0.789]], [0.550, [0.329, 0.624, 0.789]], [0.552, [0.323, 0.621, 0.787]], [0.554, [0.323, 0.621, 0.787]], [0.556, [0.317, 0.618, 0.785]], [0.558, [0.317, 0.618, 0.785]], [0.560, [0.310, 0.615, 0.783]], [0.562, [0.310, 0.615, 0.783]], [0.564, [0.304, 0.612, 0.781]], [0.566, [0.304, 0.612, 0.781]], [0.568, [0.298, 0.609, 0.779]], [0.569, [0.298, 0.609, 0.779]], [0.571, [0.292, 0.606, 0.778]], [0.573, [0.292, 0.606, 0.778]], [0.575, [0.286, 0.603, 0.776]], [0.577, [0.286, 0.603, 0.776]], [0.579, [0.280, 0.600, 0.774]], [0.581, [0.280, 0.600, 0.774]], [0.583, [0.274, 0.597, 0.772]], [0.585, [0.274, 0.597, 0.772]], [0.587, [0.268, 0.594, 0.770]], [0.589, [0.268, 0.594, 0.770]], [0.591, [0.262, 0.590, 0.768]], [0.593, [0.262, 0.590, 0.768]], [0.595, [0.256, 0.587, 0.767]], [0.597, [0.256, 0.587, 0.767]], [0.599, [0.250, 0.584, 0.765]], [0.601, [0.250, 0.584, 0.765]], [0.603, [0.244, 0.581, 0.763]], [0.605, [0.244, 0.581, 0.763]], [0.607, [0.238, 0.578, 0.761]], [0.609, [0.238, 0.578, 0.761]], [0.611, [0.232, 0.575, 0.759]], [0.613, [0.232, 0.575, 0.759]], [0.614, [0.226, 0.572, 0.757]], [0.616, [0.226, 0.572, 0.757]], [0.618, [0.220, 0.569, 0.755]], [0.620, [0.220, 0.569, 0.755]], [0.622, [0.214, 0.566, 0.754]], [0.624, [0.214, 0.566, 0.754]], [0.626, [0.208, 0.564, 0.749]], [0.628, [0.208, 0.564, 0.749]], [0.630, [0.201, 0.562, 0.742]], [0.632, [0.201, 0.562, 0.742]], [0.634, [0.195, 0.560, 0.736]], [0.636, [0.195, 0.560, 0.736]], [0.638, [0.189, 0.558, 0.729]], [0.640, [0.189, 0.558, 0.729]], [0.642, [0.182, 0.556, 0.722]], [0.644, [0.182, 0.556, 0.722]], [0.646, [0.176, 0.554, 0.716]], [0.648, [0.176, 0.554, 0.716]], [0.650, [0.169, 0.552, 0.709]], [0.652, [0.169, 0.552, 0.709]], [0.654, [0.163, 0.551, 0.702]], [0.656, [0.163, 0.551, 0.702]], [0.658, [0.157, 0.549, 0.696]], [0.659, [0.157, 0.549, 0.696]], [0.661, [0.150, 0.547, 0.689]], [0.663, [0.150, 0.547, 0.689]], [0.665, [0.144, 0.545, 0.682]], [0.667, [0.144, 0.545, 0.682]], [0.669, [0.137, 0.543, 0.676]], [0.671, [0.137, 0.543, 0.676]], [0.673, [0.131, 0.541, 0.669]], [0.675, [0.131, 0.541, 0.669]], [0.677, [0.125, 0.540, 0.662]], [0.679, [0.125, 0.540, 0.662]], [0.681, [0.118, 0.538, 0.656]], [0.683, [0.118, 0.538, 0.656]], [0.685, [0.112, 0.536, 0.649]], [0.687, [0.112, 0.536, 0.649]], [0.689, [0.105, 0.534, 0.642]], [0.691, [0.105, 0.534, 0.642]], [0.693, [0.099, 0.532, 0.636]], [0.695, [0.099, 0.532, 0.636]], [0.697, [0.093, 0.530, 0.629]], [0.699, [0.093, 0.530, 0.629]], [0.701, [0.086, 0.528, 0.623]], [0.703, [0.086, 0.528, 0.623]], [0.705, [0.080, 0.527, 0.616]], [0.706, [0.080, 0.527, 0.616]], [0.708, [0.073, 0.525, 0.609]], [0.710, [0.073, 0.525, 0.609]], [0.712, [0.067, 0.523, 0.603]], [0.714, [0.067, 0.523, 0.603]], [0.716, [0.061, 0.521, 0.596]], [0.718, [0.061, 0.521, 0.596]], [0.720, [0.054, 0.519, 0.589]], [0.722, [0.054, 0.519, 0.589]], [0.724, [0.048, 0.517, 0.583]], [0.726, [0.048, 0.517, 0.583]], [0.728, [0.041, 0.516, 0.576]], [0.730, [0.041, 0.516, 0.576]], [0.732, [0.035, 0.514, 0.569]], [0.734, [0.035, 0.514, 0.569]], [0.736, [0.029, 0.512, 0.563]], [0.738, [0.029, 0.512, 0.563]], [0.740, [0.022, 0.510, 0.556]], [0.742, [0.022, 0.510, 0.556]], [0.744, [0.016, 0.508, 0.549]], [0.746, [0.016, 0.508, 0.549]], [0.748, [0.009, 0.506, 0.543]], [0.750, [0.009, 0.506, 0.543]], [0.751, [0.008, 0.504, 0.537]], [0.753, [0.008, 0.504, 0.537]], [0.755, [0.008, 0.501, 0.531]], [0.757, [0.008, 0.501, 0.531]], [0.759, [0.008, 0.499, 0.525]], [0.761, [0.008, 0.499, 0.525]], [0.763, [0.007, 0.496, 0.519]], [0.765, [0.007, 0.496, 0.519]], [0.767, [0.007, 0.494, 0.513]], [0.769, [0.007, 0.494, 0.513]], [0.771, [0.007, 0.491, 0.507]], [0.773, [0.007, 0.491, 0.507]], [0.775, [0.007, 0.488, 0.500]], [0.777, [0.007, 0.488, 0.500]], [0.779, [0.007, 0.486, 0.494]], [0.781, [0.007, 0.486, 0.494]], [0.783, [0.007, 0.483, 0.488]], [0.785, [0.007, 0.483, 0.488]], [0.787, [0.007, 0.481, 0.482]], [0.789, [0.007, 0.481, 0.482]], [0.791, [0.007, 0.478, 0.476]], [0.793, [0.007, 0.478, 0.476]], [0.795, [0.006, 0.476, 0.470]], [0.796, [0.006, 0.476, 0.470]], [0.798, [0.006, 0.473, 0.464]], [0.800, [0.006, 0.473, 0.464]], [0.802, [0.006, 0.470, 0.458]], [0.804, [0.006, 0.470, 0.458]], [0.806, [0.006, 0.468, 0.452]], [0.808, [0.006, 0.468, 0.452]], [0.810, [0.006, 0.465, 0.446]], [0.812, [0.006, 0.465, 0.446]], [0.814, [0.006, 0.463, 0.440]], [0.816, [0.006, 0.463, 0.440]], [0.818, [0.006, 0.460, 0.434]], [0.820, [0.006, 0.460, 0.434]], [0.822, [0.006, 0.457, 0.428]], [0.824, [0.006, 0.457, 0.428]], [0.826, [0.005, 0.455, 0.422]], [0.828, [0.005, 0.455, 0.422]], [0.830, [0.005, 0.452, 0.416]], [0.832, [0.005, 0.452, 0.416]], [0.834, [0.005, 0.450, 0.410]], [0.836, [0.005, 0.450, 0.410]], [0.838, [0.005, 0.447, 0.404]], [0.840, [0.005, 0.447, 0.404]], [0.841, [0.005, 0.445, 0.398]], [0.843, [0.005, 0.445, 0.398]], [0.845, [0.005, 0.442, 0.392]], [0.847, [0.005, 0.442, 0.392]], [0.849, [0.005, 0.439, 0.386]], [0.851, [0.005, 0.439, 0.386]], [0.853, [0.005, 0.437, 0.380]], [0.855, [0.005, 0.437, 0.380]], [0.857, [0.004, 0.434, 0.374]], [0.859, [0.004, 0.434, 0.374]], [0.861, [0.004, 0.432, 0.368]], [0.863, [0.004, 0.432, 0.368]], [0.865, [0.004, 0.429, 0.362]], [0.867, [0.004, 0.429, 0.362]], [0.869, [0.004, 0.426, 0.356]], [0.871, [0.004, 0.426, 0.356]], [0.873, [0.004, 0.424, 0.350]], [0.875, [0.004, 0.424, 0.350]], [0.877, [0.004, 0.419, 0.345]], [0.879, [0.004, 0.419, 0.345]], [0.881, [0.004, 0.415, 0.341]], [0.883, [0.004, 0.415, 0.341]], [0.885, [0.004, 0.410, 0.337]], [0.886, [0.004, 0.410, 0.337]], [0.888, [0.004, 0.405, 0.332]], [0.890, [0.004, 0.405, 0.332]], [0.892, [0.004, 0.401, 0.328]], [0.894, [0.004, 0.401, 0.328]], [0.896, [0.004, 0.396, 0.324]], [0.898, [0.004, 0.396, 0.324]], [0.900, [0.004, 0.391, 0.319]], [0.902, [0.004, 0.391, 0.319]], [0.904, [0.004, 0.387, 0.315]], [0.906, [0.004, 0.387, 0.315]], [0.908, [0.004, 0.382, 0.311]], [0.910, [0.004, 0.382, 0.311]], [0.912, [0.004, 0.377, 0.306]], [0.914, [0.004, 0.377, 0.306]], [0.916, [0.004, 0.373, 0.302]], [0.918, [0.004, 0.373, 0.302]], [0.920, [0.004, 0.368, 0.298]], [0.922, [0.004, 0.368, 0.298]], [0.924, [0.004, 0.363, 0.294]], [0.926, [0.004, 0.363, 0.294]], [0.928, [0.004, 0.359, 0.289]], [0.930, [0.004, 0.359, 0.289]], [0.932, [0.004, 0.354, 0.285]], [0.933, [0.004, 0.354, 0.285]], [0.935, [0.004, 0.349, 0.281]], [0.937, [0.004, 0.349, 0.281]], [0.939, [0.004, 0.345, 0.276]], [0.941, [0.004, 0.345, 0.276]], [0.943, [0.004, 0.340, 0.272]], [0.945, [0.004, 0.340, 0.272]], [0.947, [0.004, 0.335, 0.268]], [0.949, [0.004, 0.335, 0.268]], [0.951, [0.004, 0.331, 0.263]], [0.953, [0.004, 0.331, 0.263]], [0.955, [0.004, 0.326, 0.259]], [0.957, [0.004, 0.326, 0.259]], [0.959, [0.004, 0.321, 0.255]], [0.961, [0.004, 0.321, 0.255]], [0.963, [0.004, 0.317, 0.251]], [0.965, [0.004, 0.317, 0.251]], [0.967, [0.004, 0.312, 0.246]], [0.969, [0.004, 0.312, 0.246]], [0.971, [0.004, 0.307, 0.242]], [0.973, [0.004, 0.307, 0.242]], [0.975, [0.004, 0.303, 0.238]], [0.977, [0.004, 0.303, 0.238]], [0.978, [0.004, 0.298, 0.233]], [0.980, [0.004, 0.298, 0.233]], [0.982, [0.004, 0.293, 0.229]], [0.984, [0.004, 0.293, 0.229]], [0.986, [0.004, 0.289, 0.225]], [0.988, [0.004, 0.289, 0.225]], [0.990, [0.004, 0.284, 0.220]], [0.992, [0.004, 0.284, 0.220]], [0.994, [0.004, 0.279, 0.216]], [0.996, [0.004, 0.279, 0.216]], [0.998, [0.004, 0.275, 0.212]], [1.000, [0.004, 0.275, 0.212]]]; +var PuRd = [[0.000, [0.969, 0.957, 0.976]], [0.002, [0.969, 0.957, 0.976]], [0.004, [0.967, 0.955, 0.975]], [0.006, [0.967, 0.955, 0.975]], [0.008, [0.965, 0.952, 0.974]], [0.010, [0.965, 0.952, 0.974]], [0.012, [0.963, 0.950, 0.973]], [0.014, [0.963, 0.950, 0.973]], [0.016, [0.961, 0.948, 0.972]], [0.018, [0.961, 0.948, 0.972]], [0.020, [0.959, 0.945, 0.970]], [0.022, [0.959, 0.945, 0.970]], [0.023, [0.957, 0.943, 0.969]], [0.025, [0.957, 0.943, 0.969]], [0.027, [0.955, 0.940, 0.968]], [0.029, [0.955, 0.940, 0.968]], [0.031, [0.953, 0.938, 0.967]], [0.033, [0.953, 0.938, 0.967]], [0.035, [0.951, 0.936, 0.965]], [0.037, [0.951, 0.936, 0.965]], [0.039, [0.949, 0.933, 0.964]], [0.041, [0.949, 0.933, 0.964]], [0.043, [0.947, 0.931, 0.963]], [0.045, [0.947, 0.931, 0.963]], [0.047, [0.945, 0.929, 0.962]], [0.049, [0.945, 0.929, 0.962]], [0.051, [0.943, 0.926, 0.960]], [0.053, [0.943, 0.926, 0.960]], [0.055, [0.941, 0.924, 0.959]], [0.057, [0.941, 0.924, 0.959]], [0.059, [0.939, 0.922, 0.958]], [0.061, [0.939, 0.922, 0.958]], [0.063, [0.937, 0.919, 0.957]], [0.065, [0.937, 0.919, 0.957]], [0.067, [0.935, 0.917, 0.956]], [0.068, [0.935, 0.917, 0.956]], [0.070, [0.933, 0.915, 0.954]], [0.072, [0.933, 0.915, 0.954]], [0.074, [0.931, 0.912, 0.953]], [0.076, [0.931, 0.912, 0.953]], [0.078, [0.929, 0.910, 0.952]], [0.080, [0.929, 0.910, 0.952]], [0.082, [0.927, 0.908, 0.951]], [0.084, [0.927, 0.908, 0.951]], [0.086, [0.925, 0.905, 0.949]], [0.088, [0.925, 0.905, 0.949]], [0.090, [0.923, 0.903, 0.948]], [0.092, [0.923, 0.903, 0.948]], [0.094, [0.921, 0.901, 0.947]], [0.096, [0.921, 0.901, 0.947]], [0.098, [0.919, 0.898, 0.946]], [0.100, [0.919, 0.898, 0.946]], [0.102, [0.917, 0.896, 0.944]], [0.104, [0.917, 0.896, 0.944]], [0.106, [0.915, 0.894, 0.943]], [0.108, [0.915, 0.894, 0.943]], [0.110, [0.914, 0.891, 0.942]], [0.112, [0.914, 0.891, 0.942]], [0.114, [0.912, 0.889, 0.941]], [0.115, [0.912, 0.889, 0.941]], [0.117, [0.910, 0.887, 0.940]], [0.119, [0.910, 0.887, 0.940]], [0.121, [0.908, 0.884, 0.938]], [0.123, [0.908, 0.884, 0.938]], [0.125, [0.906, 0.882, 0.937]], [0.127, [0.906, 0.882, 0.937]], [0.129, [0.903, 0.877, 0.934]], [0.131, [0.903, 0.877, 0.934]], [0.133, [0.901, 0.872, 0.932]], [0.135, [0.901, 0.872, 0.932]], [0.137, [0.899, 0.867, 0.929]], [0.139, [0.899, 0.867, 0.929]], [0.141, [0.896, 0.862, 0.927]], [0.143, [0.896, 0.862, 0.927]], [0.145, [0.894, 0.857, 0.924]], [0.147, [0.894, 0.857, 0.924]], [0.149, [0.892, 0.852, 0.921]], [0.151, [0.892, 0.852, 0.921]], [0.153, [0.889, 0.847, 0.919]], [0.155, [0.889, 0.847, 0.919]], [0.157, [0.887, 0.842, 0.916]], [0.159, [0.887, 0.842, 0.916]], [0.160, [0.885, 0.837, 0.914]], [0.162, [0.885, 0.837, 0.914]], [0.164, [0.882, 0.833, 0.911]], [0.166, [0.882, 0.833, 0.911]], [0.168, [0.880, 0.828, 0.909]], [0.170, [0.880, 0.828, 0.909]], [0.172, [0.878, 0.823, 0.906]], [0.174, [0.878, 0.823, 0.906]], [0.176, [0.875, 0.818, 0.903]], [0.178, [0.875, 0.818, 0.903]], [0.180, [0.873, 0.813, 0.901]], [0.182, [0.873, 0.813, 0.901]], [0.184, [0.871, 0.808, 0.898]], [0.186, [0.871, 0.808, 0.898]], [0.188, [0.868, 0.803, 0.896]], [0.190, [0.868, 0.803, 0.896]], [0.192, [0.866, 0.798, 0.893]], [0.194, [0.866, 0.798, 0.893]], [0.196, [0.864, 0.793, 0.890]], [0.198, [0.864, 0.793, 0.890]], [0.200, [0.861, 0.788, 0.888]], [0.202, [0.861, 0.788, 0.888]], [0.204, [0.859, 0.783, 0.885]], [0.205, [0.859, 0.783, 0.885]], [0.207, [0.857, 0.778, 0.883]], [0.209, [0.857, 0.778, 0.883]], [0.211, [0.854, 0.773, 0.880]], [0.213, [0.854, 0.773, 0.880]], [0.215, [0.852, 0.769, 0.878]], [0.217, [0.852, 0.769, 0.878]], [0.219, [0.849, 0.764, 0.875]], [0.221, [0.849, 0.764, 0.875]], [0.223, [0.847, 0.759, 0.872]], [0.225, [0.847, 0.759, 0.872]], [0.227, [0.845, 0.754, 0.870]], [0.229, [0.845, 0.754, 0.870]], [0.231, [0.842, 0.749, 0.867]], [0.233, [0.842, 0.749, 0.867]], [0.235, [0.840, 0.744, 0.865]], [0.237, [0.840, 0.744, 0.865]], [0.239, [0.838, 0.739, 0.862]], [0.241, [0.838, 0.739, 0.862]], [0.243, [0.835, 0.734, 0.859]], [0.245, [0.835, 0.734, 0.859]], [0.247, [0.833, 0.729, 0.857]], [0.249, [0.833, 0.729, 0.857]], [0.250, [0.831, 0.724, 0.854]], [0.252, [0.831, 0.724, 0.854]], [0.254, [0.830, 0.720, 0.852]], [0.256, [0.830, 0.720, 0.852]], [0.258, [0.828, 0.715, 0.850]], [0.260, [0.828, 0.715, 0.850]], [0.262, [0.827, 0.711, 0.847]], [0.264, [0.827, 0.711, 0.847]], [0.266, [0.826, 0.706, 0.845]], [0.268, [0.826, 0.706, 0.845]], [0.270, [0.824, 0.702, 0.843]], [0.272, [0.824, 0.702, 0.843]], [0.274, [0.823, 0.697, 0.840]], [0.276, [0.823, 0.697, 0.840]], [0.278, [0.822, 0.692, 0.838]], [0.280, [0.822, 0.692, 0.838]], [0.282, [0.820, 0.688, 0.836]], [0.284, [0.820, 0.688, 0.836]], [0.286, [0.819, 0.683, 0.833]], [0.288, [0.819, 0.683, 0.833]], [0.290, [0.818, 0.679, 0.831]], [0.292, [0.818, 0.679, 0.831]], [0.294, [0.816, 0.674, 0.829]], [0.295, [0.816, 0.674, 0.829]], [0.297, [0.815, 0.670, 0.826]], [0.299, [0.815, 0.670, 0.826]], [0.301, [0.813, 0.665, 0.824]], [0.303, [0.813, 0.665, 0.824]], [0.305, [0.812, 0.661, 0.822]], [0.307, [0.812, 0.661, 0.822]], [0.309, [0.811, 0.656, 0.819]], [0.311, [0.811, 0.656, 0.819]], [0.313, [0.809, 0.652, 0.817]], [0.315, [0.809, 0.652, 0.817]], [0.317, [0.808, 0.647, 0.815]], [0.319, [0.808, 0.647, 0.815]], [0.321, [0.807, 0.642, 0.812]], [0.323, [0.807, 0.642, 0.812]], [0.325, [0.805, 0.638, 0.810]], [0.327, [0.805, 0.638, 0.810]], [0.329, [0.804, 0.633, 0.808]], [0.331, [0.804, 0.633, 0.808]], [0.333, [0.803, 0.629, 0.805]], [0.335, [0.803, 0.629, 0.805]], [0.337, [0.801, 0.624, 0.803]], [0.339, [0.801, 0.624, 0.803]], [0.341, [0.800, 0.620, 0.801]], [0.342, [0.800, 0.620, 0.801]], [0.344, [0.799, 0.615, 0.798]], [0.346, [0.799, 0.615, 0.798]], [0.348, [0.797, 0.611, 0.796]], [0.350, [0.797, 0.611, 0.796]], [0.352, [0.796, 0.606, 0.794]], [0.354, [0.796, 0.606, 0.794]], [0.356, [0.794, 0.601, 0.791]], [0.358, [0.794, 0.601, 0.791]], [0.360, [0.793, 0.597, 0.789]], [0.362, [0.793, 0.597, 0.789]], [0.364, [0.792, 0.592, 0.787]], [0.366, [0.792, 0.592, 0.787]], [0.368, [0.790, 0.588, 0.784]], [0.370, [0.790, 0.588, 0.784]], [0.372, [0.789, 0.583, 0.782]], [0.374, [0.789, 0.583, 0.782]], [0.376, [0.789, 0.578, 0.779]], [0.378, [0.789, 0.578, 0.779]], [0.380, [0.792, 0.572, 0.777]], [0.382, [0.792, 0.572, 0.777]], [0.384, [0.795, 0.567, 0.774]], [0.386, [0.795, 0.567, 0.774]], [0.387, [0.797, 0.561, 0.771]], [0.389, [0.797, 0.561, 0.771]], [0.391, [0.800, 0.555, 0.768]], [0.393, [0.800, 0.555, 0.768]], [0.395, [0.803, 0.549, 0.765]], [0.397, [0.803, 0.549, 0.765]], [0.399, [0.805, 0.544, 0.762]], [0.401, [0.805, 0.544, 0.762]], [0.403, [0.808, 0.538, 0.760]], [0.405, [0.808, 0.538, 0.760]], [0.407, [0.811, 0.532, 0.757]], [0.409, [0.811, 0.532, 0.757]], [0.411, [0.814, 0.526, 0.754]], [0.413, [0.814, 0.526, 0.754]], [0.415, [0.816, 0.520, 0.751]], [0.417, [0.816, 0.520, 0.751]], [0.419, [0.819, 0.515, 0.748]], [0.421, [0.819, 0.515, 0.748]], [0.423, [0.822, 0.509, 0.745]], [0.425, [0.822, 0.509, 0.745]], [0.427, [0.824, 0.503, 0.743]], [0.429, [0.824, 0.503, 0.743]], [0.431, [0.827, 0.497, 0.740]], [0.432, [0.827, 0.497, 0.740]], [0.434, [0.830, 0.491, 0.737]], [0.436, [0.830, 0.491, 0.737]], [0.438, [0.833, 0.486, 0.734]], [0.440, [0.833, 0.486, 0.734]], [0.442, [0.835, 0.480, 0.731]], [0.444, [0.835, 0.480, 0.731]], [0.446, [0.838, 0.474, 0.728]], [0.448, [0.838, 0.474, 0.728]], [0.450, [0.841, 0.468, 0.726]], [0.452, [0.841, 0.468, 0.726]], [0.454, [0.843, 0.463, 0.723]], [0.456, [0.843, 0.463, 0.723]], [0.458, [0.846, 0.457, 0.720]], [0.460, [0.846, 0.457, 0.720]], [0.462, [0.849, 0.451, 0.717]], [0.464, [0.849, 0.451, 0.717]], [0.466, [0.852, 0.445, 0.714]], [0.468, [0.852, 0.445, 0.714]], [0.470, [0.854, 0.439, 0.711]], [0.472, [0.854, 0.439, 0.711]], [0.474, [0.857, 0.434, 0.709]], [0.476, [0.857, 0.434, 0.709]], [0.477, [0.860, 0.428, 0.706]], [0.479, [0.860, 0.428, 0.706]], [0.481, [0.862, 0.422, 0.703]], [0.483, [0.862, 0.422, 0.703]], [0.485, [0.865, 0.416, 0.700]], [0.487, [0.865, 0.416, 0.700]], [0.489, [0.868, 0.411, 0.697]], [0.491, [0.868, 0.411, 0.697]], [0.493, [0.870, 0.405, 0.694]], [0.495, [0.870, 0.405, 0.694]], [0.497, [0.873, 0.399, 0.692]], [0.499, [0.873, 0.399, 0.692]], [0.501, [0.875, 0.392, 0.688]], [0.503, [0.875, 0.392, 0.688]], [0.505, [0.876, 0.385, 0.683]], [0.507, [0.876, 0.385, 0.683]], [0.509, [0.877, 0.378, 0.679]], [0.511, [0.877, 0.378, 0.679]], [0.513, [0.878, 0.370, 0.674]], [0.515, [0.878, 0.370, 0.674]], [0.517, [0.879, 0.363, 0.669]], [0.519, [0.879, 0.363, 0.669]], [0.521, [0.880, 0.355, 0.664]], [0.523, [0.880, 0.355, 0.664]], [0.524, [0.881, 0.348, 0.660]], [0.526, [0.881, 0.348, 0.660]], [0.528, [0.882, 0.341, 0.655]], [0.530, [0.882, 0.341, 0.655]], [0.532, [0.883, 0.333, 0.650]], [0.534, [0.883, 0.333, 0.650]], [0.536, [0.884, 0.326, 0.646]], [0.538, [0.884, 0.326, 0.646]], [0.540, [0.885, 0.319, 0.641]], [0.542, [0.885, 0.319, 0.641]], [0.544, [0.886, 0.311, 0.636]], [0.546, [0.886, 0.311, 0.636]], [0.548, [0.887, 0.304, 0.632]], [0.550, [0.887, 0.304, 0.632]], [0.552, [0.888, 0.296, 0.627]], [0.554, [0.888, 0.296, 0.627]], [0.556, [0.889, 0.289, 0.622]], [0.558, [0.889, 0.289, 0.622]], [0.560, [0.890, 0.282, 0.618]], [0.562, [0.890, 0.282, 0.618]], [0.564, [0.891, 0.274, 0.613]], [0.566, [0.891, 0.274, 0.613]], [0.568, [0.892, 0.267, 0.608]], [0.569, [0.892, 0.267, 0.608]], [0.571, [0.893, 0.260, 0.604]], [0.573, [0.893, 0.260, 0.604]], [0.575, [0.894, 0.252, 0.599]], [0.577, [0.894, 0.252, 0.599]], [0.579, [0.895, 0.245, 0.594]], [0.581, [0.895, 0.245, 0.594]], [0.583, [0.896, 0.237, 0.590]], [0.585, [0.896, 0.237, 0.590]], [0.587, [0.897, 0.230, 0.585]], [0.589, [0.897, 0.230, 0.585]], [0.591, [0.898, 0.223, 0.580]], [0.593, [0.898, 0.223, 0.580]], [0.595, [0.899, 0.215, 0.576]], [0.597, [0.899, 0.215, 0.576]], [0.599, [0.900, 0.208, 0.571]], [0.601, [0.900, 0.208, 0.571]], [0.603, [0.901, 0.200, 0.566]], [0.605, [0.901, 0.200, 0.566]], [0.607, [0.902, 0.193, 0.562]], [0.609, [0.902, 0.193, 0.562]], [0.611, [0.903, 0.186, 0.557]], [0.613, [0.903, 0.186, 0.557]], [0.614, [0.904, 0.178, 0.552]], [0.616, [0.904, 0.178, 0.552]], [0.618, [0.905, 0.171, 0.548]], [0.620, [0.905, 0.171, 0.548]], [0.622, [0.906, 0.164, 0.543]], [0.624, [0.906, 0.164, 0.543]], [0.626, [0.904, 0.159, 0.537]], [0.628, [0.904, 0.159, 0.537]], [0.630, [0.901, 0.156, 0.531]], [0.632, [0.901, 0.156, 0.531]], [0.634, [0.898, 0.153, 0.524]], [0.636, [0.898, 0.153, 0.524]], [0.638, [0.895, 0.151, 0.518]], [0.640, [0.895, 0.151, 0.518]], [0.642, [0.892, 0.148, 0.512]], [0.644, [0.892, 0.148, 0.512]], [0.646, [0.889, 0.145, 0.505]], [0.648, [0.889, 0.145, 0.505]], [0.650, [0.886, 0.142, 0.499]], [0.652, [0.886, 0.142, 0.499]], [0.654, [0.882, 0.139, 0.492]], [0.656, [0.882, 0.139, 0.492]], [0.658, [0.879, 0.136, 0.486]], [0.659, [0.879, 0.136, 0.486]], [0.661, [0.876, 0.134, 0.480]], [0.663, [0.876, 0.134, 0.480]], [0.665, [0.873, 0.131, 0.473]], [0.667, [0.873, 0.131, 0.473]], [0.669, [0.870, 0.128, 0.467]], [0.671, [0.870, 0.128, 0.467]], [0.673, [0.867, 0.125, 0.460]], [0.675, [0.867, 0.125, 0.460]], [0.677, [0.864, 0.122, 0.454]], [0.679, [0.864, 0.122, 0.454]], [0.681, [0.861, 0.119, 0.448]], [0.683, [0.861, 0.119, 0.448]], [0.685, [0.858, 0.117, 0.441]], [0.687, [0.858, 0.117, 0.441]], [0.689, [0.855, 0.114, 0.435]], [0.691, [0.855, 0.114, 0.435]], [0.693, [0.852, 0.111, 0.428]], [0.695, [0.852, 0.111, 0.428]], [0.697, [0.849, 0.108, 0.422]], [0.699, [0.849, 0.108, 0.422]], [0.701, [0.846, 0.105, 0.416]], [0.703, [0.846, 0.105, 0.416]], [0.705, [0.842, 0.102, 0.409]], [0.706, [0.842, 0.102, 0.409]], [0.708, [0.839, 0.100, 0.403]], [0.710, [0.839, 0.100, 0.403]], [0.712, [0.836, 0.097, 0.396]], [0.714, [0.836, 0.097, 0.396]], [0.716, [0.833, 0.094, 0.390]], [0.718, [0.833, 0.094, 0.390]], [0.720, [0.830, 0.091, 0.384]], [0.722, [0.830, 0.091, 0.384]], [0.724, [0.827, 0.088, 0.377]], [0.726, [0.827, 0.088, 0.377]], [0.728, [0.824, 0.085, 0.371]], [0.730, [0.824, 0.085, 0.371]], [0.732, [0.821, 0.083, 0.364]], [0.734, [0.821, 0.083, 0.364]], [0.736, [0.818, 0.080, 0.358]], [0.738, [0.818, 0.080, 0.358]], [0.740, [0.815, 0.077, 0.352]], [0.742, [0.815, 0.077, 0.352]], [0.744, [0.812, 0.074, 0.345]], [0.746, [0.812, 0.074, 0.345]], [0.748, [0.809, 0.071, 0.339]], [0.750, [0.809, 0.071, 0.339]], [0.751, [0.803, 0.069, 0.336]], [0.753, [0.803, 0.069, 0.336]], [0.755, [0.796, 0.067, 0.333]], [0.757, [0.796, 0.067, 0.333]], [0.759, [0.790, 0.064, 0.331]], [0.761, [0.790, 0.064, 0.331]], [0.763, [0.783, 0.062, 0.328]], [0.765, [0.783, 0.062, 0.328]], [0.767, [0.776, 0.060, 0.326]], [0.769, [0.776, 0.060, 0.326]], [0.771, [0.770, 0.058, 0.324]], [0.773, [0.770, 0.058, 0.324]], [0.775, [0.763, 0.056, 0.321]], [0.777, [0.763, 0.056, 0.321]], [0.779, [0.756, 0.053, 0.319]], [0.781, [0.756, 0.053, 0.319]], [0.783, [0.750, 0.051, 0.317]], [0.785, [0.750, 0.051, 0.317]], [0.787, [0.743, 0.049, 0.314]], [0.789, [0.743, 0.049, 0.314]], [0.791, [0.736, 0.047, 0.312]], [0.793, [0.736, 0.047, 0.312]], [0.795, [0.730, 0.045, 0.310]], [0.796, [0.730, 0.045, 0.310]], [0.798, [0.723, 0.042, 0.307]], [0.800, [0.723, 0.042, 0.307]], [0.802, [0.716, 0.040, 0.305]], [0.804, [0.716, 0.040, 0.305]], [0.806, [0.710, 0.038, 0.303]], [0.808, [0.710, 0.038, 0.303]], [0.810, [0.703, 0.036, 0.300]], [0.812, [0.703, 0.036, 0.300]], [0.814, [0.697, 0.033, 0.298]], [0.816, [0.697, 0.033, 0.298]], [0.818, [0.690, 0.031, 0.296]], [0.820, [0.690, 0.031, 0.296]], [0.822, [0.683, 0.029, 0.293]], [0.824, [0.683, 0.029, 0.293]], [0.826, [0.677, 0.027, 0.291]], [0.828, [0.677, 0.027, 0.291]], [0.830, [0.670, 0.025, 0.289]], [0.832, [0.670, 0.025, 0.289]], [0.834, [0.663, 0.022, 0.286]], [0.836, [0.663, 0.022, 0.286]], [0.838, [0.657, 0.020, 0.284]], [0.840, [0.657, 0.020, 0.284]], [0.841, [0.650, 0.018, 0.282]], [0.843, [0.650, 0.018, 0.282]], [0.845, [0.643, 0.016, 0.279]], [0.847, [0.643, 0.016, 0.279]], [0.849, [0.637, 0.014, 0.277]], [0.851, [0.637, 0.014, 0.277]], [0.853, [0.630, 0.011, 0.275]], [0.855, [0.630, 0.011, 0.275]], [0.857, [0.623, 0.009, 0.272]], [0.859, [0.623, 0.009, 0.272]], [0.861, [0.617, 0.007, 0.270]], [0.863, [0.617, 0.007, 0.270]], [0.865, [0.610, 0.005, 0.268]], [0.867, [0.610, 0.005, 0.268]], [0.869, [0.604, 0.002, 0.265]], [0.871, [0.604, 0.002, 0.265]], [0.873, [0.597, 0.000, 0.263]], [0.875, [0.597, 0.000, 0.263]], [0.877, [0.591, 0.000, 0.259]], [0.879, [0.591, 0.000, 0.259]], [0.881, [0.585, 0.000, 0.254]], [0.883, [0.585, 0.000, 0.254]], [0.885, [0.579, 0.000, 0.250]], [0.886, [0.579, 0.000, 0.250]], [0.888, [0.573, 0.000, 0.246]], [0.890, [0.573, 0.000, 0.246]], [0.892, [0.567, 0.000, 0.241]], [0.894, [0.567, 0.000, 0.241]], [0.896, [0.561, 0.000, 0.237]], [0.898, [0.561, 0.000, 0.237]], [0.900, [0.555, 0.000, 0.232]], [0.902, [0.555, 0.000, 0.232]], [0.904, [0.549, 0.000, 0.228]], [0.906, [0.549, 0.000, 0.228]], [0.908, [0.543, 0.000, 0.223]], [0.910, [0.543, 0.000, 0.223]], [0.912, [0.537, 0.000, 0.219]], [0.914, [0.537, 0.000, 0.219]], [0.916, [0.531, 0.000, 0.215]], [0.918, [0.531, 0.000, 0.215]], [0.920, [0.524, 0.000, 0.210]], [0.922, [0.524, 0.000, 0.210]], [0.924, [0.518, 0.000, 0.206]], [0.926, [0.518, 0.000, 0.206]], [0.928, [0.512, 0.000, 0.201]], [0.930, [0.512, 0.000, 0.201]], [0.932, [0.506, 0.000, 0.197]], [0.933, [0.506, 0.000, 0.197]], [0.935, [0.500, 0.000, 0.192]], [0.937, [0.500, 0.000, 0.192]], [0.939, [0.494, 0.000, 0.188]], [0.941, [0.494, 0.000, 0.188]], [0.943, [0.488, 0.000, 0.184]], [0.945, [0.488, 0.000, 0.184]], [0.947, [0.482, 0.000, 0.179]], [0.949, [0.482, 0.000, 0.179]], [0.951, [0.476, 0.000, 0.175]], [0.953, [0.476, 0.000, 0.175]], [0.955, [0.470, 0.000, 0.170]], [0.957, [0.470, 0.000, 0.170]], [0.959, [0.464, 0.000, 0.166]], [0.961, [0.464, 0.000, 0.166]], [0.963, [0.458, 0.000, 0.161]], [0.965, [0.458, 0.000, 0.161]], [0.967, [0.452, 0.000, 0.157]], [0.969, [0.452, 0.000, 0.157]], [0.971, [0.446, 0.000, 0.153]], [0.973, [0.446, 0.000, 0.153]], [0.975, [0.440, 0.000, 0.148]], [0.977, [0.440, 0.000, 0.148]], [0.978, [0.434, 0.000, 0.144]], [0.980, [0.434, 0.000, 0.144]], [0.982, [0.428, 0.000, 0.139]], [0.984, [0.428, 0.000, 0.139]], [0.986, [0.422, 0.000, 0.135]], [0.988, [0.422, 0.000, 0.135]], [0.990, [0.416, 0.000, 0.130]], [0.992, [0.416, 0.000, 0.130]], [0.994, [0.410, 0.000, 0.126]], [0.996, [0.410, 0.000, 0.126]], [0.998, [0.404, 0.000, 0.122]], [1.000, [0.404, 0.000, 0.122]]]; +var Purples = [[0.000, [0.988, 0.984, 0.992]], [0.002, [0.988, 0.984, 0.992]], [0.004, [0.987, 0.983, 0.991]], [0.006, [0.987, 0.983, 0.991]], [0.008, [0.985, 0.981, 0.990]], [0.010, [0.985, 0.981, 0.990]], [0.012, [0.983, 0.979, 0.989]], [0.014, [0.983, 0.979, 0.989]], [0.016, [0.982, 0.977, 0.988]], [0.018, [0.982, 0.977, 0.988]], [0.020, [0.980, 0.976, 0.987]], [0.022, [0.980, 0.976, 0.987]], [0.023, [0.979, 0.974, 0.986]], [0.025, [0.979, 0.974, 0.986]], [0.027, [0.977, 0.972, 0.985]], [0.029, [0.977, 0.972, 0.985]], [0.031, [0.975, 0.971, 0.984]], [0.033, [0.975, 0.971, 0.984]], [0.035, [0.974, 0.969, 0.983]], [0.037, [0.974, 0.969, 0.983]], [0.039, [0.972, 0.967, 0.982]], [0.041, [0.972, 0.967, 0.982]], [0.043, [0.971, 0.965, 0.981]], [0.045, [0.971, 0.965, 0.981]], [0.047, [0.969, 0.964, 0.980]], [0.049, [0.969, 0.964, 0.980]], [0.051, [0.967, 0.962, 0.979]], [0.053, [0.967, 0.962, 0.979]], [0.055, [0.966, 0.960, 0.978]], [0.057, [0.966, 0.960, 0.978]], [0.059, [0.964, 0.958, 0.977]], [0.061, [0.964, 0.958, 0.977]], [0.063, [0.963, 0.957, 0.976]], [0.065, [0.963, 0.957, 0.976]], [0.067, [0.961, 0.955, 0.975]], [0.068, [0.961, 0.955, 0.975]], [0.070, [0.959, 0.953, 0.974]], [0.072, [0.959, 0.953, 0.974]], [0.074, [0.958, 0.952, 0.973]], [0.076, [0.958, 0.952, 0.973]], [0.078, [0.956, 0.950, 0.972]], [0.080, [0.956, 0.950, 0.972]], [0.082, [0.955, 0.948, 0.971]], [0.084, [0.955, 0.948, 0.971]], [0.086, [0.953, 0.946, 0.971]], [0.088, [0.953, 0.946, 0.971]], [0.090, [0.951, 0.945, 0.970]], [0.092, [0.951, 0.945, 0.970]], [0.094, [0.950, 0.943, 0.969]], [0.096, [0.950, 0.943, 0.969]], [0.098, [0.948, 0.941, 0.968]], [0.100, [0.948, 0.941, 0.968]], [0.102, [0.947, 0.940, 0.967]], [0.104, [0.947, 0.940, 0.967]], [0.106, [0.945, 0.938, 0.966]], [0.108, [0.945, 0.938, 0.966]], [0.110, [0.943, 0.936, 0.965]], [0.112, [0.943, 0.936, 0.965]], [0.114, [0.942, 0.934, 0.964]], [0.115, [0.942, 0.934, 0.964]], [0.117, [0.940, 0.933, 0.963]], [0.119, [0.940, 0.933, 0.963]], [0.121, [0.939, 0.931, 0.962]], [0.123, [0.939, 0.931, 0.962]], [0.125, [0.937, 0.929, 0.961]], [0.127, [0.937, 0.929, 0.961]], [0.129, [0.934, 0.927, 0.959]], [0.131, [0.934, 0.927, 0.959]], [0.133, [0.932, 0.924, 0.958]], [0.135, [0.932, 0.924, 0.958]], [0.137, [0.929, 0.922, 0.957]], [0.139, [0.929, 0.922, 0.957]], [0.141, [0.927, 0.920, 0.956]], [0.143, [0.927, 0.920, 0.956]], [0.145, [0.924, 0.917, 0.954]], [0.147, [0.924, 0.917, 0.954]], [0.149, [0.921, 0.915, 0.953]], [0.151, [0.921, 0.915, 0.953]], [0.153, [0.919, 0.913, 0.952]], [0.155, [0.919, 0.913, 0.952]], [0.157, [0.916, 0.910, 0.951]], [0.159, [0.916, 0.910, 0.951]], [0.160, [0.914, 0.908, 0.950]], [0.162, [0.914, 0.908, 0.950]], [0.164, [0.911, 0.906, 0.948]], [0.166, [0.911, 0.906, 0.948]], [0.168, [0.909, 0.903, 0.947]], [0.170, [0.909, 0.903, 0.947]], [0.172, [0.906, 0.901, 0.946]], [0.174, [0.906, 0.901, 0.946]], [0.176, [0.903, 0.899, 0.945]], [0.178, [0.903, 0.899, 0.945]], [0.180, [0.901, 0.896, 0.943]], [0.182, [0.901, 0.896, 0.943]], [0.184, [0.898, 0.894, 0.942]], [0.186, [0.898, 0.894, 0.942]], [0.188, [0.896, 0.892, 0.941]], [0.190, [0.896, 0.892, 0.941]], [0.192, [0.893, 0.889, 0.940]], [0.194, [0.893, 0.889, 0.940]], [0.196, [0.890, 0.887, 0.938]], [0.198, [0.890, 0.887, 0.938]], [0.200, [0.888, 0.885, 0.937]], [0.202, [0.888, 0.885, 0.937]], [0.204, [0.885, 0.882, 0.936]], [0.205, [0.885, 0.882, 0.936]], [0.207, [0.883, 0.880, 0.935]], [0.209, [0.883, 0.880, 0.935]], [0.211, [0.880, 0.878, 0.934]], [0.213, [0.880, 0.878, 0.934]], [0.215, [0.878, 0.875, 0.932]], [0.217, [0.878, 0.875, 0.932]], [0.219, [0.875, 0.873, 0.931]], [0.221, [0.875, 0.873, 0.931]], [0.223, [0.872, 0.871, 0.930]], [0.225, [0.872, 0.871, 0.930]], [0.227, [0.870, 0.868, 0.929]], [0.229, [0.870, 0.868, 0.929]], [0.231, [0.867, 0.866, 0.927]], [0.233, [0.867, 0.866, 0.927]], [0.235, [0.865, 0.864, 0.926]], [0.237, [0.865, 0.864, 0.926]], [0.239, [0.862, 0.861, 0.925]], [0.241, [0.862, 0.861, 0.925]], [0.243, [0.859, 0.859, 0.924]], [0.245, [0.859, 0.859, 0.924]], [0.247, [0.857, 0.857, 0.922]], [0.249, [0.857, 0.857, 0.922]], [0.250, [0.854, 0.854, 0.921]], [0.252, [0.854, 0.854, 0.921]], [0.254, [0.850, 0.850, 0.919]], [0.256, [0.850, 0.850, 0.919]], [0.258, [0.847, 0.847, 0.917]], [0.260, [0.847, 0.847, 0.917]], [0.262, [0.843, 0.843, 0.916]], [0.264, [0.843, 0.843, 0.916]], [0.266, [0.839, 0.840, 0.914]], [0.268, [0.839, 0.840, 0.914]], [0.270, [0.836, 0.836, 0.912]], [0.272, [0.836, 0.836, 0.912]], [0.274, [0.832, 0.833, 0.910]], [0.276, [0.832, 0.833, 0.910]], [0.278, [0.828, 0.829, 0.908]], [0.280, [0.828, 0.829, 0.908]], [0.282, [0.824, 0.825, 0.906]], [0.284, [0.824, 0.825, 0.906]], [0.286, [0.821, 0.822, 0.904]], [0.288, [0.821, 0.822, 0.904]], [0.290, [0.817, 0.818, 0.903]], [0.292, [0.817, 0.818, 0.903]], [0.294, [0.813, 0.815, 0.901]], [0.295, [0.813, 0.815, 0.901]], [0.297, [0.810, 0.811, 0.899]], [0.299, [0.810, 0.811, 0.899]], [0.301, [0.806, 0.808, 0.897]], [0.303, [0.806, 0.808, 0.897]], [0.305, [0.802, 0.804, 0.895]], [0.307, [0.802, 0.804, 0.895]], [0.309, [0.799, 0.800, 0.893]], [0.311, [0.799, 0.800, 0.893]], [0.313, [0.795, 0.797, 0.892]], [0.315, [0.795, 0.797, 0.892]], [0.317, [0.791, 0.793, 0.890]], [0.319, [0.791, 0.793, 0.890]], [0.321, [0.788, 0.790, 0.888]], [0.323, [0.788, 0.790, 0.888]], [0.325, [0.784, 0.786, 0.886]], [0.327, [0.784, 0.786, 0.886]], [0.329, [0.780, 0.783, 0.884]], [0.331, [0.780, 0.783, 0.884]], [0.333, [0.776, 0.779, 0.882]], [0.335, [0.776, 0.779, 0.882]], [0.337, [0.773, 0.776, 0.881]], [0.339, [0.773, 0.776, 0.881]], [0.341, [0.769, 0.772, 0.879]], [0.342, [0.769, 0.772, 0.879]], [0.344, [0.765, 0.768, 0.877]], [0.346, [0.765, 0.768, 0.877]], [0.348, [0.762, 0.765, 0.875]], [0.350, [0.762, 0.765, 0.875]], [0.352, [0.758, 0.761, 0.873]], [0.354, [0.758, 0.761, 0.873]], [0.356, [0.754, 0.758, 0.871]], [0.358, [0.754, 0.758, 0.871]], [0.360, [0.751, 0.754, 0.869]], [0.362, [0.751, 0.754, 0.869]], [0.364, [0.747, 0.751, 0.868]], [0.366, [0.747, 0.751, 0.868]], [0.368, [0.743, 0.747, 0.866]], [0.370, [0.743, 0.747, 0.866]], [0.372, [0.740, 0.743, 0.864]], [0.374, [0.740, 0.743, 0.864]], [0.376, [0.736, 0.740, 0.862]], [0.378, [0.736, 0.740, 0.862]], [0.380, [0.732, 0.735, 0.859]], [0.382, [0.732, 0.735, 0.859]], [0.384, [0.728, 0.731, 0.857]], [0.386, [0.728, 0.731, 0.857]], [0.387, [0.725, 0.727, 0.854]], [0.389, [0.725, 0.727, 0.854]], [0.391, [0.721, 0.722, 0.852]], [0.393, [0.721, 0.722, 0.852]], [0.395, [0.717, 0.718, 0.850]], [0.397, [0.717, 0.718, 0.850]], [0.399, [0.714, 0.714, 0.847]], [0.401, [0.714, 0.714, 0.847]], [0.403, [0.710, 0.709, 0.845]], [0.405, [0.710, 0.709, 0.845]], [0.407, [0.706, 0.705, 0.842]], [0.409, [0.706, 0.705, 0.842]], [0.411, [0.703, 0.701, 0.840]], [0.413, [0.703, 0.701, 0.840]], [0.415, [0.699, 0.697, 0.837]], [0.417, [0.699, 0.697, 0.837]], [0.419, [0.695, 0.692, 0.835]], [0.421, [0.695, 0.692, 0.835]], [0.423, [0.692, 0.688, 0.832]], [0.425, [0.692, 0.688, 0.832]], [0.427, [0.688, 0.684, 0.830]], [0.429, [0.688, 0.684, 0.830]], [0.431, [0.684, 0.679, 0.827]], [0.432, [0.684, 0.679, 0.827]], [0.434, [0.681, 0.675, 0.825]], [0.436, [0.681, 0.675, 0.825]], [0.438, [0.677, 0.671, 0.822]], [0.440, [0.677, 0.671, 0.822]], [0.442, [0.673, 0.666, 0.820]], [0.444, [0.673, 0.666, 0.820]], [0.446, [0.669, 0.662, 0.818]], [0.448, [0.669, 0.662, 0.818]], [0.450, [0.666, 0.658, 0.815]], [0.452, [0.666, 0.658, 0.815]], [0.454, [0.662, 0.653, 0.813]], [0.456, [0.662, 0.653, 0.813]], [0.458, [0.658, 0.649, 0.810]], [0.460, [0.658, 0.649, 0.810]], [0.462, [0.655, 0.645, 0.808]], [0.464, [0.655, 0.645, 0.808]], [0.466, [0.651, 0.641, 0.805]], [0.468, [0.651, 0.641, 0.805]], [0.470, [0.647, 0.636, 0.803]], [0.472, [0.647, 0.636, 0.803]], [0.474, [0.644, 0.632, 0.800]], [0.476, [0.644, 0.632, 0.800]], [0.477, [0.640, 0.628, 0.798]], [0.479, [0.640, 0.628, 0.798]], [0.481, [0.636, 0.623, 0.795]], [0.483, [0.636, 0.623, 0.795]], [0.485, [0.633, 0.619, 0.793]], [0.487, [0.633, 0.619, 0.793]], [0.489, [0.629, 0.615, 0.790]], [0.491, [0.629, 0.615, 0.790]], [0.493, [0.625, 0.610, 0.788]], [0.495, [0.625, 0.610, 0.788]], [0.497, [0.621, 0.606, 0.786]], [0.499, [0.621, 0.606, 0.786]], [0.501, [0.618, 0.602, 0.783]], [0.503, [0.618, 0.602, 0.783]], [0.505, [0.614, 0.599, 0.782]], [0.507, [0.614, 0.599, 0.782]], [0.509, [0.610, 0.595, 0.780]], [0.511, [0.610, 0.595, 0.780]], [0.513, [0.607, 0.591, 0.778]], [0.515, [0.607, 0.591, 0.778]], [0.517, [0.603, 0.588, 0.777]], [0.519, [0.603, 0.588, 0.777]], [0.521, [0.599, 0.584, 0.775]], [0.523, [0.599, 0.584, 0.775]], [0.524, [0.596, 0.581, 0.773]], [0.526, [0.596, 0.581, 0.773]], [0.528, [0.592, 0.577, 0.771]], [0.530, [0.592, 0.577, 0.771]], [0.532, [0.588, 0.574, 0.770]], [0.534, [0.588, 0.574, 0.770]], [0.536, [0.585, 0.570, 0.768]], [0.538, [0.585, 0.570, 0.768]], [0.540, [0.581, 0.566, 0.766]], [0.542, [0.581, 0.566, 0.766]], [0.544, [0.577, 0.563, 0.765]], [0.546, [0.577, 0.563, 0.765]], [0.548, [0.573, 0.559, 0.763]], [0.550, [0.573, 0.559, 0.763]], [0.552, [0.570, 0.556, 0.761]], [0.554, [0.570, 0.556, 0.761]], [0.556, [0.566, 0.552, 0.759]], [0.558, [0.566, 0.552, 0.759]], [0.560, [0.562, 0.549, 0.758]], [0.562, [0.562, 0.549, 0.758]], [0.564, [0.559, 0.545, 0.756]], [0.566, [0.559, 0.545, 0.756]], [0.568, [0.555, 0.541, 0.754]], [0.569, [0.555, 0.541, 0.754]], [0.571, [0.551, 0.538, 0.752]], [0.573, [0.551, 0.538, 0.752]], [0.575, [0.548, 0.534, 0.751]], [0.577, [0.548, 0.534, 0.751]], [0.579, [0.544, 0.531, 0.749]], [0.581, [0.544, 0.531, 0.749]], [0.583, [0.540, 0.527, 0.747]], [0.585, [0.540, 0.527, 0.747]], [0.587, [0.537, 0.524, 0.746]], [0.589, [0.537, 0.524, 0.746]], [0.591, [0.533, 0.520, 0.744]], [0.593, [0.533, 0.520, 0.744]], [0.595, [0.529, 0.517, 0.742]], [0.597, [0.529, 0.517, 0.742]], [0.599, [0.525, 0.513, 0.740]], [0.601, [0.525, 0.513, 0.740]], [0.603, [0.522, 0.509, 0.739]], [0.605, [0.522, 0.509, 0.739]], [0.607, [0.518, 0.506, 0.737]], [0.609, [0.518, 0.506, 0.737]], [0.611, [0.514, 0.502, 0.735]], [0.613, [0.514, 0.502, 0.735]], [0.614, [0.511, 0.499, 0.734]], [0.616, [0.511, 0.499, 0.734]], [0.618, [0.507, 0.495, 0.732]], [0.620, [0.507, 0.495, 0.732]], [0.622, [0.503, 0.492, 0.730]], [0.624, [0.503, 0.492, 0.730]], [0.626, [0.500, 0.487, 0.728]], [0.628, [0.500, 0.487, 0.728]], [0.630, [0.498, 0.481, 0.725]], [0.632, [0.498, 0.481, 0.725]], [0.634, [0.495, 0.476, 0.722]], [0.636, [0.495, 0.476, 0.722]], [0.638, [0.492, 0.471, 0.719]], [0.640, [0.492, 0.471, 0.719]], [0.642, [0.489, 0.465, 0.716]], [0.644, [0.489, 0.465, 0.716]], [0.646, [0.487, 0.460, 0.713]], [0.648, [0.487, 0.460, 0.713]], [0.650, [0.484, 0.454, 0.711]], [0.652, [0.484, 0.454, 0.711]], [0.654, [0.481, 0.449, 0.708]], [0.656, [0.481, 0.449, 0.708]], [0.658, [0.479, 0.444, 0.705]], [0.659, [0.479, 0.444, 0.705]], [0.661, [0.476, 0.438, 0.702]], [0.663, [0.476, 0.438, 0.702]], [0.665, [0.473, 0.433, 0.699]], [0.667, [0.473, 0.433, 0.699]], [0.669, [0.470, 0.427, 0.697]], [0.671, [0.470, 0.427, 0.697]], [0.673, [0.468, 0.422, 0.694]], [0.675, [0.468, 0.422, 0.694]], [0.677, [0.465, 0.416, 0.691]], [0.679, [0.465, 0.416, 0.691]], [0.681, [0.462, 0.411, 0.688]], [0.683, [0.462, 0.411, 0.688]], [0.685, [0.460, 0.406, 0.685]], [0.687, [0.460, 0.406, 0.685]], [0.689, [0.457, 0.400, 0.682]], [0.691, [0.457, 0.400, 0.682]], [0.693, [0.454, 0.395, 0.680]], [0.695, [0.454, 0.395, 0.680]], [0.697, [0.452, 0.389, 0.677]], [0.699, [0.452, 0.389, 0.677]], [0.701, [0.449, 0.384, 0.674]], [0.703, [0.449, 0.384, 0.674]], [0.705, [0.446, 0.379, 0.671]], [0.706, [0.446, 0.379, 0.671]], [0.708, [0.443, 0.373, 0.668]], [0.710, [0.443, 0.373, 0.668]], [0.712, [0.441, 0.368, 0.665]], [0.714, [0.441, 0.368, 0.665]], [0.716, [0.438, 0.362, 0.663]], [0.718, [0.438, 0.362, 0.663]], [0.720, [0.435, 0.357, 0.660]], [0.722, [0.435, 0.357, 0.660]], [0.724, [0.433, 0.351, 0.657]], [0.726, [0.433, 0.351, 0.657]], [0.728, [0.430, 0.346, 0.654]], [0.730, [0.430, 0.346, 0.654]], [0.732, [0.427, 0.341, 0.651]], [0.734, [0.427, 0.341, 0.651]], [0.736, [0.424, 0.335, 0.648]], [0.738, [0.424, 0.335, 0.648]], [0.740, [0.422, 0.330, 0.646]], [0.742, [0.422, 0.330, 0.646]], [0.744, [0.419, 0.324, 0.643]], [0.746, [0.419, 0.324, 0.643]], [0.748, [0.416, 0.319, 0.640]], [0.750, [0.416, 0.319, 0.640]], [0.751, [0.414, 0.314, 0.637]], [0.753, [0.414, 0.314, 0.637]], [0.755, [0.411, 0.309, 0.635]], [0.757, [0.411, 0.309, 0.635]], [0.759, [0.408, 0.303, 0.632]], [0.761, [0.408, 0.303, 0.632]], [0.763, [0.406, 0.298, 0.630]], [0.765, [0.406, 0.298, 0.630]], [0.767, [0.403, 0.293, 0.628]], [0.769, [0.403, 0.293, 0.628]], [0.771, [0.400, 0.288, 0.625]], [0.773, [0.400, 0.288, 0.625]], [0.775, [0.397, 0.283, 0.623]], [0.777, [0.397, 0.283, 0.623]], [0.779, [0.395, 0.278, 0.620]], [0.781, [0.395, 0.278, 0.620]], [0.783, [0.392, 0.272, 0.618]], [0.785, [0.392, 0.272, 0.618]], [0.787, [0.389, 0.267, 0.615]], [0.789, [0.389, 0.267, 0.615]], [0.791, [0.387, 0.262, 0.613]], [0.793, [0.387, 0.262, 0.613]], [0.795, [0.384, 0.257, 0.610]], [0.796, [0.384, 0.257, 0.610]], [0.798, [0.381, 0.252, 0.608]], [0.800, [0.381, 0.252, 0.608]], [0.802, [0.378, 0.247, 0.605]], [0.804, [0.378, 0.247, 0.605]], [0.806, [0.376, 0.241, 0.603]], [0.808, [0.376, 0.241, 0.603]], [0.810, [0.373, 0.236, 0.600]], [0.812, [0.373, 0.236, 0.600]], [0.814, [0.370, 0.231, 0.598]], [0.816, [0.370, 0.231, 0.598]], [0.818, [0.368, 0.226, 0.596]], [0.820, [0.368, 0.226, 0.596]], [0.822, [0.365, 0.221, 0.593]], [0.824, [0.365, 0.221, 0.593]], [0.826, [0.362, 0.216, 0.591]], [0.828, [0.362, 0.216, 0.591]], [0.830, [0.360, 0.210, 0.588]], [0.832, [0.360, 0.210, 0.588]], [0.834, [0.357, 0.205, 0.586]], [0.836, [0.357, 0.205, 0.586]], [0.838, [0.354, 0.200, 0.583]], [0.840, [0.354, 0.200, 0.583]], [0.841, [0.351, 0.195, 0.581]], [0.843, [0.351, 0.195, 0.581]], [0.845, [0.349, 0.190, 0.578]], [0.847, [0.349, 0.190, 0.578]], [0.849, [0.346, 0.185, 0.576]], [0.851, [0.346, 0.185, 0.576]], [0.853, [0.343, 0.179, 0.573]], [0.855, [0.343, 0.179, 0.573]], [0.857, [0.341, 0.174, 0.571]], [0.859, [0.341, 0.174, 0.571]], [0.861, [0.338, 0.169, 0.568]], [0.863, [0.338, 0.169, 0.568]], [0.865, [0.335, 0.164, 0.566]], [0.867, [0.335, 0.164, 0.566]], [0.869, [0.332, 0.159, 0.564]], [0.871, [0.332, 0.159, 0.564]], [0.873, [0.330, 0.154, 0.561]], [0.875, [0.330, 0.154, 0.561]], [0.877, [0.327, 0.149, 0.559]], [0.879, [0.327, 0.149, 0.559]], [0.881, [0.325, 0.144, 0.557]], [0.883, [0.325, 0.144, 0.557]], [0.885, [0.322, 0.139, 0.554]], [0.886, [0.322, 0.139, 0.554]], [0.888, [0.319, 0.134, 0.552]], [0.890, [0.319, 0.134, 0.552]], [0.892, [0.317, 0.130, 0.550]], [0.894, [0.317, 0.130, 0.550]], [0.896, [0.314, 0.125, 0.548]], [0.898, [0.314, 0.125, 0.548]], [0.900, [0.312, 0.120, 0.546]], [0.902, [0.312, 0.120, 0.546]], [0.904, [0.309, 0.115, 0.543]], [0.906, [0.309, 0.115, 0.543]], [0.908, [0.306, 0.110, 0.541]], [0.910, [0.306, 0.110, 0.541]], [0.912, [0.304, 0.106, 0.539]], [0.914, [0.304, 0.106, 0.539]], [0.916, [0.301, 0.101, 0.537]], [0.918, [0.301, 0.101, 0.537]], [0.920, [0.299, 0.096, 0.534]], [0.922, [0.299, 0.096, 0.534]], [0.924, [0.296, 0.091, 0.532]], [0.926, [0.296, 0.091, 0.532]], [0.928, [0.294, 0.086, 0.530]], [0.930, [0.294, 0.086, 0.530]], [0.932, [0.291, 0.082, 0.528]], [0.933, [0.291, 0.082, 0.528]], [0.935, [0.288, 0.077, 0.526]], [0.937, [0.288, 0.077, 0.526]], [0.939, [0.286, 0.072, 0.523]], [0.941, [0.286, 0.072, 0.523]], [0.943, [0.283, 0.067, 0.521]], [0.945, [0.283, 0.067, 0.521]], [0.947, [0.281, 0.062, 0.519]], [0.949, [0.281, 0.062, 0.519]], [0.951, [0.278, 0.058, 0.517]], [0.953, [0.278, 0.058, 0.517]], [0.955, [0.275, 0.053, 0.515]], [0.957, [0.275, 0.053, 0.515]], [0.959, [0.273, 0.048, 0.512]], [0.961, [0.273, 0.048, 0.512]], [0.963, [0.270, 0.043, 0.510]], [0.965, [0.270, 0.043, 0.510]], [0.967, [0.268, 0.038, 0.508]], [0.969, [0.268, 0.038, 0.508]], [0.971, [0.265, 0.034, 0.506]], [0.973, [0.265, 0.034, 0.506]], [0.975, [0.263, 0.029, 0.503]], [0.977, [0.263, 0.029, 0.503]], [0.978, [0.260, 0.024, 0.501]], [0.980, [0.260, 0.024, 0.501]], [0.982, [0.257, 0.019, 0.499]], [0.984, [0.257, 0.019, 0.499]], [0.986, [0.255, 0.014, 0.497]], [0.988, [0.255, 0.014, 0.497]], [0.990, [0.252, 0.010, 0.495]], [0.992, [0.252, 0.010, 0.495]], [0.994, [0.250, 0.005, 0.492]], [0.996, [0.250, 0.005, 0.492]], [0.998, [0.247, 0.000, 0.490]], [1.000, [0.247, 0.000, 0.490]]]; +var RdPu = [[0.000, [1.000, 0.969, 0.953]], [0.002, [1.000, 0.969, 0.953]], [0.004, [1.000, 0.966, 0.950]], [0.006, [1.000, 0.966, 0.950]], [0.008, [1.000, 0.963, 0.948]], [0.010, [1.000, 0.963, 0.948]], [0.012, [0.999, 0.960, 0.945]], [0.014, [0.999, 0.960, 0.945]], [0.016, [0.999, 0.957, 0.942]], [0.018, [0.999, 0.957, 0.942]], [0.020, [0.999, 0.954, 0.939]], [0.022, [0.999, 0.954, 0.939]], [0.023, [0.999, 0.952, 0.937]], [0.025, [0.999, 0.952, 0.937]], [0.027, [0.998, 0.949, 0.934]], [0.029, [0.998, 0.949, 0.934]], [0.031, [0.998, 0.946, 0.931]], [0.033, [0.998, 0.946, 0.931]], [0.035, [0.998, 0.943, 0.929]], [0.037, [0.998, 0.943, 0.929]], [0.039, [0.998, 0.940, 0.926]], [0.041, [0.998, 0.940, 0.926]], [0.043, [0.997, 0.938, 0.923]], [0.045, [0.997, 0.938, 0.923]], [0.047, [0.997, 0.935, 0.920]], [0.049, [0.997, 0.935, 0.920]], [0.051, [0.997, 0.932, 0.918]], [0.053, [0.997, 0.932, 0.918]], [0.055, [0.997, 0.929, 0.915]], [0.057, [0.997, 0.929, 0.915]], [0.059, [0.996, 0.926, 0.912]], [0.061, [0.996, 0.926, 0.912]], [0.063, [0.996, 0.923, 0.910]], [0.065, [0.996, 0.923, 0.910]], [0.067, [0.996, 0.921, 0.907]], [0.068, [0.996, 0.921, 0.907]], [0.070, [0.996, 0.918, 0.904]], [0.072, [0.996, 0.918, 0.904]], [0.074, [0.995, 0.915, 0.902]], [0.076, [0.995, 0.915, 0.902]], [0.078, [0.995, 0.912, 0.899]], [0.080, [0.995, 0.912, 0.899]], [0.082, [0.995, 0.909, 0.896]], [0.084, [0.995, 0.909, 0.896]], [0.086, [0.995, 0.906, 0.893]], [0.088, [0.995, 0.906, 0.893]], [0.090, [0.994, 0.904, 0.891]], [0.092, [0.994, 0.904, 0.891]], [0.094, [0.994, 0.901, 0.888]], [0.096, [0.994, 0.901, 0.888]], [0.098, [0.994, 0.898, 0.885]], [0.100, [0.994, 0.898, 0.885]], [0.102, [0.994, 0.895, 0.883]], [0.104, [0.994, 0.895, 0.883]], [0.106, [0.993, 0.892, 0.880]], [0.108, [0.993, 0.892, 0.880]], [0.110, [0.993, 0.889, 0.877]], [0.112, [0.993, 0.889, 0.877]], [0.114, [0.993, 0.887, 0.874]], [0.115, [0.993, 0.887, 0.874]], [0.117, [0.993, 0.884, 0.872]], [0.119, [0.993, 0.884, 0.872]], [0.121, [0.992, 0.881, 0.869]], [0.123, [0.992, 0.881, 0.869]], [0.125, [0.992, 0.878, 0.866]], [0.127, [0.992, 0.878, 0.866]], [0.129, [0.992, 0.875, 0.863]], [0.131, [0.992, 0.875, 0.863]], [0.133, [0.992, 0.871, 0.859]], [0.135, [0.992, 0.871, 0.859]], [0.137, [0.992, 0.868, 0.856]], [0.139, [0.992, 0.868, 0.856]], [0.141, [0.992, 0.865, 0.852]], [0.143, [0.992, 0.865, 0.852]], [0.145, [0.992, 0.861, 0.848]], [0.147, [0.992, 0.861, 0.848]], [0.149, [0.991, 0.858, 0.845]], [0.151, [0.991, 0.858, 0.845]], [0.153, [0.991, 0.855, 0.841]], [0.155, [0.991, 0.855, 0.841]], [0.157, [0.991, 0.851, 0.838]], [0.159, [0.991, 0.851, 0.838]], [0.160, [0.991, 0.848, 0.834]], [0.162, [0.991, 0.848, 0.834]], [0.164, [0.991, 0.845, 0.831]], [0.166, [0.991, 0.845, 0.831]], [0.168, [0.991, 0.841, 0.827]], [0.170, [0.991, 0.841, 0.827]], [0.172, [0.991, 0.838, 0.823]], [0.174, [0.991, 0.838, 0.823]], [0.176, [0.991, 0.835, 0.820]], [0.178, [0.991, 0.835, 0.820]], [0.180, [0.990, 0.832, 0.816]], [0.182, [0.990, 0.832, 0.816]], [0.184, [0.990, 0.828, 0.813]], [0.186, [0.990, 0.828, 0.813]], [0.188, [0.990, 0.825, 0.809]], [0.190, [0.990, 0.825, 0.809]], [0.192, [0.990, 0.822, 0.806]], [0.194, [0.990, 0.822, 0.806]], [0.196, [0.990, 0.818, 0.802]], [0.198, [0.990, 0.818, 0.802]], [0.200, [0.990, 0.815, 0.798]], [0.202, [0.990, 0.815, 0.798]], [0.204, [0.990, 0.812, 0.795]], [0.205, [0.990, 0.812, 0.795]], [0.207, [0.990, 0.808, 0.791]], [0.209, [0.990, 0.808, 0.791]], [0.211, [0.989, 0.805, 0.788]], [0.213, [0.989, 0.805, 0.788]], [0.215, [0.989, 0.802, 0.784]], [0.217, [0.989, 0.802, 0.784]], [0.219, [0.989, 0.798, 0.781]], [0.221, [0.989, 0.798, 0.781]], [0.223, [0.989, 0.795, 0.777]], [0.225, [0.989, 0.795, 0.777]], [0.227, [0.989, 0.792, 0.773]], [0.229, [0.989, 0.792, 0.773]], [0.231, [0.989, 0.788, 0.770]], [0.233, [0.989, 0.788, 0.770]], [0.235, [0.989, 0.785, 0.766]], [0.237, [0.989, 0.785, 0.766]], [0.239, [0.989, 0.782, 0.763]], [0.241, [0.989, 0.782, 0.763]], [0.243, [0.988, 0.778, 0.759]], [0.245, [0.988, 0.778, 0.759]], [0.247, [0.988, 0.775, 0.756]], [0.249, [0.988, 0.775, 0.756]], [0.250, [0.988, 0.771, 0.753]], [0.252, [0.988, 0.771, 0.753]], [0.254, [0.988, 0.767, 0.751]], [0.256, [0.988, 0.767, 0.751]], [0.258, [0.988, 0.762, 0.750]], [0.260, [0.988, 0.762, 0.750]], [0.262, [0.987, 0.757, 0.749]], [0.264, [0.987, 0.757, 0.749]], [0.266, [0.987, 0.753, 0.747]], [0.268, [0.987, 0.753, 0.747]], [0.270, [0.987, 0.748, 0.746]], [0.272, [0.987, 0.748, 0.746]], [0.274, [0.987, 0.743, 0.744]], [0.276, [0.987, 0.743, 0.744]], [0.278, [0.986, 0.739, 0.743]], [0.280, [0.986, 0.739, 0.743]], [0.282, [0.986, 0.734, 0.742]], [0.284, [0.986, 0.734, 0.742]], [0.286, [0.986, 0.729, 0.740]], [0.288, [0.986, 0.729, 0.740]], [0.290, [0.986, 0.725, 0.739]], [0.292, [0.986, 0.725, 0.739]], [0.294, [0.985, 0.720, 0.738]], [0.295, [0.985, 0.720, 0.738]], [0.297, [0.985, 0.715, 0.736]], [0.299, [0.985, 0.715, 0.736]], [0.301, [0.985, 0.711, 0.735]], [0.303, [0.985, 0.711, 0.735]], [0.305, [0.985, 0.706, 0.734]], [0.307, [0.985, 0.706, 0.734]], [0.309, [0.984, 0.701, 0.732]], [0.311, [0.984, 0.701, 0.732]], [0.313, [0.984, 0.697, 0.731]], [0.315, [0.984, 0.697, 0.731]], [0.317, [0.984, 0.692, 0.730]], [0.319, [0.984, 0.692, 0.730]], [0.321, [0.984, 0.687, 0.728]], [0.323, [0.984, 0.687, 0.728]], [0.325, [0.983, 0.683, 0.727]], [0.327, [0.983, 0.683, 0.727]], [0.329, [0.983, 0.678, 0.726]], [0.331, [0.983, 0.678, 0.726]], [0.333, [0.983, 0.673, 0.724]], [0.335, [0.983, 0.673, 0.724]], [0.337, [0.983, 0.669, 0.723]], [0.339, [0.983, 0.669, 0.723]], [0.341, [0.983, 0.664, 0.721]], [0.342, [0.983, 0.664, 0.721]], [0.344, [0.982, 0.659, 0.720]], [0.346, [0.982, 0.659, 0.720]], [0.348, [0.982, 0.655, 0.719]], [0.350, [0.982, 0.655, 0.719]], [0.352, [0.982, 0.650, 0.717]], [0.354, [0.982, 0.650, 0.717]], [0.356, [0.982, 0.645, 0.716]], [0.358, [0.982, 0.645, 0.716]], [0.360, [0.981, 0.640, 0.715]], [0.362, [0.981, 0.640, 0.715]], [0.364, [0.981, 0.636, 0.713]], [0.366, [0.981, 0.636, 0.713]], [0.368, [0.981, 0.631, 0.712]], [0.370, [0.981, 0.631, 0.712]], [0.372, [0.981, 0.626, 0.711]], [0.374, [0.981, 0.626, 0.711]], [0.376, [0.980, 0.621, 0.709]], [0.378, [0.980, 0.621, 0.709]], [0.380, [0.980, 0.614, 0.706]], [0.382, [0.980, 0.614, 0.706]], [0.384, [0.980, 0.607, 0.704]], [0.386, [0.980, 0.607, 0.704]], [0.387, [0.979, 0.601, 0.701]], [0.389, [0.979, 0.601, 0.701]], [0.391, [0.979, 0.594, 0.699]], [0.393, [0.979, 0.594, 0.699]], [0.395, [0.978, 0.587, 0.697]], [0.397, [0.978, 0.587, 0.697]], [0.399, [0.978, 0.580, 0.694]], [0.401, [0.978, 0.580, 0.694]], [0.403, [0.978, 0.574, 0.692]], [0.405, [0.978, 0.574, 0.692]], [0.407, [0.977, 0.567, 0.689]], [0.409, [0.977, 0.567, 0.689]], [0.411, [0.977, 0.560, 0.687]], [0.413, [0.977, 0.560, 0.687]], [0.415, [0.977, 0.553, 0.684]], [0.417, [0.977, 0.553, 0.684]], [0.419, [0.976, 0.547, 0.682]], [0.421, [0.976, 0.547, 0.682]], [0.423, [0.976, 0.540, 0.679]], [0.425, [0.976, 0.540, 0.679]], [0.427, [0.975, 0.533, 0.677]], [0.429, [0.975, 0.533, 0.677]], [0.431, [0.975, 0.526, 0.674]], [0.432, [0.975, 0.526, 0.674]], [0.434, [0.975, 0.519, 0.672]], [0.436, [0.975, 0.519, 0.672]], [0.438, [0.974, 0.513, 0.670]], [0.440, [0.974, 0.513, 0.670]], [0.442, [0.974, 0.506, 0.667]], [0.444, [0.974, 0.506, 0.667]], [0.446, [0.974, 0.499, 0.665]], [0.448, [0.974, 0.499, 0.665]], [0.450, [0.973, 0.492, 0.662]], [0.452, [0.973, 0.492, 0.662]], [0.454, [0.973, 0.486, 0.660]], [0.456, [0.973, 0.486, 0.660]], [0.458, [0.973, 0.479, 0.657]], [0.460, [0.973, 0.479, 0.657]], [0.462, [0.972, 0.472, 0.655]], [0.464, [0.972, 0.472, 0.655]], [0.466, [0.972, 0.465, 0.652]], [0.468, [0.972, 0.465, 0.652]], [0.470, [0.971, 0.459, 0.650]], [0.472, [0.971, 0.459, 0.650]], [0.474, [0.971, 0.452, 0.647]], [0.476, [0.971, 0.452, 0.647]], [0.477, [0.971, 0.445, 0.645]], [0.479, [0.971, 0.445, 0.645]], [0.481, [0.970, 0.438, 0.642]], [0.483, [0.970, 0.438, 0.642]], [0.485, [0.970, 0.432, 0.640]], [0.487, [0.970, 0.432, 0.640]], [0.489, [0.970, 0.425, 0.638]], [0.491, [0.970, 0.425, 0.638]], [0.493, [0.969, 0.418, 0.635]], [0.495, [0.969, 0.418, 0.635]], [0.497, [0.969, 0.411, 0.633]], [0.499, [0.969, 0.411, 0.633]], [0.501, [0.967, 0.405, 0.631]], [0.503, [0.967, 0.405, 0.631]], [0.505, [0.964, 0.398, 0.630]], [0.507, [0.964, 0.398, 0.630]], [0.509, [0.961, 0.392, 0.628]], [0.511, [0.961, 0.392, 0.628]], [0.513, [0.957, 0.385, 0.627]], [0.515, [0.957, 0.385, 0.627]], [0.517, [0.954, 0.379, 0.626]], [0.519, [0.954, 0.379, 0.626]], [0.521, [0.951, 0.373, 0.625]], [0.523, [0.951, 0.373, 0.625]], [0.524, [0.948, 0.366, 0.623]], [0.526, [0.948, 0.366, 0.623]], [0.528, [0.945, 0.360, 0.622]], [0.530, [0.945, 0.360, 0.622]], [0.532, [0.941, 0.353, 0.621]], [0.534, [0.941, 0.353, 0.621]], [0.536, [0.938, 0.347, 0.620]], [0.538, [0.938, 0.347, 0.620]], [0.540, [0.935, 0.341, 0.618]], [0.542, [0.935, 0.341, 0.618]], [0.544, [0.932, 0.334, 0.617]], [0.546, [0.932, 0.334, 0.617]], [0.548, [0.929, 0.328, 0.616]], [0.550, [0.929, 0.328, 0.616]], [0.552, [0.925, 0.321, 0.615]], [0.554, [0.925, 0.321, 0.615]], [0.556, [0.922, 0.315, 0.614]], [0.558, [0.922, 0.315, 0.614]], [0.560, [0.919, 0.309, 0.612]], [0.562, [0.919, 0.309, 0.612]], [0.564, [0.916, 0.302, 0.611]], [0.566, [0.916, 0.302, 0.611]], [0.568, [0.913, 0.296, 0.610]], [0.569, [0.913, 0.296, 0.610]], [0.571, [0.909, 0.289, 0.609]], [0.573, [0.909, 0.289, 0.609]], [0.575, [0.906, 0.283, 0.607]], [0.577, [0.906, 0.283, 0.607]], [0.579, [0.903, 0.277, 0.606]], [0.581, [0.903, 0.277, 0.606]], [0.583, [0.900, 0.270, 0.605]], [0.585, [0.900, 0.270, 0.605]], [0.587, [0.897, 0.264, 0.604]], [0.589, [0.897, 0.264, 0.604]], [0.591, [0.893, 0.258, 0.602]], [0.593, [0.893, 0.258, 0.602]], [0.595, [0.890, 0.251, 0.601]], [0.597, [0.890, 0.251, 0.601]], [0.599, [0.887, 0.245, 0.600]], [0.601, [0.887, 0.245, 0.600]], [0.603, [0.884, 0.238, 0.599]], [0.605, [0.884, 0.238, 0.599]], [0.607, [0.881, 0.232, 0.598]], [0.609, [0.881, 0.232, 0.598]], [0.611, [0.877, 0.226, 0.596]], [0.613, [0.877, 0.226, 0.596]], [0.614, [0.874, 0.219, 0.595]], [0.616, [0.874, 0.219, 0.595]], [0.618, [0.871, 0.213, 0.594]], [0.620, [0.871, 0.213, 0.594]], [0.622, [0.868, 0.206, 0.593]], [0.624, [0.868, 0.206, 0.593]], [0.626, [0.863, 0.200, 0.590]], [0.628, [0.863, 0.200, 0.590]], [0.630, [0.857, 0.194, 0.587]], [0.632, [0.857, 0.194, 0.587]], [0.634, [0.851, 0.187, 0.584]], [0.636, [0.851, 0.187, 0.584]], [0.638, [0.846, 0.181, 0.581]], [0.640, [0.846, 0.181, 0.581]], [0.642, [0.840, 0.175, 0.578]], [0.644, [0.840, 0.175, 0.578]], [0.646, [0.834, 0.169, 0.575]], [0.648, [0.834, 0.169, 0.575]], [0.650, [0.828, 0.162, 0.572]], [0.652, [0.828, 0.162, 0.572]], [0.654, [0.823, 0.156, 0.569]], [0.656, [0.823, 0.156, 0.569]], [0.658, [0.817, 0.150, 0.566]], [0.659, [0.817, 0.150, 0.566]], [0.661, [0.811, 0.144, 0.563]], [0.663, [0.811, 0.144, 0.563]], [0.665, [0.805, 0.137, 0.559]], [0.667, [0.805, 0.137, 0.559]], [0.669, [0.799, 0.131, 0.556]], [0.671, [0.799, 0.131, 0.556]], [0.673, [0.794, 0.125, 0.553]], [0.675, [0.794, 0.125, 0.553]], [0.677, [0.788, 0.118, 0.550]], [0.679, [0.788, 0.118, 0.550]], [0.681, [0.782, 0.112, 0.547]], [0.683, [0.782, 0.112, 0.547]], [0.685, [0.776, 0.106, 0.544]], [0.687, [0.776, 0.106, 0.544]], [0.689, [0.771, 0.100, 0.541]], [0.691, [0.771, 0.100, 0.541]], [0.693, [0.765, 0.093, 0.538]], [0.695, [0.765, 0.093, 0.538]], [0.697, [0.759, 0.087, 0.535]], [0.699, [0.759, 0.087, 0.535]], [0.701, [0.753, 0.081, 0.532]], [0.703, [0.753, 0.081, 0.532]], [0.705, [0.747, 0.075, 0.529]], [0.706, [0.747, 0.075, 0.529]], [0.708, [0.742, 0.068, 0.526]], [0.710, [0.742, 0.068, 0.526]], [0.712, [0.736, 0.062, 0.523]], [0.714, [0.736, 0.062, 0.523]], [0.716, [0.730, 0.056, 0.519]], [0.718, [0.730, 0.056, 0.519]], [0.720, [0.724, 0.049, 0.516]], [0.722, [0.724, 0.049, 0.516]], [0.724, [0.718, 0.043, 0.513]], [0.726, [0.718, 0.043, 0.513]], [0.728, [0.713, 0.037, 0.510]], [0.730, [0.713, 0.037, 0.510]], [0.732, [0.707, 0.031, 0.507]], [0.734, [0.707, 0.031, 0.507]], [0.736, [0.701, 0.024, 0.504]], [0.738, [0.701, 0.024, 0.504]], [0.740, [0.695, 0.018, 0.501]], [0.742, [0.695, 0.018, 0.501]], [0.744, [0.690, 0.012, 0.498]], [0.746, [0.690, 0.012, 0.498]], [0.748, [0.684, 0.005, 0.495]], [0.750, [0.684, 0.005, 0.495]], [0.751, [0.678, 0.004, 0.493]], [0.753, [0.678, 0.004, 0.493]], [0.755, [0.671, 0.004, 0.493]], [0.757, [0.671, 0.004, 0.493]], [0.759, [0.665, 0.004, 0.492]], [0.761, [0.665, 0.004, 0.492]], [0.763, [0.658, 0.004, 0.491]], [0.765, [0.658, 0.004, 0.491]], [0.767, [0.652, 0.004, 0.490]], [0.769, [0.652, 0.004, 0.490]], [0.771, [0.646, 0.004, 0.489]], [0.773, [0.646, 0.004, 0.489]], [0.775, [0.639, 0.004, 0.488]], [0.777, [0.639, 0.004, 0.488]], [0.779, [0.633, 0.004, 0.487]], [0.781, [0.633, 0.004, 0.487]], [0.783, [0.626, 0.004, 0.487]], [0.785, [0.626, 0.004, 0.487]], [0.787, [0.620, 0.004, 0.486]], [0.789, [0.620, 0.004, 0.486]], [0.791, [0.614, 0.004, 0.485]], [0.793, [0.614, 0.004, 0.485]], [0.795, [0.607, 0.004, 0.484]], [0.796, [0.607, 0.004, 0.484]], [0.798, [0.601, 0.004, 0.483]], [0.800, [0.601, 0.004, 0.483]], [0.802, [0.594, 0.004, 0.482]], [0.804, [0.594, 0.004, 0.482]], [0.806, [0.588, 0.004, 0.481]], [0.808, [0.588, 0.004, 0.481]], [0.810, [0.582, 0.004, 0.481]], [0.812, [0.582, 0.004, 0.481]], [0.814, [0.575, 0.004, 0.480]], [0.816, [0.575, 0.004, 0.480]], [0.818, [0.569, 0.004, 0.479]], [0.820, [0.569, 0.004, 0.479]], [0.822, [0.562, 0.004, 0.478]], [0.824, [0.562, 0.004, 0.478]], [0.826, [0.556, 0.004, 0.477]], [0.828, [0.556, 0.004, 0.477]], [0.830, [0.550, 0.004, 0.476]], [0.832, [0.550, 0.004, 0.476]], [0.834, [0.543, 0.004, 0.475]], [0.836, [0.543, 0.004, 0.475]], [0.838, [0.537, 0.004, 0.475]], [0.840, [0.537, 0.004, 0.475]], [0.841, [0.530, 0.004, 0.474]], [0.843, [0.530, 0.004, 0.474]], [0.845, [0.524, 0.004, 0.473]], [0.847, [0.524, 0.004, 0.473]], [0.849, [0.518, 0.004, 0.472]], [0.851, [0.518, 0.004, 0.472]], [0.853, [0.511, 0.004, 0.471]], [0.855, [0.511, 0.004, 0.471]], [0.857, [0.505, 0.004, 0.470]], [0.859, [0.505, 0.004, 0.470]], [0.861, [0.498, 0.004, 0.469]], [0.863, [0.498, 0.004, 0.469]], [0.865, [0.492, 0.004, 0.468]], [0.867, [0.492, 0.004, 0.468]], [0.869, [0.486, 0.004, 0.468]], [0.871, [0.486, 0.004, 0.468]], [0.873, [0.479, 0.004, 0.467]], [0.875, [0.479, 0.004, 0.467]], [0.877, [0.473, 0.004, 0.465]], [0.879, [0.473, 0.004, 0.465]], [0.881, [0.467, 0.004, 0.464]], [0.883, [0.467, 0.004, 0.464]], [0.885, [0.461, 0.004, 0.462]], [0.886, [0.461, 0.004, 0.462]], [0.888, [0.455, 0.003, 0.460]], [0.890, [0.455, 0.003, 0.460]], [0.892, [0.449, 0.003, 0.459]], [0.894, [0.449, 0.003, 0.459]], [0.896, [0.443, 0.003, 0.457]], [0.898, [0.443, 0.003, 0.457]], [0.900, [0.437, 0.003, 0.456]], [0.902, [0.437, 0.003, 0.456]], [0.904, [0.431, 0.003, 0.454]], [0.906, [0.431, 0.003, 0.454]], [0.908, [0.425, 0.003, 0.452]], [0.910, [0.425, 0.003, 0.452]], [0.912, [0.419, 0.003, 0.451]], [0.914, [0.419, 0.003, 0.451]], [0.916, [0.413, 0.003, 0.449]], [0.918, [0.413, 0.003, 0.449]], [0.920, [0.407, 0.002, 0.448]], [0.922, [0.407, 0.002, 0.448]], [0.924, [0.401, 0.002, 0.446]], [0.926, [0.401, 0.002, 0.446]], [0.928, [0.395, 0.002, 0.444]], [0.930, [0.395, 0.002, 0.444]], [0.932, [0.389, 0.002, 0.443]], [0.933, [0.389, 0.002, 0.443]], [0.935, [0.383, 0.002, 0.441]], [0.937, [0.383, 0.002, 0.441]], [0.939, [0.377, 0.002, 0.440]], [0.941, [0.377, 0.002, 0.440]], [0.943, [0.371, 0.002, 0.438]], [0.945, [0.371, 0.002, 0.438]], [0.947, [0.365, 0.002, 0.436]], [0.949, [0.365, 0.002, 0.436]], [0.951, [0.359, 0.001, 0.435]], [0.953, [0.359, 0.001, 0.435]], [0.955, [0.353, 0.001, 0.433]], [0.957, [0.353, 0.001, 0.433]], [0.959, [0.347, 0.001, 0.432]], [0.961, [0.347, 0.001, 0.432]], [0.963, [0.341, 0.001, 0.430]], [0.965, [0.341, 0.001, 0.430]], [0.967, [0.335, 0.001, 0.428]], [0.969, [0.335, 0.001, 0.428]], [0.971, [0.328, 0.001, 0.427]], [0.973, [0.328, 0.001, 0.427]], [0.975, [0.322, 0.001, 0.425]], [0.977, [0.322, 0.001, 0.425]], [0.978, [0.316, 0.001, 0.424]], [0.980, [0.316, 0.001, 0.424]], [0.982, [0.310, 0.000, 0.422]], [0.984, [0.310, 0.000, 0.422]], [0.986, [0.304, 0.000, 0.420]], [0.988, [0.304, 0.000, 0.420]], [0.990, [0.298, 0.000, 0.419]], [0.992, [0.298, 0.000, 0.419]], [0.994, [0.292, 0.000, 0.417]], [0.996, [0.292, 0.000, 0.417]], [0.998, [0.286, 0.000, 0.416]], [1.000, [0.286, 0.000, 0.416]]]; +var Reds = [[0.000, [1.000, 0.961, 0.941]], [0.002, [1.000, 0.961, 0.941]], [0.004, [1.000, 0.958, 0.937]], [0.006, [1.000, 0.958, 0.937]], [0.008, [1.000, 0.956, 0.934]], [0.010, [1.000, 0.956, 0.934]], [0.012, [1.000, 0.953, 0.930]], [0.014, [1.000, 0.953, 0.930]], [0.016, [1.000, 0.950, 0.926]], [0.018, [1.000, 0.950, 0.926]], [0.020, [0.999, 0.948, 0.923]], [0.022, [0.999, 0.948, 0.923]], [0.023, [0.999, 0.945, 0.919]], [0.025, [0.999, 0.945, 0.919]], [0.027, [0.999, 0.943, 0.915]], [0.029, [0.999, 0.943, 0.915]], [0.031, [0.999, 0.940, 0.912]], [0.033, [0.999, 0.940, 0.912]], [0.035, [0.999, 0.938, 0.908]], [0.037, [0.999, 0.938, 0.908]], [0.039, [0.999, 0.935, 0.904]], [0.041, [0.999, 0.935, 0.904]], [0.043, [0.999, 0.932, 0.901]], [0.045, [0.999, 0.932, 0.901]], [0.047, [0.999, 0.930, 0.897]], [0.049, [0.999, 0.930, 0.897]], [0.051, [0.998, 0.927, 0.893]], [0.053, [0.998, 0.927, 0.893]], [0.055, [0.998, 0.925, 0.890]], [0.057, [0.998, 0.925, 0.890]], [0.059, [0.998, 0.922, 0.886]], [0.061, [0.998, 0.922, 0.886]], [0.063, [0.998, 0.919, 0.882]], [0.065, [0.998, 0.919, 0.882]], [0.067, [0.998, 0.917, 0.878]], [0.068, [0.998, 0.917, 0.878]], [0.070, [0.998, 0.914, 0.875]], [0.072, [0.998, 0.914, 0.875]], [0.074, [0.998, 0.912, 0.871]], [0.076, [0.998, 0.912, 0.871]], [0.078, [0.998, 0.909, 0.867]], [0.080, [0.998, 0.909, 0.867]], [0.082, [0.997, 0.907, 0.864]], [0.084, [0.997, 0.907, 0.864]], [0.086, [0.997, 0.904, 0.860]], [0.088, [0.997, 0.904, 0.860]], [0.090, [0.997, 0.901, 0.856]], [0.092, [0.997, 0.901, 0.856]], [0.094, [0.997, 0.899, 0.853]], [0.096, [0.997, 0.899, 0.853]], [0.098, [0.997, 0.896, 0.849]], [0.100, [0.997, 0.896, 0.849]], [0.102, [0.997, 0.894, 0.845]], [0.104, [0.997, 0.894, 0.845]], [0.106, [0.997, 0.891, 0.842]], [0.108, [0.997, 0.891, 0.842]], [0.110, [0.997, 0.888, 0.838]], [0.112, [0.997, 0.888, 0.838]], [0.114, [0.996, 0.886, 0.834]], [0.115, [0.996, 0.886, 0.834]], [0.117, [0.996, 0.883, 0.830]], [0.119, [0.996, 0.883, 0.830]], [0.121, [0.996, 0.881, 0.827]], [0.123, [0.996, 0.881, 0.827]], [0.125, [0.996, 0.878, 0.823]], [0.127, [0.996, 0.878, 0.823]], [0.129, [0.996, 0.873, 0.817]], [0.131, [0.996, 0.873, 0.817]], [0.133, [0.996, 0.869, 0.811]], [0.135, [0.996, 0.869, 0.811]], [0.137, [0.995, 0.864, 0.805]], [0.139, [0.995, 0.864, 0.805]], [0.141, [0.995, 0.860, 0.799]], [0.143, [0.995, 0.860, 0.799]], [0.145, [0.995, 0.855, 0.793]], [0.147, [0.995, 0.855, 0.793]], [0.149, [0.995, 0.851, 0.787]], [0.151, [0.995, 0.851, 0.787]], [0.153, [0.994, 0.846, 0.781]], [0.155, [0.994, 0.846, 0.781]], [0.157, [0.994, 0.841, 0.775]], [0.159, [0.994, 0.841, 0.775]], [0.160, [0.994, 0.837, 0.769]], [0.162, [0.994, 0.837, 0.769]], [0.164, [0.994, 0.832, 0.762]], [0.166, [0.994, 0.832, 0.762]], [0.168, [0.993, 0.828, 0.756]], [0.170, [0.993, 0.828, 0.756]], [0.172, [0.993, 0.823, 0.750]], [0.174, [0.993, 0.823, 0.750]], [0.176, [0.993, 0.819, 0.744]], [0.178, [0.993, 0.819, 0.744]], [0.180, [0.993, 0.814, 0.738]], [0.182, [0.993, 0.814, 0.738]], [0.184, [0.992, 0.810, 0.732]], [0.186, [0.992, 0.810, 0.732]], [0.188, [0.992, 0.805, 0.726]], [0.190, [0.992, 0.805, 0.726]], [0.192, [0.992, 0.800, 0.720]], [0.194, [0.992, 0.800, 0.720]], [0.196, [0.992, 0.796, 0.714]], [0.198, [0.992, 0.796, 0.714]], [0.200, [0.991, 0.791, 0.708]], [0.202, [0.991, 0.791, 0.708]], [0.204, [0.991, 0.787, 0.702]], [0.205, [0.991, 0.787, 0.702]], [0.207, [0.991, 0.782, 0.696]], [0.209, [0.991, 0.782, 0.696]], [0.211, [0.991, 0.778, 0.690]], [0.213, [0.991, 0.778, 0.690]], [0.215, [0.990, 0.773, 0.684]], [0.217, [0.990, 0.773, 0.684]], [0.219, [0.990, 0.769, 0.678]], [0.221, [0.990, 0.769, 0.678]], [0.223, [0.990, 0.764, 0.672]], [0.225, [0.990, 0.764, 0.672]], [0.227, [0.990, 0.760, 0.666]], [0.229, [0.990, 0.760, 0.666]], [0.231, [0.989, 0.755, 0.660]], [0.233, [0.989, 0.755, 0.660]], [0.235, [0.989, 0.750, 0.654]], [0.237, [0.989, 0.750, 0.654]], [0.239, [0.989, 0.746, 0.648]], [0.241, [0.989, 0.746, 0.648]], [0.243, [0.989, 0.741, 0.642]], [0.245, [0.989, 0.741, 0.642]], [0.247, [0.988, 0.737, 0.636]], [0.249, [0.988, 0.737, 0.636]], [0.250, [0.988, 0.732, 0.630]], [0.252, [0.988, 0.732, 0.630]], [0.254, [0.988, 0.727, 0.624]], [0.256, [0.988, 0.727, 0.624]], [0.258, [0.988, 0.722, 0.618]], [0.260, [0.988, 0.722, 0.618]], [0.262, [0.988, 0.717, 0.613]], [0.264, [0.988, 0.717, 0.613]], [0.266, [0.988, 0.712, 0.607]], [0.268, [0.988, 0.712, 0.607]], [0.270, [0.988, 0.707, 0.601]], [0.272, [0.988, 0.707, 0.601]], [0.274, [0.988, 0.702, 0.595]], [0.276, [0.988, 0.702, 0.595]], [0.278, [0.988, 0.697, 0.589]], [0.280, [0.988, 0.697, 0.589]], [0.282, [0.988, 0.692, 0.584]], [0.284, [0.988, 0.692, 0.584]], [0.286, [0.988, 0.687, 0.578]], [0.288, [0.988, 0.687, 0.578]], [0.290, [0.988, 0.682, 0.572]], [0.292, [0.988, 0.682, 0.572]], [0.294, [0.988, 0.677, 0.566]], [0.295, [0.988, 0.677, 0.566]], [0.297, [0.988, 0.672, 0.561]], [0.299, [0.988, 0.672, 0.561]], [0.301, [0.988, 0.666, 0.555]], [0.303, [0.988, 0.666, 0.555]], [0.305, [0.988, 0.661, 0.549]], [0.307, [0.988, 0.661, 0.549]], [0.309, [0.988, 0.656, 0.543]], [0.311, [0.988, 0.656, 0.543]], [0.313, [0.988, 0.651, 0.537]], [0.315, [0.988, 0.651, 0.537]], [0.317, [0.988, 0.646, 0.532]], [0.319, [0.988, 0.646, 0.532]], [0.321, [0.988, 0.641, 0.526]], [0.323, [0.988, 0.641, 0.526]], [0.325, [0.988, 0.636, 0.520]], [0.327, [0.988, 0.636, 0.520]], [0.329, [0.988, 0.631, 0.514]], [0.331, [0.988, 0.631, 0.514]], [0.333, [0.988, 0.626, 0.508]], [0.335, [0.988, 0.626, 0.508]], [0.337, [0.988, 0.621, 0.503]], [0.339, [0.988, 0.621, 0.503]], [0.341, [0.988, 0.616, 0.497]], [0.342, [0.988, 0.616, 0.497]], [0.344, [0.988, 0.611, 0.491]], [0.346, [0.988, 0.611, 0.491]], [0.348, [0.988, 0.606, 0.485]], [0.350, [0.988, 0.606, 0.485]], [0.352, [0.988, 0.601, 0.480]], [0.354, [0.988, 0.601, 0.480]], [0.356, [0.988, 0.596, 0.474]], [0.358, [0.988, 0.596, 0.474]], [0.360, [0.988, 0.591, 0.468]], [0.362, [0.988, 0.591, 0.468]], [0.364, [0.988, 0.586, 0.462]], [0.366, [0.988, 0.586, 0.462]], [0.368, [0.988, 0.581, 0.456]], [0.370, [0.988, 0.581, 0.456]], [0.372, [0.988, 0.576, 0.451]], [0.374, [0.988, 0.576, 0.451]], [0.376, [0.988, 0.571, 0.445]], [0.378, [0.988, 0.571, 0.445]], [0.380, [0.988, 0.566, 0.440]], [0.382, [0.988, 0.566, 0.440]], [0.384, [0.988, 0.561, 0.435]], [0.386, [0.988, 0.561, 0.435]], [0.387, [0.988, 0.556, 0.430]], [0.389, [0.988, 0.556, 0.430]], [0.391, [0.988, 0.551, 0.426]], [0.393, [0.988, 0.551, 0.426]], [0.395, [0.988, 0.546, 0.421]], [0.397, [0.988, 0.546, 0.421]], [0.399, [0.987, 0.541, 0.416]], [0.401, [0.987, 0.541, 0.416]], [0.403, [0.987, 0.536, 0.411]], [0.405, [0.987, 0.536, 0.411]], [0.407, [0.987, 0.531, 0.406]], [0.409, [0.987, 0.531, 0.406]], [0.411, [0.987, 0.526, 0.401]], [0.413, [0.987, 0.526, 0.401]], [0.415, [0.987, 0.521, 0.396]], [0.417, [0.987, 0.521, 0.396]], [0.419, [0.987, 0.517, 0.391]], [0.421, [0.987, 0.517, 0.391]], [0.423, [0.987, 0.512, 0.386]], [0.425, [0.987, 0.512, 0.386]], [0.427, [0.987, 0.507, 0.381]], [0.429, [0.987, 0.507, 0.381]], [0.431, [0.986, 0.502, 0.376]], [0.432, [0.986, 0.502, 0.376]], [0.434, [0.986, 0.497, 0.371]], [0.436, [0.986, 0.497, 0.371]], [0.438, [0.986, 0.492, 0.366]], [0.440, [0.986, 0.492, 0.366]], [0.442, [0.986, 0.487, 0.362]], [0.444, [0.986, 0.487, 0.362]], [0.446, [0.986, 0.482, 0.357]], [0.448, [0.986, 0.482, 0.357]], [0.450, [0.986, 0.477, 0.352]], [0.452, [0.986, 0.477, 0.352]], [0.454, [0.986, 0.472, 0.347]], [0.456, [0.986, 0.472, 0.347]], [0.458, [0.986, 0.467, 0.342]], [0.460, [0.986, 0.467, 0.342]], [0.462, [0.985, 0.462, 0.337]], [0.464, [0.985, 0.462, 0.337]], [0.466, [0.985, 0.458, 0.332]], [0.468, [0.985, 0.458, 0.332]], [0.470, [0.985, 0.453, 0.327]], [0.472, [0.985, 0.453, 0.327]], [0.474, [0.985, 0.448, 0.322]], [0.476, [0.985, 0.448, 0.322]], [0.477, [0.985, 0.443, 0.317]], [0.479, [0.985, 0.443, 0.317]], [0.481, [0.985, 0.438, 0.312]], [0.483, [0.985, 0.438, 0.312]], [0.485, [0.985, 0.433, 0.307]], [0.487, [0.985, 0.433, 0.307]], [0.489, [0.985, 0.428, 0.302]], [0.491, [0.985, 0.428, 0.302]], [0.493, [0.984, 0.423, 0.298]], [0.495, [0.984, 0.423, 0.298]], [0.497, [0.984, 0.418, 0.293]], [0.499, [0.984, 0.418, 0.293]], [0.501, [0.984, 0.413, 0.288]], [0.503, [0.984, 0.413, 0.288]], [0.505, [0.982, 0.407, 0.285]], [0.507, [0.982, 0.407, 0.285]], [0.509, [0.981, 0.401, 0.281]], [0.511, [0.981, 0.401, 0.281]], [0.513, [0.979, 0.395, 0.277]], [0.515, [0.979, 0.395, 0.277]], [0.517, [0.978, 0.390, 0.274]], [0.519, [0.978, 0.390, 0.274]], [0.521, [0.976, 0.384, 0.270]], [0.523, [0.976, 0.384, 0.270]], [0.524, [0.975, 0.378, 0.266]], [0.526, [0.975, 0.378, 0.266]], [0.528, [0.973, 0.372, 0.263]], [0.530, [0.973, 0.372, 0.263]], [0.532, [0.972, 0.367, 0.259]], [0.534, [0.972, 0.367, 0.259]], [0.536, [0.970, 0.361, 0.255]], [0.538, [0.970, 0.361, 0.255]], [0.540, [0.969, 0.355, 0.251]], [0.542, [0.969, 0.355, 0.251]], [0.544, [0.967, 0.349, 0.248]], [0.546, [0.967, 0.349, 0.248]], [0.548, [0.966, 0.343, 0.244]], [0.550, [0.966, 0.343, 0.244]], [0.552, [0.964, 0.338, 0.240]], [0.554, [0.964, 0.338, 0.240]], [0.556, [0.963, 0.332, 0.237]], [0.558, [0.963, 0.332, 0.237]], [0.560, [0.961, 0.326, 0.233]], [0.562, [0.961, 0.326, 0.233]], [0.564, [0.960, 0.320, 0.229]], [0.566, [0.960, 0.320, 0.229]], [0.568, [0.958, 0.314, 0.226]], [0.569, [0.958, 0.314, 0.226]], [0.571, [0.957, 0.309, 0.222]], [0.573, [0.957, 0.309, 0.222]], [0.575, [0.956, 0.303, 0.218]], [0.577, [0.956, 0.303, 0.218]], [0.579, [0.954, 0.297, 0.215]], [0.581, [0.954, 0.297, 0.215]], [0.583, [0.953, 0.291, 0.211]], [0.585, [0.953, 0.291, 0.211]], [0.587, [0.951, 0.286, 0.207]], [0.589, [0.951, 0.286, 0.207]], [0.591, [0.950, 0.280, 0.203]], [0.593, [0.950, 0.280, 0.203]], [0.595, [0.948, 0.274, 0.200]], [0.597, [0.948, 0.274, 0.200]], [0.599, [0.947, 0.268, 0.196]], [0.601, [0.947, 0.268, 0.196]], [0.603, [0.945, 0.262, 0.192]], [0.605, [0.945, 0.262, 0.192]], [0.607, [0.944, 0.257, 0.189]], [0.609, [0.944, 0.257, 0.189]], [0.611, [0.942, 0.251, 0.185]], [0.613, [0.942, 0.251, 0.185]], [0.614, [0.941, 0.245, 0.181]], [0.616, [0.941, 0.245, 0.181]], [0.618, [0.939, 0.239, 0.178]], [0.620, [0.939, 0.239, 0.178]], [0.622, [0.938, 0.234, 0.174]], [0.624, [0.938, 0.234, 0.174]], [0.626, [0.934, 0.229, 0.171]], [0.628, [0.934, 0.229, 0.171]], [0.630, [0.930, 0.224, 0.170]], [0.632, [0.930, 0.224, 0.170]], [0.634, [0.926, 0.220, 0.168]], [0.636, [0.926, 0.220, 0.168]], [0.638, [0.921, 0.216, 0.166]], [0.640, [0.921, 0.216, 0.166]], [0.642, [0.917, 0.211, 0.164]], [0.644, [0.917, 0.211, 0.164]], [0.646, [0.912, 0.207, 0.162]], [0.648, [0.912, 0.207, 0.162]], [0.650, [0.908, 0.203, 0.160]], [0.652, [0.908, 0.203, 0.160]], [0.654, [0.903, 0.199, 0.158]], [0.656, [0.903, 0.199, 0.158]], [0.658, [0.899, 0.194, 0.157]], [0.659, [0.899, 0.194, 0.157]], [0.661, [0.895, 0.190, 0.155]], [0.663, [0.895, 0.190, 0.155]], [0.665, [0.890, 0.186, 0.153]], [0.667, [0.890, 0.186, 0.153]], [0.669, [0.886, 0.181, 0.151]], [0.671, [0.886, 0.181, 0.151]], [0.673, [0.881, 0.177, 0.149]], [0.675, [0.881, 0.177, 0.149]], [0.677, [0.877, 0.173, 0.147]], [0.679, [0.877, 0.173, 0.147]], [0.681, [0.872, 0.168, 0.146]], [0.683, [0.872, 0.168, 0.146]], [0.685, [0.868, 0.164, 0.144]], [0.687, [0.868, 0.164, 0.144]], [0.689, [0.864, 0.160, 0.142]], [0.691, [0.864, 0.160, 0.142]], [0.693, [0.859, 0.155, 0.140]], [0.695, [0.859, 0.155, 0.140]], [0.697, [0.855, 0.151, 0.138]], [0.699, [0.855, 0.151, 0.138]], [0.701, [0.850, 0.147, 0.136]], [0.703, [0.850, 0.147, 0.136]], [0.705, [0.846, 0.143, 0.134]], [0.706, [0.846, 0.143, 0.134]], [0.708, [0.841, 0.138, 0.133]], [0.710, [0.841, 0.138, 0.133]], [0.712, [0.837, 0.134, 0.131]], [0.714, [0.837, 0.134, 0.131]], [0.716, [0.833, 0.130, 0.129]], [0.718, [0.833, 0.130, 0.129]], [0.720, [0.828, 0.125, 0.127]], [0.722, [0.828, 0.125, 0.127]], [0.724, [0.824, 0.121, 0.125]], [0.726, [0.824, 0.121, 0.125]], [0.728, [0.819, 0.117, 0.123]], [0.730, [0.819, 0.117, 0.123]], [0.732, [0.815, 0.112, 0.122]], [0.734, [0.815, 0.112, 0.122]], [0.736, [0.810, 0.108, 0.120]], [0.738, [0.810, 0.108, 0.120]], [0.740, [0.806, 0.104, 0.118]], [0.742, [0.806, 0.104, 0.118]], [0.744, [0.802, 0.100, 0.116]], [0.746, [0.802, 0.100, 0.116]], [0.748, [0.797, 0.095, 0.114]], [0.750, [0.797, 0.095, 0.114]], [0.751, [0.793, 0.093, 0.113]], [0.753, [0.793, 0.093, 0.113]], [0.755, [0.788, 0.092, 0.112]], [0.757, [0.788, 0.092, 0.112]], [0.759, [0.783, 0.091, 0.111]], [0.761, [0.783, 0.091, 0.111]], [0.763, [0.779, 0.090, 0.110]], [0.765, [0.779, 0.090, 0.110]], [0.767, [0.774, 0.089, 0.109]], [0.769, [0.774, 0.089, 0.109]], [0.771, [0.769, 0.088, 0.108]], [0.773, [0.769, 0.088, 0.108]], [0.775, [0.765, 0.087, 0.107]], [0.777, [0.765, 0.087, 0.107]], [0.779, [0.760, 0.086, 0.106]], [0.781, [0.760, 0.086, 0.106]], [0.783, [0.755, 0.084, 0.105]], [0.785, [0.755, 0.084, 0.105]], [0.787, [0.750, 0.083, 0.104]], [0.789, [0.750, 0.083, 0.104]], [0.791, [0.746, 0.082, 0.103]], [0.793, [0.746, 0.082, 0.103]], [0.795, [0.741, 0.081, 0.102]], [0.796, [0.741, 0.081, 0.102]], [0.798, [0.736, 0.080, 0.101]], [0.800, [0.736, 0.080, 0.101]], [0.802, [0.732, 0.079, 0.100]], [0.804, [0.732, 0.079, 0.100]], [0.806, [0.727, 0.078, 0.099]], [0.808, [0.727, 0.078, 0.099]], [0.810, [0.722, 0.077, 0.098]], [0.812, [0.722, 0.077, 0.098]], [0.814, [0.718, 0.076, 0.097]], [0.816, [0.718, 0.076, 0.097]], [0.818, [0.713, 0.074, 0.096]], [0.820, [0.713, 0.074, 0.096]], [0.822, [0.708, 0.073, 0.095]], [0.824, [0.708, 0.073, 0.095]], [0.826, [0.704, 0.072, 0.094]], [0.828, [0.704, 0.072, 0.094]], [0.830, [0.699, 0.071, 0.093]], [0.832, [0.699, 0.071, 0.093]], [0.834, [0.694, 0.070, 0.092]], [0.836, [0.694, 0.070, 0.092]], [0.838, [0.690, 0.069, 0.091]], [0.840, [0.690, 0.069, 0.091]], [0.841, [0.685, 0.068, 0.090]], [0.843, [0.685, 0.068, 0.090]], [0.845, [0.680, 0.067, 0.089]], [0.847, [0.680, 0.067, 0.089]], [0.849, [0.676, 0.066, 0.088]], [0.851, [0.676, 0.066, 0.088]], [0.853, [0.671, 0.064, 0.087]], [0.855, [0.671, 0.064, 0.087]], [0.857, [0.666, 0.063, 0.086]], [0.859, [0.666, 0.063, 0.086]], [0.861, [0.662, 0.062, 0.085]], [0.863, [0.662, 0.062, 0.085]], [0.865, [0.657, 0.061, 0.084]], [0.867, [0.657, 0.061, 0.084]], [0.869, [0.652, 0.060, 0.083]], [0.871, [0.652, 0.060, 0.083]], [0.873, [0.648, 0.059, 0.082]], [0.875, [0.648, 0.059, 0.082]], [0.877, [0.640, 0.057, 0.081]], [0.879, [0.640, 0.057, 0.081]], [0.881, [0.633, 0.055, 0.081]], [0.883, [0.633, 0.055, 0.081]], [0.885, [0.625, 0.054, 0.080]], [0.886, [0.625, 0.054, 0.080]], [0.888, [0.618, 0.052, 0.079]], [0.890, [0.618, 0.052, 0.079]], [0.892, [0.610, 0.050, 0.078]], [0.894, [0.610, 0.050, 0.078]], [0.896, [0.602, 0.048, 0.077]], [0.898, [0.602, 0.048, 0.077]], [0.900, [0.595, 0.046, 0.076]], [0.902, [0.595, 0.046, 0.076]], [0.904, [0.587, 0.044, 0.075]], [0.906, [0.587, 0.044, 0.075]], [0.908, [0.579, 0.042, 0.074]], [0.910, [0.579, 0.042, 0.074]], [0.912, [0.572, 0.041, 0.073]], [0.914, [0.572, 0.041, 0.073]], [0.916, [0.564, 0.039, 0.072]], [0.918, [0.564, 0.039, 0.072]], [0.920, [0.556, 0.037, 0.071]], [0.922, [0.556, 0.037, 0.071]], [0.924, [0.549, 0.035, 0.070]], [0.926, [0.549, 0.035, 0.070]], [0.928, [0.541, 0.033, 0.069]], [0.930, [0.541, 0.033, 0.069]], [0.932, [0.534, 0.031, 0.068]], [0.933, [0.534, 0.031, 0.068]], [0.935, [0.526, 0.030, 0.067]], [0.937, [0.526, 0.030, 0.067]], [0.939, [0.518, 0.028, 0.066]], [0.941, [0.518, 0.028, 0.066]], [0.943, [0.511, 0.026, 0.065]], [0.945, [0.511, 0.026, 0.065]], [0.947, [0.503, 0.024, 0.064]], [0.949, [0.503, 0.024, 0.064]], [0.951, [0.495, 0.022, 0.063]], [0.953, [0.495, 0.022, 0.063]], [0.955, [0.488, 0.020, 0.062]], [0.957, [0.488, 0.020, 0.062]], [0.959, [0.480, 0.018, 0.061]], [0.961, [0.480, 0.018, 0.061]], [0.963, [0.473, 0.017, 0.060]], [0.965, [0.473, 0.017, 0.060]], [0.967, [0.465, 0.015, 0.059]], [0.969, [0.465, 0.015, 0.059]], [0.971, [0.457, 0.013, 0.058]], [0.973, [0.457, 0.013, 0.058]], [0.975, [0.450, 0.011, 0.057]], [0.977, [0.450, 0.011, 0.057]], [0.978, [0.442, 0.009, 0.056]], [0.980, [0.442, 0.009, 0.056]], [0.982, [0.434, 0.007, 0.055]], [0.984, [0.434, 0.007, 0.055]], [0.986, [0.427, 0.006, 0.054]], [0.988, [0.427, 0.006, 0.054]], [0.990, [0.419, 0.004, 0.053]], [0.992, [0.419, 0.004, 0.053]], [0.994, [0.412, 0.002, 0.052]], [0.996, [0.412, 0.002, 0.052]], [0.998, [0.404, 0.000, 0.051]], [1.000, [0.404, 0.000, 0.051]]]; +var YlGn = [[0.000, [1.000, 1.000, 0.898]], [0.002, [1.000, 1.000, 0.898]], [0.004, [0.999, 1.000, 0.893]], [0.006, [0.999, 1.000, 0.893]], [0.008, [0.998, 0.999, 0.887]], [0.010, [0.998, 0.999, 0.887]], [0.012, [0.997, 0.999, 0.882]], [0.014, [0.997, 0.999, 0.882]], [0.016, [0.996, 0.999, 0.876]], [0.018, [0.996, 0.999, 0.876]], [0.020, [0.995, 0.998, 0.871]], [0.022, [0.995, 0.998, 0.871]], [0.023, [0.994, 0.998, 0.866]], [0.025, [0.994, 0.998, 0.866]], [0.027, [0.993, 0.997, 0.860]], [0.029, [0.993, 0.997, 0.860]], [0.031, [0.992, 0.997, 0.855]], [0.033, [0.992, 0.997, 0.855]], [0.035, [0.991, 0.997, 0.849]], [0.037, [0.991, 0.997, 0.849]], [0.039, [0.990, 0.996, 0.844]], [0.041, [0.990, 0.996, 0.844]], [0.043, [0.989, 0.996, 0.838]], [0.045, [0.989, 0.996, 0.838]], [0.047, [0.988, 0.996, 0.833]], [0.049, [0.988, 0.996, 0.833]], [0.051, [0.987, 0.995, 0.828]], [0.053, [0.987, 0.995, 0.828]], [0.055, [0.986, 0.995, 0.822]], [0.057, [0.986, 0.995, 0.822]], [0.059, [0.985, 0.994, 0.817]], [0.061, [0.985, 0.994, 0.817]], [0.063, [0.984, 0.994, 0.811]], [0.065, [0.984, 0.994, 0.811]], [0.067, [0.983, 0.994, 0.806]], [0.068, [0.983, 0.994, 0.806]], [0.070, [0.982, 0.993, 0.801]], [0.072, [0.982, 0.993, 0.801]], [0.074, [0.981, 0.993, 0.795]], [0.076, [0.981, 0.993, 0.795]], [0.078, [0.980, 0.993, 0.790]], [0.080, [0.980, 0.993, 0.790]], [0.082, [0.979, 0.992, 0.784]], [0.084, [0.979, 0.992, 0.784]], [0.086, [0.978, 0.992, 0.779]], [0.088, [0.978, 0.992, 0.779]], [0.090, [0.977, 0.992, 0.774]], [0.092, [0.977, 0.992, 0.774]], [0.094, [0.976, 0.991, 0.768]], [0.096, [0.976, 0.991, 0.768]], [0.098, [0.975, 0.991, 0.763]], [0.100, [0.975, 0.991, 0.763]], [0.102, [0.974, 0.990, 0.757]], [0.104, [0.974, 0.990, 0.757]], [0.106, [0.973, 0.990, 0.752]], [0.108, [0.973, 0.990, 0.752]], [0.110, [0.972, 0.990, 0.746]], [0.112, [0.972, 0.990, 0.746]], [0.114, [0.971, 0.989, 0.741]], [0.115, [0.971, 0.989, 0.741]], [0.117, [0.970, 0.989, 0.736]], [0.119, [0.970, 0.989, 0.736]], [0.121, [0.969, 0.989, 0.730]], [0.123, [0.969, 0.989, 0.730]], [0.125, [0.968, 0.988, 0.725]], [0.127, [0.968, 0.988, 0.725]], [0.129, [0.964, 0.987, 0.722]], [0.131, [0.964, 0.987, 0.722]], [0.133, [0.961, 0.985, 0.720]], [0.135, [0.961, 0.985, 0.720]], [0.137, [0.957, 0.984, 0.717]], [0.139, [0.957, 0.984, 0.717]], [0.141, [0.953, 0.982, 0.714]], [0.143, [0.953, 0.982, 0.714]], [0.145, [0.950, 0.981, 0.712]], [0.147, [0.950, 0.981, 0.712]], [0.149, [0.946, 0.979, 0.709]], [0.151, [0.946, 0.979, 0.709]], [0.153, [0.942, 0.978, 0.706]], [0.155, [0.942, 0.978, 0.706]], [0.157, [0.939, 0.976, 0.703]], [0.159, [0.939, 0.976, 0.703]], [0.160, [0.935, 0.975, 0.701]], [0.162, [0.935, 0.975, 0.701]], [0.164, [0.931, 0.973, 0.698]], [0.166, [0.931, 0.973, 0.698]], [0.168, [0.928, 0.972, 0.695]], [0.170, [0.928, 0.972, 0.695]], [0.172, [0.924, 0.970, 0.693]], [0.174, [0.924, 0.970, 0.693]], [0.176, [0.920, 0.969, 0.690]], [0.178, [0.920, 0.969, 0.690]], [0.180, [0.916, 0.967, 0.687]], [0.182, [0.916, 0.967, 0.687]], [0.184, [0.913, 0.966, 0.685]], [0.186, [0.913, 0.966, 0.685]], [0.188, [0.909, 0.964, 0.682]], [0.190, [0.909, 0.964, 0.682]], [0.192, [0.905, 0.963, 0.679]], [0.194, [0.905, 0.963, 0.679]], [0.196, [0.902, 0.961, 0.676]], [0.198, [0.902, 0.961, 0.676]], [0.200, [0.898, 0.960, 0.674]], [0.202, [0.898, 0.960, 0.674]], [0.204, [0.894, 0.959, 0.671]], [0.205, [0.894, 0.959, 0.671]], [0.207, [0.891, 0.957, 0.668]], [0.209, [0.891, 0.957, 0.668]], [0.211, [0.887, 0.956, 0.666]], [0.213, [0.887, 0.956, 0.666]], [0.215, [0.883, 0.954, 0.663]], [0.217, [0.883, 0.954, 0.663]], [0.219, [0.880, 0.953, 0.660]], [0.221, [0.880, 0.953, 0.660]], [0.223, [0.876, 0.951, 0.657]], [0.225, [0.876, 0.951, 0.657]], [0.227, [0.872, 0.950, 0.655]], [0.229, [0.872, 0.950, 0.655]], [0.231, [0.869, 0.948, 0.652]], [0.233, [0.869, 0.948, 0.652]], [0.235, [0.865, 0.947, 0.649]], [0.237, [0.865, 0.947, 0.649]], [0.239, [0.861, 0.945, 0.647]], [0.241, [0.861, 0.945, 0.647]], [0.243, [0.857, 0.944, 0.644]], [0.245, [0.857, 0.944, 0.644]], [0.247, [0.854, 0.942, 0.641]], [0.249, [0.854, 0.942, 0.641]], [0.250, [0.850, 0.941, 0.639]], [0.252, [0.850, 0.941, 0.639]], [0.254, [0.844, 0.938, 0.636]], [0.256, [0.844, 0.938, 0.636]], [0.258, [0.839, 0.936, 0.633]], [0.260, [0.839, 0.936, 0.633]], [0.262, [0.833, 0.934, 0.631]], [0.264, [0.833, 0.934, 0.631]], [0.266, [0.828, 0.931, 0.628]], [0.268, [0.828, 0.931, 0.628]], [0.270, [0.823, 0.929, 0.626]], [0.272, [0.823, 0.929, 0.626]], [0.274, [0.817, 0.927, 0.623]], [0.276, [0.817, 0.927, 0.623]], [0.278, [0.812, 0.924, 0.620]], [0.280, [0.812, 0.924, 0.620]], [0.282, [0.806, 0.922, 0.618]], [0.284, [0.806, 0.922, 0.618]], [0.286, [0.801, 0.920, 0.615]], [0.288, [0.801, 0.920, 0.615]], [0.290, [0.795, 0.917, 0.613]], [0.292, [0.795, 0.917, 0.613]], [0.294, [0.790, 0.915, 0.610]], [0.295, [0.790, 0.915, 0.610]], [0.297, [0.785, 0.913, 0.608]], [0.299, [0.785, 0.913, 0.608]], [0.301, [0.779, 0.910, 0.605]], [0.303, [0.779, 0.910, 0.605]], [0.305, [0.774, 0.908, 0.602]], [0.307, [0.774, 0.908, 0.602]], [0.309, [0.768, 0.906, 0.600]], [0.311, [0.768, 0.906, 0.600]], [0.313, [0.763, 0.903, 0.597]], [0.315, [0.763, 0.903, 0.597]], [0.317, [0.758, 0.901, 0.595]], [0.319, [0.758, 0.901, 0.595]], [0.321, [0.752, 0.899, 0.592]], [0.323, [0.752, 0.899, 0.592]], [0.325, [0.747, 0.896, 0.589]], [0.327, [0.747, 0.896, 0.589]], [0.329, [0.741, 0.894, 0.587]], [0.331, [0.741, 0.894, 0.587]], [0.333, [0.736, 0.892, 0.584]], [0.335, [0.736, 0.892, 0.584]], [0.337, [0.731, 0.889, 0.582]], [0.339, [0.731, 0.889, 0.582]], [0.341, [0.725, 0.887, 0.579]], [0.342, [0.725, 0.887, 0.579]], [0.344, [0.720, 0.884, 0.577]], [0.346, [0.720, 0.884, 0.577]], [0.348, [0.714, 0.882, 0.574]], [0.350, [0.714, 0.882, 0.574]], [0.352, [0.709, 0.880, 0.571]], [0.354, [0.709, 0.880, 0.571]], [0.356, [0.703, 0.877, 0.569]], [0.358, [0.703, 0.877, 0.569]], [0.360, [0.698, 0.875, 0.566]], [0.362, [0.698, 0.875, 0.566]], [0.364, [0.693, 0.873, 0.564]], [0.366, [0.693, 0.873, 0.564]], [0.368, [0.687, 0.870, 0.561]], [0.370, [0.687, 0.870, 0.561]], [0.372, [0.682, 0.868, 0.558]], [0.374, [0.682, 0.868, 0.558]], [0.376, [0.676, 0.866, 0.556]], [0.378, [0.676, 0.866, 0.556]], [0.380, [0.669, 0.863, 0.553]], [0.382, [0.669, 0.863, 0.553]], [0.384, [0.663, 0.860, 0.551]], [0.386, [0.663, 0.860, 0.551]], [0.387, [0.656, 0.857, 0.548]], [0.389, [0.656, 0.857, 0.548]], [0.391, [0.650, 0.854, 0.546]], [0.393, [0.650, 0.854, 0.546]], [0.395, [0.643, 0.851, 0.543]], [0.397, [0.643, 0.851, 0.543]], [0.399, [0.637, 0.849, 0.540]], [0.401, [0.637, 0.849, 0.540]], [0.403, [0.630, 0.846, 0.538]], [0.405, [0.630, 0.846, 0.538]], [0.407, [0.624, 0.843, 0.535]], [0.409, [0.624, 0.843, 0.535]], [0.411, [0.617, 0.840, 0.533]], [0.413, [0.617, 0.840, 0.533]], [0.415, [0.611, 0.837, 0.530]], [0.417, [0.611, 0.837, 0.530]], [0.419, [0.604, 0.834, 0.527]], [0.421, [0.604, 0.834, 0.527]], [0.423, [0.598, 0.832, 0.525]], [0.425, [0.598, 0.832, 0.525]], [0.427, [0.591, 0.829, 0.522]], [0.429, [0.591, 0.829, 0.522]], [0.431, [0.585, 0.826, 0.520]], [0.432, [0.585, 0.826, 0.520]], [0.434, [0.578, 0.823, 0.517]], [0.436, [0.578, 0.823, 0.517]], [0.438, [0.572, 0.820, 0.515]], [0.440, [0.572, 0.820, 0.515]], [0.442, [0.565, 0.818, 0.512]], [0.444, [0.565, 0.818, 0.512]], [0.446, [0.559, 0.815, 0.509]], [0.448, [0.559, 0.815, 0.509]], [0.450, [0.552, 0.812, 0.507]], [0.452, [0.552, 0.812, 0.507]], [0.454, [0.546, 0.809, 0.504]], [0.456, [0.546, 0.809, 0.504]], [0.458, [0.539, 0.806, 0.502]], [0.460, [0.539, 0.806, 0.502]], [0.462, [0.533, 0.803, 0.499]], [0.464, [0.533, 0.803, 0.499]], [0.466, [0.526, 0.801, 0.496]], [0.468, [0.526, 0.801, 0.496]], [0.470, [0.519, 0.798, 0.494]], [0.472, [0.519, 0.798, 0.494]], [0.474, [0.513, 0.795, 0.491]], [0.476, [0.513, 0.795, 0.491]], [0.477, [0.506, 0.792, 0.489]], [0.479, [0.506, 0.792, 0.489]], [0.481, [0.500, 0.789, 0.486]], [0.483, [0.500, 0.789, 0.486]], [0.485, [0.493, 0.786, 0.484]], [0.487, [0.493, 0.786, 0.484]], [0.489, [0.487, 0.784, 0.481]], [0.491, [0.487, 0.784, 0.481]], [0.493, [0.480, 0.781, 0.478]], [0.495, [0.480, 0.781, 0.478]], [0.497, [0.474, 0.778, 0.476]], [0.499, [0.474, 0.778, 0.476]], [0.501, [0.467, 0.775, 0.473]], [0.503, [0.467, 0.775, 0.473]], [0.505, [0.460, 0.771, 0.469]], [0.507, [0.460, 0.771, 0.469]], [0.509, [0.454, 0.768, 0.466]], [0.511, [0.454, 0.768, 0.466]], [0.513, [0.447, 0.765, 0.462]], [0.515, [0.447, 0.765, 0.462]], [0.517, [0.440, 0.762, 0.459]], [0.519, [0.440, 0.762, 0.459]], [0.521, [0.433, 0.758, 0.456]], [0.523, [0.433, 0.758, 0.456]], [0.524, [0.427, 0.755, 0.452]], [0.526, [0.427, 0.755, 0.452]], [0.528, [0.420, 0.752, 0.449]], [0.530, [0.420, 0.752, 0.449]], [0.532, [0.413, 0.748, 0.445]], [0.534, [0.413, 0.748, 0.445]], [0.536, [0.406, 0.745, 0.442]], [0.538, [0.406, 0.745, 0.442]], [0.540, [0.400, 0.742, 0.438]], [0.542, [0.400, 0.742, 0.438]], [0.544, [0.393, 0.738, 0.435]], [0.546, [0.393, 0.738, 0.435]], [0.548, [0.386, 0.735, 0.431]], [0.550, [0.386, 0.735, 0.431]], [0.552, [0.379, 0.732, 0.428]], [0.554, [0.379, 0.732, 0.428]], [0.556, [0.372, 0.728, 0.425]], [0.558, [0.372, 0.728, 0.425]], [0.560, [0.366, 0.725, 0.421]], [0.562, [0.366, 0.725, 0.421]], [0.564, [0.359, 0.722, 0.418]], [0.566, [0.359, 0.722, 0.418]], [0.568, [0.352, 0.718, 0.414]], [0.569, [0.352, 0.718, 0.414]], [0.571, [0.345, 0.715, 0.411]], [0.573, [0.345, 0.715, 0.411]], [0.575, [0.339, 0.712, 0.407]], [0.577, [0.339, 0.712, 0.407]], [0.579, [0.332, 0.708, 0.404]], [0.581, [0.332, 0.708, 0.404]], [0.583, [0.325, 0.705, 0.400]], [0.585, [0.325, 0.705, 0.400]], [0.587, [0.318, 0.702, 0.397]], [0.589, [0.318, 0.702, 0.397]], [0.591, [0.312, 0.698, 0.394]], [0.593, [0.312, 0.698, 0.394]], [0.595, [0.305, 0.695, 0.390]], [0.597, [0.305, 0.695, 0.390]], [0.599, [0.298, 0.692, 0.387]], [0.601, [0.298, 0.692, 0.387]], [0.603, [0.291, 0.688, 0.383]], [0.605, [0.291, 0.688, 0.383]], [0.607, [0.285, 0.685, 0.380]], [0.609, [0.285, 0.685, 0.380]], [0.611, [0.278, 0.682, 0.376]], [0.613, [0.278, 0.682, 0.376]], [0.614, [0.271, 0.678, 0.373]], [0.616, [0.271, 0.678, 0.373]], [0.618, [0.264, 0.675, 0.369]], [0.620, [0.264, 0.675, 0.369]], [0.622, [0.257, 0.672, 0.366]], [0.624, [0.257, 0.672, 0.366]], [0.626, [0.253, 0.668, 0.363]], [0.628, [0.253, 0.668, 0.363]], [0.630, [0.249, 0.663, 0.360]], [0.632, [0.249, 0.663, 0.360]], [0.634, [0.245, 0.658, 0.356]], [0.636, [0.245, 0.658, 0.356]], [0.638, [0.242, 0.653, 0.353]], [0.640, [0.242, 0.653, 0.353]], [0.642, [0.238, 0.648, 0.350]], [0.644, [0.238, 0.648, 0.350]], [0.646, [0.234, 0.644, 0.347]], [0.648, [0.234, 0.644, 0.347]], [0.650, [0.230, 0.639, 0.344]], [0.652, [0.230, 0.639, 0.344]], [0.654, [0.227, 0.634, 0.340]], [0.656, [0.227, 0.634, 0.340]], [0.658, [0.223, 0.629, 0.337]], [0.659, [0.223, 0.629, 0.337]], [0.661, [0.219, 0.624, 0.334]], [0.663, [0.219, 0.624, 0.334]], [0.665, [0.216, 0.620, 0.331]], [0.667, [0.216, 0.620, 0.331]], [0.669, [0.212, 0.615, 0.328]], [0.671, [0.212, 0.615, 0.328]], [0.673, [0.208, 0.610, 0.324]], [0.675, [0.208, 0.610, 0.324]], [0.677, [0.205, 0.605, 0.321]], [0.679, [0.205, 0.605, 0.321]], [0.681, [0.201, 0.600, 0.318]], [0.683, [0.201, 0.600, 0.318]], [0.685, [0.197, 0.596, 0.315]], [0.687, [0.197, 0.596, 0.315]], [0.689, [0.194, 0.591, 0.312]], [0.691, [0.194, 0.591, 0.312]], [0.693, [0.190, 0.586, 0.308]], [0.695, [0.190, 0.586, 0.308]], [0.697, [0.186, 0.581, 0.305]], [0.699, [0.186, 0.581, 0.305]], [0.701, [0.182, 0.576, 0.302]], [0.703, [0.182, 0.576, 0.302]], [0.705, [0.179, 0.572, 0.299]], [0.706, [0.179, 0.572, 0.299]], [0.708, [0.175, 0.567, 0.296]], [0.710, [0.175, 0.567, 0.296]], [0.712, [0.171, 0.562, 0.292]], [0.714, [0.171, 0.562, 0.292]], [0.716, [0.168, 0.557, 0.289]], [0.718, [0.168, 0.557, 0.289]], [0.720, [0.164, 0.552, 0.286]], [0.722, [0.164, 0.552, 0.286]], [0.724, [0.160, 0.548, 0.283]], [0.726, [0.160, 0.548, 0.283]], [0.728, [0.157, 0.543, 0.280]], [0.730, [0.157, 0.543, 0.280]], [0.732, [0.153, 0.538, 0.276]], [0.734, [0.153, 0.538, 0.276]], [0.736, [0.149, 0.533, 0.273]], [0.738, [0.149, 0.533, 0.273]], [0.740, [0.146, 0.528, 0.270]], [0.742, [0.146, 0.528, 0.270]], [0.744, [0.142, 0.524, 0.267]], [0.746, [0.142, 0.524, 0.267]], [0.748, [0.138, 0.519, 0.264]], [0.750, [0.138, 0.519, 0.264]], [0.751, [0.134, 0.515, 0.262]], [0.753, [0.134, 0.515, 0.262]], [0.755, [0.130, 0.512, 0.260]], [0.757, [0.130, 0.512, 0.260]], [0.759, [0.125, 0.508, 0.259]], [0.761, [0.125, 0.508, 0.259]], [0.763, [0.121, 0.505, 0.257]], [0.765, [0.121, 0.505, 0.257]], [0.767, [0.117, 0.501, 0.256]], [0.769, [0.117, 0.501, 0.256]], [0.771, [0.112, 0.498, 0.254]], [0.773, [0.112, 0.498, 0.254]], [0.775, [0.108, 0.494, 0.253]], [0.777, [0.108, 0.494, 0.253]], [0.779, [0.104, 0.491, 0.251]], [0.781, [0.104, 0.491, 0.251]], [0.783, [0.100, 0.488, 0.250]], [0.785, [0.100, 0.488, 0.250]], [0.787, [0.095, 0.484, 0.248]], [0.789, [0.095, 0.484, 0.248]], [0.791, [0.091, 0.481, 0.247]], [0.793, [0.091, 0.481, 0.247]], [0.795, [0.087, 0.477, 0.245]], [0.796, [0.087, 0.477, 0.245]], [0.798, [0.082, 0.474, 0.244]], [0.800, [0.082, 0.474, 0.244]], [0.802, [0.078, 0.470, 0.242]], [0.804, [0.078, 0.470, 0.242]], [0.806, [0.074, 0.467, 0.241]], [0.808, [0.074, 0.467, 0.241]], [0.810, [0.069, 0.463, 0.239]], [0.812, [0.069, 0.463, 0.239]], [0.814, [0.065, 0.460, 0.238]], [0.816, [0.065, 0.460, 0.238]], [0.818, [0.061, 0.457, 0.237]], [0.820, [0.061, 0.457, 0.237]], [0.822, [0.057, 0.453, 0.235]], [0.824, [0.057, 0.453, 0.235]], [0.826, [0.052, 0.450, 0.234]], [0.828, [0.052, 0.450, 0.234]], [0.830, [0.048, 0.446, 0.232]], [0.832, [0.048, 0.446, 0.232]], [0.834, [0.044, 0.443, 0.231]], [0.836, [0.044, 0.443, 0.231]], [0.838, [0.039, 0.439, 0.229]], [0.840, [0.039, 0.439, 0.229]], [0.841, [0.035, 0.436, 0.228]], [0.843, [0.035, 0.436, 0.228]], [0.845, [0.031, 0.432, 0.226]], [0.847, [0.031, 0.432, 0.226]], [0.849, [0.026, 0.429, 0.225]], [0.851, [0.026, 0.429, 0.225]], [0.853, [0.022, 0.425, 0.223]], [0.855, [0.022, 0.425, 0.223]], [0.857, [0.018, 0.422, 0.222]], [0.859, [0.018, 0.422, 0.222]], [0.861, [0.013, 0.419, 0.220]], [0.863, [0.013, 0.419, 0.220]], [0.865, [0.009, 0.415, 0.219]], [0.867, [0.009, 0.415, 0.219]], [0.869, [0.005, 0.412, 0.217]], [0.871, [0.005, 0.412, 0.217]], [0.873, [0.001, 0.408, 0.216]], [0.875, [0.001, 0.408, 0.216]], [0.877, [0.000, 0.404, 0.214]], [0.879, [0.000, 0.404, 0.214]], [0.881, [0.000, 0.400, 0.212]], [0.883, [0.000, 0.400, 0.212]], [0.885, [0.000, 0.395, 0.211]], [0.886, [0.000, 0.395, 0.211]], [0.888, [0.000, 0.391, 0.209]], [0.890, [0.000, 0.391, 0.209]], [0.892, [0.000, 0.387, 0.207]], [0.894, [0.000, 0.387, 0.207]], [0.896, [0.000, 0.383, 0.206]], [0.898, [0.000, 0.383, 0.206]], [0.900, [0.000, 0.378, 0.204]], [0.902, [0.000, 0.378, 0.204]], [0.904, [0.000, 0.374, 0.202]], [0.906, [0.000, 0.374, 0.202]], [0.908, [0.000, 0.370, 0.200]], [0.910, [0.000, 0.370, 0.200]], [0.912, [0.000, 0.365, 0.199]], [0.914, [0.000, 0.365, 0.199]], [0.916, [0.000, 0.361, 0.197]], [0.918, [0.000, 0.361, 0.197]], [0.920, [0.000, 0.357, 0.195]], [0.922, [0.000, 0.357, 0.195]], [0.924, [0.000, 0.352, 0.194]], [0.926, [0.000, 0.352, 0.194]], [0.928, [0.000, 0.348, 0.192]], [0.930, [0.000, 0.348, 0.192]], [0.932, [0.000, 0.344, 0.190]], [0.933, [0.000, 0.344, 0.190]], [0.935, [0.000, 0.339, 0.188]], [0.937, [0.000, 0.339, 0.188]], [0.939, [0.000, 0.335, 0.187]], [0.941, [0.000, 0.335, 0.187]], [0.943, [0.000, 0.331, 0.185]], [0.945, [0.000, 0.331, 0.185]], [0.947, [0.000, 0.327, 0.183]], [0.949, [0.000, 0.327, 0.183]], [0.951, [0.000, 0.322, 0.181]], [0.953, [0.000, 0.322, 0.181]], [0.955, [0.000, 0.318, 0.180]], [0.957, [0.000, 0.318, 0.180]], [0.959, [0.000, 0.314, 0.178]], [0.961, [0.000, 0.314, 0.178]], [0.963, [0.000, 0.309, 0.176]], [0.965, [0.000, 0.309, 0.176]], [0.967, [0.000, 0.305, 0.175]], [0.969, [0.000, 0.305, 0.175]], [0.971, [0.000, 0.301, 0.173]], [0.973, [0.000, 0.301, 0.173]], [0.975, [0.000, 0.296, 0.171]], [0.977, [0.000, 0.296, 0.171]], [0.978, [0.000, 0.292, 0.169]], [0.980, [0.000, 0.292, 0.169]], [0.982, [0.000, 0.288, 0.168]], [0.984, [0.000, 0.288, 0.168]], [0.986, [0.000, 0.284, 0.166]], [0.988, [0.000, 0.284, 0.166]], [0.990, [0.000, 0.279, 0.164]], [0.992, [0.000, 0.279, 0.164]], [0.994, [0.000, 0.275, 0.163]], [0.996, [0.000, 0.275, 0.163]], [0.998, [0.000, 0.271, 0.161]], [1.000, [0.000, 0.271, 0.161]]]; +var YlGnBu = [[0.000, [1.000, 1.000, 0.851]], [0.002, [1.000, 1.000, 0.851]], [0.004, [0.998, 0.999, 0.846]], [0.006, [0.998, 0.999, 0.846]], [0.008, [0.996, 0.998, 0.841]], [0.010, [0.996, 0.998, 0.841]], [0.012, [0.993, 0.997, 0.836]], [0.014, [0.993, 0.997, 0.836]], [0.016, [0.991, 0.997, 0.831]], [0.018, [0.991, 0.997, 0.831]], [0.020, [0.989, 0.996, 0.826]], [0.022, [0.989, 0.996, 0.826]], [0.023, [0.987, 0.995, 0.821]], [0.025, [0.987, 0.995, 0.821]], [0.027, [0.984, 0.994, 0.817]], [0.029, [0.984, 0.994, 0.817]], [0.031, [0.982, 0.993, 0.812]], [0.033, [0.982, 0.993, 0.812]], [0.035, [0.980, 0.992, 0.807]], [0.037, [0.980, 0.992, 0.807]], [0.039, [0.978, 0.991, 0.802]], [0.041, [0.978, 0.991, 0.802]], [0.043, [0.976, 0.991, 0.797]], [0.045, [0.976, 0.991, 0.797]], [0.047, [0.973, 0.990, 0.792]], [0.049, [0.973, 0.990, 0.792]], [0.051, [0.971, 0.989, 0.787]], [0.053, [0.971, 0.989, 0.787]], [0.055, [0.969, 0.988, 0.782]], [0.057, [0.969, 0.988, 0.782]], [0.059, [0.967, 0.987, 0.777]], [0.061, [0.967, 0.987, 0.777]], [0.063, [0.965, 0.986, 0.772]], [0.065, [0.965, 0.986, 0.772]], [0.067, [0.962, 0.985, 0.767]], [0.068, [0.962, 0.985, 0.767]], [0.070, [0.960, 0.984, 0.762]], [0.072, [0.960, 0.984, 0.762]], [0.074, [0.958, 0.984, 0.757]], [0.076, [0.958, 0.984, 0.757]], [0.078, [0.956, 0.983, 0.753]], [0.080, [0.956, 0.983, 0.753]], [0.082, [0.953, 0.982, 0.748]], [0.084, [0.953, 0.982, 0.748]], [0.086, [0.951, 0.981, 0.743]], [0.088, [0.951, 0.981, 0.743]], [0.090, [0.949, 0.980, 0.738]], [0.092, [0.949, 0.980, 0.738]], [0.094, [0.947, 0.979, 0.733]], [0.096, [0.947, 0.979, 0.733]], [0.098, [0.945, 0.978, 0.728]], [0.100, [0.945, 0.978, 0.728]], [0.102, [0.942, 0.978, 0.723]], [0.104, [0.942, 0.978, 0.723]], [0.106, [0.940, 0.977, 0.718]], [0.108, [0.940, 0.977, 0.718]], [0.110, [0.938, 0.976, 0.713]], [0.112, [0.938, 0.976, 0.713]], [0.114, [0.936, 0.975, 0.708]], [0.115, [0.936, 0.975, 0.708]], [0.117, [0.934, 0.974, 0.703]], [0.119, [0.934, 0.974, 0.703]], [0.121, [0.931, 0.973, 0.698]], [0.123, [0.931, 0.973, 0.698]], [0.125, [0.929, 0.972, 0.694]], [0.127, [0.929, 0.972, 0.694]], [0.129, [0.924, 0.970, 0.695]], [0.131, [0.924, 0.970, 0.695]], [0.133, [0.919, 0.969, 0.695]], [0.135, [0.919, 0.969, 0.695]], [0.137, [0.915, 0.967, 0.695]], [0.139, [0.915, 0.967, 0.695]], [0.141, [0.910, 0.965, 0.696]], [0.143, [0.910, 0.965, 0.696]], [0.145, [0.905, 0.963, 0.696]], [0.147, [0.905, 0.963, 0.696]], [0.149, [0.901, 0.961, 0.696]], [0.151, [0.901, 0.961, 0.696]], [0.153, [0.896, 0.959, 0.697]], [0.155, [0.896, 0.959, 0.697]], [0.157, [0.891, 0.958, 0.697]], [0.159, [0.891, 0.958, 0.697]], [0.160, [0.887, 0.956, 0.697]], [0.162, [0.887, 0.956, 0.697]], [0.164, [0.882, 0.954, 0.698]], [0.166, [0.882, 0.954, 0.698]], [0.168, [0.877, 0.952, 0.698]], [0.170, [0.877, 0.952, 0.698]], [0.172, [0.873, 0.950, 0.699]], [0.174, [0.873, 0.950, 0.699]], [0.176, [0.868, 0.948, 0.699]], [0.178, [0.868, 0.948, 0.699]], [0.180, [0.863, 0.946, 0.699]], [0.182, [0.863, 0.946, 0.699]], [0.184, [0.859, 0.945, 0.700]], [0.186, [0.859, 0.945, 0.700]], [0.188, [0.854, 0.943, 0.700]], [0.190, [0.854, 0.943, 0.700]], [0.192, [0.849, 0.941, 0.700]], [0.194, [0.849, 0.941, 0.700]], [0.196, [0.845, 0.939, 0.701]], [0.198, [0.845, 0.939, 0.701]], [0.200, [0.840, 0.937, 0.701]], [0.202, [0.840, 0.937, 0.701]], [0.204, [0.835, 0.935, 0.702]], [0.205, [0.835, 0.935, 0.702]], [0.207, [0.831, 0.934, 0.702]], [0.209, [0.831, 0.934, 0.702]], [0.211, [0.826, 0.932, 0.702]], [0.213, [0.826, 0.932, 0.702]], [0.215, [0.821, 0.930, 0.703]], [0.217, [0.821, 0.930, 0.703]], [0.219, [0.817, 0.928, 0.703]], [0.221, [0.817, 0.928, 0.703]], [0.223, [0.812, 0.926, 0.703]], [0.225, [0.812, 0.926, 0.703]], [0.227, [0.807, 0.924, 0.704]], [0.229, [0.807, 0.924, 0.704]], [0.231, [0.803, 0.922, 0.704]], [0.233, [0.803, 0.922, 0.704]], [0.235, [0.798, 0.921, 0.704]], [0.237, [0.798, 0.921, 0.704]], [0.239, [0.793, 0.919, 0.705]], [0.241, [0.793, 0.919, 0.705]], [0.243, [0.789, 0.917, 0.705]], [0.245, [0.789, 0.917, 0.705]], [0.247, [0.784, 0.915, 0.706]], [0.249, [0.784, 0.915, 0.706]], [0.250, [0.778, 0.913, 0.706]], [0.252, [0.778, 0.913, 0.706]], [0.254, [0.769, 0.909, 0.707]], [0.256, [0.769, 0.909, 0.707]], [0.258, [0.760, 0.906, 0.708]], [0.260, [0.760, 0.906, 0.708]], [0.262, [0.752, 0.903, 0.709]], [0.264, [0.752, 0.903, 0.709]], [0.266, [0.743, 0.899, 0.710]], [0.268, [0.743, 0.899, 0.710]], [0.270, [0.734, 0.896, 0.710]], [0.272, [0.734, 0.896, 0.710]], [0.274, [0.725, 0.892, 0.711]], [0.276, [0.725, 0.892, 0.711]], [0.278, [0.716, 0.889, 0.712]], [0.280, [0.716, 0.889, 0.712]], [0.282, [0.707, 0.885, 0.713]], [0.284, [0.707, 0.885, 0.713]], [0.286, [0.698, 0.882, 0.714]], [0.288, [0.698, 0.882, 0.714]], [0.290, [0.690, 0.878, 0.715]], [0.292, [0.690, 0.878, 0.715]], [0.294, [0.681, 0.875, 0.716]], [0.295, [0.681, 0.875, 0.716]], [0.297, [0.672, 0.872, 0.716]], [0.299, [0.672, 0.872, 0.716]], [0.301, [0.663, 0.868, 0.717]], [0.303, [0.663, 0.868, 0.717]], [0.305, [0.654, 0.865, 0.718]], [0.307, [0.654, 0.865, 0.718]], [0.309, [0.645, 0.861, 0.719]], [0.311, [0.645, 0.861, 0.719]], [0.313, [0.636, 0.858, 0.720]], [0.315, [0.636, 0.858, 0.720]], [0.317, [0.628, 0.854, 0.721]], [0.319, [0.628, 0.854, 0.721]], [0.321, [0.619, 0.851, 0.722]], [0.323, [0.619, 0.851, 0.722]], [0.325, [0.610, 0.847, 0.722]], [0.327, [0.610, 0.847, 0.722]], [0.329, [0.601, 0.844, 0.723]], [0.331, [0.601, 0.844, 0.723]], [0.333, [0.592, 0.841, 0.724]], [0.335, [0.592, 0.841, 0.724]], [0.337, [0.583, 0.837, 0.725]], [0.339, [0.583, 0.837, 0.725]], [0.341, [0.574, 0.834, 0.726]], [0.342, [0.574, 0.834, 0.726]], [0.344, [0.566, 0.830, 0.727]], [0.346, [0.566, 0.830, 0.727]], [0.348, [0.557, 0.827, 0.728]], [0.350, [0.557, 0.827, 0.728]], [0.352, [0.548, 0.823, 0.728]], [0.354, [0.548, 0.823, 0.728]], [0.356, [0.539, 0.820, 0.729]], [0.358, [0.539, 0.820, 0.729]], [0.360, [0.530, 0.816, 0.730]], [0.362, [0.530, 0.816, 0.730]], [0.364, [0.521, 0.813, 0.731]], [0.366, [0.521, 0.813, 0.731]], [0.368, [0.512, 0.810, 0.732]], [0.370, [0.512, 0.810, 0.732]], [0.372, [0.504, 0.806, 0.733]], [0.374, [0.504, 0.806, 0.733]], [0.376, [0.495, 0.803, 0.734]], [0.378, [0.495, 0.803, 0.734]], [0.380, [0.488, 0.800, 0.735]], [0.382, [0.488, 0.800, 0.735]], [0.384, [0.480, 0.797, 0.736]], [0.386, [0.480, 0.797, 0.736]], [0.387, [0.472, 0.794, 0.737]], [0.389, [0.472, 0.794, 0.737]], [0.391, [0.465, 0.792, 0.738]], [0.393, [0.465, 0.792, 0.738]], [0.395, [0.457, 0.789, 0.739]], [0.397, [0.457, 0.789, 0.739]], [0.399, [0.449, 0.786, 0.740]], [0.401, [0.449, 0.786, 0.740]], [0.403, [0.442, 0.783, 0.741]], [0.405, [0.442, 0.783, 0.741]], [0.407, [0.434, 0.780, 0.743]], [0.409, [0.434, 0.780, 0.743]], [0.411, [0.427, 0.777, 0.744]], [0.413, [0.427, 0.777, 0.744]], [0.415, [0.419, 0.775, 0.745]], [0.417, [0.419, 0.775, 0.745]], [0.419, [0.411, 0.772, 0.746]], [0.421, [0.411, 0.772, 0.746]], [0.423, [0.404, 0.769, 0.747]], [0.425, [0.404, 0.769, 0.747]], [0.427, [0.396, 0.766, 0.748]], [0.429, [0.396, 0.766, 0.748]], [0.431, [0.388, 0.763, 0.749]], [0.432, [0.388, 0.763, 0.749]], [0.434, [0.381, 0.760, 0.750]], [0.436, [0.381, 0.760, 0.750]], [0.438, [0.373, 0.758, 0.751]], [0.440, [0.373, 0.758, 0.751]], [0.442, [0.366, 0.755, 0.753]], [0.444, [0.366, 0.755, 0.753]], [0.446, [0.358, 0.752, 0.754]], [0.448, [0.358, 0.752, 0.754]], [0.450, [0.350, 0.749, 0.755]], [0.452, [0.350, 0.749, 0.755]], [0.454, [0.343, 0.746, 0.756]], [0.456, [0.343, 0.746, 0.756]], [0.458, [0.335, 0.743, 0.757]], [0.460, [0.335, 0.743, 0.757]], [0.462, [0.327, 0.741, 0.758]], [0.464, [0.327, 0.741, 0.758]], [0.466, [0.320, 0.738, 0.759]], [0.468, [0.320, 0.738, 0.759]], [0.470, [0.312, 0.735, 0.760]], [0.472, [0.312, 0.735, 0.760]], [0.474, [0.304, 0.732, 0.761]], [0.476, [0.304, 0.732, 0.761]], [0.477, [0.297, 0.729, 0.763]], [0.479, [0.297, 0.729, 0.763]], [0.481, [0.289, 0.726, 0.764]], [0.483, [0.289, 0.726, 0.764]], [0.485, [0.282, 0.724, 0.765]], [0.487, [0.282, 0.724, 0.765]], [0.489, [0.274, 0.721, 0.766]], [0.491, [0.274, 0.721, 0.766]], [0.493, [0.266, 0.718, 0.767]], [0.495, [0.266, 0.718, 0.767]], [0.497, [0.259, 0.715, 0.768]], [0.499, [0.259, 0.715, 0.768]], [0.501, [0.253, 0.711, 0.768]], [0.503, [0.253, 0.711, 0.768]], [0.505, [0.248, 0.707, 0.768]], [0.507, [0.248, 0.707, 0.768]], [0.509, [0.244, 0.702, 0.767]], [0.511, [0.244, 0.702, 0.767]], [0.513, [0.239, 0.698, 0.767]], [0.515, [0.239, 0.698, 0.767]], [0.517, [0.235, 0.693, 0.766]], [0.519, [0.235, 0.693, 0.766]], [0.521, [0.231, 0.689, 0.766]], [0.523, [0.231, 0.689, 0.766]], [0.524, [0.226, 0.684, 0.765]], [0.526, [0.226, 0.684, 0.765]], [0.528, [0.222, 0.680, 0.765]], [0.530, [0.222, 0.680, 0.765]], [0.532, [0.217, 0.675, 0.764]], [0.534, [0.217, 0.675, 0.764]], [0.536, [0.213, 0.670, 0.764]], [0.538, [0.213, 0.670, 0.764]], [0.540, [0.208, 0.666, 0.763]], [0.542, [0.208, 0.666, 0.763]], [0.544, [0.204, 0.661, 0.763]], [0.546, [0.204, 0.661, 0.763]], [0.548, [0.200, 0.657, 0.762]], [0.550, [0.200, 0.657, 0.762]], [0.552, [0.195, 0.652, 0.762]], [0.554, [0.195, 0.652, 0.762]], [0.556, [0.191, 0.648, 0.761]], [0.558, [0.191, 0.648, 0.761]], [0.560, [0.186, 0.643, 0.761]], [0.562, [0.186, 0.643, 0.761]], [0.564, [0.182, 0.639, 0.761]], [0.566, [0.182, 0.639, 0.761]], [0.568, [0.177, 0.634, 0.760]], [0.569, [0.177, 0.634, 0.760]], [0.571, [0.173, 0.630, 0.760]], [0.573, [0.173, 0.630, 0.760]], [0.575, [0.169, 0.625, 0.759]], [0.577, [0.169, 0.625, 0.759]], [0.579, [0.164, 0.620, 0.759]], [0.581, [0.164, 0.620, 0.759]], [0.583, [0.160, 0.616, 0.758]], [0.585, [0.160, 0.616, 0.758]], [0.587, [0.155, 0.611, 0.758]], [0.589, [0.155, 0.611, 0.758]], [0.591, [0.151, 0.607, 0.757]], [0.593, [0.151, 0.607, 0.757]], [0.595, [0.146, 0.602, 0.757]], [0.597, [0.146, 0.602, 0.757]], [0.599, [0.142, 0.598, 0.756]], [0.601, [0.142, 0.598, 0.756]], [0.603, [0.138, 0.593, 0.756]], [0.605, [0.138, 0.593, 0.756]], [0.607, [0.133, 0.589, 0.755]], [0.609, [0.133, 0.589, 0.755]], [0.611, [0.129, 0.584, 0.755]], [0.613, [0.129, 0.584, 0.755]], [0.614, [0.124, 0.579, 0.754]], [0.616, [0.124, 0.579, 0.754]], [0.618, [0.120, 0.575, 0.754]], [0.620, [0.120, 0.575, 0.754]], [0.622, [0.115, 0.570, 0.753]], [0.624, [0.115, 0.570, 0.753]], [0.626, [0.114, 0.565, 0.751]], [0.628, [0.114, 0.565, 0.751]], [0.630, [0.115, 0.558, 0.748]], [0.632, [0.115, 0.558, 0.748]], [0.634, [0.115, 0.552, 0.745]], [0.636, [0.115, 0.552, 0.745]], [0.638, [0.116, 0.546, 0.742]], [0.640, [0.116, 0.546, 0.742]], [0.642, [0.117, 0.540, 0.739]], [0.644, [0.117, 0.540, 0.739]], [0.646, [0.117, 0.533, 0.736]], [0.648, [0.117, 0.533, 0.736]], [0.650, [0.118, 0.527, 0.733]], [0.652, [0.118, 0.527, 0.733]], [0.654, [0.118, 0.521, 0.730]], [0.656, [0.118, 0.521, 0.730]], [0.658, [0.119, 0.515, 0.727]], [0.659, [0.119, 0.515, 0.727]], [0.661, [0.120, 0.508, 0.725]], [0.663, [0.120, 0.508, 0.725]], [0.665, [0.120, 0.502, 0.722]], [0.667, [0.120, 0.502, 0.722]], [0.669, [0.121, 0.496, 0.719]], [0.671, [0.121, 0.496, 0.719]], [0.673, [0.121, 0.489, 0.716]], [0.675, [0.121, 0.489, 0.716]], [0.677, [0.122, 0.483, 0.713]], [0.679, [0.122, 0.483, 0.713]], [0.681, [0.123, 0.477, 0.710]], [0.683, [0.123, 0.477, 0.710]], [0.685, [0.123, 0.471, 0.707]], [0.687, [0.123, 0.471, 0.707]], [0.689, [0.124, 0.464, 0.704]], [0.691, [0.124, 0.464, 0.704]], [0.693, [0.125, 0.458, 0.701]], [0.695, [0.125, 0.458, 0.701]], [0.697, [0.125, 0.452, 0.698]], [0.699, [0.125, 0.452, 0.698]], [0.701, [0.126, 0.445, 0.695]], [0.703, [0.126, 0.445, 0.695]], [0.705, [0.126, 0.439, 0.692]], [0.706, [0.126, 0.439, 0.692]], [0.708, [0.127, 0.433, 0.689]], [0.710, [0.127, 0.433, 0.689]], [0.712, [0.128, 0.427, 0.686]], [0.714, [0.128, 0.427, 0.686]], [0.716, [0.128, 0.420, 0.683]], [0.718, [0.128, 0.420, 0.683]], [0.720, [0.129, 0.414, 0.680]], [0.722, [0.129, 0.414, 0.680]], [0.724, [0.129, 0.408, 0.677]], [0.726, [0.129, 0.408, 0.677]], [0.728, [0.130, 0.402, 0.674]], [0.730, [0.130, 0.402, 0.674]], [0.732, [0.131, 0.395, 0.671]], [0.734, [0.131, 0.395, 0.671]], [0.736, [0.131, 0.389, 0.668]], [0.738, [0.131, 0.389, 0.668]], [0.740, [0.132, 0.383, 0.665]], [0.742, [0.132, 0.383, 0.665]], [0.744, [0.133, 0.376, 0.663]], [0.746, [0.133, 0.376, 0.663]], [0.748, [0.133, 0.370, 0.660]], [0.750, [0.133, 0.370, 0.660]], [0.751, [0.134, 0.365, 0.657]], [0.753, [0.134, 0.365, 0.657]], [0.755, [0.134, 0.360, 0.655]], [0.757, [0.134, 0.360, 0.655]], [0.759, [0.134, 0.354, 0.652]], [0.761, [0.134, 0.354, 0.652]], [0.763, [0.135, 0.349, 0.650]], [0.765, [0.135, 0.349, 0.650]], [0.767, [0.135, 0.344, 0.647]], [0.769, [0.135, 0.344, 0.647]], [0.771, [0.135, 0.339, 0.645]], [0.773, [0.135, 0.339, 0.645]], [0.775, [0.136, 0.334, 0.642]], [0.777, [0.136, 0.334, 0.642]], [0.779, [0.136, 0.329, 0.640]], [0.781, [0.136, 0.329, 0.640]], [0.783, [0.137, 0.323, 0.637]], [0.785, [0.137, 0.323, 0.637]], [0.787, [0.137, 0.318, 0.635]], [0.789, [0.137, 0.318, 0.635]], [0.791, [0.137, 0.313, 0.632]], [0.793, [0.137, 0.313, 0.632]], [0.795, [0.138, 0.308, 0.630]], [0.796, [0.138, 0.308, 0.630]], [0.798, [0.138, 0.303, 0.627]], [0.800, [0.138, 0.303, 0.627]], [0.802, [0.138, 0.298, 0.625]], [0.804, [0.138, 0.298, 0.625]], [0.806, [0.139, 0.292, 0.623]], [0.808, [0.139, 0.292, 0.623]], [0.810, [0.139, 0.287, 0.620]], [0.812, [0.139, 0.287, 0.620]], [0.814, [0.140, 0.282, 0.618]], [0.816, [0.140, 0.282, 0.618]], [0.818, [0.140, 0.277, 0.615]], [0.820, [0.140, 0.277, 0.615]], [0.822, [0.140, 0.272, 0.613]], [0.824, [0.140, 0.272, 0.613]], [0.826, [0.141, 0.267, 0.610]], [0.828, [0.141, 0.267, 0.610]], [0.830, [0.141, 0.261, 0.608]], [0.832, [0.141, 0.261, 0.608]], [0.834, [0.141, 0.256, 0.605]], [0.836, [0.141, 0.256, 0.605]], [0.838, [0.142, 0.251, 0.603]], [0.840, [0.142, 0.251, 0.603]], [0.841, [0.142, 0.246, 0.600]], [0.843, [0.142, 0.246, 0.600]], [0.845, [0.142, 0.241, 0.598]], [0.847, [0.142, 0.241, 0.598]], [0.849, [0.143, 0.236, 0.595]], [0.851, [0.143, 0.236, 0.595]], [0.853, [0.143, 0.230, 0.593]], [0.855, [0.143, 0.230, 0.593]], [0.857, [0.144, 0.225, 0.591]], [0.859, [0.144, 0.225, 0.591]], [0.861, [0.144, 0.220, 0.588]], [0.863, [0.144, 0.220, 0.588]], [0.865, [0.144, 0.215, 0.586]], [0.867, [0.144, 0.215, 0.586]], [0.869, [0.145, 0.210, 0.583]], [0.871, [0.145, 0.210, 0.583]], [0.873, [0.145, 0.205, 0.581]], [0.875, [0.145, 0.205, 0.581]], [0.877, [0.142, 0.201, 0.574]], [0.879, [0.142, 0.201, 0.574]], [0.881, [0.138, 0.199, 0.567]], [0.883, [0.138, 0.199, 0.567]], [0.885, [0.135, 0.196, 0.559]], [0.886, [0.135, 0.196, 0.559]], [0.888, [0.131, 0.193, 0.552]], [0.890, [0.131, 0.193, 0.552]], [0.892, [0.128, 0.190, 0.544]], [0.894, [0.128, 0.190, 0.544]], [0.896, [0.124, 0.187, 0.537]], [0.898, [0.124, 0.187, 0.537]], [0.900, [0.121, 0.184, 0.530]], [0.902, [0.121, 0.184, 0.530]], [0.904, [0.117, 0.182, 0.522]], [0.906, [0.117, 0.182, 0.522]], [0.908, [0.113, 0.179, 0.515]], [0.910, [0.113, 0.179, 0.515]], [0.912, [0.110, 0.176, 0.507]], [0.914, [0.110, 0.176, 0.507]], [0.916, [0.106, 0.173, 0.500]], [0.918, [0.106, 0.173, 0.500]], [0.920, [0.103, 0.170, 0.493]], [0.922, [0.103, 0.170, 0.493]], [0.924, [0.099, 0.167, 0.485]], [0.926, [0.099, 0.167, 0.485]], [0.928, [0.096, 0.165, 0.478]], [0.930, [0.096, 0.165, 0.478]], [0.932, [0.092, 0.162, 0.471]], [0.933, [0.092, 0.162, 0.471]], [0.935, [0.088, 0.159, 0.463]], [0.937, [0.088, 0.159, 0.463]], [0.939, [0.085, 0.156, 0.456]], [0.941, [0.085, 0.156, 0.456]], [0.943, [0.081, 0.153, 0.448]], [0.945, [0.081, 0.153, 0.448]], [0.947, [0.078, 0.151, 0.441]], [0.949, [0.078, 0.151, 0.441]], [0.951, [0.074, 0.148, 0.434]], [0.953, [0.074, 0.148, 0.434]], [0.955, [0.071, 0.145, 0.426]], [0.957, [0.071, 0.145, 0.426]], [0.959, [0.067, 0.142, 0.419]], [0.961, [0.067, 0.142, 0.419]], [0.963, [0.063, 0.139, 0.412]], [0.965, [0.063, 0.139, 0.412]], [0.967, [0.060, 0.136, 0.404]], [0.969, [0.060, 0.136, 0.404]], [0.971, [0.056, 0.134, 0.397]], [0.973, [0.056, 0.134, 0.397]], [0.975, [0.053, 0.131, 0.389]], [0.977, [0.053, 0.131, 0.389]], [0.978, [0.049, 0.128, 0.382]], [0.980, [0.049, 0.128, 0.382]], [0.982, [0.046, 0.125, 0.375]], [0.984, [0.046, 0.125, 0.375]], [0.986, [0.042, 0.122, 0.367]], [0.988, [0.042, 0.122, 0.367]], [0.990, [0.039, 0.119, 0.360]], [0.992, [0.039, 0.119, 0.360]], [0.994, [0.035, 0.117, 0.352]], [0.996, [0.035, 0.117, 0.352]], [0.998, [0.031, 0.114, 0.345]], [1.000, [0.031, 0.114, 0.345]]]; +var YlOrBr = [[0.000, [1.000, 1.000, 0.898]], [0.002, [1.000, 1.000, 0.898]], [0.004, [1.000, 0.999, 0.893]], [0.006, [1.000, 0.999, 0.893]], [0.008, [1.000, 0.998, 0.888]], [0.010, [1.000, 0.998, 0.888]], [0.012, [1.000, 0.997, 0.883]], [0.014, [1.000, 0.997, 0.883]], [0.016, [1.000, 0.996, 0.878]], [0.018, [1.000, 0.996, 0.878]], [0.020, [1.000, 0.995, 0.873]], [0.022, [1.000, 0.995, 0.873]], [0.023, [1.000, 0.994, 0.868]], [0.025, [1.000, 0.994, 0.868]], [0.027, [1.000, 0.993, 0.863]], [0.029, [1.000, 0.993, 0.863]], [0.031, [1.000, 0.992, 0.858]], [0.033, [1.000, 0.992, 0.858]], [0.035, [1.000, 0.991, 0.853]], [0.037, [1.000, 0.991, 0.853]], [0.039, [1.000, 0.990, 0.848]], [0.041, [1.000, 0.990, 0.848]], [0.043, [1.000, 0.989, 0.843]], [0.045, [1.000, 0.989, 0.843]], [0.047, [1.000, 0.988, 0.838]], [0.049, [1.000, 0.988, 0.838]], [0.051, [1.000, 0.987, 0.832]], [0.053, [1.000, 0.987, 0.832]], [0.055, [1.000, 0.986, 0.827]], [0.057, [1.000, 0.986, 0.827]], [0.059, [1.000, 0.985, 0.822]], [0.061, [1.000, 0.985, 0.822]], [0.063, [1.000, 0.984, 0.817]], [0.065, [1.000, 0.984, 0.817]], [0.067, [1.000, 0.983, 0.812]], [0.068, [1.000, 0.983, 0.812]], [0.070, [1.000, 0.982, 0.807]], [0.072, [1.000, 0.982, 0.807]], [0.074, [1.000, 0.981, 0.802]], [0.076, [1.000, 0.981, 0.802]], [0.078, [1.000, 0.980, 0.797]], [0.080, [1.000, 0.980, 0.797]], [0.082, [1.000, 0.979, 0.792]], [0.084, [1.000, 0.979, 0.792]], [0.086, [1.000, 0.978, 0.787]], [0.088, [1.000, 0.978, 0.787]], [0.090, [1.000, 0.977, 0.782]], [0.092, [1.000, 0.977, 0.782]], [0.094, [1.000, 0.976, 0.777]], [0.096, [1.000, 0.976, 0.777]], [0.098, [1.000, 0.975, 0.772]], [0.100, [1.000, 0.975, 0.772]], [0.102, [1.000, 0.974, 0.767]], [0.104, [1.000, 0.974, 0.767]], [0.106, [1.000, 0.973, 0.762]], [0.108, [1.000, 0.973, 0.762]], [0.110, [1.000, 0.972, 0.757]], [0.112, [1.000, 0.972, 0.757]], [0.114, [1.000, 0.971, 0.752]], [0.115, [1.000, 0.971, 0.752]], [0.117, [1.000, 0.970, 0.747]], [0.119, [1.000, 0.970, 0.747]], [0.121, [1.000, 0.969, 0.742]], [0.123, [1.000, 0.969, 0.742]], [0.125, [1.000, 0.968, 0.737]], [0.127, [1.000, 0.968, 0.737]], [0.129, [1.000, 0.966, 0.731]], [0.131, [1.000, 0.966, 0.731]], [0.133, [1.000, 0.963, 0.726]], [0.135, [1.000, 0.963, 0.726]], [0.137, [1.000, 0.961, 0.721]], [0.139, [1.000, 0.961, 0.721]], [0.141, [0.999, 0.958, 0.715]], [0.143, [0.999, 0.958, 0.715]], [0.145, [0.999, 0.956, 0.710]], [0.147, [0.999, 0.956, 0.710]], [0.149, [0.999, 0.954, 0.705]], [0.151, [0.999, 0.954, 0.705]], [0.153, [0.999, 0.951, 0.700]], [0.155, [0.999, 0.951, 0.700]], [0.157, [0.999, 0.949, 0.694]], [0.159, [0.999, 0.949, 0.694]], [0.160, [0.999, 0.946, 0.689]], [0.162, [0.999, 0.946, 0.689]], [0.164, [0.999, 0.944, 0.684]], [0.166, [0.999, 0.944, 0.684]], [0.168, [0.999, 0.941, 0.678]], [0.170, [0.999, 0.941, 0.678]], [0.172, [0.999, 0.939, 0.673]], [0.174, [0.999, 0.939, 0.673]], [0.176, [0.998, 0.936, 0.668]], [0.178, [0.998, 0.936, 0.668]], [0.180, [0.998, 0.934, 0.663]], [0.182, [0.998, 0.934, 0.663]], [0.184, [0.998, 0.931, 0.657]], [0.186, [0.998, 0.931, 0.657]], [0.188, [0.998, 0.929, 0.652]], [0.190, [0.998, 0.929, 0.652]], [0.192, [0.998, 0.926, 0.647]], [0.194, [0.998, 0.926, 0.647]], [0.196, [0.998, 0.924, 0.641]], [0.198, [0.998, 0.924, 0.641]], [0.200, [0.998, 0.922, 0.636]], [0.202, [0.998, 0.922, 0.636]], [0.204, [0.998, 0.919, 0.631]], [0.205, [0.998, 0.919, 0.631]], [0.207, [0.997, 0.917, 0.625]], [0.209, [0.997, 0.917, 0.625]], [0.211, [0.997, 0.914, 0.620]], [0.213, [0.997, 0.914, 0.620]], [0.215, [0.997, 0.912, 0.615]], [0.217, [0.997, 0.912, 0.615]], [0.219, [0.997, 0.909, 0.610]], [0.221, [0.997, 0.909, 0.610]], [0.223, [0.997, 0.907, 0.604]], [0.225, [0.997, 0.907, 0.604]], [0.227, [0.997, 0.904, 0.599]], [0.229, [0.997, 0.904, 0.599]], [0.231, [0.997, 0.902, 0.594]], [0.233, [0.997, 0.902, 0.594]], [0.235, [0.997, 0.899, 0.588]], [0.237, [0.997, 0.899, 0.588]], [0.239, [0.996, 0.897, 0.583]], [0.241, [0.996, 0.897, 0.583]], [0.243, [0.996, 0.895, 0.578]], [0.245, [0.996, 0.895, 0.578]], [0.247, [0.996, 0.892, 0.573]], [0.249, [0.996, 0.892, 0.573]], [0.250, [0.996, 0.889, 0.567]], [0.252, [0.996, 0.889, 0.567]], [0.254, [0.996, 0.885, 0.558]], [0.256, [0.996, 0.885, 0.558]], [0.258, [0.996, 0.882, 0.550]], [0.260, [0.996, 0.882, 0.550]], [0.262, [0.996, 0.878, 0.542]], [0.264, [0.996, 0.878, 0.542]], [0.266, [0.996, 0.874, 0.534]], [0.268, [0.996, 0.874, 0.534]], [0.270, [0.996, 0.870, 0.526]], [0.272, [0.996, 0.870, 0.526]], [0.274, [0.996, 0.866, 0.518]], [0.276, [0.996, 0.866, 0.518]], [0.278, [0.996, 0.863, 0.510]], [0.280, [0.996, 0.863, 0.510]], [0.282, [0.996, 0.859, 0.502]], [0.284, [0.996, 0.859, 0.502]], [0.286, [0.996, 0.855, 0.494]], [0.288, [0.996, 0.855, 0.494]], [0.290, [0.996, 0.851, 0.485]], [0.292, [0.996, 0.851, 0.485]], [0.294, [0.996, 0.847, 0.477]], [0.295, [0.996, 0.847, 0.477]], [0.297, [0.996, 0.843, 0.469]], [0.299, [0.996, 0.843, 0.469]], [0.301, [0.996, 0.840, 0.461]], [0.303, [0.996, 0.840, 0.461]], [0.305, [0.996, 0.836, 0.453]], [0.307, [0.996, 0.836, 0.453]], [0.309, [0.996, 0.832, 0.445]], [0.311, [0.996, 0.832, 0.445]], [0.313, [0.996, 0.828, 0.437]], [0.315, [0.996, 0.828, 0.437]], [0.317, [0.996, 0.824, 0.429]], [0.319, [0.996, 0.824, 0.429]], [0.321, [0.996, 0.821, 0.420]], [0.323, [0.996, 0.821, 0.420]], [0.325, [0.996, 0.817, 0.412]], [0.327, [0.996, 0.817, 0.412]], [0.329, [0.996, 0.813, 0.404]], [0.331, [0.996, 0.813, 0.404]], [0.333, [0.996, 0.809, 0.396]], [0.335, [0.996, 0.809, 0.396]], [0.337, [0.996, 0.805, 0.388]], [0.339, [0.996, 0.805, 0.388]], [0.341, [0.996, 0.802, 0.380]], [0.342, [0.996, 0.802, 0.380]], [0.344, [0.996, 0.798, 0.372]], [0.346, [0.996, 0.798, 0.372]], [0.348, [0.996, 0.794, 0.364]], [0.350, [0.996, 0.794, 0.364]], [0.352, [0.996, 0.790, 0.355]], [0.354, [0.996, 0.790, 0.355]], [0.356, [0.996, 0.786, 0.347]], [0.358, [0.996, 0.786, 0.347]], [0.360, [0.996, 0.782, 0.339]], [0.362, [0.996, 0.782, 0.339]], [0.364, [0.996, 0.779, 0.331]], [0.366, [0.996, 0.779, 0.331]], [0.368, [0.996, 0.775, 0.323]], [0.370, [0.996, 0.775, 0.323]], [0.372, [0.996, 0.771, 0.315]], [0.374, [0.996, 0.771, 0.315]], [0.376, [0.996, 0.767, 0.308]], [0.378, [0.996, 0.767, 0.308]], [0.380, [0.996, 0.761, 0.303]], [0.382, [0.996, 0.761, 0.303]], [0.384, [0.996, 0.756, 0.299]], [0.386, [0.996, 0.756, 0.299]], [0.387, [0.996, 0.751, 0.294]], [0.389, [0.996, 0.751, 0.294]], [0.391, [0.996, 0.745, 0.289]], [0.393, [0.996, 0.745, 0.289]], [0.395, [0.996, 0.740, 0.285]], [0.397, [0.996, 0.740, 0.285]], [0.399, [0.996, 0.735, 0.280]], [0.401, [0.996, 0.735, 0.280]], [0.403, [0.996, 0.730, 0.275]], [0.405, [0.996, 0.730, 0.275]], [0.407, [0.996, 0.724, 0.271]], [0.409, [0.996, 0.724, 0.271]], [0.411, [0.996, 0.719, 0.266]], [0.413, [0.996, 0.719, 0.266]], [0.415, [0.996, 0.714, 0.261]], [0.417, [0.996, 0.714, 0.261]], [0.419, [0.996, 0.708, 0.257]], [0.421, [0.996, 0.708, 0.257]], [0.423, [0.996, 0.703, 0.252]], [0.425, [0.996, 0.703, 0.252]], [0.427, [0.996, 0.698, 0.247]], [0.429, [0.996, 0.698, 0.247]], [0.431, [0.996, 0.693, 0.243]], [0.432, [0.996, 0.693, 0.243]], [0.434, [0.996, 0.687, 0.238]], [0.436, [0.996, 0.687, 0.238]], [0.438, [0.996, 0.682, 0.233]], [0.440, [0.996, 0.682, 0.233]], [0.442, [0.996, 0.677, 0.229]], [0.444, [0.996, 0.677, 0.229]], [0.446, [0.996, 0.671, 0.224]], [0.448, [0.996, 0.671, 0.224]], [0.450, [0.996, 0.666, 0.219]], [0.452, [0.996, 0.666, 0.219]], [0.454, [0.996, 0.661, 0.215]], [0.456, [0.996, 0.661, 0.215]], [0.458, [0.996, 0.656, 0.210]], [0.460, [0.996, 0.656, 0.210]], [0.462, [0.996, 0.650, 0.205]], [0.464, [0.996, 0.650, 0.205]], [0.466, [0.996, 0.645, 0.201]], [0.468, [0.996, 0.645, 0.201]], [0.470, [0.996, 0.640, 0.196]], [0.472, [0.996, 0.640, 0.196]], [0.474, [0.996, 0.634, 0.191]], [0.476, [0.996, 0.634, 0.191]], [0.477, [0.996, 0.629, 0.186]], [0.479, [0.996, 0.629, 0.186]], [0.481, [0.996, 0.624, 0.182]], [0.483, [0.996, 0.624, 0.182]], [0.485, [0.996, 0.619, 0.177]], [0.487, [0.996, 0.619, 0.177]], [0.489, [0.996, 0.613, 0.172]], [0.491, [0.996, 0.613, 0.172]], [0.493, [0.996, 0.608, 0.168]], [0.495, [0.996, 0.608, 0.168]], [0.497, [0.996, 0.603, 0.163]], [0.499, [0.996, 0.603, 0.163]], [0.501, [0.995, 0.597, 0.159]], [0.503, [0.995, 0.597, 0.159]], [0.505, [0.993, 0.592, 0.157]], [0.507, [0.993, 0.592, 0.157]], [0.509, [0.991, 0.587, 0.154]], [0.511, [0.991, 0.587, 0.154]], [0.513, [0.988, 0.582, 0.152]], [0.515, [0.988, 0.582, 0.152]], [0.517, [0.986, 0.577, 0.149]], [0.519, [0.986, 0.577, 0.149]], [0.521, [0.984, 0.572, 0.147]], [0.523, [0.984, 0.572, 0.147]], [0.524, [0.982, 0.567, 0.144]], [0.526, [0.982, 0.567, 0.144]], [0.528, [0.979, 0.562, 0.141]], [0.530, [0.979, 0.562, 0.141]], [0.532, [0.977, 0.557, 0.139]], [0.534, [0.977, 0.557, 0.139]], [0.536, [0.975, 0.552, 0.136]], [0.538, [0.975, 0.552, 0.136]], [0.540, [0.973, 0.547, 0.134]], [0.542, [0.973, 0.547, 0.134]], [0.544, [0.971, 0.542, 0.131]], [0.546, [0.971, 0.542, 0.131]], [0.548, [0.968, 0.537, 0.128]], [0.550, [0.968, 0.537, 0.128]], [0.552, [0.966, 0.532, 0.126]], [0.554, [0.966, 0.532, 0.126]], [0.556, [0.964, 0.527, 0.123]], [0.558, [0.964, 0.527, 0.123]], [0.560, [0.962, 0.522, 0.121]], [0.562, [0.962, 0.522, 0.121]], [0.564, [0.960, 0.517, 0.118]], [0.566, [0.960, 0.517, 0.118]], [0.568, [0.957, 0.512, 0.116]], [0.569, [0.957, 0.512, 0.116]], [0.571, [0.955, 0.507, 0.113]], [0.573, [0.955, 0.507, 0.113]], [0.575, [0.953, 0.502, 0.110]], [0.577, [0.953, 0.502, 0.110]], [0.579, [0.951, 0.497, 0.108]], [0.581, [0.951, 0.497, 0.108]], [0.583, [0.948, 0.492, 0.105]], [0.585, [0.948, 0.492, 0.105]], [0.587, [0.946, 0.487, 0.103]], [0.589, [0.946, 0.487, 0.103]], [0.591, [0.944, 0.481, 0.100]], [0.593, [0.944, 0.481, 0.100]], [0.595, [0.942, 0.476, 0.097]], [0.597, [0.942, 0.476, 0.097]], [0.599, [0.940, 0.471, 0.095]], [0.601, [0.940, 0.471, 0.095]], [0.603, [0.937, 0.466, 0.092]], [0.605, [0.937, 0.466, 0.092]], [0.607, [0.935, 0.461, 0.090]], [0.609, [0.935, 0.461, 0.090]], [0.611, [0.933, 0.456, 0.087]], [0.613, [0.933, 0.456, 0.087]], [0.614, [0.931, 0.451, 0.085]], [0.616, [0.931, 0.451, 0.085]], [0.618, [0.929, 0.446, 0.082]], [0.620, [0.929, 0.446, 0.082]], [0.622, [0.926, 0.441, 0.079]], [0.624, [0.926, 0.441, 0.079]], [0.626, [0.923, 0.436, 0.077]], [0.628, [0.923, 0.436, 0.077]], [0.630, [0.919, 0.432, 0.075]], [0.632, [0.919, 0.432, 0.075]], [0.634, [0.915, 0.428, 0.073]], [0.636, [0.915, 0.428, 0.073]], [0.638, [0.911, 0.423, 0.070]], [0.640, [0.911, 0.423, 0.070]], [0.642, [0.907, 0.419, 0.068]], [0.644, [0.907, 0.419, 0.068]], [0.646, [0.903, 0.414, 0.066]], [0.648, [0.903, 0.414, 0.066]], [0.650, [0.899, 0.410, 0.064]], [0.652, [0.899, 0.410, 0.064]], [0.654, [0.895, 0.405, 0.062]], [0.656, [0.895, 0.405, 0.062]], [0.658, [0.892, 0.401, 0.059]], [0.659, [0.892, 0.401, 0.059]], [0.661, [0.888, 0.397, 0.057]], [0.663, [0.888, 0.397, 0.057]], [0.665, [0.884, 0.392, 0.055]], [0.667, [0.884, 0.392, 0.055]], [0.669, [0.880, 0.388, 0.053]], [0.671, [0.880, 0.388, 0.053]], [0.673, [0.876, 0.383, 0.050]], [0.675, [0.876, 0.383, 0.050]], [0.677, [0.872, 0.379, 0.048]], [0.679, [0.872, 0.379, 0.048]], [0.681, [0.868, 0.374, 0.046]], [0.683, [0.868, 0.374, 0.046]], [0.685, [0.864, 0.370, 0.044]], [0.687, [0.864, 0.370, 0.044]], [0.689, [0.860, 0.366, 0.042]], [0.691, [0.860, 0.366, 0.042]], [0.693, [0.856, 0.361, 0.039]], [0.695, [0.856, 0.361, 0.039]], [0.697, [0.852, 0.357, 0.037]], [0.699, [0.852, 0.357, 0.037]], [0.701, [0.848, 0.352, 0.035]], [0.703, [0.848, 0.352, 0.035]], [0.705, [0.844, 0.348, 0.033]], [0.706, [0.844, 0.348, 0.033]], [0.708, [0.840, 0.343, 0.031]], [0.710, [0.840, 0.343, 0.031]], [0.712, [0.836, 0.339, 0.028]], [0.714, [0.836, 0.339, 0.028]], [0.716, [0.832, 0.335, 0.026]], [0.718, [0.832, 0.335, 0.026]], [0.720, [0.829, 0.330, 0.024]], [0.722, [0.829, 0.330, 0.024]], [0.724, [0.825, 0.326, 0.022]], [0.726, [0.825, 0.326, 0.022]], [0.728, [0.821, 0.321, 0.019]], [0.730, [0.821, 0.321, 0.019]], [0.732, [0.817, 0.317, 0.017]], [0.734, [0.817, 0.317, 0.017]], [0.736, [0.813, 0.312, 0.015]], [0.738, [0.813, 0.312, 0.015]], [0.740, [0.809, 0.308, 0.013]], [0.742, [0.809, 0.308, 0.013]], [0.744, [0.805, 0.304, 0.011]], [0.746, [0.805, 0.304, 0.011]], [0.748, [0.801, 0.299, 0.008]], [0.750, [0.801, 0.299, 0.008]], [0.751, [0.795, 0.296, 0.008]], [0.753, [0.795, 0.296, 0.008]], [0.755, [0.789, 0.293, 0.008]], [0.757, [0.789, 0.293, 0.008]], [0.759, [0.783, 0.290, 0.009]], [0.761, [0.783, 0.290, 0.009]], [0.763, [0.776, 0.287, 0.009]], [0.765, [0.776, 0.287, 0.009]], [0.767, [0.770, 0.284, 0.009]], [0.769, [0.770, 0.284, 0.009]], [0.771, [0.764, 0.281, 0.009]], [0.773, [0.764, 0.281, 0.009]], [0.775, [0.758, 0.278, 0.010]], [0.777, [0.758, 0.278, 0.010]], [0.779, [0.751, 0.275, 0.010]], [0.781, [0.751, 0.275, 0.010]], [0.783, [0.745, 0.272, 0.010]], [0.785, [0.745, 0.272, 0.010]], [0.787, [0.739, 0.269, 0.010]], [0.789, [0.739, 0.269, 0.010]], [0.791, [0.733, 0.266, 0.010]], [0.793, [0.733, 0.266, 0.010]], [0.795, [0.726, 0.263, 0.011]], [0.796, [0.726, 0.263, 0.011]], [0.798, [0.720, 0.260, 0.011]], [0.800, [0.720, 0.260, 0.011]], [0.802, [0.714, 0.257, 0.011]], [0.804, [0.714, 0.257, 0.011]], [0.806, [0.707, 0.254, 0.011]], [0.808, [0.707, 0.254, 0.011]], [0.810, [0.701, 0.252, 0.012]], [0.812, [0.701, 0.252, 0.012]], [0.814, [0.695, 0.249, 0.012]], [0.816, [0.695, 0.249, 0.012]], [0.818, [0.689, 0.246, 0.012]], [0.820, [0.689, 0.246, 0.012]], [0.822, [0.682, 0.243, 0.012]], [0.824, [0.682, 0.243, 0.012]], [0.826, [0.676, 0.240, 0.013]], [0.828, [0.676, 0.240, 0.013]], [0.830, [0.670, 0.237, 0.013]], [0.832, [0.670, 0.237, 0.013]], [0.834, [0.664, 0.234, 0.013]], [0.836, [0.664, 0.234, 0.013]], [0.838, [0.657, 0.231, 0.013]], [0.840, [0.657, 0.231, 0.013]], [0.841, [0.651, 0.228, 0.014]], [0.843, [0.651, 0.228, 0.014]], [0.845, [0.645, 0.225, 0.014]], [0.847, [0.645, 0.225, 0.014]], [0.849, [0.638, 0.222, 0.014]], [0.851, [0.638, 0.222, 0.014]], [0.853, [0.632, 0.219, 0.014]], [0.855, [0.632, 0.219, 0.014]], [0.857, [0.626, 0.216, 0.015]], [0.859, [0.626, 0.216, 0.015]], [0.861, [0.620, 0.213, 0.015]], [0.863, [0.620, 0.213, 0.015]], [0.865, [0.613, 0.210, 0.015]], [0.867, [0.613, 0.210, 0.015]], [0.869, [0.607, 0.207, 0.015]], [0.871, [0.607, 0.207, 0.015]], [0.873, [0.601, 0.204, 0.016]], [0.875, [0.601, 0.204, 0.016]], [0.877, [0.595, 0.202, 0.016]], [0.879, [0.595, 0.202, 0.016]], [0.881, [0.588, 0.200, 0.016]], [0.883, [0.588, 0.200, 0.016]], [0.885, [0.582, 0.199, 0.016]], [0.886, [0.582, 0.199, 0.016]], [0.888, [0.576, 0.197, 0.017]], [0.890, [0.576, 0.197, 0.017]], [0.892, [0.569, 0.195, 0.017]], [0.894, [0.569, 0.195, 0.017]], [0.896, [0.563, 0.193, 0.017]], [0.898, [0.563, 0.193, 0.017]], [0.900, [0.557, 0.191, 0.017]], [0.902, [0.557, 0.191, 0.017]], [0.904, [0.551, 0.189, 0.018]], [0.906, [0.551, 0.189, 0.018]], [0.908, [0.544, 0.188, 0.018]], [0.910, [0.544, 0.188, 0.018]], [0.912, [0.538, 0.186, 0.018]], [0.914, [0.538, 0.186, 0.018]], [0.916, [0.532, 0.184, 0.018]], [0.918, [0.532, 0.184, 0.018]], [0.920, [0.525, 0.182, 0.019]], [0.922, [0.525, 0.182, 0.019]], [0.924, [0.519, 0.180, 0.019]], [0.926, [0.519, 0.180, 0.019]], [0.928, [0.513, 0.178, 0.019]], [0.930, [0.513, 0.178, 0.019]], [0.932, [0.507, 0.176, 0.019]], [0.933, [0.507, 0.176, 0.019]], [0.935, [0.500, 0.175, 0.020]], [0.937, [0.500, 0.175, 0.020]], [0.939, [0.494, 0.173, 0.020]], [0.941, [0.494, 0.173, 0.020]], [0.943, [0.488, 0.171, 0.020]], [0.945, [0.488, 0.171, 0.020]], [0.947, [0.482, 0.169, 0.020]], [0.949, [0.482, 0.169, 0.020]], [0.951, [0.475, 0.167, 0.021]], [0.953, [0.475, 0.167, 0.021]], [0.955, [0.469, 0.165, 0.021]], [0.957, [0.469, 0.165, 0.021]], [0.959, [0.463, 0.164, 0.021]], [0.961, [0.463, 0.164, 0.021]], [0.963, [0.456, 0.162, 0.021]], [0.965, [0.456, 0.162, 0.021]], [0.967, [0.450, 0.160, 0.022]], [0.969, [0.450, 0.160, 0.022]], [0.971, [0.444, 0.158, 0.022]], [0.973, [0.444, 0.158, 0.022]], [0.975, [0.438, 0.156, 0.022]], [0.977, [0.438, 0.156, 0.022]], [0.978, [0.431, 0.154, 0.022]], [0.980, [0.431, 0.154, 0.022]], [0.982, [0.425, 0.152, 0.023]], [0.984, [0.425, 0.152, 0.023]], [0.986, [0.419, 0.151, 0.023]], [0.988, [0.419, 0.151, 0.023]], [0.990, [0.413, 0.149, 0.023]], [0.992, [0.413, 0.149, 0.023]], [0.994, [0.406, 0.147, 0.023]], [0.996, [0.406, 0.147, 0.023]], [0.998, [0.400, 0.145, 0.024]], [1.000, [0.400, 0.145, 0.024]]]; +var YlOrRd = [[0.000, [1.000, 1.000, 0.800]], [0.002, [1.000, 1.000, 0.800]], [0.004, [1.000, 0.998, 0.795]], [0.006, [1.000, 0.998, 0.795]], [0.008, [1.000, 0.996, 0.789]], [0.010, [1.000, 0.996, 0.789]], [0.012, [1.000, 0.993, 0.784]], [0.014, [1.000, 0.993, 0.784]], [0.016, [1.000, 0.991, 0.778]], [0.018, [1.000, 0.991, 0.778]], [0.020, [1.000, 0.989, 0.773]], [0.022, [1.000, 0.989, 0.773]], [0.023, [1.000, 0.987, 0.768]], [0.025, [1.000, 0.987, 0.768]], [0.027, [1.000, 0.984, 0.762]], [0.029, [1.000, 0.984, 0.762]], [0.031, [1.000, 0.982, 0.757]], [0.033, [1.000, 0.982, 0.757]], [0.035, [1.000, 0.980, 0.751]], [0.037, [1.000, 0.980, 0.751]], [0.039, [1.000, 0.978, 0.746]], [0.041, [1.000, 0.978, 0.746]], [0.043, [1.000, 0.976, 0.740]], [0.045, [1.000, 0.976, 0.740]], [0.047, [1.000, 0.973, 0.735]], [0.049, [1.000, 0.973, 0.735]], [0.051, [1.000, 0.971, 0.730]], [0.053, [1.000, 0.971, 0.730]], [0.055, [1.000, 0.969, 0.724]], [0.057, [1.000, 0.969, 0.724]], [0.059, [1.000, 0.967, 0.719]], [0.061, [1.000, 0.967, 0.719]], [0.063, [1.000, 0.965, 0.713]], [0.065, [1.000, 0.965, 0.713]], [0.067, [1.000, 0.962, 0.708]], [0.068, [1.000, 0.962, 0.708]], [0.070, [1.000, 0.960, 0.703]], [0.072, [1.000, 0.960, 0.703]], [0.074, [1.000, 0.958, 0.697]], [0.076, [1.000, 0.958, 0.697]], [0.078, [1.000, 0.956, 0.692]], [0.080, [1.000, 0.956, 0.692]], [0.082, [1.000, 0.953, 0.686]], [0.084, [1.000, 0.953, 0.686]], [0.086, [1.000, 0.951, 0.681]], [0.088, [1.000, 0.951, 0.681]], [0.090, [1.000, 0.949, 0.675]], [0.092, [1.000, 0.949, 0.675]], [0.094, [1.000, 0.947, 0.670]], [0.096, [1.000, 0.947, 0.670]], [0.098, [1.000, 0.945, 0.665]], [0.100, [1.000, 0.945, 0.665]], [0.102, [1.000, 0.942, 0.659]], [0.104, [1.000, 0.942, 0.659]], [0.106, [1.000, 0.940, 0.654]], [0.108, [1.000, 0.940, 0.654]], [0.110, [1.000, 0.938, 0.648]], [0.112, [1.000, 0.938, 0.648]], [0.114, [1.000, 0.936, 0.643]], [0.115, [1.000, 0.936, 0.643]], [0.117, [1.000, 0.934, 0.638]], [0.119, [1.000, 0.934, 0.638]], [0.121, [1.000, 0.931, 0.632]], [0.123, [1.000, 0.931, 0.632]], [0.125, [1.000, 0.929, 0.627]], [0.127, [1.000, 0.929, 0.627]], [0.129, [1.000, 0.927, 0.622]], [0.131, [1.000, 0.927, 0.622]], [0.133, [1.000, 0.924, 0.616]], [0.135, [1.000, 0.924, 0.616]], [0.137, [1.000, 0.922, 0.611]], [0.139, [1.000, 0.922, 0.611]], [0.141, [0.999, 0.919, 0.606]], [0.143, [0.999, 0.919, 0.606]], [0.145, [0.999, 0.917, 0.601]], [0.147, [0.999, 0.917, 0.601]], [0.149, [0.999, 0.914, 0.596]], [0.151, [0.999, 0.914, 0.596]], [0.153, [0.999, 0.912, 0.591]], [0.155, [0.999, 0.912, 0.591]], [0.157, [0.999, 0.909, 0.585]], [0.159, [0.999, 0.909, 0.585]], [0.160, [0.999, 0.907, 0.580]], [0.162, [0.999, 0.907, 0.580]], [0.164, [0.999, 0.904, 0.575]], [0.166, [0.999, 0.904, 0.575]], [0.168, [0.999, 0.902, 0.570]], [0.170, [0.999, 0.902, 0.570]], [0.172, [0.999, 0.900, 0.565]], [0.174, [0.999, 0.900, 0.565]], [0.176, [0.998, 0.897, 0.560]], [0.178, [0.998, 0.897, 0.560]], [0.180, [0.998, 0.895, 0.554]], [0.182, [0.998, 0.895, 0.554]], [0.184, [0.998, 0.892, 0.549]], [0.186, [0.998, 0.892, 0.549]], [0.188, [0.998, 0.890, 0.544]], [0.190, [0.998, 0.890, 0.544]], [0.192, [0.998, 0.887, 0.539]], [0.194, [0.998, 0.887, 0.539]], [0.196, [0.998, 0.885, 0.534]], [0.198, [0.998, 0.885, 0.534]], [0.200, [0.998, 0.882, 0.529]], [0.202, [0.998, 0.882, 0.529]], [0.204, [0.998, 0.880, 0.523]], [0.205, [0.998, 0.880, 0.523]], [0.207, [0.997, 0.877, 0.518]], [0.209, [0.997, 0.877, 0.518]], [0.211, [0.997, 0.875, 0.513]], [0.213, [0.997, 0.875, 0.513]], [0.215, [0.997, 0.873, 0.508]], [0.217, [0.997, 0.873, 0.508]], [0.219, [0.997, 0.870, 0.503]], [0.221, [0.997, 0.870, 0.503]], [0.223, [0.997, 0.868, 0.498]], [0.225, [0.997, 0.868, 0.498]], [0.227, [0.997, 0.865, 0.492]], [0.229, [0.997, 0.865, 0.492]], [0.231, [0.997, 0.863, 0.487]], [0.233, [0.997, 0.863, 0.487]], [0.235, [0.997, 0.860, 0.482]], [0.237, [0.997, 0.860, 0.482]], [0.239, [0.996, 0.858, 0.477]], [0.241, [0.996, 0.858, 0.477]], [0.243, [0.996, 0.855, 0.472]], [0.245, [0.996, 0.855, 0.472]], [0.247, [0.996, 0.853, 0.467]], [0.249, [0.996, 0.853, 0.467]], [0.250, [0.996, 0.850, 0.461]], [0.252, [0.996, 0.850, 0.461]], [0.254, [0.996, 0.845, 0.456]], [0.256, [0.996, 0.845, 0.456]], [0.258, [0.996, 0.840, 0.451]], [0.260, [0.996, 0.840, 0.451]], [0.262, [0.996, 0.835, 0.446]], [0.264, [0.996, 0.835, 0.446]], [0.266, [0.996, 0.831, 0.441]], [0.268, [0.996, 0.831, 0.441]], [0.270, [0.996, 0.826, 0.436]], [0.272, [0.996, 0.826, 0.436]], [0.274, [0.996, 0.821, 0.430]], [0.276, [0.996, 0.821, 0.430]], [0.278, [0.996, 0.816, 0.425]], [0.280, [0.996, 0.816, 0.425]], [0.282, [0.996, 0.811, 0.420]], [0.284, [0.996, 0.811, 0.420]], [0.286, [0.996, 0.807, 0.415]], [0.288, [0.996, 0.807, 0.415]], [0.290, [0.996, 0.802, 0.410]], [0.292, [0.996, 0.802, 0.410]], [0.294, [0.996, 0.797, 0.405]], [0.295, [0.996, 0.797, 0.405]], [0.297, [0.996, 0.792, 0.399]], [0.299, [0.996, 0.792, 0.399]], [0.301, [0.996, 0.787, 0.394]], [0.303, [0.996, 0.787, 0.394]], [0.305, [0.996, 0.783, 0.389]], [0.307, [0.996, 0.783, 0.389]], [0.309, [0.996, 0.778, 0.384]], [0.311, [0.996, 0.778, 0.384]], [0.313, [0.996, 0.773, 0.379]], [0.315, [0.996, 0.773, 0.379]], [0.317, [0.996, 0.768, 0.374]], [0.319, [0.996, 0.768, 0.374]], [0.321, [0.996, 0.763, 0.368]], [0.323, [0.996, 0.763, 0.368]], [0.325, [0.996, 0.759, 0.363]], [0.327, [0.996, 0.759, 0.363]], [0.329, [0.996, 0.754, 0.358]], [0.331, [0.996, 0.754, 0.358]], [0.333, [0.996, 0.749, 0.353]], [0.335, [0.996, 0.749, 0.353]], [0.337, [0.996, 0.744, 0.348]], [0.339, [0.996, 0.744, 0.348]], [0.341, [0.996, 0.739, 0.343]], [0.342, [0.996, 0.739, 0.343]], [0.344, [0.996, 0.735, 0.337]], [0.346, [0.996, 0.735, 0.337]], [0.348, [0.996, 0.730, 0.332]], [0.350, [0.996, 0.730, 0.332]], [0.352, [0.996, 0.725, 0.327]], [0.354, [0.996, 0.725, 0.327]], [0.356, [0.996, 0.720, 0.322]], [0.358, [0.996, 0.720, 0.322]], [0.360, [0.996, 0.715, 0.317]], [0.362, [0.996, 0.715, 0.317]], [0.364, [0.996, 0.711, 0.312]], [0.366, [0.996, 0.711, 0.312]], [0.368, [0.996, 0.706, 0.306]], [0.370, [0.996, 0.706, 0.306]], [0.372, [0.996, 0.701, 0.301]], [0.374, [0.996, 0.701, 0.301]], [0.376, [0.996, 0.696, 0.297]], [0.378, [0.996, 0.696, 0.297]], [0.380, [0.996, 0.692, 0.295]], [0.382, [0.996, 0.692, 0.295]], [0.384, [0.996, 0.687, 0.293]], [0.386, [0.996, 0.687, 0.293]], [0.387, [0.996, 0.683, 0.291]], [0.389, [0.996, 0.683, 0.291]], [0.391, [0.996, 0.678, 0.289]], [0.393, [0.996, 0.678, 0.289]], [0.395, [0.995, 0.674, 0.287]], [0.397, [0.995, 0.674, 0.287]], [0.399, [0.995, 0.669, 0.285]], [0.401, [0.995, 0.669, 0.285]], [0.403, [0.995, 0.664, 0.284]], [0.405, [0.995, 0.664, 0.284]], [0.407, [0.995, 0.660, 0.282]], [0.409, [0.995, 0.660, 0.282]], [0.411, [0.995, 0.655, 0.280]], [0.413, [0.995, 0.655, 0.280]], [0.415, [0.995, 0.651, 0.278]], [0.417, [0.995, 0.651, 0.278]], [0.419, [0.995, 0.646, 0.276]], [0.421, [0.995, 0.646, 0.276]], [0.423, [0.995, 0.642, 0.274]], [0.425, [0.995, 0.642, 0.274]], [0.427, [0.994, 0.637, 0.272]], [0.429, [0.994, 0.637, 0.272]], [0.431, [0.994, 0.633, 0.270]], [0.432, [0.994, 0.633, 0.270]], [0.434, [0.994, 0.628, 0.268]], [0.436, [0.994, 0.628, 0.268]], [0.438, [0.994, 0.623, 0.266]], [0.440, [0.994, 0.623, 0.266]], [0.442, [0.994, 0.619, 0.264]], [0.444, [0.994, 0.619, 0.264]], [0.446, [0.994, 0.614, 0.262]], [0.448, [0.994, 0.614, 0.262]], [0.450, [0.994, 0.610, 0.260]], [0.452, [0.994, 0.610, 0.260]], [0.454, [0.994, 0.605, 0.258]], [0.456, [0.994, 0.605, 0.258]], [0.458, [0.993, 0.601, 0.256]], [0.460, [0.993, 0.601, 0.256]], [0.462, [0.993, 0.596, 0.254]], [0.464, [0.993, 0.596, 0.254]], [0.466, [0.993, 0.592, 0.252]], [0.468, [0.993, 0.592, 0.252]], [0.470, [0.993, 0.587, 0.250]], [0.472, [0.993, 0.587, 0.250]], [0.474, [0.993, 0.583, 0.248]], [0.476, [0.993, 0.583, 0.248]], [0.477, [0.993, 0.578, 0.246]], [0.479, [0.993, 0.578, 0.246]], [0.481, [0.993, 0.573, 0.244]], [0.483, [0.993, 0.573, 0.244]], [0.485, [0.993, 0.569, 0.242]], [0.487, [0.993, 0.569, 0.242]], [0.489, [0.992, 0.564, 0.240]], [0.491, [0.992, 0.564, 0.240]], [0.493, [0.992, 0.560, 0.238]], [0.495, [0.992, 0.560, 0.238]], [0.497, [0.992, 0.555, 0.236]], [0.499, [0.992, 0.555, 0.236]], [0.501, [0.992, 0.549, 0.234]], [0.503, [0.992, 0.549, 0.234]], [0.505, [0.992, 0.541, 0.232]], [0.507, [0.992, 0.541, 0.232]], [0.509, [0.992, 0.534, 0.230]], [0.511, [0.992, 0.534, 0.230]], [0.513, [0.992, 0.526, 0.228]], [0.515, [0.992, 0.526, 0.228]], [0.517, [0.992, 0.518, 0.225]], [0.519, [0.992, 0.518, 0.225]], [0.521, [0.991, 0.510, 0.223]], [0.523, [0.991, 0.510, 0.223]], [0.524, [0.991, 0.503, 0.221]], [0.526, [0.991, 0.503, 0.221]], [0.528, [0.991, 0.495, 0.219]], [0.530, [0.991, 0.495, 0.219]], [0.532, [0.991, 0.487, 0.216]], [0.534, [0.991, 0.487, 0.216]], [0.536, [0.991, 0.479, 0.214]], [0.538, [0.991, 0.479, 0.214]], [0.540, [0.991, 0.472, 0.212]], [0.542, [0.991, 0.472, 0.212]], [0.544, [0.991, 0.464, 0.210]], [0.546, [0.991, 0.464, 0.210]], [0.548, [0.991, 0.456, 0.208]], [0.550, [0.991, 0.456, 0.208]], [0.552, [0.990, 0.448, 0.205]], [0.554, [0.990, 0.448, 0.205]], [0.556, [0.990, 0.441, 0.203]], [0.558, [0.990, 0.441, 0.203]], [0.560, [0.990, 0.433, 0.201]], [0.562, [0.990, 0.433, 0.201]], [0.564, [0.990, 0.425, 0.199]], [0.566, [0.990, 0.425, 0.199]], [0.568, [0.990, 0.417, 0.197]], [0.569, [0.990, 0.417, 0.197]], [0.571, [0.990, 0.410, 0.194]], [0.573, [0.990, 0.410, 0.194]], [0.575, [0.990, 0.402, 0.192]], [0.577, [0.990, 0.402, 0.192]], [0.579, [0.990, 0.394, 0.190]], [0.581, [0.990, 0.394, 0.190]], [0.583, [0.990, 0.386, 0.188]], [0.585, [0.990, 0.386, 0.188]], [0.587, [0.989, 0.379, 0.185]], [0.589, [0.989, 0.379, 0.185]], [0.591, [0.989, 0.371, 0.183]], [0.593, [0.989, 0.371, 0.183]], [0.595, [0.989, 0.363, 0.181]], [0.597, [0.989, 0.363, 0.181]], [0.599, [0.989, 0.355, 0.179]], [0.601, [0.989, 0.355, 0.179]], [0.603, [0.989, 0.348, 0.177]], [0.605, [0.989, 0.348, 0.177]], [0.607, [0.989, 0.340, 0.174]], [0.609, [0.989, 0.340, 0.174]], [0.611, [0.989, 0.332, 0.172]], [0.613, [0.989, 0.332, 0.172]], [0.614, [0.989, 0.324, 0.170]], [0.616, [0.989, 0.324, 0.170]], [0.618, [0.988, 0.317, 0.168]], [0.620, [0.988, 0.317, 0.168]], [0.622, [0.988, 0.309, 0.166]], [0.624, [0.988, 0.309, 0.166]], [0.626, [0.986, 0.302, 0.164]], [0.628, [0.986, 0.302, 0.164]], [0.630, [0.983, 0.295, 0.162]], [0.632, [0.983, 0.295, 0.162]], [0.634, [0.980, 0.289, 0.160]], [0.636, [0.980, 0.289, 0.160]], [0.638, [0.977, 0.283, 0.158]], [0.640, [0.977, 0.283, 0.158]], [0.642, [0.974, 0.276, 0.157]], [0.644, [0.974, 0.276, 0.157]], [0.646, [0.971, 0.270, 0.155]], [0.648, [0.971, 0.270, 0.155]], [0.650, [0.968, 0.263, 0.153]], [0.652, [0.968, 0.263, 0.153]], [0.654, [0.965, 0.257, 0.152]], [0.656, [0.965, 0.257, 0.152]], [0.658, [0.962, 0.251, 0.150]], [0.659, [0.962, 0.251, 0.150]], [0.661, [0.959, 0.244, 0.148]], [0.663, [0.959, 0.244, 0.148]], [0.665, [0.956, 0.238, 0.146]], [0.667, [0.956, 0.238, 0.146]], [0.669, [0.952, 0.232, 0.145]], [0.671, [0.952, 0.232, 0.145]], [0.673, [0.949, 0.225, 0.143]], [0.675, [0.949, 0.225, 0.143]], [0.677, [0.946, 0.219, 0.141]], [0.679, [0.946, 0.219, 0.141]], [0.681, [0.943, 0.212, 0.140]], [0.683, [0.943, 0.212, 0.140]], [0.685, [0.940, 0.206, 0.138]], [0.687, [0.940, 0.206, 0.138]], [0.689, [0.937, 0.200, 0.136]], [0.691, [0.937, 0.200, 0.136]], [0.693, [0.934, 0.193, 0.134]], [0.695, [0.934, 0.193, 0.134]], [0.697, [0.931, 0.187, 0.133]], [0.699, [0.931, 0.187, 0.133]], [0.701, [0.928, 0.180, 0.131]], [0.703, [0.928, 0.180, 0.131]], [0.705, [0.925, 0.174, 0.129]], [0.706, [0.925, 0.174, 0.129]], [0.708, [0.922, 0.168, 0.127]], [0.710, [0.922, 0.168, 0.127]], [0.712, [0.919, 0.161, 0.126]], [0.714, [0.919, 0.161, 0.126]], [0.716, [0.916, 0.155, 0.124]], [0.718, [0.916, 0.155, 0.124]], [0.720, [0.912, 0.148, 0.122]], [0.722, [0.912, 0.148, 0.122]], [0.724, [0.909, 0.142, 0.121]], [0.726, [0.909, 0.142, 0.121]], [0.728, [0.906, 0.136, 0.119]], [0.730, [0.906, 0.136, 0.119]], [0.732, [0.903, 0.129, 0.117]], [0.734, [0.903, 0.129, 0.117]], [0.736, [0.900, 0.123, 0.115]], [0.738, [0.900, 0.123, 0.115]], [0.740, [0.897, 0.116, 0.114]], [0.742, [0.897, 0.116, 0.114]], [0.744, [0.894, 0.110, 0.112]], [0.746, [0.894, 0.110, 0.112]], [0.748, [0.891, 0.104, 0.110]], [0.750, [0.891, 0.104, 0.110]], [0.751, [0.887, 0.100, 0.111]], [0.753, [0.887, 0.100, 0.111]], [0.755, [0.882, 0.096, 0.112]], [0.757, [0.882, 0.096, 0.112]], [0.759, [0.877, 0.093, 0.113]], [0.761, [0.877, 0.093, 0.113]], [0.763, [0.873, 0.090, 0.114]], [0.765, [0.873, 0.090, 0.114]], [0.767, [0.868, 0.087, 0.116]], [0.769, [0.868, 0.087, 0.116]], [0.771, [0.863, 0.084, 0.117]], [0.773, [0.863, 0.084, 0.117]], [0.775, [0.859, 0.080, 0.118]], [0.777, [0.859, 0.080, 0.118]], [0.779, [0.854, 0.077, 0.119]], [0.781, [0.854, 0.077, 0.119]], [0.783, [0.849, 0.074, 0.121]], [0.785, [0.849, 0.074, 0.121]], [0.787, [0.845, 0.071, 0.122]], [0.789, [0.845, 0.071, 0.122]], [0.791, [0.840, 0.068, 0.123]], [0.793, [0.840, 0.068, 0.123]], [0.795, [0.835, 0.064, 0.124]], [0.796, [0.835, 0.064, 0.124]], [0.798, [0.831, 0.061, 0.125]], [0.800, [0.831, 0.061, 0.125]], [0.802, [0.826, 0.058, 0.127]], [0.804, [0.826, 0.058, 0.127]], [0.806, [0.821, 0.055, 0.128]], [0.808, [0.821, 0.055, 0.128]], [0.810, [0.817, 0.052, 0.129]], [0.812, [0.817, 0.052, 0.129]], [0.814, [0.812, 0.048, 0.130]], [0.816, [0.812, 0.048, 0.130]], [0.818, [0.807, 0.045, 0.132]], [0.820, [0.807, 0.045, 0.132]], [0.822, [0.803, 0.042, 0.133]], [0.824, [0.803, 0.042, 0.133]], [0.826, [0.798, 0.039, 0.134]], [0.828, [0.798, 0.039, 0.134]], [0.830, [0.793, 0.036, 0.135]], [0.832, [0.793, 0.036, 0.135]], [0.834, [0.789, 0.032, 0.137]], [0.836, [0.789, 0.032, 0.137]], [0.838, [0.784, 0.029, 0.138]], [0.840, [0.784, 0.029, 0.138]], [0.841, [0.779, 0.026, 0.139]], [0.843, [0.779, 0.026, 0.139]], [0.845, [0.774, 0.023, 0.140]], [0.847, [0.774, 0.023, 0.140]], [0.849, [0.770, 0.020, 0.141]], [0.851, [0.770, 0.020, 0.141]], [0.853, [0.765, 0.016, 0.143]], [0.855, [0.765, 0.016, 0.143]], [0.857, [0.760, 0.013, 0.144]], [0.859, [0.760, 0.013, 0.144]], [0.861, [0.756, 0.010, 0.145]], [0.863, [0.756, 0.010, 0.145]], [0.865, [0.751, 0.007, 0.146]], [0.867, [0.751, 0.007, 0.146]], [0.869, [0.746, 0.004, 0.148]], [0.871, [0.746, 0.004, 0.148]], [0.873, [0.742, 0.000, 0.149]], [0.875, [0.742, 0.000, 0.149]], [0.877, [0.735, 0.000, 0.149]], [0.879, [0.735, 0.000, 0.149]], [0.881, [0.727, 0.000, 0.149]], [0.883, [0.727, 0.000, 0.149]], [0.885, [0.720, 0.000, 0.149]], [0.886, [0.720, 0.000, 0.149]], [0.888, [0.712, 0.000, 0.149]], [0.890, [0.712, 0.000, 0.149]], [0.892, [0.705, 0.000, 0.149]], [0.894, [0.705, 0.000, 0.149]], [0.896, [0.697, 0.000, 0.149]], [0.898, [0.697, 0.000, 0.149]], [0.900, [0.690, 0.000, 0.149]], [0.902, [0.690, 0.000, 0.149]], [0.904, [0.682, 0.000, 0.149]], [0.906, [0.682, 0.000, 0.149]], [0.908, [0.675, 0.000, 0.149]], [0.910, [0.675, 0.000, 0.149]], [0.912, [0.667, 0.000, 0.149]], [0.914, [0.667, 0.000, 0.149]], [0.916, [0.660, 0.000, 0.149]], [0.918, [0.660, 0.000, 0.149]], [0.920, [0.652, 0.000, 0.149]], [0.922, [0.652, 0.000, 0.149]], [0.924, [0.645, 0.000, 0.149]], [0.926, [0.645, 0.000, 0.149]], [0.928, [0.637, 0.000, 0.149]], [0.930, [0.637, 0.000, 0.149]], [0.932, [0.630, 0.000, 0.149]], [0.933, [0.630, 0.000, 0.149]], [0.935, [0.622, 0.000, 0.149]], [0.937, [0.622, 0.000, 0.149]], [0.939, [0.615, 0.000, 0.149]], [0.941, [0.615, 0.000, 0.149]], [0.943, [0.607, 0.000, 0.149]], [0.945, [0.607, 0.000, 0.149]], [0.947, [0.600, 0.000, 0.149]], [0.949, [0.600, 0.000, 0.149]], [0.951, [0.592, 0.000, 0.149]], [0.953, [0.592, 0.000, 0.149]], [0.955, [0.585, 0.000, 0.149]], [0.957, [0.585, 0.000, 0.149]], [0.959, [0.577, 0.000, 0.149]], [0.961, [0.577, 0.000, 0.149]], [0.963, [0.570, 0.000, 0.149]], [0.965, [0.570, 0.000, 0.149]], [0.967, [0.562, 0.000, 0.149]], [0.969, [0.562, 0.000, 0.149]], [0.971, [0.554, 0.000, 0.149]], [0.973, [0.554, 0.000, 0.149]], [0.975, [0.547, 0.000, 0.149]], [0.977, [0.547, 0.000, 0.149]], [0.978, [0.539, 0.000, 0.149]], [0.980, [0.539, 0.000, 0.149]], [0.982, [0.532, 0.000, 0.149]], [0.984, [0.532, 0.000, 0.149]], [0.986, [0.524, 0.000, 0.149]], [0.988, [0.524, 0.000, 0.149]], [0.990, [0.517, 0.000, 0.149]], [0.992, [0.517, 0.000, 0.149]], [0.994, [0.509, 0.000, 0.149]], [0.996, [0.509, 0.000, 0.149]], [0.998, [0.502, 0.000, 0.149]], [1.000, [0.502, 0.000, 0.149]]]; + +// Sequential (2) +var afmhot = [[0.000, [0.000, 0.000, 0.000]], [0.002, [0.000, 0.000, 0.000]], [0.004, [0.008, 0.000, 0.000]], [0.006, [0.008, 0.000, 0.000]], [0.008, [0.016, 0.000, 0.000]], [0.010, [0.016, 0.000, 0.000]], [0.012, [0.024, 0.000, 0.000]], [0.014, [0.024, 0.000, 0.000]], [0.016, [0.031, 0.000, 0.000]], [0.018, [0.031, 0.000, 0.000]], [0.020, [0.039, 0.000, 0.000]], [0.022, [0.039, 0.000, 0.000]], [0.023, [0.047, 0.000, 0.000]], [0.025, [0.047, 0.000, 0.000]], [0.027, [0.055, 0.000, 0.000]], [0.029, [0.055, 0.000, 0.000]], [0.031, [0.063, 0.000, 0.000]], [0.033, [0.063, 0.000, 0.000]], [0.035, [0.071, 0.000, 0.000]], [0.037, [0.071, 0.000, 0.000]], [0.039, [0.078, 0.000, 0.000]], [0.041, [0.078, 0.000, 0.000]], [0.043, [0.086, 0.000, 0.000]], [0.045, [0.086, 0.000, 0.000]], [0.047, [0.094, 0.000, 0.000]], [0.049, [0.094, 0.000, 0.000]], [0.051, [0.102, 0.000, 0.000]], [0.053, [0.102, 0.000, 0.000]], [0.055, [0.110, 0.000, 0.000]], [0.057, [0.110, 0.000, 0.000]], [0.059, [0.118, 0.000, 0.000]], [0.061, [0.118, 0.000, 0.000]], [0.063, [0.125, 0.000, 0.000]], [0.065, [0.125, 0.000, 0.000]], [0.067, [0.133, 0.000, 0.000]], [0.068, [0.133, 0.000, 0.000]], [0.070, [0.141, 0.000, 0.000]], [0.072, [0.141, 0.000, 0.000]], [0.074, [0.149, 0.000, 0.000]], [0.076, [0.149, 0.000, 0.000]], [0.078, [0.157, 0.000, 0.000]], [0.080, [0.157, 0.000, 0.000]], [0.082, [0.165, 0.000, 0.000]], [0.084, [0.165, 0.000, 0.000]], [0.086, [0.173, 0.000, 0.000]], [0.088, [0.173, 0.000, 0.000]], [0.090, [0.180, 0.000, 0.000]], [0.092, [0.180, 0.000, 0.000]], [0.094, [0.188, 0.000, 0.000]], [0.096, [0.188, 0.000, 0.000]], [0.098, [0.196, 0.000, 0.000]], [0.100, [0.196, 0.000, 0.000]], [0.102, [0.204, 0.000, 0.000]], [0.104, [0.204, 0.000, 0.000]], [0.106, [0.212, 0.000, 0.000]], [0.108, [0.212, 0.000, 0.000]], [0.110, [0.220, 0.000, 0.000]], [0.112, [0.220, 0.000, 0.000]], [0.114, [0.227, 0.000, 0.000]], [0.115, [0.227, 0.000, 0.000]], [0.117, [0.235, 0.000, 0.000]], [0.119, [0.235, 0.000, 0.000]], [0.121, [0.243, 0.000, 0.000]], [0.123, [0.243, 0.000, 0.000]], [0.125, [0.251, 0.000, 0.000]], [0.127, [0.251, 0.000, 0.000]], [0.129, [0.259, 0.000, 0.000]], [0.131, [0.259, 0.000, 0.000]], [0.133, [0.267, 0.000, 0.000]], [0.135, [0.267, 0.000, 0.000]], [0.137, [0.275, 0.000, 0.000]], [0.139, [0.275, 0.000, 0.000]], [0.141, [0.282, 0.000, 0.000]], [0.143, [0.282, 0.000, 0.000]], [0.145, [0.290, 0.000, 0.000]], [0.147, [0.290, 0.000, 0.000]], [0.149, [0.298, 0.000, 0.000]], [0.151, [0.298, 0.000, 0.000]], [0.153, [0.306, 0.000, 0.000]], [0.155, [0.306, 0.000, 0.000]], [0.157, [0.314, 0.000, 0.000]], [0.159, [0.314, 0.000, 0.000]], [0.160, [0.322, 0.000, 0.000]], [0.162, [0.322, 0.000, 0.000]], [0.164, [0.329, 0.000, 0.000]], [0.166, [0.329, 0.000, 0.000]], [0.168, [0.337, 0.000, 0.000]], [0.170, [0.337, 0.000, 0.000]], [0.172, [0.345, 0.000, 0.000]], [0.174, [0.345, 0.000, 0.000]], [0.176, [0.353, 0.000, 0.000]], [0.178, [0.353, 0.000, 0.000]], [0.180, [0.361, 0.000, 0.000]], [0.182, [0.361, 0.000, 0.000]], [0.184, [0.369, 0.000, 0.000]], [0.186, [0.369, 0.000, 0.000]], [0.188, [0.376, 0.000, 0.000]], [0.190, [0.376, 0.000, 0.000]], [0.192, [0.384, 0.000, 0.000]], [0.194, [0.384, 0.000, 0.000]], [0.196, [0.392, 0.000, 0.000]], [0.198, [0.392, 0.000, 0.000]], [0.200, [0.400, 0.000, 0.000]], [0.202, [0.400, 0.000, 0.000]], [0.204, [0.408, 0.000, 0.000]], [0.205, [0.408, 0.000, 0.000]], [0.207, [0.416, 0.000, 0.000]], [0.209, [0.416, 0.000, 0.000]], [0.211, [0.424, 0.000, 0.000]], [0.213, [0.424, 0.000, 0.000]], [0.215, [0.431, 0.000, 0.000]], [0.217, [0.431, 0.000, 0.000]], [0.219, [0.439, 0.000, 0.000]], [0.221, [0.439, 0.000, 0.000]], [0.223, [0.447, 0.000, 0.000]], [0.225, [0.447, 0.000, 0.000]], [0.227, [0.455, 0.000, 0.000]], [0.229, [0.455, 0.000, 0.000]], [0.231, [0.463, 0.000, 0.000]], [0.233, [0.463, 0.000, 0.000]], [0.235, [0.471, 0.000, 0.000]], [0.237, [0.471, 0.000, 0.000]], [0.239, [0.478, 0.000, 0.000]], [0.241, [0.478, 0.000, 0.000]], [0.243, [0.486, 0.000, 0.000]], [0.245, [0.486, 0.000, 0.000]], [0.247, [0.494, 0.000, 0.000]], [0.249, [0.494, 0.000, 0.000]], [0.250, [0.502, 0.002, 0.000]], [0.252, [0.502, 0.002, 0.000]], [0.254, [0.510, 0.010, 0.000]], [0.256, [0.510, 0.010, 0.000]], [0.258, [0.518, 0.018, 0.000]], [0.260, [0.518, 0.018, 0.000]], [0.262, [0.525, 0.025, 0.000]], [0.264, [0.525, 0.025, 0.000]], [0.266, [0.533, 0.033, 0.000]], [0.268, [0.533, 0.033, 0.000]], [0.270, [0.541, 0.041, 0.000]], [0.272, [0.541, 0.041, 0.000]], [0.274, [0.549, 0.049, 0.000]], [0.276, [0.549, 0.049, 0.000]], [0.278, [0.557, 0.057, 0.000]], [0.280, [0.557, 0.057, 0.000]], [0.282, [0.565, 0.065, 0.000]], [0.284, [0.565, 0.065, 0.000]], [0.286, [0.573, 0.073, 0.000]], [0.288, [0.573, 0.073, 0.000]], [0.290, [0.580, 0.080, 0.000]], [0.292, [0.580, 0.080, 0.000]], [0.294, [0.588, 0.088, 0.000]], [0.295, [0.588, 0.088, 0.000]], [0.297, [0.596, 0.096, 0.000]], [0.299, [0.596, 0.096, 0.000]], [0.301, [0.604, 0.104, 0.000]], [0.303, [0.604, 0.104, 0.000]], [0.305, [0.612, 0.112, 0.000]], [0.307, [0.612, 0.112, 0.000]], [0.309, [0.620, 0.120, 0.000]], [0.311, [0.620, 0.120, 0.000]], [0.313, [0.627, 0.127, 0.000]], [0.315, [0.627, 0.127, 0.000]], [0.317, [0.635, 0.135, 0.000]], [0.319, [0.635, 0.135, 0.000]], [0.321, [0.643, 0.143, 0.000]], [0.323, [0.643, 0.143, 0.000]], [0.325, [0.651, 0.151, 0.000]], [0.327, [0.651, 0.151, 0.000]], [0.329, [0.659, 0.159, 0.000]], [0.331, [0.659, 0.159, 0.000]], [0.333, [0.667, 0.167, 0.000]], [0.335, [0.667, 0.167, 0.000]], [0.337, [0.675, 0.175, 0.000]], [0.339, [0.675, 0.175, 0.000]], [0.341, [0.682, 0.182, 0.000]], [0.342, [0.682, 0.182, 0.000]], [0.344, [0.690, 0.190, 0.000]], [0.346, [0.690, 0.190, 0.000]], [0.348, [0.698, 0.198, 0.000]], [0.350, [0.698, 0.198, 0.000]], [0.352, [0.706, 0.206, 0.000]], [0.354, [0.706, 0.206, 0.000]], [0.356, [0.714, 0.214, 0.000]], [0.358, [0.714, 0.214, 0.000]], [0.360, [0.722, 0.222, 0.000]], [0.362, [0.722, 0.222, 0.000]], [0.364, [0.729, 0.229, 0.000]], [0.366, [0.729, 0.229, 0.000]], [0.368, [0.737, 0.237, 0.000]], [0.370, [0.737, 0.237, 0.000]], [0.372, [0.745, 0.245, 0.000]], [0.374, [0.745, 0.245, 0.000]], [0.376, [0.753, 0.253, 0.000]], [0.378, [0.753, 0.253, 0.000]], [0.380, [0.761, 0.261, 0.000]], [0.382, [0.761, 0.261, 0.000]], [0.384, [0.769, 0.269, 0.000]], [0.386, [0.769, 0.269, 0.000]], [0.387, [0.776, 0.276, 0.000]], [0.389, [0.776, 0.276, 0.000]], [0.391, [0.784, 0.284, 0.000]], [0.393, [0.784, 0.284, 0.000]], [0.395, [0.792, 0.292, 0.000]], [0.397, [0.792, 0.292, 0.000]], [0.399, [0.800, 0.300, 0.000]], [0.401, [0.800, 0.300, 0.000]], [0.403, [0.808, 0.308, 0.000]], [0.405, [0.808, 0.308, 0.000]], [0.407, [0.816, 0.316, 0.000]], [0.409, [0.816, 0.316, 0.000]], [0.411, [0.824, 0.324, 0.000]], [0.413, [0.824, 0.324, 0.000]], [0.415, [0.831, 0.331, 0.000]], [0.417, [0.831, 0.331, 0.000]], [0.419, [0.839, 0.339, 0.000]], [0.421, [0.839, 0.339, 0.000]], [0.423, [0.847, 0.347, 0.000]], [0.425, [0.847, 0.347, 0.000]], [0.427, [0.855, 0.355, 0.000]], [0.429, [0.855, 0.355, 0.000]], [0.431, [0.863, 0.363, 0.000]], [0.432, [0.863, 0.363, 0.000]], [0.434, [0.871, 0.371, 0.000]], [0.436, [0.871, 0.371, 0.000]], [0.438, [0.878, 0.378, 0.000]], [0.440, [0.878, 0.378, 0.000]], [0.442, [0.886, 0.386, 0.000]], [0.444, [0.886, 0.386, 0.000]], [0.446, [0.894, 0.394, 0.000]], [0.448, [0.894, 0.394, 0.000]], [0.450, [0.902, 0.402, 0.000]], [0.452, [0.902, 0.402, 0.000]], [0.454, [0.910, 0.410, 0.000]], [0.456, [0.910, 0.410, 0.000]], [0.458, [0.918, 0.418, 0.000]], [0.460, [0.918, 0.418, 0.000]], [0.462, [0.925, 0.425, 0.000]], [0.464, [0.925, 0.425, 0.000]], [0.466, [0.933, 0.433, 0.000]], [0.468, [0.933, 0.433, 0.000]], [0.470, [0.941, 0.441, 0.000]], [0.472, [0.941, 0.441, 0.000]], [0.474, [0.949, 0.449, 0.000]], [0.476, [0.949, 0.449, 0.000]], [0.477, [0.957, 0.457, 0.000]], [0.479, [0.957, 0.457, 0.000]], [0.481, [0.965, 0.465, 0.000]], [0.483, [0.965, 0.465, 0.000]], [0.485, [0.973, 0.473, 0.000]], [0.487, [0.973, 0.473, 0.000]], [0.489, [0.980, 0.480, 0.000]], [0.491, [0.980, 0.480, 0.000]], [0.493, [0.988, 0.488, 0.000]], [0.495, [0.988, 0.488, 0.000]], [0.497, [0.996, 0.496, 0.000]], [0.499, [0.996, 0.496, 0.000]], [0.501, [1.000, 0.504, 0.004]], [0.503, [1.000, 0.504, 0.004]], [0.505, [1.000, 0.512, 0.012]], [0.507, [1.000, 0.512, 0.012]], [0.509, [1.000, 0.520, 0.020]], [0.511, [1.000, 0.520, 0.020]], [0.513, [1.000, 0.527, 0.027]], [0.515, [1.000, 0.527, 0.027]], [0.517, [1.000, 0.535, 0.035]], [0.519, [1.000, 0.535, 0.035]], [0.521, [1.000, 0.543, 0.043]], [0.523, [1.000, 0.543, 0.043]], [0.524, [1.000, 0.551, 0.051]], [0.526, [1.000, 0.551, 0.051]], [0.528, [1.000, 0.559, 0.059]], [0.530, [1.000, 0.559, 0.059]], [0.532, [1.000, 0.567, 0.067]], [0.534, [1.000, 0.567, 0.067]], [0.536, [1.000, 0.575, 0.075]], [0.538, [1.000, 0.575, 0.075]], [0.540, [1.000, 0.582, 0.082]], [0.542, [1.000, 0.582, 0.082]], [0.544, [1.000, 0.590, 0.090]], [0.546, [1.000, 0.590, 0.090]], [0.548, [1.000, 0.598, 0.098]], [0.550, [1.000, 0.598, 0.098]], [0.552, [1.000, 0.606, 0.106]], [0.554, [1.000, 0.606, 0.106]], [0.556, [1.000, 0.614, 0.114]], [0.558, [1.000, 0.614, 0.114]], [0.560, [1.000, 0.622, 0.122]], [0.562, [1.000, 0.622, 0.122]], [0.564, [1.000, 0.629, 0.129]], [0.566, [1.000, 0.629, 0.129]], [0.568, [1.000, 0.637, 0.137]], [0.569, [1.000, 0.637, 0.137]], [0.571, [1.000, 0.645, 0.145]], [0.573, [1.000, 0.645, 0.145]], [0.575, [1.000, 0.653, 0.153]], [0.577, [1.000, 0.653, 0.153]], [0.579, [1.000, 0.661, 0.161]], [0.581, [1.000, 0.661, 0.161]], [0.583, [1.000, 0.669, 0.169]], [0.585, [1.000, 0.669, 0.169]], [0.587, [1.000, 0.676, 0.176]], [0.589, [1.000, 0.676, 0.176]], [0.591, [1.000, 0.684, 0.184]], [0.593, [1.000, 0.684, 0.184]], [0.595, [1.000, 0.692, 0.192]], [0.597, [1.000, 0.692, 0.192]], [0.599, [1.000, 0.700, 0.200]], [0.601, [1.000, 0.700, 0.200]], [0.603, [1.000, 0.708, 0.208]], [0.605, [1.000, 0.708, 0.208]], [0.607, [1.000, 0.716, 0.216]], [0.609, [1.000, 0.716, 0.216]], [0.611, [1.000, 0.724, 0.224]], [0.613, [1.000, 0.724, 0.224]], [0.614, [1.000, 0.731, 0.231]], [0.616, [1.000, 0.731, 0.231]], [0.618, [1.000, 0.739, 0.239]], [0.620, [1.000, 0.739, 0.239]], [0.622, [1.000, 0.747, 0.247]], [0.624, [1.000, 0.747, 0.247]], [0.626, [1.000, 0.755, 0.255]], [0.628, [1.000, 0.755, 0.255]], [0.630, [1.000, 0.763, 0.263]], [0.632, [1.000, 0.763, 0.263]], [0.634, [1.000, 0.771, 0.271]], [0.636, [1.000, 0.771, 0.271]], [0.638, [1.000, 0.778, 0.278]], [0.640, [1.000, 0.778, 0.278]], [0.642, [1.000, 0.786, 0.286]], [0.644, [1.000, 0.786, 0.286]], [0.646, [1.000, 0.794, 0.294]], [0.648, [1.000, 0.794, 0.294]], [0.650, [1.000, 0.802, 0.302]], [0.652, [1.000, 0.802, 0.302]], [0.654, [1.000, 0.810, 0.310]], [0.656, [1.000, 0.810, 0.310]], [0.658, [1.000, 0.818, 0.318]], [0.659, [1.000, 0.818, 0.318]], [0.661, [1.000, 0.825, 0.325]], [0.663, [1.000, 0.825, 0.325]], [0.665, [1.000, 0.833, 0.333]], [0.667, [1.000, 0.833, 0.333]], [0.669, [1.000, 0.841, 0.341]], [0.671, [1.000, 0.841, 0.341]], [0.673, [1.000, 0.849, 0.349]], [0.675, [1.000, 0.849, 0.349]], [0.677, [1.000, 0.857, 0.357]], [0.679, [1.000, 0.857, 0.357]], [0.681, [1.000, 0.865, 0.365]], [0.683, [1.000, 0.865, 0.365]], [0.685, [1.000, 0.873, 0.373]], [0.687, [1.000, 0.873, 0.373]], [0.689, [1.000, 0.880, 0.380]], [0.691, [1.000, 0.880, 0.380]], [0.693, [1.000, 0.888, 0.388]], [0.695, [1.000, 0.888, 0.388]], [0.697, [1.000, 0.896, 0.396]], [0.699, [1.000, 0.896, 0.396]], [0.701, [1.000, 0.904, 0.404]], [0.703, [1.000, 0.904, 0.404]], [0.705, [1.000, 0.912, 0.412]], [0.706, [1.000, 0.912, 0.412]], [0.708, [1.000, 0.920, 0.420]], [0.710, [1.000, 0.920, 0.420]], [0.712, [1.000, 0.927, 0.427]], [0.714, [1.000, 0.927, 0.427]], [0.716, [1.000, 0.935, 0.435]], [0.718, [1.000, 0.935, 0.435]], [0.720, [1.000, 0.943, 0.443]], [0.722, [1.000, 0.943, 0.443]], [0.724, [1.000, 0.951, 0.451]], [0.726, [1.000, 0.951, 0.451]], [0.728, [1.000, 0.959, 0.459]], [0.730, [1.000, 0.959, 0.459]], [0.732, [1.000, 0.967, 0.467]], [0.734, [1.000, 0.967, 0.467]], [0.736, [1.000, 0.975, 0.475]], [0.738, [1.000, 0.975, 0.475]], [0.740, [1.000, 0.982, 0.482]], [0.742, [1.000, 0.982, 0.482]], [0.744, [1.000, 0.990, 0.490]], [0.746, [1.000, 0.990, 0.490]], [0.748, [1.000, 0.998, 0.498]], [0.750, [1.000, 0.998, 0.498]], [0.751, [1.000, 1.000, 0.506]], [0.753, [1.000, 1.000, 0.506]], [0.755, [1.000, 1.000, 0.514]], [0.757, [1.000, 1.000, 0.514]], [0.759, [1.000, 1.000, 0.522]], [0.761, [1.000, 1.000, 0.522]], [0.763, [1.000, 1.000, 0.529]], [0.765, [1.000, 1.000, 0.529]], [0.767, [1.000, 1.000, 0.537]], [0.769, [1.000, 1.000, 0.537]], [0.771, [1.000, 1.000, 0.545]], [0.773, [1.000, 1.000, 0.545]], [0.775, [1.000, 1.000, 0.553]], [0.777, [1.000, 1.000, 0.553]], [0.779, [1.000, 1.000, 0.561]], [0.781, [1.000, 1.000, 0.561]], [0.783, [1.000, 1.000, 0.569]], [0.785, [1.000, 1.000, 0.569]], [0.787, [1.000, 1.000, 0.576]], [0.789, [1.000, 1.000, 0.576]], [0.791, [1.000, 1.000, 0.584]], [0.793, [1.000, 1.000, 0.584]], [0.795, [1.000, 1.000, 0.592]], [0.796, [1.000, 1.000, 0.592]], [0.798, [1.000, 1.000, 0.600]], [0.800, [1.000, 1.000, 0.600]], [0.802, [1.000, 1.000, 0.608]], [0.804, [1.000, 1.000, 0.608]], [0.806, [1.000, 1.000, 0.616]], [0.808, [1.000, 1.000, 0.616]], [0.810, [1.000, 1.000, 0.624]], [0.812, [1.000, 1.000, 0.624]], [0.814, [1.000, 1.000, 0.631]], [0.816, [1.000, 1.000, 0.631]], [0.818, [1.000, 1.000, 0.639]], [0.820, [1.000, 1.000, 0.639]], [0.822, [1.000, 1.000, 0.647]], [0.824, [1.000, 1.000, 0.647]], [0.826, [1.000, 1.000, 0.655]], [0.828, [1.000, 1.000, 0.655]], [0.830, [1.000, 1.000, 0.663]], [0.832, [1.000, 1.000, 0.663]], [0.834, [1.000, 1.000, 0.671]], [0.836, [1.000, 1.000, 0.671]], [0.838, [1.000, 1.000, 0.678]], [0.840, [1.000, 1.000, 0.678]], [0.841, [1.000, 1.000, 0.686]], [0.843, [1.000, 1.000, 0.686]], [0.845, [1.000, 1.000, 0.694]], [0.847, [1.000, 1.000, 0.694]], [0.849, [1.000, 1.000, 0.702]], [0.851, [1.000, 1.000, 0.702]], [0.853, [1.000, 1.000, 0.710]], [0.855, [1.000, 1.000, 0.710]], [0.857, [1.000, 1.000, 0.718]], [0.859, [1.000, 1.000, 0.718]], [0.861, [1.000, 1.000, 0.725]], [0.863, [1.000, 1.000, 0.725]], [0.865, [1.000, 1.000, 0.733]], [0.867, [1.000, 1.000, 0.733]], [0.869, [1.000, 1.000, 0.741]], [0.871, [1.000, 1.000, 0.741]], [0.873, [1.000, 1.000, 0.749]], [0.875, [1.000, 1.000, 0.749]], [0.877, [1.000, 1.000, 0.757]], [0.879, [1.000, 1.000, 0.757]], [0.881, [1.000, 1.000, 0.765]], [0.883, [1.000, 1.000, 0.765]], [0.885, [1.000, 1.000, 0.773]], [0.886, [1.000, 1.000, 0.773]], [0.888, [1.000, 1.000, 0.780]], [0.890, [1.000, 1.000, 0.780]], [0.892, [1.000, 1.000, 0.788]], [0.894, [1.000, 1.000, 0.788]], [0.896, [1.000, 1.000, 0.796]], [0.898, [1.000, 1.000, 0.796]], [0.900, [1.000, 1.000, 0.804]], [0.902, [1.000, 1.000, 0.804]], [0.904, [1.000, 1.000, 0.812]], [0.906, [1.000, 1.000, 0.812]], [0.908, [1.000, 1.000, 0.820]], [0.910, [1.000, 1.000, 0.820]], [0.912, [1.000, 1.000, 0.827]], [0.914, [1.000, 1.000, 0.827]], [0.916, [1.000, 1.000, 0.835]], [0.918, [1.000, 1.000, 0.835]], [0.920, [1.000, 1.000, 0.843]], [0.922, [1.000, 1.000, 0.843]], [0.924, [1.000, 1.000, 0.851]], [0.926, [1.000, 1.000, 0.851]], [0.928, [1.000, 1.000, 0.859]], [0.930, [1.000, 1.000, 0.859]], [0.932, [1.000, 1.000, 0.867]], [0.933, [1.000, 1.000, 0.867]], [0.935, [1.000, 1.000, 0.875]], [0.937, [1.000, 1.000, 0.875]], [0.939, [1.000, 1.000, 0.882]], [0.941, [1.000, 1.000, 0.882]], [0.943, [1.000, 1.000, 0.890]], [0.945, [1.000, 1.000, 0.890]], [0.947, [1.000, 1.000, 0.898]], [0.949, [1.000, 1.000, 0.898]], [0.951, [1.000, 1.000, 0.906]], [0.953, [1.000, 1.000, 0.906]], [0.955, [1.000, 1.000, 0.914]], [0.957, [1.000, 1.000, 0.914]], [0.959, [1.000, 1.000, 0.922]], [0.961, [1.000, 1.000, 0.922]], [0.963, [1.000, 1.000, 0.929]], [0.965, [1.000, 1.000, 0.929]], [0.967, [1.000, 1.000, 0.937]], [0.969, [1.000, 1.000, 0.937]], [0.971, [1.000, 1.000, 0.945]], [0.973, [1.000, 1.000, 0.945]], [0.975, [1.000, 1.000, 0.953]], [0.977, [1.000, 1.000, 0.953]], [0.978, [1.000, 1.000, 0.961]], [0.980, [1.000, 1.000, 0.961]], [0.982, [1.000, 1.000, 0.969]], [0.984, [1.000, 1.000, 0.969]], [0.986, [1.000, 1.000, 0.976]], [0.988, [1.000, 1.000, 0.976]], [0.990, [1.000, 1.000, 0.984]], [0.992, [1.000, 1.000, 0.984]], [0.994, [1.000, 1.000, 0.992]], [0.996, [1.000, 1.000, 0.992]], [0.998, [1.000, 1.000, 1.000]], [1.000, [1.000, 1.000, 1.000]]]; +var autumn = [[0.000, [1.000, 0.000, 0.000]], [0.002, [1.000, 0.000, 0.000]], [0.004, [1.000, 0.004, 0.000]], [0.006, [1.000, 0.004, 0.000]], [0.008, [1.000, 0.008, 0.000]], [0.010, [1.000, 0.008, 0.000]], [0.012, [1.000, 0.012, 0.000]], [0.014, [1.000, 0.012, 0.000]], [0.016, [1.000, 0.016, 0.000]], [0.018, [1.000, 0.016, 0.000]], [0.020, [1.000, 0.020, 0.000]], [0.022, [1.000, 0.020, 0.000]], [0.023, [1.000, 0.024, 0.000]], [0.025, [1.000, 0.024, 0.000]], [0.027, [1.000, 0.027, 0.000]], [0.029, [1.000, 0.027, 0.000]], [0.031, [1.000, 0.031, 0.000]], [0.033, [1.000, 0.031, 0.000]], [0.035, [1.000, 0.035, 0.000]], [0.037, [1.000, 0.035, 0.000]], [0.039, [1.000, 0.039, 0.000]], [0.041, [1.000, 0.039, 0.000]], [0.043, [1.000, 0.043, 0.000]], [0.045, [1.000, 0.043, 0.000]], [0.047, [1.000, 0.047, 0.000]], [0.049, [1.000, 0.047, 0.000]], [0.051, [1.000, 0.051, 0.000]], [0.053, [1.000, 0.051, 0.000]], [0.055, [1.000, 0.055, 0.000]], [0.057, [1.000, 0.055, 0.000]], [0.059, [1.000, 0.059, 0.000]], [0.061, [1.000, 0.059, 0.000]], [0.063, [1.000, 0.063, 0.000]], [0.065, [1.000, 0.063, 0.000]], [0.067, [1.000, 0.067, 0.000]], [0.068, [1.000, 0.067, 0.000]], [0.070, [1.000, 0.071, 0.000]], [0.072, [1.000, 0.071, 0.000]], [0.074, [1.000, 0.075, 0.000]], [0.076, [1.000, 0.075, 0.000]], [0.078, [1.000, 0.078, 0.000]], [0.080, [1.000, 0.078, 0.000]], [0.082, [1.000, 0.082, 0.000]], [0.084, [1.000, 0.082, 0.000]], [0.086, [1.000, 0.086, 0.000]], [0.088, [1.000, 0.086, 0.000]], [0.090, [1.000, 0.090, 0.000]], [0.092, [1.000, 0.090, 0.000]], [0.094, [1.000, 0.094, 0.000]], [0.096, [1.000, 0.094, 0.000]], [0.098, [1.000, 0.098, 0.000]], [0.100, [1.000, 0.098, 0.000]], [0.102, [1.000, 0.102, 0.000]], [0.104, [1.000, 0.102, 0.000]], [0.106, [1.000, 0.106, 0.000]], [0.108, [1.000, 0.106, 0.000]], [0.110, [1.000, 0.110, 0.000]], [0.112, [1.000, 0.110, 0.000]], [0.114, [1.000, 0.114, 0.000]], [0.115, [1.000, 0.114, 0.000]], [0.117, [1.000, 0.118, 0.000]], [0.119, [1.000, 0.118, 0.000]], [0.121, [1.000, 0.122, 0.000]], [0.123, [1.000, 0.122, 0.000]], [0.125, [1.000, 0.125, 0.000]], [0.127, [1.000, 0.125, 0.000]], [0.129, [1.000, 0.129, 0.000]], [0.131, [1.000, 0.129, 0.000]], [0.133, [1.000, 0.133, 0.000]], [0.135, [1.000, 0.133, 0.000]], [0.137, [1.000, 0.137, 0.000]], [0.139, [1.000, 0.137, 0.000]], [0.141, [1.000, 0.141, 0.000]], [0.143, [1.000, 0.141, 0.000]], [0.145, [1.000, 0.145, 0.000]], [0.147, [1.000, 0.145, 0.000]], [0.149, [1.000, 0.149, 0.000]], [0.151, [1.000, 0.149, 0.000]], [0.153, [1.000, 0.153, 0.000]], [0.155, [1.000, 0.153, 0.000]], [0.157, [1.000, 0.157, 0.000]], [0.159, [1.000, 0.157, 0.000]], [0.160, [1.000, 0.161, 0.000]], [0.162, [1.000, 0.161, 0.000]], [0.164, [1.000, 0.165, 0.000]], [0.166, [1.000, 0.165, 0.000]], [0.168, [1.000, 0.169, 0.000]], [0.170, [1.000, 0.169, 0.000]], [0.172, [1.000, 0.173, 0.000]], [0.174, [1.000, 0.173, 0.000]], [0.176, [1.000, 0.176, 0.000]], [0.178, [1.000, 0.176, 0.000]], [0.180, [1.000, 0.180, 0.000]], [0.182, [1.000, 0.180, 0.000]], [0.184, [1.000, 0.184, 0.000]], [0.186, [1.000, 0.184, 0.000]], [0.188, [1.000, 0.188, 0.000]], [0.190, [1.000, 0.188, 0.000]], [0.192, [1.000, 0.192, 0.000]], [0.194, [1.000, 0.192, 0.000]], [0.196, [1.000, 0.196, 0.000]], [0.198, [1.000, 0.196, 0.000]], [0.200, [1.000, 0.200, 0.000]], [0.202, [1.000, 0.200, 0.000]], [0.204, [1.000, 0.204, 0.000]], [0.205, [1.000, 0.204, 0.000]], [0.207, [1.000, 0.208, 0.000]], [0.209, [1.000, 0.208, 0.000]], [0.211, [1.000, 0.212, 0.000]], [0.213, [1.000, 0.212, 0.000]], [0.215, [1.000, 0.216, 0.000]], [0.217, [1.000, 0.216, 0.000]], [0.219, [1.000, 0.220, 0.000]], [0.221, [1.000, 0.220, 0.000]], [0.223, [1.000, 0.224, 0.000]], [0.225, [1.000, 0.224, 0.000]], [0.227, [1.000, 0.227, 0.000]], [0.229, [1.000, 0.227, 0.000]], [0.231, [1.000, 0.231, 0.000]], [0.233, [1.000, 0.231, 0.000]], [0.235, [1.000, 0.235, 0.000]], [0.237, [1.000, 0.235, 0.000]], [0.239, [1.000, 0.239, 0.000]], [0.241, [1.000, 0.239, 0.000]], [0.243, [1.000, 0.243, 0.000]], [0.245, [1.000, 0.243, 0.000]], [0.247, [1.000, 0.247, 0.000]], [0.249, [1.000, 0.247, 0.000]], [0.250, [1.000, 0.251, 0.000]], [0.252, [1.000, 0.251, 0.000]], [0.254, [1.000, 0.255, 0.000]], [0.256, [1.000, 0.255, 0.000]], [0.258, [1.000, 0.259, 0.000]], [0.260, [1.000, 0.259, 0.000]], [0.262, [1.000, 0.263, 0.000]], [0.264, [1.000, 0.263, 0.000]], [0.266, [1.000, 0.267, 0.000]], [0.268, [1.000, 0.267, 0.000]], [0.270, [1.000, 0.271, 0.000]], [0.272, [1.000, 0.271, 0.000]], [0.274, [1.000, 0.275, 0.000]], [0.276, [1.000, 0.275, 0.000]], [0.278, [1.000, 0.278, 0.000]], [0.280, [1.000, 0.278, 0.000]], [0.282, [1.000, 0.282, 0.000]], [0.284, [1.000, 0.282, 0.000]], [0.286, [1.000, 0.286, 0.000]], [0.288, [1.000, 0.286, 0.000]], [0.290, [1.000, 0.290, 0.000]], [0.292, [1.000, 0.290, 0.000]], [0.294, [1.000, 0.294, 0.000]], [0.295, [1.000, 0.294, 0.000]], [0.297, [1.000, 0.298, 0.000]], [0.299, [1.000, 0.298, 0.000]], [0.301, [1.000, 0.302, 0.000]], [0.303, [1.000, 0.302, 0.000]], [0.305, [1.000, 0.306, 0.000]], [0.307, [1.000, 0.306, 0.000]], [0.309, [1.000, 0.310, 0.000]], [0.311, [1.000, 0.310, 0.000]], [0.313, [1.000, 0.314, 0.000]], [0.315, [1.000, 0.314, 0.000]], [0.317, [1.000, 0.318, 0.000]], [0.319, [1.000, 0.318, 0.000]], [0.321, [1.000, 0.322, 0.000]], [0.323, [1.000, 0.322, 0.000]], [0.325, [1.000, 0.325, 0.000]], [0.327, [1.000, 0.325, 0.000]], [0.329, [1.000, 0.329, 0.000]], [0.331, [1.000, 0.329, 0.000]], [0.333, [1.000, 0.333, 0.000]], [0.335, [1.000, 0.333, 0.000]], [0.337, [1.000, 0.337, 0.000]], [0.339, [1.000, 0.337, 0.000]], [0.341, [1.000, 0.341, 0.000]], [0.342, [1.000, 0.341, 0.000]], [0.344, [1.000, 0.345, 0.000]], [0.346, [1.000, 0.345, 0.000]], [0.348, [1.000, 0.349, 0.000]], [0.350, [1.000, 0.349, 0.000]], [0.352, [1.000, 0.353, 0.000]], [0.354, [1.000, 0.353, 0.000]], [0.356, [1.000, 0.357, 0.000]], [0.358, [1.000, 0.357, 0.000]], [0.360, [1.000, 0.361, 0.000]], [0.362, [1.000, 0.361, 0.000]], [0.364, [1.000, 0.365, 0.000]], [0.366, [1.000, 0.365, 0.000]], [0.368, [1.000, 0.369, 0.000]], [0.370, [1.000, 0.369, 0.000]], [0.372, [1.000, 0.373, 0.000]], [0.374, [1.000, 0.373, 0.000]], [0.376, [1.000, 0.376, 0.000]], [0.378, [1.000, 0.376, 0.000]], [0.380, [1.000, 0.380, 0.000]], [0.382, [1.000, 0.380, 0.000]], [0.384, [1.000, 0.384, 0.000]], [0.386, [1.000, 0.384, 0.000]], [0.387, [1.000, 0.388, 0.000]], [0.389, [1.000, 0.388, 0.000]], [0.391, [1.000, 0.392, 0.000]], [0.393, [1.000, 0.392, 0.000]], [0.395, [1.000, 0.396, 0.000]], [0.397, [1.000, 0.396, 0.000]], [0.399, [1.000, 0.400, 0.000]], [0.401, [1.000, 0.400, 0.000]], [0.403, [1.000, 0.404, 0.000]], [0.405, [1.000, 0.404, 0.000]], [0.407, [1.000, 0.408, 0.000]], [0.409, [1.000, 0.408, 0.000]], [0.411, [1.000, 0.412, 0.000]], [0.413, [1.000, 0.412, 0.000]], [0.415, [1.000, 0.416, 0.000]], [0.417, [1.000, 0.416, 0.000]], [0.419, [1.000, 0.420, 0.000]], [0.421, [1.000, 0.420, 0.000]], [0.423, [1.000, 0.424, 0.000]], [0.425, [1.000, 0.424, 0.000]], [0.427, [1.000, 0.427, 0.000]], [0.429, [1.000, 0.427, 0.000]], [0.431, [1.000, 0.431, 0.000]], [0.432, [1.000, 0.431, 0.000]], [0.434, [1.000, 0.435, 0.000]], [0.436, [1.000, 0.435, 0.000]], [0.438, [1.000, 0.439, 0.000]], [0.440, [1.000, 0.439, 0.000]], [0.442, [1.000, 0.443, 0.000]], [0.444, [1.000, 0.443, 0.000]], [0.446, [1.000, 0.447, 0.000]], [0.448, [1.000, 0.447, 0.000]], [0.450, [1.000, 0.451, 0.000]], [0.452, [1.000, 0.451, 0.000]], [0.454, [1.000, 0.455, 0.000]], [0.456, [1.000, 0.455, 0.000]], [0.458, [1.000, 0.459, 0.000]], [0.460, [1.000, 0.459, 0.000]], [0.462, [1.000, 0.463, 0.000]], [0.464, [1.000, 0.463, 0.000]], [0.466, [1.000, 0.467, 0.000]], [0.468, [1.000, 0.467, 0.000]], [0.470, [1.000, 0.471, 0.000]], [0.472, [1.000, 0.471, 0.000]], [0.474, [1.000, 0.475, 0.000]], [0.476, [1.000, 0.475, 0.000]], [0.477, [1.000, 0.478, 0.000]], [0.479, [1.000, 0.478, 0.000]], [0.481, [1.000, 0.482, 0.000]], [0.483, [1.000, 0.482, 0.000]], [0.485, [1.000, 0.486, 0.000]], [0.487, [1.000, 0.486, 0.000]], [0.489, [1.000, 0.490, 0.000]], [0.491, [1.000, 0.490, 0.000]], [0.493, [1.000, 0.494, 0.000]], [0.495, [1.000, 0.494, 0.000]], [0.497, [1.000, 0.498, 0.000]], [0.499, [1.000, 0.498, 0.000]], [0.501, [1.000, 0.502, 0.000]], [0.503, [1.000, 0.502, 0.000]], [0.505, [1.000, 0.506, 0.000]], [0.507, [1.000, 0.506, 0.000]], [0.509, [1.000, 0.510, 0.000]], [0.511, [1.000, 0.510, 0.000]], [0.513, [1.000, 0.514, 0.000]], [0.515, [1.000, 0.514, 0.000]], [0.517, [1.000, 0.518, 0.000]], [0.519, [1.000, 0.518, 0.000]], [0.521, [1.000, 0.522, 0.000]], [0.523, [1.000, 0.522, 0.000]], [0.524, [1.000, 0.525, 0.000]], [0.526, [1.000, 0.525, 0.000]], [0.528, [1.000, 0.529, 0.000]], [0.530, [1.000, 0.529, 0.000]], [0.532, [1.000, 0.533, 0.000]], [0.534, [1.000, 0.533, 0.000]], [0.536, [1.000, 0.537, 0.000]], [0.538, [1.000, 0.537, 0.000]], [0.540, [1.000, 0.541, 0.000]], [0.542, [1.000, 0.541, 0.000]], [0.544, [1.000, 0.545, 0.000]], [0.546, [1.000, 0.545, 0.000]], [0.548, [1.000, 0.549, 0.000]], [0.550, [1.000, 0.549, 0.000]], [0.552, [1.000, 0.553, 0.000]], [0.554, [1.000, 0.553, 0.000]], [0.556, [1.000, 0.557, 0.000]], [0.558, [1.000, 0.557, 0.000]], [0.560, [1.000, 0.561, 0.000]], [0.562, [1.000, 0.561, 0.000]], [0.564, [1.000, 0.565, 0.000]], [0.566, [1.000, 0.565, 0.000]], [0.568, [1.000, 0.569, 0.000]], [0.569, [1.000, 0.569, 0.000]], [0.571, [1.000, 0.573, 0.000]], [0.573, [1.000, 0.573, 0.000]], [0.575, [1.000, 0.576, 0.000]], [0.577, [1.000, 0.576, 0.000]], [0.579, [1.000, 0.580, 0.000]], [0.581, [1.000, 0.580, 0.000]], [0.583, [1.000, 0.584, 0.000]], [0.585, [1.000, 0.584, 0.000]], [0.587, [1.000, 0.588, 0.000]], [0.589, [1.000, 0.588, 0.000]], [0.591, [1.000, 0.592, 0.000]], [0.593, [1.000, 0.592, 0.000]], [0.595, [1.000, 0.596, 0.000]], [0.597, [1.000, 0.596, 0.000]], [0.599, [1.000, 0.600, 0.000]], [0.601, [1.000, 0.600, 0.000]], [0.603, [1.000, 0.604, 0.000]], [0.605, [1.000, 0.604, 0.000]], [0.607, [1.000, 0.608, 0.000]], [0.609, [1.000, 0.608, 0.000]], [0.611, [1.000, 0.612, 0.000]], [0.613, [1.000, 0.612, 0.000]], [0.614, [1.000, 0.616, 0.000]], [0.616, [1.000, 0.616, 0.000]], [0.618, [1.000, 0.620, 0.000]], [0.620, [1.000, 0.620, 0.000]], [0.622, [1.000, 0.624, 0.000]], [0.624, [1.000, 0.624, 0.000]], [0.626, [1.000, 0.627, 0.000]], [0.628, [1.000, 0.627, 0.000]], [0.630, [1.000, 0.631, 0.000]], [0.632, [1.000, 0.631, 0.000]], [0.634, [1.000, 0.635, 0.000]], [0.636, [1.000, 0.635, 0.000]], [0.638, [1.000, 0.639, 0.000]], [0.640, [1.000, 0.639, 0.000]], [0.642, [1.000, 0.643, 0.000]], [0.644, [1.000, 0.643, 0.000]], [0.646, [1.000, 0.647, 0.000]], [0.648, [1.000, 0.647, 0.000]], [0.650, [1.000, 0.651, 0.000]], [0.652, [1.000, 0.651, 0.000]], [0.654, [1.000, 0.655, 0.000]], [0.656, [1.000, 0.655, 0.000]], [0.658, [1.000, 0.659, 0.000]], [0.659, [1.000, 0.659, 0.000]], [0.661, [1.000, 0.663, 0.000]], [0.663, [1.000, 0.663, 0.000]], [0.665, [1.000, 0.667, 0.000]], [0.667, [1.000, 0.667, 0.000]], [0.669, [1.000, 0.671, 0.000]], [0.671, [1.000, 0.671, 0.000]], [0.673, [1.000, 0.675, 0.000]], [0.675, [1.000, 0.675, 0.000]], [0.677, [1.000, 0.678, 0.000]], [0.679, [1.000, 0.678, 0.000]], [0.681, [1.000, 0.682, 0.000]], [0.683, [1.000, 0.682, 0.000]], [0.685, [1.000, 0.686, 0.000]], [0.687, [1.000, 0.686, 0.000]], [0.689, [1.000, 0.690, 0.000]], [0.691, [1.000, 0.690, 0.000]], [0.693, [1.000, 0.694, 0.000]], [0.695, [1.000, 0.694, 0.000]], [0.697, [1.000, 0.698, 0.000]], [0.699, [1.000, 0.698, 0.000]], [0.701, [1.000, 0.702, 0.000]], [0.703, [1.000, 0.702, 0.000]], [0.705, [1.000, 0.706, 0.000]], [0.706, [1.000, 0.706, 0.000]], [0.708, [1.000, 0.710, 0.000]], [0.710, [1.000, 0.710, 0.000]], [0.712, [1.000, 0.714, 0.000]], [0.714, [1.000, 0.714, 0.000]], [0.716, [1.000, 0.718, 0.000]], [0.718, [1.000, 0.718, 0.000]], [0.720, [1.000, 0.722, 0.000]], [0.722, [1.000, 0.722, 0.000]], [0.724, [1.000, 0.725, 0.000]], [0.726, [1.000, 0.725, 0.000]], [0.728, [1.000, 0.729, 0.000]], [0.730, [1.000, 0.729, 0.000]], [0.732, [1.000, 0.733, 0.000]], [0.734, [1.000, 0.733, 0.000]], [0.736, [1.000, 0.737, 0.000]], [0.738, [1.000, 0.737, 0.000]], [0.740, [1.000, 0.741, 0.000]], [0.742, [1.000, 0.741, 0.000]], [0.744, [1.000, 0.745, 0.000]], [0.746, [1.000, 0.745, 0.000]], [0.748, [1.000, 0.749, 0.000]], [0.750, [1.000, 0.749, 0.000]], [0.751, [1.000, 0.753, 0.000]], [0.753, [1.000, 0.753, 0.000]], [0.755, [1.000, 0.757, 0.000]], [0.757, [1.000, 0.757, 0.000]], [0.759, [1.000, 0.761, 0.000]], [0.761, [1.000, 0.761, 0.000]], [0.763, [1.000, 0.765, 0.000]], [0.765, [1.000, 0.765, 0.000]], [0.767, [1.000, 0.769, 0.000]], [0.769, [1.000, 0.769, 0.000]], [0.771, [1.000, 0.773, 0.000]], [0.773, [1.000, 0.773, 0.000]], [0.775, [1.000, 0.776, 0.000]], [0.777, [1.000, 0.776, 0.000]], [0.779, [1.000, 0.780, 0.000]], [0.781, [1.000, 0.780, 0.000]], [0.783, [1.000, 0.784, 0.000]], [0.785, [1.000, 0.784, 0.000]], [0.787, [1.000, 0.788, 0.000]], [0.789, [1.000, 0.788, 0.000]], [0.791, [1.000, 0.792, 0.000]], [0.793, [1.000, 0.792, 0.000]], [0.795, [1.000, 0.796, 0.000]], [0.796, [1.000, 0.796, 0.000]], [0.798, [1.000, 0.800, 0.000]], [0.800, [1.000, 0.800, 0.000]], [0.802, [1.000, 0.804, 0.000]], [0.804, [1.000, 0.804, 0.000]], [0.806, [1.000, 0.808, 0.000]], [0.808, [1.000, 0.808, 0.000]], [0.810, [1.000, 0.812, 0.000]], [0.812, [1.000, 0.812, 0.000]], [0.814, [1.000, 0.816, 0.000]], [0.816, [1.000, 0.816, 0.000]], [0.818, [1.000, 0.820, 0.000]], [0.820, [1.000, 0.820, 0.000]], [0.822, [1.000, 0.824, 0.000]], [0.824, [1.000, 0.824, 0.000]], [0.826, [1.000, 0.827, 0.000]], [0.828, [1.000, 0.827, 0.000]], [0.830, [1.000, 0.831, 0.000]], [0.832, [1.000, 0.831, 0.000]], [0.834, [1.000, 0.835, 0.000]], [0.836, [1.000, 0.835, 0.000]], [0.838, [1.000, 0.839, 0.000]], [0.840, [1.000, 0.839, 0.000]], [0.841, [1.000, 0.843, 0.000]], [0.843, [1.000, 0.843, 0.000]], [0.845, [1.000, 0.847, 0.000]], [0.847, [1.000, 0.847, 0.000]], [0.849, [1.000, 0.851, 0.000]], [0.851, [1.000, 0.851, 0.000]], [0.853, [1.000, 0.855, 0.000]], [0.855, [1.000, 0.855, 0.000]], [0.857, [1.000, 0.859, 0.000]], [0.859, [1.000, 0.859, 0.000]], [0.861, [1.000, 0.863, 0.000]], [0.863, [1.000, 0.863, 0.000]], [0.865, [1.000, 0.867, 0.000]], [0.867, [1.000, 0.867, 0.000]], [0.869, [1.000, 0.871, 0.000]], [0.871, [1.000, 0.871, 0.000]], [0.873, [1.000, 0.875, 0.000]], [0.875, [1.000, 0.875, 0.000]], [0.877, [1.000, 0.878, 0.000]], [0.879, [1.000, 0.878, 0.000]], [0.881, [1.000, 0.882, 0.000]], [0.883, [1.000, 0.882, 0.000]], [0.885, [1.000, 0.886, 0.000]], [0.886, [1.000, 0.886, 0.000]], [0.888, [1.000, 0.890, 0.000]], [0.890, [1.000, 0.890, 0.000]], [0.892, [1.000, 0.894, 0.000]], [0.894, [1.000, 0.894, 0.000]], [0.896, [1.000, 0.898, 0.000]], [0.898, [1.000, 0.898, 0.000]], [0.900, [1.000, 0.902, 0.000]], [0.902, [1.000, 0.902, 0.000]], [0.904, [1.000, 0.906, 0.000]], [0.906, [1.000, 0.906, 0.000]], [0.908, [1.000, 0.910, 0.000]], [0.910, [1.000, 0.910, 0.000]], [0.912, [1.000, 0.914, 0.000]], [0.914, [1.000, 0.914, 0.000]], [0.916, [1.000, 0.918, 0.000]], [0.918, [1.000, 0.918, 0.000]], [0.920, [1.000, 0.922, 0.000]], [0.922, [1.000, 0.922, 0.000]], [0.924, [1.000, 0.925, 0.000]], [0.926, [1.000, 0.925, 0.000]], [0.928, [1.000, 0.929, 0.000]], [0.930, [1.000, 0.929, 0.000]], [0.932, [1.000, 0.933, 0.000]], [0.933, [1.000, 0.933, 0.000]], [0.935, [1.000, 0.937, 0.000]], [0.937, [1.000, 0.937, 0.000]], [0.939, [1.000, 0.941, 0.000]], [0.941, [1.000, 0.941, 0.000]], [0.943, [1.000, 0.945, 0.000]], [0.945, [1.000, 0.945, 0.000]], [0.947, [1.000, 0.949, 0.000]], [0.949, [1.000, 0.949, 0.000]], [0.951, [1.000, 0.953, 0.000]], [0.953, [1.000, 0.953, 0.000]], [0.955, [1.000, 0.957, 0.000]], [0.957, [1.000, 0.957, 0.000]], [0.959, [1.000, 0.961, 0.000]], [0.961, [1.000, 0.961, 0.000]], [0.963, [1.000, 0.965, 0.000]], [0.965, [1.000, 0.965, 0.000]], [0.967, [1.000, 0.969, 0.000]], [0.969, [1.000, 0.969, 0.000]], [0.971, [1.000, 0.973, 0.000]], [0.973, [1.000, 0.973, 0.000]], [0.975, [1.000, 0.976, 0.000]], [0.977, [1.000, 0.976, 0.000]], [0.978, [1.000, 0.980, 0.000]], [0.980, [1.000, 0.980, 0.000]], [0.982, [1.000, 0.984, 0.000]], [0.984, [1.000, 0.984, 0.000]], [0.986, [1.000, 0.988, 0.000]], [0.988, [1.000, 0.988, 0.000]], [0.990, [1.000, 0.992, 0.000]], [0.992, [1.000, 0.992, 0.000]], [0.994, [1.000, 0.996, 0.000]], [0.996, [1.000, 0.996, 0.000]], [0.998, [1.000, 1.000, 0.000]], [1.000, [1.000, 1.000, 0.000]]]; +var bone = [[0.000, [0.000, 0.000, 0.000]], [0.002, [0.000, 0.000, 0.000]], [0.004, [0.003, 0.003, 0.005]], [0.006, [0.003, 0.003, 0.005]], [0.008, [0.007, 0.007, 0.010]], [0.010, [0.007, 0.007, 0.010]], [0.012, [0.010, 0.010, 0.014]], [0.014, [0.010, 0.010, 0.014]], [0.016, [0.014, 0.014, 0.019]], [0.018, [0.014, 0.014, 0.019]], [0.020, [0.017, 0.017, 0.024]], [0.022, [0.017, 0.017, 0.024]], [0.023, [0.021, 0.021, 0.029]], [0.025, [0.021, 0.021, 0.029]], [0.027, [0.024, 0.024, 0.033]], [0.029, [0.024, 0.024, 0.033]], [0.031, [0.027, 0.027, 0.038]], [0.033, [0.027, 0.027, 0.038]], [0.035, [0.031, 0.031, 0.043]], [0.037, [0.031, 0.031, 0.043]], [0.039, [0.034, 0.034, 0.048]], [0.041, [0.034, 0.034, 0.048]], [0.043, [0.038, 0.038, 0.053]], [0.045, [0.038, 0.038, 0.053]], [0.047, [0.041, 0.041, 0.057]], [0.049, [0.041, 0.041, 0.057]], [0.051, [0.045, 0.045, 0.062]], [0.053, [0.045, 0.045, 0.062]], [0.055, [0.048, 0.048, 0.067]], [0.057, [0.048, 0.048, 0.067]], [0.059, [0.051, 0.051, 0.072]], [0.061, [0.051, 0.051, 0.072]], [0.063, [0.055, 0.055, 0.076]], [0.065, [0.055, 0.055, 0.076]], [0.067, [0.058, 0.058, 0.081]], [0.068, [0.058, 0.058, 0.081]], [0.070, [0.062, 0.062, 0.086]], [0.072, [0.062, 0.062, 0.086]], [0.074, [0.065, 0.065, 0.091]], [0.076, [0.065, 0.065, 0.091]], [0.078, [0.069, 0.069, 0.095]], [0.080, [0.069, 0.069, 0.095]], [0.082, [0.072, 0.072, 0.100]], [0.084, [0.072, 0.072, 0.100]], [0.086, [0.075, 0.075, 0.105]], [0.088, [0.075, 0.075, 0.105]], [0.090, [0.079, 0.079, 0.110]], [0.092, [0.079, 0.079, 0.110]], [0.094, [0.082, 0.082, 0.115]], [0.096, [0.082, 0.082, 0.115]], [0.098, [0.086, 0.086, 0.119]], [0.100, [0.086, 0.086, 0.119]], [0.102, [0.089, 0.089, 0.124]], [0.104, [0.089, 0.089, 0.124]], [0.106, [0.093, 0.093, 0.129]], [0.108, [0.093, 0.093, 0.129]], [0.110, [0.096, 0.096, 0.134]], [0.112, [0.096, 0.096, 0.134]], [0.114, [0.100, 0.100, 0.138]], [0.115, [0.100, 0.100, 0.138]], [0.117, [0.103, 0.103, 0.143]], [0.119, [0.103, 0.103, 0.143]], [0.121, [0.106, 0.106, 0.148]], [0.123, [0.106, 0.106, 0.148]], [0.125, [0.110, 0.110, 0.153]], [0.127, [0.110, 0.110, 0.153]], [0.129, [0.113, 0.113, 0.158]], [0.131, [0.113, 0.113, 0.158]], [0.133, [0.117, 0.117, 0.162]], [0.135, [0.117, 0.117, 0.162]], [0.137, [0.120, 0.120, 0.167]], [0.139, [0.120, 0.120, 0.167]], [0.141, [0.124, 0.124, 0.172]], [0.143, [0.124, 0.124, 0.172]], [0.145, [0.127, 0.127, 0.177]], [0.147, [0.127, 0.127, 0.177]], [0.149, [0.130, 0.130, 0.181]], [0.151, [0.130, 0.130, 0.181]], [0.153, [0.134, 0.134, 0.186]], [0.155, [0.134, 0.134, 0.186]], [0.157, [0.137, 0.137, 0.191]], [0.159, [0.137, 0.137, 0.191]], [0.160, [0.141, 0.141, 0.196]], [0.162, [0.141, 0.141, 0.196]], [0.164, [0.144, 0.144, 0.201]], [0.166, [0.144, 0.144, 0.201]], [0.168, [0.148, 0.148, 0.205]], [0.170, [0.148, 0.148, 0.205]], [0.172, [0.151, 0.151, 0.210]], [0.174, [0.151, 0.151, 0.210]], [0.176, [0.154, 0.154, 0.215]], [0.178, [0.154, 0.154, 0.215]], [0.180, [0.158, 0.158, 0.220]], [0.182, [0.158, 0.158, 0.220]], [0.184, [0.161, 0.161, 0.224]], [0.186, [0.161, 0.161, 0.224]], [0.188, [0.165, 0.165, 0.229]], [0.190, [0.165, 0.165, 0.229]], [0.192, [0.168, 0.168, 0.234]], [0.194, [0.168, 0.168, 0.234]], [0.196, [0.172, 0.172, 0.239]], [0.198, [0.172, 0.172, 0.239]], [0.200, [0.175, 0.175, 0.243]], [0.202, [0.175, 0.175, 0.243]], [0.204, [0.178, 0.178, 0.248]], [0.205, [0.178, 0.178, 0.248]], [0.207, [0.182, 0.182, 0.253]], [0.209, [0.182, 0.182, 0.253]], [0.211, [0.185, 0.185, 0.258]], [0.213, [0.185, 0.185, 0.258]], [0.215, [0.189, 0.189, 0.263]], [0.217, [0.189, 0.189, 0.263]], [0.219, [0.192, 0.192, 0.267]], [0.221, [0.192, 0.192, 0.267]], [0.223, [0.196, 0.196, 0.272]], [0.225, [0.196, 0.196, 0.272]], [0.227, [0.199, 0.199, 0.277]], [0.229, [0.199, 0.199, 0.277]], [0.231, [0.202, 0.202, 0.282]], [0.233, [0.202, 0.202, 0.282]], [0.235, [0.206, 0.206, 0.286]], [0.237, [0.206, 0.206, 0.286]], [0.239, [0.209, 0.209, 0.291]], [0.241, [0.209, 0.209, 0.291]], [0.243, [0.213, 0.213, 0.296]], [0.245, [0.213, 0.213, 0.296]], [0.247, [0.216, 0.216, 0.301]], [0.249, [0.216, 0.216, 0.301]], [0.250, [0.220, 0.220, 0.306]], [0.252, [0.220, 0.220, 0.306]], [0.254, [0.223, 0.223, 0.310]], [0.256, [0.223, 0.223, 0.310]], [0.258, [0.226, 0.226, 0.315]], [0.260, [0.226, 0.226, 0.315]], [0.262, [0.230, 0.230, 0.320]], [0.264, [0.230, 0.230, 0.320]], [0.266, [0.233, 0.233, 0.325]], [0.268, [0.233, 0.233, 0.325]], [0.270, [0.237, 0.237, 0.329]], [0.272, [0.237, 0.237, 0.329]], [0.274, [0.240, 0.240, 0.334]], [0.276, [0.240, 0.240, 0.334]], [0.278, [0.244, 0.244, 0.339]], [0.280, [0.244, 0.244, 0.339]], [0.282, [0.247, 0.247, 0.344]], [0.284, [0.247, 0.247, 0.344]], [0.286, [0.250, 0.250, 0.349]], [0.288, [0.250, 0.250, 0.349]], [0.290, [0.254, 0.254, 0.353]], [0.292, [0.254, 0.254, 0.353]], [0.294, [0.257, 0.257, 0.358]], [0.295, [0.257, 0.257, 0.358]], [0.297, [0.261, 0.261, 0.363]], [0.299, [0.261, 0.261, 0.363]], [0.301, [0.264, 0.264, 0.368]], [0.303, [0.264, 0.264, 0.368]], [0.305, [0.268, 0.268, 0.372]], [0.307, [0.268, 0.268, 0.372]], [0.309, [0.271, 0.271, 0.377]], [0.311, [0.271, 0.271, 0.377]], [0.313, [0.275, 0.275, 0.382]], [0.315, [0.275, 0.275, 0.382]], [0.317, [0.278, 0.278, 0.387]], [0.319, [0.278, 0.278, 0.387]], [0.321, [0.281, 0.281, 0.391]], [0.323, [0.281, 0.281, 0.391]], [0.325, [0.285, 0.285, 0.396]], [0.327, [0.285, 0.285, 0.396]], [0.329, [0.288, 0.288, 0.401]], [0.331, [0.288, 0.288, 0.401]], [0.333, [0.292, 0.292, 0.406]], [0.335, [0.292, 0.292, 0.406]], [0.337, [0.295, 0.295, 0.411]], [0.339, [0.295, 0.295, 0.411]], [0.341, [0.299, 0.299, 0.415]], [0.342, [0.299, 0.299, 0.415]], [0.344, [0.302, 0.302, 0.420]], [0.346, [0.302, 0.302, 0.420]], [0.348, [0.305, 0.305, 0.425]], [0.350, [0.305, 0.305, 0.425]], [0.352, [0.309, 0.309, 0.430]], [0.354, [0.309, 0.309, 0.430]], [0.356, [0.312, 0.312, 0.434]], [0.358, [0.312, 0.312, 0.434]], [0.360, [0.316, 0.316, 0.439]], [0.362, [0.316, 0.316, 0.439]], [0.364, [0.319, 0.319, 0.444]], [0.366, [0.319, 0.319, 0.444]], [0.368, [0.323, 0.324, 0.448]], [0.370, [0.323, 0.324, 0.448]], [0.372, [0.326, 0.328, 0.451]], [0.374, [0.326, 0.328, 0.451]], [0.376, [0.329, 0.333, 0.454]], [0.378, [0.329, 0.333, 0.454]], [0.380, [0.333, 0.338, 0.458]], [0.382, [0.333, 0.338, 0.458]], [0.384, [0.336, 0.343, 0.461]], [0.386, [0.336, 0.343, 0.461]], [0.387, [0.340, 0.347, 0.465]], [0.389, [0.340, 0.347, 0.465]], [0.391, [0.343, 0.352, 0.468]], [0.393, [0.343, 0.352, 0.468]], [0.395, [0.347, 0.357, 0.472]], [0.397, [0.347, 0.357, 0.472]], [0.399, [0.350, 0.361, 0.475]], [0.401, [0.350, 0.361, 0.475]], [0.403, [0.353, 0.366, 0.478]], [0.405, [0.353, 0.366, 0.478]], [0.407, [0.357, 0.371, 0.482]], [0.409, [0.357, 0.371, 0.482]], [0.411, [0.360, 0.376, 0.485]], [0.413, [0.360, 0.376, 0.485]], [0.415, [0.364, 0.380, 0.489]], [0.417, [0.364, 0.380, 0.489]], [0.419, [0.367, 0.385, 0.492]], [0.421, [0.367, 0.385, 0.492]], [0.423, [0.371, 0.390, 0.496]], [0.425, [0.371, 0.390, 0.496]], [0.427, [0.374, 0.394, 0.499]], [0.429, [0.374, 0.394, 0.499]], [0.431, [0.377, 0.399, 0.502]], [0.432, [0.377, 0.399, 0.502]], [0.434, [0.381, 0.404, 0.506]], [0.436, [0.381, 0.404, 0.506]], [0.438, [0.384, 0.409, 0.509]], [0.440, [0.384, 0.409, 0.509]], [0.442, [0.388, 0.413, 0.513]], [0.444, [0.388, 0.413, 0.513]], [0.446, [0.391, 0.418, 0.516]], [0.448, [0.391, 0.418, 0.516]], [0.450, [0.395, 0.423, 0.520]], [0.452, [0.395, 0.423, 0.520]], [0.454, [0.398, 0.428, 0.523]], [0.456, [0.398, 0.428, 0.523]], [0.458, [0.401, 0.432, 0.526]], [0.460, [0.401, 0.432, 0.526]], [0.462, [0.405, 0.437, 0.530]], [0.464, [0.405, 0.437, 0.530]], [0.466, [0.408, 0.442, 0.533]], [0.468, [0.408, 0.442, 0.533]], [0.470, [0.412, 0.446, 0.537]], [0.472, [0.412, 0.446, 0.537]], [0.474, [0.415, 0.451, 0.540]], [0.476, [0.415, 0.451, 0.540]], [0.477, [0.419, 0.456, 0.544]], [0.479, [0.419, 0.456, 0.544]], [0.481, [0.422, 0.461, 0.547]], [0.483, [0.422, 0.461, 0.547]], [0.485, [0.425, 0.465, 0.550]], [0.487, [0.425, 0.465, 0.550]], [0.489, [0.429, 0.470, 0.554]], [0.491, [0.429, 0.470, 0.554]], [0.493, [0.432, 0.475, 0.557]], [0.495, [0.432, 0.475, 0.557]], [0.497, [0.436, 0.479, 0.561]], [0.499, [0.436, 0.479, 0.561]], [0.501, [0.439, 0.484, 0.564]], [0.503, [0.439, 0.484, 0.564]], [0.505, [0.443, 0.489, 0.568]], [0.507, [0.443, 0.489, 0.568]], [0.509, [0.446, 0.494, 0.571]], [0.511, [0.446, 0.494, 0.571]], [0.513, [0.450, 0.498, 0.575]], [0.515, [0.450, 0.498, 0.575]], [0.517, [0.453, 0.503, 0.578]], [0.519, [0.453, 0.503, 0.578]], [0.521, [0.456, 0.508, 0.581]], [0.523, [0.456, 0.508, 0.581]], [0.524, [0.460, 0.512, 0.585]], [0.526, [0.460, 0.512, 0.585]], [0.528, [0.463, 0.517, 0.588]], [0.530, [0.463, 0.517, 0.588]], [0.532, [0.467, 0.522, 0.592]], [0.534, [0.467, 0.522, 0.592]], [0.536, [0.470, 0.527, 0.595]], [0.538, [0.470, 0.527, 0.595]], [0.540, [0.474, 0.531, 0.599]], [0.542, [0.474, 0.531, 0.599]], [0.544, [0.477, 0.536, 0.602]], [0.546, [0.477, 0.536, 0.602]], [0.548, [0.480, 0.541, 0.605]], [0.550, [0.480, 0.541, 0.605]], [0.552, [0.484, 0.545, 0.609]], [0.554, [0.484, 0.545, 0.609]], [0.556, [0.487, 0.550, 0.612]], [0.558, [0.487, 0.550, 0.612]], [0.560, [0.491, 0.555, 0.616]], [0.562, [0.491, 0.555, 0.616]], [0.564, [0.494, 0.560, 0.619]], [0.566, [0.494, 0.560, 0.619]], [0.568, [0.498, 0.564, 0.623]], [0.569, [0.498, 0.564, 0.623]], [0.571, [0.501, 0.569, 0.626]], [0.573, [0.501, 0.569, 0.626]], [0.575, [0.504, 0.574, 0.629]], [0.577, [0.504, 0.574, 0.629]], [0.579, [0.508, 0.578, 0.633]], [0.581, [0.508, 0.578, 0.633]], [0.583, [0.511, 0.583, 0.636]], [0.585, [0.511, 0.583, 0.636]], [0.587, [0.515, 0.588, 0.640]], [0.589, [0.515, 0.588, 0.640]], [0.591, [0.518, 0.593, 0.643]], [0.593, [0.518, 0.593, 0.643]], [0.595, [0.522, 0.597, 0.647]], [0.597, [0.522, 0.597, 0.647]], [0.599, [0.525, 0.602, 0.650]], [0.601, [0.525, 0.602, 0.650]], [0.603, [0.528, 0.607, 0.653]], [0.605, [0.528, 0.607, 0.653]], [0.607, [0.532, 0.612, 0.657]], [0.609, [0.532, 0.612, 0.657]], [0.611, [0.535, 0.616, 0.660]], [0.613, [0.535, 0.616, 0.660]], [0.614, [0.539, 0.621, 0.664]], [0.616, [0.539, 0.621, 0.664]], [0.618, [0.542, 0.626, 0.667]], [0.620, [0.542, 0.626, 0.667]], [0.622, [0.546, 0.630, 0.671]], [0.624, [0.546, 0.630, 0.671]], [0.626, [0.549, 0.635, 0.674]], [0.628, [0.549, 0.635, 0.674]], [0.630, [0.552, 0.640, 0.677]], [0.632, [0.552, 0.640, 0.677]], [0.634, [0.556, 0.645, 0.681]], [0.636, [0.556, 0.645, 0.681]], [0.638, [0.559, 0.649, 0.684]], [0.640, [0.559, 0.649, 0.684]], [0.642, [0.563, 0.654, 0.688]], [0.644, [0.563, 0.654, 0.688]], [0.646, [0.566, 0.659, 0.691]], [0.648, [0.566, 0.659, 0.691]], [0.650, [0.570, 0.663, 0.695]], [0.652, [0.570, 0.663, 0.695]], [0.654, [0.573, 0.668, 0.698]], [0.656, [0.573, 0.668, 0.698]], [0.658, [0.576, 0.673, 0.701]], [0.659, [0.576, 0.673, 0.701]], [0.661, [0.580, 0.678, 0.705]], [0.663, [0.580, 0.678, 0.705]], [0.665, [0.583, 0.682, 0.708]], [0.667, [0.583, 0.682, 0.708]], [0.669, [0.587, 0.687, 0.712]], [0.671, [0.587, 0.687, 0.712]], [0.673, [0.590, 0.692, 0.715]], [0.675, [0.590, 0.692, 0.715]], [0.677, [0.594, 0.696, 0.719]], [0.679, [0.594, 0.696, 0.719]], [0.681, [0.597, 0.701, 0.722]], [0.683, [0.597, 0.701, 0.722]], [0.685, [0.600, 0.706, 0.725]], [0.687, [0.600, 0.706, 0.725]], [0.689, [0.604, 0.711, 0.729]], [0.691, [0.604, 0.711, 0.729]], [0.693, [0.607, 0.715, 0.732]], [0.695, [0.607, 0.715, 0.732]], [0.697, [0.611, 0.720, 0.736]], [0.699, [0.611, 0.720, 0.736]], [0.701, [0.614, 0.725, 0.739]], [0.703, [0.614, 0.725, 0.739]], [0.705, [0.618, 0.729, 0.743]], [0.706, [0.618, 0.729, 0.743]], [0.708, [0.621, 0.734, 0.746]], [0.710, [0.621, 0.734, 0.746]], [0.712, [0.625, 0.739, 0.750]], [0.714, [0.625, 0.739, 0.750]], [0.716, [0.628, 0.744, 0.753]], [0.718, [0.628, 0.744, 0.753]], [0.720, [0.631, 0.748, 0.756]], [0.722, [0.631, 0.748, 0.756]], [0.724, [0.635, 0.753, 0.760]], [0.726, [0.635, 0.753, 0.760]], [0.728, [0.638, 0.758, 0.763]], [0.730, [0.638, 0.758, 0.763]], [0.732, [0.642, 0.762, 0.767]], [0.734, [0.642, 0.762, 0.767]], [0.736, [0.645, 0.767, 0.770]], [0.738, [0.645, 0.767, 0.770]], [0.740, [0.649, 0.772, 0.774]], [0.742, [0.649, 0.772, 0.774]], [0.744, [0.652, 0.777, 0.777]], [0.746, [0.652, 0.777, 0.777]], [0.748, [0.657, 0.780, 0.780]], [0.750, [0.657, 0.780, 0.780]], [0.751, [0.662, 0.784, 0.784]], [0.753, [0.662, 0.784, 0.784]], [0.755, [0.668, 0.787, 0.787]], [0.757, [0.668, 0.787, 0.787]], [0.759, [0.673, 0.791, 0.791]], [0.761, [0.673, 0.791, 0.791]], [0.763, [0.678, 0.794, 0.794]], [0.765, [0.678, 0.794, 0.794]], [0.767, [0.684, 0.798, 0.798]], [0.769, [0.684, 0.798, 0.798]], [0.771, [0.689, 0.801, 0.801]], [0.773, [0.689, 0.801, 0.801]], [0.775, [0.694, 0.804, 0.804]], [0.777, [0.694, 0.804, 0.804]], [0.779, [0.700, 0.808, 0.808]], [0.781, [0.700, 0.808, 0.808]], [0.783, [0.705, 0.811, 0.811]], [0.785, [0.705, 0.811, 0.811]], [0.787, [0.710, 0.815, 0.815]], [0.789, [0.710, 0.815, 0.815]], [0.791, [0.716, 0.818, 0.818]], [0.793, [0.716, 0.818, 0.818]], [0.795, [0.721, 0.822, 0.822]], [0.796, [0.721, 0.822, 0.822]], [0.798, [0.727, 0.825, 0.825]], [0.800, [0.727, 0.825, 0.825]], [0.802, [0.732, 0.828, 0.828]], [0.804, [0.732, 0.828, 0.828]], [0.806, [0.737, 0.832, 0.832]], [0.808, [0.737, 0.832, 0.832]], [0.810, [0.743, 0.835, 0.835]], [0.812, [0.743, 0.835, 0.835]], [0.814, [0.748, 0.839, 0.839]], [0.816, [0.748, 0.839, 0.839]], [0.818, [0.753, 0.842, 0.842]], [0.820, [0.753, 0.842, 0.842]], [0.822, [0.759, 0.846, 0.846]], [0.824, [0.759, 0.846, 0.846]], [0.826, [0.764, 0.849, 0.849]], [0.828, [0.764, 0.849, 0.849]], [0.830, [0.769, 0.852, 0.852]], [0.832, [0.769, 0.852, 0.852]], [0.834, [0.775, 0.856, 0.856]], [0.836, [0.775, 0.856, 0.856]], [0.838, [0.780, 0.859, 0.859]], [0.840, [0.780, 0.859, 0.859]], [0.841, [0.786, 0.863, 0.863]], [0.843, [0.786, 0.863, 0.863]], [0.845, [0.791, 0.866, 0.866]], [0.847, [0.791, 0.866, 0.866]], [0.849, [0.796, 0.870, 0.870]], [0.851, [0.796, 0.870, 0.870]], [0.853, [0.802, 0.873, 0.873]], [0.855, [0.802, 0.873, 0.873]], [0.857, [0.807, 0.876, 0.876]], [0.859, [0.807, 0.876, 0.876]], [0.861, [0.812, 0.880, 0.880]], [0.863, [0.812, 0.880, 0.880]], [0.865, [0.818, 0.883, 0.883]], [0.867, [0.818, 0.883, 0.883]], [0.869, [0.823, 0.887, 0.887]], [0.871, [0.823, 0.887, 0.887]], [0.873, [0.828, 0.890, 0.890]], [0.875, [0.828, 0.890, 0.890]], [0.877, [0.834, 0.894, 0.894]], [0.879, [0.834, 0.894, 0.894]], [0.881, [0.839, 0.897, 0.897]], [0.883, [0.839, 0.897, 0.897]], [0.885, [0.845, 0.900, 0.900]], [0.886, [0.845, 0.900, 0.900]], [0.888, [0.850, 0.904, 0.904]], [0.890, [0.850, 0.904, 0.904]], [0.892, [0.855, 0.907, 0.907]], [0.894, [0.855, 0.907, 0.907]], [0.896, [0.861, 0.911, 0.911]], [0.898, [0.861, 0.911, 0.911]], [0.900, [0.866, 0.914, 0.914]], [0.902, [0.866, 0.914, 0.914]], [0.904, [0.871, 0.918, 0.918]], [0.906, [0.871, 0.918, 0.918]], [0.908, [0.877, 0.921, 0.921]], [0.910, [0.877, 0.921, 0.921]], [0.912, [0.882, 0.925, 0.925]], [0.914, [0.882, 0.925, 0.925]], [0.916, [0.887, 0.928, 0.928]], [0.918, [0.887, 0.928, 0.928]], [0.920, [0.893, 0.931, 0.931]], [0.922, [0.893, 0.931, 0.931]], [0.924, [0.898, 0.935, 0.935]], [0.926, [0.898, 0.935, 0.935]], [0.928, [0.903, 0.938, 0.938]], [0.930, [0.903, 0.938, 0.938]], [0.932, [0.909, 0.942, 0.942]], [0.933, [0.909, 0.942, 0.942]], [0.935, [0.914, 0.945, 0.945]], [0.937, [0.914, 0.945, 0.945]], [0.939, [0.920, 0.949, 0.949]], [0.941, [0.920, 0.949, 0.949]], [0.943, [0.925, 0.952, 0.952]], [0.945, [0.925, 0.952, 0.952]], [0.947, [0.930, 0.955, 0.955]], [0.949, [0.930, 0.955, 0.955]], [0.951, [0.936, 0.959, 0.959]], [0.953, [0.936, 0.959, 0.959]], [0.955, [0.941, 0.962, 0.962]], [0.957, [0.941, 0.962, 0.962]], [0.959, [0.946, 0.966, 0.966]], [0.961, [0.946, 0.966, 0.966]], [0.963, [0.952, 0.969, 0.969]], [0.965, [0.952, 0.969, 0.969]], [0.967, [0.957, 0.973, 0.973]], [0.969, [0.957, 0.973, 0.973]], [0.971, [0.962, 0.976, 0.976]], [0.973, [0.962, 0.976, 0.976]], [0.975, [0.968, 0.979, 0.979]], [0.977, [0.968, 0.979, 0.979]], [0.978, [0.973, 0.983, 0.983]], [0.980, [0.973, 0.983, 0.983]], [0.982, [0.979, 0.986, 0.986]], [0.984, [0.979, 0.986, 0.986]], [0.986, [0.984, 0.990, 0.990]], [0.988, [0.984, 0.990, 0.990]], [0.990, [0.989, 0.993, 0.993]], [0.992, [0.989, 0.993, 0.993]], [0.994, [0.995, 0.997, 0.997]], [0.996, [0.995, 0.997, 0.997]], [0.998, [1.000, 1.000, 1.000]], [1.000, [1.000, 1.000, 1.000]]]; +var cool = [[0.000, [0.000, 1.000, 1.000]], [0.002, [0.000, 1.000, 1.000]], [0.004, [0.004, 0.996, 1.000]], [0.006, [0.004, 0.996, 1.000]], [0.008, [0.008, 0.992, 1.000]], [0.010, [0.008, 0.992, 1.000]], [0.012, [0.012, 0.988, 1.000]], [0.014, [0.012, 0.988, 1.000]], [0.016, [0.016, 0.984, 1.000]], [0.018, [0.016, 0.984, 1.000]], [0.020, [0.020, 0.980, 1.000]], [0.022, [0.020, 0.980, 1.000]], [0.023, [0.024, 0.976, 1.000]], [0.025, [0.024, 0.976, 1.000]], [0.027, [0.027, 0.973, 1.000]], [0.029, [0.027, 0.973, 1.000]], [0.031, [0.031, 0.969, 1.000]], [0.033, [0.031, 0.969, 1.000]], [0.035, [0.035, 0.965, 1.000]], [0.037, [0.035, 0.965, 1.000]], [0.039, [0.039, 0.961, 1.000]], [0.041, [0.039, 0.961, 1.000]], [0.043, [0.043, 0.957, 1.000]], [0.045, [0.043, 0.957, 1.000]], [0.047, [0.047, 0.953, 1.000]], [0.049, [0.047, 0.953, 1.000]], [0.051, [0.051, 0.949, 1.000]], [0.053, [0.051, 0.949, 1.000]], [0.055, [0.055, 0.945, 1.000]], [0.057, [0.055, 0.945, 1.000]], [0.059, [0.059, 0.941, 1.000]], [0.061, [0.059, 0.941, 1.000]], [0.063, [0.063, 0.937, 1.000]], [0.065, [0.063, 0.937, 1.000]], [0.067, [0.067, 0.933, 1.000]], [0.068, [0.067, 0.933, 1.000]], [0.070, [0.071, 0.929, 1.000]], [0.072, [0.071, 0.929, 1.000]], [0.074, [0.075, 0.925, 1.000]], [0.076, [0.075, 0.925, 1.000]], [0.078, [0.078, 0.922, 1.000]], [0.080, [0.078, 0.922, 1.000]], [0.082, [0.082, 0.918, 1.000]], [0.084, [0.082, 0.918, 1.000]], [0.086, [0.086, 0.914, 1.000]], [0.088, [0.086, 0.914, 1.000]], [0.090, [0.090, 0.910, 1.000]], [0.092, [0.090, 0.910, 1.000]], [0.094, [0.094, 0.906, 1.000]], [0.096, [0.094, 0.906, 1.000]], [0.098, [0.098, 0.902, 1.000]], [0.100, [0.098, 0.902, 1.000]], [0.102, [0.102, 0.898, 1.000]], [0.104, [0.102, 0.898, 1.000]], [0.106, [0.106, 0.894, 1.000]], [0.108, [0.106, 0.894, 1.000]], [0.110, [0.110, 0.890, 1.000]], [0.112, [0.110, 0.890, 1.000]], [0.114, [0.114, 0.886, 1.000]], [0.115, [0.114, 0.886, 1.000]], [0.117, [0.118, 0.882, 1.000]], [0.119, [0.118, 0.882, 1.000]], [0.121, [0.122, 0.878, 1.000]], [0.123, [0.122, 0.878, 1.000]], [0.125, [0.125, 0.875, 1.000]], [0.127, [0.125, 0.875, 1.000]], [0.129, [0.129, 0.871, 1.000]], [0.131, [0.129, 0.871, 1.000]], [0.133, [0.133, 0.867, 1.000]], [0.135, [0.133, 0.867, 1.000]], [0.137, [0.137, 0.863, 1.000]], [0.139, [0.137, 0.863, 1.000]], [0.141, [0.141, 0.859, 1.000]], [0.143, [0.141, 0.859, 1.000]], [0.145, [0.145, 0.855, 1.000]], [0.147, [0.145, 0.855, 1.000]], [0.149, [0.149, 0.851, 1.000]], [0.151, [0.149, 0.851, 1.000]], [0.153, [0.153, 0.847, 1.000]], [0.155, [0.153, 0.847, 1.000]], [0.157, [0.157, 0.843, 1.000]], [0.159, [0.157, 0.843, 1.000]], [0.160, [0.161, 0.839, 1.000]], [0.162, [0.161, 0.839, 1.000]], [0.164, [0.165, 0.835, 1.000]], [0.166, [0.165, 0.835, 1.000]], [0.168, [0.169, 0.831, 1.000]], [0.170, [0.169, 0.831, 1.000]], [0.172, [0.173, 0.827, 1.000]], [0.174, [0.173, 0.827, 1.000]], [0.176, [0.176, 0.824, 1.000]], [0.178, [0.176, 0.824, 1.000]], [0.180, [0.180, 0.820, 1.000]], [0.182, [0.180, 0.820, 1.000]], [0.184, [0.184, 0.816, 1.000]], [0.186, [0.184, 0.816, 1.000]], [0.188, [0.188, 0.812, 1.000]], [0.190, [0.188, 0.812, 1.000]], [0.192, [0.192, 0.808, 1.000]], [0.194, [0.192, 0.808, 1.000]], [0.196, [0.196, 0.804, 1.000]], [0.198, [0.196, 0.804, 1.000]], [0.200, [0.200, 0.800, 1.000]], [0.202, [0.200, 0.800, 1.000]], [0.204, [0.204, 0.796, 1.000]], [0.205, [0.204, 0.796, 1.000]], [0.207, [0.208, 0.792, 1.000]], [0.209, [0.208, 0.792, 1.000]], [0.211, [0.212, 0.788, 1.000]], [0.213, [0.212, 0.788, 1.000]], [0.215, [0.216, 0.784, 1.000]], [0.217, [0.216, 0.784, 1.000]], [0.219, [0.220, 0.780, 1.000]], [0.221, [0.220, 0.780, 1.000]], [0.223, [0.224, 0.776, 1.000]], [0.225, [0.224, 0.776, 1.000]], [0.227, [0.227, 0.773, 1.000]], [0.229, [0.227, 0.773, 1.000]], [0.231, [0.231, 0.769, 1.000]], [0.233, [0.231, 0.769, 1.000]], [0.235, [0.235, 0.765, 1.000]], [0.237, [0.235, 0.765, 1.000]], [0.239, [0.239, 0.761, 1.000]], [0.241, [0.239, 0.761, 1.000]], [0.243, [0.243, 0.757, 1.000]], [0.245, [0.243, 0.757, 1.000]], [0.247, [0.247, 0.753, 1.000]], [0.249, [0.247, 0.753, 1.000]], [0.250, [0.251, 0.749, 1.000]], [0.252, [0.251, 0.749, 1.000]], [0.254, [0.255, 0.745, 1.000]], [0.256, [0.255, 0.745, 1.000]], [0.258, [0.259, 0.741, 1.000]], [0.260, [0.259, 0.741, 1.000]], [0.262, [0.263, 0.737, 1.000]], [0.264, [0.263, 0.737, 1.000]], [0.266, [0.267, 0.733, 1.000]], [0.268, [0.267, 0.733, 1.000]], [0.270, [0.271, 0.729, 1.000]], [0.272, [0.271, 0.729, 1.000]], [0.274, [0.275, 0.725, 1.000]], [0.276, [0.275, 0.725, 1.000]], [0.278, [0.278, 0.722, 1.000]], [0.280, [0.278, 0.722, 1.000]], [0.282, [0.282, 0.718, 1.000]], [0.284, [0.282, 0.718, 1.000]], [0.286, [0.286, 0.714, 1.000]], [0.288, [0.286, 0.714, 1.000]], [0.290, [0.290, 0.710, 1.000]], [0.292, [0.290, 0.710, 1.000]], [0.294, [0.294, 0.706, 1.000]], [0.295, [0.294, 0.706, 1.000]], [0.297, [0.298, 0.702, 1.000]], [0.299, [0.298, 0.702, 1.000]], [0.301, [0.302, 0.698, 1.000]], [0.303, [0.302, 0.698, 1.000]], [0.305, [0.306, 0.694, 1.000]], [0.307, [0.306, 0.694, 1.000]], [0.309, [0.310, 0.690, 1.000]], [0.311, [0.310, 0.690, 1.000]], [0.313, [0.314, 0.686, 1.000]], [0.315, [0.314, 0.686, 1.000]], [0.317, [0.318, 0.682, 1.000]], [0.319, [0.318, 0.682, 1.000]], [0.321, [0.322, 0.678, 1.000]], [0.323, [0.322, 0.678, 1.000]], [0.325, [0.325, 0.675, 1.000]], [0.327, [0.325, 0.675, 1.000]], [0.329, [0.329, 0.671, 1.000]], [0.331, [0.329, 0.671, 1.000]], [0.333, [0.333, 0.667, 1.000]], [0.335, [0.333, 0.667, 1.000]], [0.337, [0.337, 0.663, 1.000]], [0.339, [0.337, 0.663, 1.000]], [0.341, [0.341, 0.659, 1.000]], [0.342, [0.341, 0.659, 1.000]], [0.344, [0.345, 0.655, 1.000]], [0.346, [0.345, 0.655, 1.000]], [0.348, [0.349, 0.651, 1.000]], [0.350, [0.349, 0.651, 1.000]], [0.352, [0.353, 0.647, 1.000]], [0.354, [0.353, 0.647, 1.000]], [0.356, [0.357, 0.643, 1.000]], [0.358, [0.357, 0.643, 1.000]], [0.360, [0.361, 0.639, 1.000]], [0.362, [0.361, 0.639, 1.000]], [0.364, [0.365, 0.635, 1.000]], [0.366, [0.365, 0.635, 1.000]], [0.368, [0.369, 0.631, 1.000]], [0.370, [0.369, 0.631, 1.000]], [0.372, [0.373, 0.627, 1.000]], [0.374, [0.373, 0.627, 1.000]], [0.376, [0.376, 0.624, 1.000]], [0.378, [0.376, 0.624, 1.000]], [0.380, [0.380, 0.620, 1.000]], [0.382, [0.380, 0.620, 1.000]], [0.384, [0.384, 0.616, 1.000]], [0.386, [0.384, 0.616, 1.000]], [0.387, [0.388, 0.612, 1.000]], [0.389, [0.388, 0.612, 1.000]], [0.391, [0.392, 0.608, 1.000]], [0.393, [0.392, 0.608, 1.000]], [0.395, [0.396, 0.604, 1.000]], [0.397, [0.396, 0.604, 1.000]], [0.399, [0.400, 0.600, 1.000]], [0.401, [0.400, 0.600, 1.000]], [0.403, [0.404, 0.596, 1.000]], [0.405, [0.404, 0.596, 1.000]], [0.407, [0.408, 0.592, 1.000]], [0.409, [0.408, 0.592, 1.000]], [0.411, [0.412, 0.588, 1.000]], [0.413, [0.412, 0.588, 1.000]], [0.415, [0.416, 0.584, 1.000]], [0.417, [0.416, 0.584, 1.000]], [0.419, [0.420, 0.580, 1.000]], [0.421, [0.420, 0.580, 1.000]], [0.423, [0.424, 0.576, 1.000]], [0.425, [0.424, 0.576, 1.000]], [0.427, [0.427, 0.573, 1.000]], [0.429, [0.427, 0.573, 1.000]], [0.431, [0.431, 0.569, 1.000]], [0.432, [0.431, 0.569, 1.000]], [0.434, [0.435, 0.565, 1.000]], [0.436, [0.435, 0.565, 1.000]], [0.438, [0.439, 0.561, 1.000]], [0.440, [0.439, 0.561, 1.000]], [0.442, [0.443, 0.557, 1.000]], [0.444, [0.443, 0.557, 1.000]], [0.446, [0.447, 0.553, 1.000]], [0.448, [0.447, 0.553, 1.000]], [0.450, [0.451, 0.549, 1.000]], [0.452, [0.451, 0.549, 1.000]], [0.454, [0.455, 0.545, 1.000]], [0.456, [0.455, 0.545, 1.000]], [0.458, [0.459, 0.541, 1.000]], [0.460, [0.459, 0.541, 1.000]], [0.462, [0.463, 0.537, 1.000]], [0.464, [0.463, 0.537, 1.000]], [0.466, [0.467, 0.533, 1.000]], [0.468, [0.467, 0.533, 1.000]], [0.470, [0.471, 0.529, 1.000]], [0.472, [0.471, 0.529, 1.000]], [0.474, [0.475, 0.525, 1.000]], [0.476, [0.475, 0.525, 1.000]], [0.477, [0.478, 0.522, 1.000]], [0.479, [0.478, 0.522, 1.000]], [0.481, [0.482, 0.518, 1.000]], [0.483, [0.482, 0.518, 1.000]], [0.485, [0.486, 0.514, 1.000]], [0.487, [0.486, 0.514, 1.000]], [0.489, [0.490, 0.510, 1.000]], [0.491, [0.490, 0.510, 1.000]], [0.493, [0.494, 0.506, 1.000]], [0.495, [0.494, 0.506, 1.000]], [0.497, [0.498, 0.502, 1.000]], [0.499, [0.498, 0.502, 1.000]], [0.501, [0.502, 0.498, 1.000]], [0.503, [0.502, 0.498, 1.000]], [0.505, [0.506, 0.494, 1.000]], [0.507, [0.506, 0.494, 1.000]], [0.509, [0.510, 0.490, 1.000]], [0.511, [0.510, 0.490, 1.000]], [0.513, [0.514, 0.486, 1.000]], [0.515, [0.514, 0.486, 1.000]], [0.517, [0.518, 0.482, 1.000]], [0.519, [0.518, 0.482, 1.000]], [0.521, [0.522, 0.478, 1.000]], [0.523, [0.522, 0.478, 1.000]], [0.524, [0.525, 0.475, 1.000]], [0.526, [0.525, 0.475, 1.000]], [0.528, [0.529, 0.471, 1.000]], [0.530, [0.529, 0.471, 1.000]], [0.532, [0.533, 0.467, 1.000]], [0.534, [0.533, 0.467, 1.000]], [0.536, [0.537, 0.463, 1.000]], [0.538, [0.537, 0.463, 1.000]], [0.540, [0.541, 0.459, 1.000]], [0.542, [0.541, 0.459, 1.000]], [0.544, [0.545, 0.455, 1.000]], [0.546, [0.545, 0.455, 1.000]], [0.548, [0.549, 0.451, 1.000]], [0.550, [0.549, 0.451, 1.000]], [0.552, [0.553, 0.447, 1.000]], [0.554, [0.553, 0.447, 1.000]], [0.556, [0.557, 0.443, 1.000]], [0.558, [0.557, 0.443, 1.000]], [0.560, [0.561, 0.439, 1.000]], [0.562, [0.561, 0.439, 1.000]], [0.564, [0.565, 0.435, 1.000]], [0.566, [0.565, 0.435, 1.000]], [0.568, [0.569, 0.431, 1.000]], [0.569, [0.569, 0.431, 1.000]], [0.571, [0.573, 0.427, 1.000]], [0.573, [0.573, 0.427, 1.000]], [0.575, [0.576, 0.424, 1.000]], [0.577, [0.576, 0.424, 1.000]], [0.579, [0.580, 0.420, 1.000]], [0.581, [0.580, 0.420, 1.000]], [0.583, [0.584, 0.416, 1.000]], [0.585, [0.584, 0.416, 1.000]], [0.587, [0.588, 0.412, 1.000]], [0.589, [0.588, 0.412, 1.000]], [0.591, [0.592, 0.408, 1.000]], [0.593, [0.592, 0.408, 1.000]], [0.595, [0.596, 0.404, 1.000]], [0.597, [0.596, 0.404, 1.000]], [0.599, [0.600, 0.400, 1.000]], [0.601, [0.600, 0.400, 1.000]], [0.603, [0.604, 0.396, 1.000]], [0.605, [0.604, 0.396, 1.000]], [0.607, [0.608, 0.392, 1.000]], [0.609, [0.608, 0.392, 1.000]], [0.611, [0.612, 0.388, 1.000]], [0.613, [0.612, 0.388, 1.000]], [0.614, [0.616, 0.384, 1.000]], [0.616, [0.616, 0.384, 1.000]], [0.618, [0.620, 0.380, 1.000]], [0.620, [0.620, 0.380, 1.000]], [0.622, [0.624, 0.376, 1.000]], [0.624, [0.624, 0.376, 1.000]], [0.626, [0.627, 0.373, 1.000]], [0.628, [0.627, 0.373, 1.000]], [0.630, [0.631, 0.369, 1.000]], [0.632, [0.631, 0.369, 1.000]], [0.634, [0.635, 0.365, 1.000]], [0.636, [0.635, 0.365, 1.000]], [0.638, [0.639, 0.361, 1.000]], [0.640, [0.639, 0.361, 1.000]], [0.642, [0.643, 0.357, 1.000]], [0.644, [0.643, 0.357, 1.000]], [0.646, [0.647, 0.353, 1.000]], [0.648, [0.647, 0.353, 1.000]], [0.650, [0.651, 0.349, 1.000]], [0.652, [0.651, 0.349, 1.000]], [0.654, [0.655, 0.345, 1.000]], [0.656, [0.655, 0.345, 1.000]], [0.658, [0.659, 0.341, 1.000]], [0.659, [0.659, 0.341, 1.000]], [0.661, [0.663, 0.337, 1.000]], [0.663, [0.663, 0.337, 1.000]], [0.665, [0.667, 0.333, 1.000]], [0.667, [0.667, 0.333, 1.000]], [0.669, [0.671, 0.329, 1.000]], [0.671, [0.671, 0.329, 1.000]], [0.673, [0.675, 0.325, 1.000]], [0.675, [0.675, 0.325, 1.000]], [0.677, [0.678, 0.322, 1.000]], [0.679, [0.678, 0.322, 1.000]], [0.681, [0.682, 0.318, 1.000]], [0.683, [0.682, 0.318, 1.000]], [0.685, [0.686, 0.314, 1.000]], [0.687, [0.686, 0.314, 1.000]], [0.689, [0.690, 0.310, 1.000]], [0.691, [0.690, 0.310, 1.000]], [0.693, [0.694, 0.306, 1.000]], [0.695, [0.694, 0.306, 1.000]], [0.697, [0.698, 0.302, 1.000]], [0.699, [0.698, 0.302, 1.000]], [0.701, [0.702, 0.298, 1.000]], [0.703, [0.702, 0.298, 1.000]], [0.705, [0.706, 0.294, 1.000]], [0.706, [0.706, 0.294, 1.000]], [0.708, [0.710, 0.290, 1.000]], [0.710, [0.710, 0.290, 1.000]], [0.712, [0.714, 0.286, 1.000]], [0.714, [0.714, 0.286, 1.000]], [0.716, [0.718, 0.282, 1.000]], [0.718, [0.718, 0.282, 1.000]], [0.720, [0.722, 0.278, 1.000]], [0.722, [0.722, 0.278, 1.000]], [0.724, [0.725, 0.275, 1.000]], [0.726, [0.725, 0.275, 1.000]], [0.728, [0.729, 0.271, 1.000]], [0.730, [0.729, 0.271, 1.000]], [0.732, [0.733, 0.267, 1.000]], [0.734, [0.733, 0.267, 1.000]], [0.736, [0.737, 0.263, 1.000]], [0.738, [0.737, 0.263, 1.000]], [0.740, [0.741, 0.259, 1.000]], [0.742, [0.741, 0.259, 1.000]], [0.744, [0.745, 0.255, 1.000]], [0.746, [0.745, 0.255, 1.000]], [0.748, [0.749, 0.251, 1.000]], [0.750, [0.749, 0.251, 1.000]], [0.751, [0.753, 0.247, 1.000]], [0.753, [0.753, 0.247, 1.000]], [0.755, [0.757, 0.243, 1.000]], [0.757, [0.757, 0.243, 1.000]], [0.759, [0.761, 0.239, 1.000]], [0.761, [0.761, 0.239, 1.000]], [0.763, [0.765, 0.235, 1.000]], [0.765, [0.765, 0.235, 1.000]], [0.767, [0.769, 0.231, 1.000]], [0.769, [0.769, 0.231, 1.000]], [0.771, [0.773, 0.227, 1.000]], [0.773, [0.773, 0.227, 1.000]], [0.775, [0.776, 0.224, 1.000]], [0.777, [0.776, 0.224, 1.000]], [0.779, [0.780, 0.220, 1.000]], [0.781, [0.780, 0.220, 1.000]], [0.783, [0.784, 0.216, 1.000]], [0.785, [0.784, 0.216, 1.000]], [0.787, [0.788, 0.212, 1.000]], [0.789, [0.788, 0.212, 1.000]], [0.791, [0.792, 0.208, 1.000]], [0.793, [0.792, 0.208, 1.000]], [0.795, [0.796, 0.204, 1.000]], [0.796, [0.796, 0.204, 1.000]], [0.798, [0.800, 0.200, 1.000]], [0.800, [0.800, 0.200, 1.000]], [0.802, [0.804, 0.196, 1.000]], [0.804, [0.804, 0.196, 1.000]], [0.806, [0.808, 0.192, 1.000]], [0.808, [0.808, 0.192, 1.000]], [0.810, [0.812, 0.188, 1.000]], [0.812, [0.812, 0.188, 1.000]], [0.814, [0.816, 0.184, 1.000]], [0.816, [0.816, 0.184, 1.000]], [0.818, [0.820, 0.180, 1.000]], [0.820, [0.820, 0.180, 1.000]], [0.822, [0.824, 0.176, 1.000]], [0.824, [0.824, 0.176, 1.000]], [0.826, [0.827, 0.173, 1.000]], [0.828, [0.827, 0.173, 1.000]], [0.830, [0.831, 0.169, 1.000]], [0.832, [0.831, 0.169, 1.000]], [0.834, [0.835, 0.165, 1.000]], [0.836, [0.835, 0.165, 1.000]], [0.838, [0.839, 0.161, 1.000]], [0.840, [0.839, 0.161, 1.000]], [0.841, [0.843, 0.157, 1.000]], [0.843, [0.843, 0.157, 1.000]], [0.845, [0.847, 0.153, 1.000]], [0.847, [0.847, 0.153, 1.000]], [0.849, [0.851, 0.149, 1.000]], [0.851, [0.851, 0.149, 1.000]], [0.853, [0.855, 0.145, 1.000]], [0.855, [0.855, 0.145, 1.000]], [0.857, [0.859, 0.141, 1.000]], [0.859, [0.859, 0.141, 1.000]], [0.861, [0.863, 0.137, 1.000]], [0.863, [0.863, 0.137, 1.000]], [0.865, [0.867, 0.133, 1.000]], [0.867, [0.867, 0.133, 1.000]], [0.869, [0.871, 0.129, 1.000]], [0.871, [0.871, 0.129, 1.000]], [0.873, [0.875, 0.125, 1.000]], [0.875, [0.875, 0.125, 1.000]], [0.877, [0.878, 0.122, 1.000]], [0.879, [0.878, 0.122, 1.000]], [0.881, [0.882, 0.118, 1.000]], [0.883, [0.882, 0.118, 1.000]], [0.885, [0.886, 0.114, 1.000]], [0.886, [0.886, 0.114, 1.000]], [0.888, [0.890, 0.110, 1.000]], [0.890, [0.890, 0.110, 1.000]], [0.892, [0.894, 0.106, 1.000]], [0.894, [0.894, 0.106, 1.000]], [0.896, [0.898, 0.102, 1.000]], [0.898, [0.898, 0.102, 1.000]], [0.900, [0.902, 0.098, 1.000]], [0.902, [0.902, 0.098, 1.000]], [0.904, [0.906, 0.094, 1.000]], [0.906, [0.906, 0.094, 1.000]], [0.908, [0.910, 0.090, 1.000]], [0.910, [0.910, 0.090, 1.000]], [0.912, [0.914, 0.086, 1.000]], [0.914, [0.914, 0.086, 1.000]], [0.916, [0.918, 0.082, 1.000]], [0.918, [0.918, 0.082, 1.000]], [0.920, [0.922, 0.078, 1.000]], [0.922, [0.922, 0.078, 1.000]], [0.924, [0.925, 0.075, 1.000]], [0.926, [0.925, 0.075, 1.000]], [0.928, [0.929, 0.071, 1.000]], [0.930, [0.929, 0.071, 1.000]], [0.932, [0.933, 0.067, 1.000]], [0.933, [0.933, 0.067, 1.000]], [0.935, [0.937, 0.063, 1.000]], [0.937, [0.937, 0.063, 1.000]], [0.939, [0.941, 0.059, 1.000]], [0.941, [0.941, 0.059, 1.000]], [0.943, [0.945, 0.055, 1.000]], [0.945, [0.945, 0.055, 1.000]], [0.947, [0.949, 0.051, 1.000]], [0.949, [0.949, 0.051, 1.000]], [0.951, [0.953, 0.047, 1.000]], [0.953, [0.953, 0.047, 1.000]], [0.955, [0.957, 0.043, 1.000]], [0.957, [0.957, 0.043, 1.000]], [0.959, [0.961, 0.039, 1.000]], [0.961, [0.961, 0.039, 1.000]], [0.963, [0.965, 0.035, 1.000]], [0.965, [0.965, 0.035, 1.000]], [0.967, [0.969, 0.031, 1.000]], [0.969, [0.969, 0.031, 1.000]], [0.971, [0.973, 0.027, 1.000]], [0.973, [0.973, 0.027, 1.000]], [0.975, [0.976, 0.024, 1.000]], [0.977, [0.976, 0.024, 1.000]], [0.978, [0.980, 0.020, 1.000]], [0.980, [0.980, 0.020, 1.000]], [0.982, [0.984, 0.016, 1.000]], [0.984, [0.984, 0.016, 1.000]], [0.986, [0.988, 0.012, 1.000]], [0.988, [0.988, 0.012, 1.000]], [0.990, [0.992, 0.008, 1.000]], [0.992, [0.992, 0.008, 1.000]], [0.994, [0.996, 0.004, 1.000]], [0.996, [0.996, 0.004, 1.000]], [0.998, [1.000, 0.000, 1.000]], [1.000, [1.000, 0.000, 1.000]]]; +var copper = [[0.000, [0.000, 0.000, 0.000]], [0.002, [0.000, 0.000, 0.000]], [0.004, [0.005, 0.003, 0.002]], [0.006, [0.005, 0.003, 0.002]], [0.008, [0.010, 0.006, 0.004]], [0.010, [0.010, 0.006, 0.004]], [0.012, [0.015, 0.009, 0.006]], [0.014, [0.015, 0.009, 0.006]], [0.016, [0.019, 0.012, 0.008]], [0.018, [0.019, 0.012, 0.008]], [0.020, [0.024, 0.015, 0.010]], [0.022, [0.024, 0.015, 0.010]], [0.023, [0.029, 0.018, 0.012]], [0.025, [0.029, 0.018, 0.012]], [0.027, [0.034, 0.021, 0.014]], [0.029, [0.034, 0.021, 0.014]], [0.031, [0.039, 0.025, 0.016]], [0.033, [0.039, 0.025, 0.016]], [0.035, [0.044, 0.028, 0.018]], [0.037, [0.044, 0.028, 0.018]], [0.039, [0.048, 0.031, 0.020]], [0.041, [0.048, 0.031, 0.020]], [0.043, [0.053, 0.034, 0.021]], [0.045, [0.053, 0.034, 0.021]], [0.047, [0.058, 0.037, 0.023]], [0.049, [0.058, 0.037, 0.023]], [0.051, [0.063, 0.040, 0.025]], [0.053, [0.063, 0.040, 0.025]], [0.055, [0.068, 0.043, 0.027]], [0.057, [0.068, 0.043, 0.027]], [0.059, [0.073, 0.046, 0.029]], [0.061, [0.073, 0.046, 0.029]], [0.063, [0.078, 0.049, 0.031]], [0.065, [0.078, 0.049, 0.031]], [0.067, [0.082, 0.052, 0.033]], [0.068, [0.082, 0.052, 0.033]], [0.070, [0.087, 0.055, 0.035]], [0.072, [0.087, 0.055, 0.035]], [0.074, [0.092, 0.058, 0.037]], [0.076, [0.092, 0.058, 0.037]], [0.078, [0.097, 0.061, 0.039]], [0.080, [0.097, 0.061, 0.039]], [0.082, [0.102, 0.064, 0.041]], [0.084, [0.102, 0.064, 0.041]], [0.086, [0.107, 0.067, 0.043]], [0.088, [0.107, 0.067, 0.043]], [0.090, [0.111, 0.070, 0.045]], [0.092, [0.111, 0.070, 0.045]], [0.094, [0.116, 0.074, 0.047]], [0.096, [0.116, 0.074, 0.047]], [0.098, [0.121, 0.077, 0.049]], [0.100, [0.121, 0.077, 0.049]], [0.102, [0.126, 0.080, 0.051]], [0.104, [0.126, 0.080, 0.051]], [0.106, [0.131, 0.083, 0.053]], [0.108, [0.131, 0.083, 0.053]], [0.110, [0.136, 0.086, 0.055]], [0.112, [0.136, 0.086, 0.055]], [0.114, [0.140, 0.089, 0.057]], [0.115, [0.140, 0.089, 0.057]], [0.117, [0.145, 0.092, 0.059]], [0.119, [0.145, 0.092, 0.059]], [0.121, [0.150, 0.095, 0.060]], [0.123, [0.150, 0.095, 0.060]], [0.125, [0.155, 0.098, 0.062]], [0.127, [0.155, 0.098, 0.062]], [0.129, [0.160, 0.101, 0.064]], [0.131, [0.160, 0.101, 0.064]], [0.133, [0.165, 0.104, 0.066]], [0.135, [0.165, 0.104, 0.066]], [0.137, [0.170, 0.107, 0.068]], [0.139, [0.170, 0.107, 0.068]], [0.141, [0.174, 0.110, 0.070]], [0.143, [0.174, 0.110, 0.070]], [0.145, [0.179, 0.113, 0.072]], [0.147, [0.179, 0.113, 0.072]], [0.149, [0.184, 0.116, 0.074]], [0.151, [0.184, 0.116, 0.074]], [0.153, [0.189, 0.119, 0.076]], [0.155, [0.189, 0.119, 0.076]], [0.157, [0.194, 0.123, 0.078]], [0.159, [0.194, 0.123, 0.078]], [0.160, [0.199, 0.126, 0.080]], [0.162, [0.199, 0.126, 0.080]], [0.164, [0.203, 0.129, 0.082]], [0.166, [0.203, 0.129, 0.082]], [0.168, [0.208, 0.132, 0.084]], [0.170, [0.208, 0.132, 0.084]], [0.172, [0.213, 0.135, 0.086]], [0.174, [0.213, 0.135, 0.086]], [0.176, [0.218, 0.138, 0.088]], [0.178, [0.218, 0.138, 0.088]], [0.180, [0.223, 0.141, 0.090]], [0.182, [0.223, 0.141, 0.090]], [0.184, [0.228, 0.144, 0.092]], [0.186, [0.228, 0.144, 0.092]], [0.188, [0.233, 0.147, 0.094]], [0.190, [0.233, 0.147, 0.094]], [0.192, [0.237, 0.150, 0.096]], [0.194, [0.237, 0.150, 0.096]], [0.196, [0.242, 0.153, 0.098]], [0.198, [0.242, 0.153, 0.098]], [0.200, [0.247, 0.156, 0.100]], [0.202, [0.247, 0.156, 0.100]], [0.204, [0.252, 0.159, 0.101]], [0.205, [0.252, 0.159, 0.101]], [0.207, [0.257, 0.162, 0.103]], [0.209, [0.257, 0.162, 0.103]], [0.211, [0.262, 0.165, 0.105]], [0.213, [0.262, 0.165, 0.105]], [0.215, [0.266, 0.168, 0.107]], [0.217, [0.266, 0.168, 0.107]], [0.219, [0.271, 0.172, 0.109]], [0.221, [0.271, 0.172, 0.109]], [0.223, [0.276, 0.175, 0.111]], [0.225, [0.276, 0.175, 0.111]], [0.227, [0.281, 0.178, 0.113]], [0.229, [0.281, 0.178, 0.113]], [0.231, [0.286, 0.181, 0.115]], [0.233, [0.286, 0.181, 0.115]], [0.235, [0.291, 0.184, 0.117]], [0.237, [0.291, 0.184, 0.117]], [0.239, [0.296, 0.187, 0.119]], [0.241, [0.296, 0.187, 0.119]], [0.243, [0.300, 0.190, 0.121]], [0.245, [0.300, 0.190, 0.121]], [0.247, [0.305, 0.193, 0.123]], [0.249, [0.305, 0.193, 0.123]], [0.250, [0.310, 0.196, 0.125]], [0.252, [0.310, 0.196, 0.125]], [0.254, [0.315, 0.199, 0.127]], [0.256, [0.315, 0.199, 0.127]], [0.258, [0.320, 0.202, 0.129]], [0.260, [0.320, 0.202, 0.129]], [0.262, [0.325, 0.205, 0.131]], [0.264, [0.325, 0.205, 0.131]], [0.266, [0.329, 0.208, 0.133]], [0.268, [0.329, 0.208, 0.133]], [0.270, [0.334, 0.211, 0.135]], [0.272, [0.334, 0.211, 0.135]], [0.274, [0.339, 0.214, 0.137]], [0.276, [0.339, 0.214, 0.137]], [0.278, [0.344, 0.218, 0.139]], [0.280, [0.344, 0.218, 0.139]], [0.282, [0.349, 0.221, 0.140]], [0.284, [0.349, 0.221, 0.140]], [0.286, [0.354, 0.224, 0.142]], [0.288, [0.354, 0.224, 0.142]], [0.290, [0.358, 0.227, 0.144]], [0.292, [0.358, 0.227, 0.144]], [0.294, [0.363, 0.230, 0.146]], [0.295, [0.363, 0.230, 0.146]], [0.297, [0.368, 0.233, 0.148]], [0.299, [0.368, 0.233, 0.148]], [0.301, [0.373, 0.236, 0.150]], [0.303, [0.373, 0.236, 0.150]], [0.305, [0.378, 0.239, 0.152]], [0.307, [0.378, 0.239, 0.152]], [0.309, [0.383, 0.242, 0.154]], [0.311, [0.383, 0.242, 0.154]], [0.313, [0.388, 0.245, 0.156]], [0.315, [0.388, 0.245, 0.156]], [0.317, [0.392, 0.248, 0.158]], [0.319, [0.392, 0.248, 0.158]], [0.321, [0.397, 0.251, 0.160]], [0.323, [0.397, 0.251, 0.160]], [0.325, [0.402, 0.254, 0.162]], [0.327, [0.402, 0.254, 0.162]], [0.329, [0.407, 0.257, 0.164]], [0.331, [0.407, 0.257, 0.164]], [0.333, [0.412, 0.260, 0.166]], [0.335, [0.412, 0.260, 0.166]], [0.337, [0.417, 0.263, 0.168]], [0.339, [0.417, 0.263, 0.168]], [0.341, [0.421, 0.267, 0.170]], [0.342, [0.421, 0.267, 0.170]], [0.344, [0.426, 0.270, 0.172]], [0.346, [0.426, 0.270, 0.172]], [0.348, [0.431, 0.273, 0.174]], [0.350, [0.431, 0.273, 0.174]], [0.352, [0.436, 0.276, 0.176]], [0.354, [0.436, 0.276, 0.176]], [0.356, [0.441, 0.279, 0.178]], [0.358, [0.441, 0.279, 0.178]], [0.360, [0.446, 0.282, 0.179]], [0.362, [0.446, 0.282, 0.179]], [0.364, [0.451, 0.285, 0.181]], [0.366, [0.451, 0.285, 0.181]], [0.368, [0.455, 0.288, 0.183]], [0.370, [0.455, 0.288, 0.183]], [0.372, [0.460, 0.291, 0.185]], [0.374, [0.460, 0.291, 0.185]], [0.376, [0.465, 0.294, 0.187]], [0.378, [0.465, 0.294, 0.187]], [0.380, [0.470, 0.297, 0.189]], [0.382, [0.470, 0.297, 0.189]], [0.384, [0.475, 0.300, 0.191]], [0.386, [0.475, 0.300, 0.191]], [0.387, [0.480, 0.303, 0.193]], [0.389, [0.480, 0.303, 0.193]], [0.391, [0.484, 0.306, 0.195]], [0.393, [0.484, 0.306, 0.195]], [0.395, [0.489, 0.309, 0.197]], [0.397, [0.489, 0.309, 0.197]], [0.399, [0.494, 0.312, 0.199]], [0.401, [0.494, 0.312, 0.199]], [0.403, [0.499, 0.316, 0.201]], [0.405, [0.499, 0.316, 0.201]], [0.407, [0.504, 0.319, 0.203]], [0.409, [0.504, 0.319, 0.203]], [0.411, [0.509, 0.322, 0.205]], [0.413, [0.509, 0.322, 0.205]], [0.415, [0.513, 0.325, 0.207]], [0.417, [0.513, 0.325, 0.207]], [0.419, [0.518, 0.328, 0.209]], [0.421, [0.518, 0.328, 0.209]], [0.423, [0.523, 0.331, 0.211]], [0.425, [0.523, 0.331, 0.211]], [0.427, [0.528, 0.334, 0.213]], [0.429, [0.528, 0.334, 0.213]], [0.431, [0.533, 0.337, 0.215]], [0.432, [0.533, 0.337, 0.215]], [0.434, [0.538, 0.340, 0.217]], [0.436, [0.538, 0.340, 0.217]], [0.438, [0.543, 0.343, 0.219]], [0.440, [0.543, 0.343, 0.219]], [0.442, [0.547, 0.346, 0.220]], [0.444, [0.547, 0.346, 0.220]], [0.446, [0.552, 0.349, 0.222]], [0.448, [0.552, 0.349, 0.222]], [0.450, [0.557, 0.352, 0.224]], [0.452, [0.557, 0.352, 0.224]], [0.454, [0.562, 0.355, 0.226]], [0.456, [0.562, 0.355, 0.226]], [0.458, [0.567, 0.358, 0.228]], [0.460, [0.567, 0.358, 0.228]], [0.462, [0.572, 0.361, 0.230]], [0.464, [0.572, 0.361, 0.230]], [0.466, [0.576, 0.365, 0.232]], [0.468, [0.576, 0.365, 0.232]], [0.470, [0.581, 0.368, 0.234]], [0.472, [0.581, 0.368, 0.234]], [0.474, [0.586, 0.371, 0.236]], [0.476, [0.586, 0.371, 0.236]], [0.477, [0.591, 0.374, 0.238]], [0.479, [0.591, 0.374, 0.238]], [0.481, [0.596, 0.377, 0.240]], [0.483, [0.596, 0.377, 0.240]], [0.485, [0.601, 0.380, 0.242]], [0.487, [0.601, 0.380, 0.242]], [0.489, [0.606, 0.383, 0.244]], [0.491, [0.606, 0.383, 0.244]], [0.493, [0.610, 0.386, 0.246]], [0.495, [0.610, 0.386, 0.246]], [0.497, [0.615, 0.389, 0.248]], [0.499, [0.615, 0.389, 0.248]], [0.501, [0.620, 0.392, 0.250]], [0.503, [0.620, 0.392, 0.250]], [0.505, [0.625, 0.395, 0.252]], [0.507, [0.625, 0.395, 0.252]], [0.509, [0.630, 0.398, 0.254]], [0.511, [0.630, 0.398, 0.254]], [0.513, [0.635, 0.401, 0.256]], [0.515, [0.635, 0.401, 0.256]], [0.517, [0.639, 0.404, 0.258]], [0.519, [0.639, 0.404, 0.258]], [0.521, [0.644, 0.407, 0.259]], [0.523, [0.644, 0.407, 0.259]], [0.524, [0.649, 0.411, 0.261]], [0.526, [0.649, 0.411, 0.261]], [0.528, [0.654, 0.414, 0.263]], [0.530, [0.654, 0.414, 0.263]], [0.532, [0.659, 0.417, 0.265]], [0.534, [0.659, 0.417, 0.265]], [0.536, [0.664, 0.420, 0.267]], [0.538, [0.664, 0.420, 0.267]], [0.540, [0.669, 0.423, 0.269]], [0.542, [0.669, 0.423, 0.269]], [0.544, [0.673, 0.426, 0.271]], [0.546, [0.673, 0.426, 0.271]], [0.548, [0.678, 0.429, 0.273]], [0.550, [0.678, 0.429, 0.273]], [0.552, [0.683, 0.432, 0.275]], [0.554, [0.683, 0.432, 0.275]], [0.556, [0.688, 0.435, 0.277]], [0.558, [0.688, 0.435, 0.277]], [0.560, [0.693, 0.438, 0.279]], [0.562, [0.693, 0.438, 0.279]], [0.564, [0.698, 0.441, 0.281]], [0.566, [0.698, 0.441, 0.281]], [0.568, [0.702, 0.444, 0.283]], [0.569, [0.702, 0.444, 0.283]], [0.571, [0.707, 0.447, 0.285]], [0.573, [0.707, 0.447, 0.285]], [0.575, [0.712, 0.450, 0.287]], [0.577, [0.712, 0.450, 0.287]], [0.579, [0.717, 0.453, 0.289]], [0.581, [0.717, 0.453, 0.289]], [0.583, [0.722, 0.456, 0.291]], [0.585, [0.722, 0.456, 0.291]], [0.587, [0.727, 0.460, 0.293]], [0.589, [0.727, 0.460, 0.293]], [0.591, [0.731, 0.463, 0.295]], [0.593, [0.731, 0.463, 0.295]], [0.595, [0.736, 0.466, 0.297]], [0.597, [0.736, 0.466, 0.297]], [0.599, [0.741, 0.469, 0.298]], [0.601, [0.741, 0.469, 0.298]], [0.603, [0.746, 0.472, 0.300]], [0.605, [0.746, 0.472, 0.300]], [0.607, [0.751, 0.475, 0.302]], [0.609, [0.751, 0.475, 0.302]], [0.611, [0.756, 0.478, 0.304]], [0.613, [0.756, 0.478, 0.304]], [0.614, [0.761, 0.481, 0.306]], [0.616, [0.761, 0.481, 0.306]], [0.618, [0.765, 0.484, 0.308]], [0.620, [0.765, 0.484, 0.308]], [0.622, [0.770, 0.487, 0.310]], [0.624, [0.770, 0.487, 0.310]], [0.626, [0.775, 0.490, 0.312]], [0.628, [0.775, 0.490, 0.312]], [0.630, [0.780, 0.493, 0.314]], [0.632, [0.780, 0.493, 0.314]], [0.634, [0.785, 0.496, 0.316]], [0.636, [0.785, 0.496, 0.316]], [0.638, [0.790, 0.499, 0.318]], [0.640, [0.790, 0.499, 0.318]], [0.642, [0.794, 0.502, 0.320]], [0.644, [0.794, 0.502, 0.320]], [0.646, [0.799, 0.505, 0.322]], [0.648, [0.799, 0.505, 0.322]], [0.650, [0.804, 0.509, 0.324]], [0.652, [0.804, 0.509, 0.324]], [0.654, [0.809, 0.512, 0.326]], [0.656, [0.809, 0.512, 0.326]], [0.658, [0.814, 0.515, 0.328]], [0.659, [0.814, 0.515, 0.328]], [0.661, [0.819, 0.518, 0.330]], [0.663, [0.819, 0.518, 0.330]], [0.665, [0.824, 0.521, 0.332]], [0.667, [0.824, 0.521, 0.332]], [0.669, [0.828, 0.524, 0.334]], [0.671, [0.828, 0.524, 0.334]], [0.673, [0.833, 0.527, 0.336]], [0.675, [0.833, 0.527, 0.336]], [0.677, [0.838, 0.530, 0.338]], [0.679, [0.838, 0.530, 0.338]], [0.681, [0.843, 0.533, 0.339]], [0.683, [0.843, 0.533, 0.339]], [0.685, [0.848, 0.536, 0.341]], [0.687, [0.848, 0.536, 0.341]], [0.689, [0.853, 0.539, 0.343]], [0.691, [0.853, 0.539, 0.343]], [0.693, [0.857, 0.542, 0.345]], [0.695, [0.857, 0.542, 0.345]], [0.697, [0.862, 0.545, 0.347]], [0.699, [0.862, 0.545, 0.347]], [0.701, [0.867, 0.548, 0.349]], [0.703, [0.867, 0.548, 0.349]], [0.705, [0.872, 0.551, 0.351]], [0.706, [0.872, 0.551, 0.351]], [0.708, [0.877, 0.554, 0.353]], [0.710, [0.877, 0.554, 0.353]], [0.712, [0.882, 0.558, 0.355]], [0.714, [0.882, 0.558, 0.355]], [0.716, [0.887, 0.561, 0.357]], [0.718, [0.887, 0.561, 0.357]], [0.720, [0.891, 0.564, 0.359]], [0.722, [0.891, 0.564, 0.359]], [0.724, [0.896, 0.567, 0.361]], [0.726, [0.896, 0.567, 0.361]], [0.728, [0.901, 0.570, 0.363]], [0.730, [0.901, 0.570, 0.363]], [0.732, [0.906, 0.573, 0.365]], [0.734, [0.906, 0.573, 0.365]], [0.736, [0.911, 0.576, 0.367]], [0.738, [0.911, 0.576, 0.367]], [0.740, [0.916, 0.579, 0.369]], [0.742, [0.916, 0.579, 0.369]], [0.744, [0.920, 0.582, 0.371]], [0.746, [0.920, 0.582, 0.371]], [0.748, [0.925, 0.585, 0.373]], [0.750, [0.925, 0.585, 0.373]], [0.751, [0.930, 0.588, 0.375]], [0.753, [0.930, 0.588, 0.375]], [0.755, [0.935, 0.591, 0.377]], [0.757, [0.935, 0.591, 0.377]], [0.759, [0.940, 0.594, 0.378]], [0.761, [0.940, 0.594, 0.378]], [0.763, [0.945, 0.597, 0.380]], [0.765, [0.945, 0.597, 0.380]], [0.767, [0.949, 0.600, 0.382]], [0.769, [0.949, 0.600, 0.382]], [0.771, [0.954, 0.604, 0.384]], [0.773, [0.954, 0.604, 0.384]], [0.775, [0.959, 0.607, 0.386]], [0.777, [0.959, 0.607, 0.386]], [0.779, [0.964, 0.610, 0.388]], [0.781, [0.964, 0.610, 0.388]], [0.783, [0.969, 0.613, 0.390]], [0.785, [0.969, 0.613, 0.390]], [0.787, [0.974, 0.616, 0.392]], [0.789, [0.974, 0.616, 0.392]], [0.791, [0.979, 0.619, 0.394]], [0.793, [0.979, 0.619, 0.394]], [0.795, [0.983, 0.622, 0.396]], [0.796, [0.983, 0.622, 0.396]], [0.798, [0.988, 0.625, 0.398]], [0.800, [0.988, 0.625, 0.398]], [0.802, [0.993, 0.628, 0.400]], [0.804, [0.993, 0.628, 0.400]], [0.806, [0.998, 0.631, 0.402]], [0.808, [0.998, 0.631, 0.402]], [0.810, [1.000, 0.634, 0.404]], [0.812, [1.000, 0.634, 0.404]], [0.814, [1.000, 0.637, 0.406]], [0.816, [1.000, 0.637, 0.406]], [0.818, [1.000, 0.640, 0.408]], [0.820, [1.000, 0.640, 0.408]], [0.822, [1.000, 0.643, 0.410]], [0.824, [1.000, 0.643, 0.410]], [0.826, [1.000, 0.646, 0.412]], [0.828, [1.000, 0.646, 0.412]], [0.830, [1.000, 0.649, 0.414]], [0.832, [1.000, 0.649, 0.414]], [0.834, [1.000, 0.653, 0.416]], [0.836, [1.000, 0.653, 0.416]], [0.838, [1.000, 0.656, 0.418]], [0.840, [1.000, 0.656, 0.418]], [0.841, [1.000, 0.659, 0.419]], [0.843, [1.000, 0.659, 0.419]], [0.845, [1.000, 0.662, 0.421]], [0.847, [1.000, 0.662, 0.421]], [0.849, [1.000, 0.665, 0.423]], [0.851, [1.000, 0.665, 0.423]], [0.853, [1.000, 0.668, 0.425]], [0.855, [1.000, 0.668, 0.425]], [0.857, [1.000, 0.671, 0.427]], [0.859, [1.000, 0.671, 0.427]], [0.861, [1.000, 0.674, 0.429]], [0.863, [1.000, 0.674, 0.429]], [0.865, [1.000, 0.677, 0.431]], [0.867, [1.000, 0.677, 0.431]], [0.869, [1.000, 0.680, 0.433]], [0.871, [1.000, 0.680, 0.433]], [0.873, [1.000, 0.683, 0.435]], [0.875, [1.000, 0.683, 0.435]], [0.877, [1.000, 0.686, 0.437]], [0.879, [1.000, 0.686, 0.437]], [0.881, [1.000, 0.689, 0.439]], [0.883, [1.000, 0.689, 0.439]], [0.885, [1.000, 0.692, 0.441]], [0.886, [1.000, 0.692, 0.441]], [0.888, [1.000, 0.695, 0.443]], [0.890, [1.000, 0.695, 0.443]], [0.892, [1.000, 0.698, 0.445]], [0.894, [1.000, 0.698, 0.445]], [0.896, [1.000, 0.702, 0.447]], [0.898, [1.000, 0.702, 0.447]], [0.900, [1.000, 0.705, 0.449]], [0.902, [1.000, 0.705, 0.449]], [0.904, [1.000, 0.708, 0.451]], [0.906, [1.000, 0.708, 0.451]], [0.908, [1.000, 0.711, 0.453]], [0.910, [1.000, 0.711, 0.453]], [0.912, [1.000, 0.714, 0.455]], [0.914, [1.000, 0.714, 0.455]], [0.916, [1.000, 0.717, 0.457]], [0.918, [1.000, 0.717, 0.457]], [0.920, [1.000, 0.720, 0.458]], [0.922, [1.000, 0.720, 0.458]], [0.924, [1.000, 0.723, 0.460]], [0.926, [1.000, 0.723, 0.460]], [0.928, [1.000, 0.726, 0.462]], [0.930, [1.000, 0.726, 0.462]], [0.932, [1.000, 0.729, 0.464]], [0.933, [1.000, 0.729, 0.464]], [0.935, [1.000, 0.732, 0.466]], [0.937, [1.000, 0.732, 0.466]], [0.939, [1.000, 0.735, 0.468]], [0.941, [1.000, 0.735, 0.468]], [0.943, [1.000, 0.738, 0.470]], [0.945, [1.000, 0.738, 0.470]], [0.947, [1.000, 0.741, 0.472]], [0.949, [1.000, 0.741, 0.472]], [0.951, [1.000, 0.744, 0.474]], [0.953, [1.000, 0.744, 0.474]], [0.955, [1.000, 0.748, 0.476]], [0.957, [1.000, 0.748, 0.476]], [0.959, [1.000, 0.751, 0.478]], [0.961, [1.000, 0.751, 0.478]], [0.963, [1.000, 0.754, 0.480]], [0.965, [1.000, 0.754, 0.480]], [0.967, [1.000, 0.757, 0.482]], [0.969, [1.000, 0.757, 0.482]], [0.971, [1.000, 0.760, 0.484]], [0.973, [1.000, 0.760, 0.484]], [0.975, [1.000, 0.763, 0.486]], [0.977, [1.000, 0.763, 0.486]], [0.978, [1.000, 0.766, 0.488]], [0.980, [1.000, 0.766, 0.488]], [0.982, [1.000, 0.769, 0.490]], [0.984, [1.000, 0.769, 0.490]], [0.986, [1.000, 0.772, 0.492]], [0.988, [1.000, 0.772, 0.492]], [0.990, [1.000, 0.775, 0.494]], [0.992, [1.000, 0.775, 0.494]], [0.994, [1.000, 0.778, 0.496]], [0.996, [1.000, 0.778, 0.496]], [0.998, [1.000, 0.781, 0.497]], [1.000, [1.000, 0.781, 0.497]]]; +var gist_heat = [[0.000, [0.000, 0.000, 0.000]], [0.002, [0.000, 0.000, 0.000]], [0.004, [0.006, 0.000, 0.000]], [0.006, [0.006, 0.000, 0.000]], [0.008, [0.012, 0.000, 0.000]], [0.010, [0.012, 0.000, 0.000]], [0.012, [0.018, 0.000, 0.000]], [0.014, [0.018, 0.000, 0.000]], [0.016, [0.024, 0.000, 0.000]], [0.018, [0.024, 0.000, 0.000]], [0.020, [0.029, 0.000, 0.000]], [0.022, [0.029, 0.000, 0.000]], [0.023, [0.035, 0.000, 0.000]], [0.025, [0.035, 0.000, 0.000]], [0.027, [0.041, 0.000, 0.000]], [0.029, [0.041, 0.000, 0.000]], [0.031, [0.047, 0.000, 0.000]], [0.033, [0.047, 0.000, 0.000]], [0.035, [0.053, 0.000, 0.000]], [0.037, [0.053, 0.000, 0.000]], [0.039, [0.059, 0.000, 0.000]], [0.041, [0.059, 0.000, 0.000]], [0.043, [0.065, 0.000, 0.000]], [0.045, [0.065, 0.000, 0.000]], [0.047, [0.071, 0.000, 0.000]], [0.049, [0.071, 0.000, 0.000]], [0.051, [0.076, 0.000, 0.000]], [0.053, [0.076, 0.000, 0.000]], [0.055, [0.082, 0.000, 0.000]], [0.057, [0.082, 0.000, 0.000]], [0.059, [0.088, 0.000, 0.000]], [0.061, [0.088, 0.000, 0.000]], [0.063, [0.094, 0.000, 0.000]], [0.065, [0.094, 0.000, 0.000]], [0.067, [0.100, 0.000, 0.000]], [0.068, [0.100, 0.000, 0.000]], [0.070, [0.106, 0.000, 0.000]], [0.072, [0.106, 0.000, 0.000]], [0.074, [0.112, 0.000, 0.000]], [0.076, [0.112, 0.000, 0.000]], [0.078, [0.118, 0.000, 0.000]], [0.080, [0.118, 0.000, 0.000]], [0.082, [0.124, 0.000, 0.000]], [0.084, [0.124, 0.000, 0.000]], [0.086, [0.129, 0.000, 0.000]], [0.088, [0.129, 0.000, 0.000]], [0.090, [0.135, 0.000, 0.000]], [0.092, [0.135, 0.000, 0.000]], [0.094, [0.141, 0.000, 0.000]], [0.096, [0.141, 0.000, 0.000]], [0.098, [0.147, 0.000, 0.000]], [0.100, [0.147, 0.000, 0.000]], [0.102, [0.153, 0.000, 0.000]], [0.104, [0.153, 0.000, 0.000]], [0.106, [0.159, 0.000, 0.000]], [0.108, [0.159, 0.000, 0.000]], [0.110, [0.165, 0.000, 0.000]], [0.112, [0.165, 0.000, 0.000]], [0.114, [0.171, 0.000, 0.000]], [0.115, [0.171, 0.000, 0.000]], [0.117, [0.176, 0.000, 0.000]], [0.119, [0.176, 0.000, 0.000]], [0.121, [0.182, 0.000, 0.000]], [0.123, [0.182, 0.000, 0.000]], [0.125, [0.188, 0.000, 0.000]], [0.127, [0.188, 0.000, 0.000]], [0.129, [0.194, 0.000, 0.000]], [0.131, [0.194, 0.000, 0.000]], [0.133, [0.200, 0.000, 0.000]], [0.135, [0.200, 0.000, 0.000]], [0.137, [0.206, 0.000, 0.000]], [0.139, [0.206, 0.000, 0.000]], [0.141, [0.212, 0.000, 0.000]], [0.143, [0.212, 0.000, 0.000]], [0.145, [0.218, 0.000, 0.000]], [0.147, [0.218, 0.000, 0.000]], [0.149, [0.224, 0.000, 0.000]], [0.151, [0.224, 0.000, 0.000]], [0.153, [0.229, 0.000, 0.000]], [0.155, [0.229, 0.000, 0.000]], [0.157, [0.235, 0.000, 0.000]], [0.159, [0.235, 0.000, 0.000]], [0.160, [0.241, 0.000, 0.000]], [0.162, [0.241, 0.000, 0.000]], [0.164, [0.247, 0.000, 0.000]], [0.166, [0.247, 0.000, 0.000]], [0.168, [0.253, 0.000, 0.000]], [0.170, [0.253, 0.000, 0.000]], [0.172, [0.259, 0.000, 0.000]], [0.174, [0.259, 0.000, 0.000]], [0.176, [0.265, 0.000, 0.000]], [0.178, [0.265, 0.000, 0.000]], [0.180, [0.271, 0.000, 0.000]], [0.182, [0.271, 0.000, 0.000]], [0.184, [0.276, 0.000, 0.000]], [0.186, [0.276, 0.000, 0.000]], [0.188, [0.282, 0.000, 0.000]], [0.190, [0.282, 0.000, 0.000]], [0.192, [0.288, 0.000, 0.000]], [0.194, [0.288, 0.000, 0.000]], [0.196, [0.294, 0.000, 0.000]], [0.198, [0.294, 0.000, 0.000]], [0.200, [0.300, 0.000, 0.000]], [0.202, [0.300, 0.000, 0.000]], [0.204, [0.306, 0.000, 0.000]], [0.205, [0.306, 0.000, 0.000]], [0.207, [0.312, 0.000, 0.000]], [0.209, [0.312, 0.000, 0.000]], [0.211, [0.318, 0.000, 0.000]], [0.213, [0.318, 0.000, 0.000]], [0.215, [0.324, 0.000, 0.000]], [0.217, [0.324, 0.000, 0.000]], [0.219, [0.329, 0.000, 0.000]], [0.221, [0.329, 0.000, 0.000]], [0.223, [0.335, 0.000, 0.000]], [0.225, [0.335, 0.000, 0.000]], [0.227, [0.341, 0.000, 0.000]], [0.229, [0.341, 0.000, 0.000]], [0.231, [0.347, 0.000, 0.000]], [0.233, [0.347, 0.000, 0.000]], [0.235, [0.353, 0.000, 0.000]], [0.237, [0.353, 0.000, 0.000]], [0.239, [0.359, 0.000, 0.000]], [0.241, [0.359, 0.000, 0.000]], [0.243, [0.365, 0.000, 0.000]], [0.245, [0.365, 0.000, 0.000]], [0.247, [0.371, 0.000, 0.000]], [0.249, [0.371, 0.000, 0.000]], [0.250, [0.376, 0.000, 0.000]], [0.252, [0.376, 0.000, 0.000]], [0.254, [0.382, 0.000, 0.000]], [0.256, [0.382, 0.000, 0.000]], [0.258, [0.388, 0.000, 0.000]], [0.260, [0.388, 0.000, 0.000]], [0.262, [0.394, 0.000, 0.000]], [0.264, [0.394, 0.000, 0.000]], [0.266, [0.400, 0.000, 0.000]], [0.268, [0.400, 0.000, 0.000]], [0.270, [0.406, 0.000, 0.000]], [0.272, [0.406, 0.000, 0.000]], [0.274, [0.412, 0.000, 0.000]], [0.276, [0.412, 0.000, 0.000]], [0.278, [0.418, 0.000, 0.000]], [0.280, [0.418, 0.000, 0.000]], [0.282, [0.424, 0.000, 0.000]], [0.284, [0.424, 0.000, 0.000]], [0.286, [0.429, 0.000, 0.000]], [0.288, [0.429, 0.000, 0.000]], [0.290, [0.435, 0.000, 0.000]], [0.292, [0.435, 0.000, 0.000]], [0.294, [0.441, 0.000, 0.000]], [0.295, [0.441, 0.000, 0.000]], [0.297, [0.447, 0.000, 0.000]], [0.299, [0.447, 0.000, 0.000]], [0.301, [0.453, 0.000, 0.000]], [0.303, [0.453, 0.000, 0.000]], [0.305, [0.459, 0.000, 0.000]], [0.307, [0.459, 0.000, 0.000]], [0.309, [0.465, 0.000, 0.000]], [0.311, [0.465, 0.000, 0.000]], [0.313, [0.471, 0.000, 0.000]], [0.315, [0.471, 0.000, 0.000]], [0.317, [0.476, 0.000, 0.000]], [0.319, [0.476, 0.000, 0.000]], [0.321, [0.482, 0.000, 0.000]], [0.323, [0.482, 0.000, 0.000]], [0.325, [0.488, 0.000, 0.000]], [0.327, [0.488, 0.000, 0.000]], [0.329, [0.494, 0.000, 0.000]], [0.331, [0.494, 0.000, 0.000]], [0.333, [0.500, 0.000, 0.000]], [0.335, [0.500, 0.000, 0.000]], [0.337, [0.506, 0.000, 0.000]], [0.339, [0.506, 0.000, 0.000]], [0.341, [0.512, 0.000, 0.000]], [0.342, [0.512, 0.000, 0.000]], [0.344, [0.518, 0.000, 0.000]], [0.346, [0.518, 0.000, 0.000]], [0.348, [0.524, 0.000, 0.000]], [0.350, [0.524, 0.000, 0.000]], [0.352, [0.529, 0.000, 0.000]], [0.354, [0.529, 0.000, 0.000]], [0.356, [0.535, 0.000, 0.000]], [0.358, [0.535, 0.000, 0.000]], [0.360, [0.541, 0.000, 0.000]], [0.362, [0.541, 0.000, 0.000]], [0.364, [0.547, 0.000, 0.000]], [0.366, [0.547, 0.000, 0.000]], [0.368, [0.553, 0.000, 0.000]], [0.370, [0.553, 0.000, 0.000]], [0.372, [0.559, 0.000, 0.000]], [0.374, [0.559, 0.000, 0.000]], [0.376, [0.565, 0.000, 0.000]], [0.378, [0.565, 0.000, 0.000]], [0.380, [0.571, 0.000, 0.000]], [0.382, [0.571, 0.000, 0.000]], [0.384, [0.576, 0.000, 0.000]], [0.386, [0.576, 0.000, 0.000]], [0.387, [0.582, 0.000, 0.000]], [0.389, [0.582, 0.000, 0.000]], [0.391, [0.588, 0.000, 0.000]], [0.393, [0.588, 0.000, 0.000]], [0.395, [0.594, 0.000, 0.000]], [0.397, [0.594, 0.000, 0.000]], [0.399, [0.600, 0.000, 0.000]], [0.401, [0.600, 0.000, 0.000]], [0.403, [0.606, 0.000, 0.000]], [0.405, [0.606, 0.000, 0.000]], [0.407, [0.612, 0.000, 0.000]], [0.409, [0.612, 0.000, 0.000]], [0.411, [0.618, 0.000, 0.000]], [0.413, [0.618, 0.000, 0.000]], [0.415, [0.624, 0.000, 0.000]], [0.417, [0.624, 0.000, 0.000]], [0.419, [0.629, 0.000, 0.000]], [0.421, [0.629, 0.000, 0.000]], [0.423, [0.635, 0.000, 0.000]], [0.425, [0.635, 0.000, 0.000]], [0.427, [0.641, 0.000, 0.000]], [0.429, [0.641, 0.000, 0.000]], [0.431, [0.647, 0.000, 0.000]], [0.432, [0.647, 0.000, 0.000]], [0.434, [0.653, 0.000, 0.000]], [0.436, [0.653, 0.000, 0.000]], [0.438, [0.659, 0.000, 0.000]], [0.440, [0.659, 0.000, 0.000]], [0.442, [0.665, 0.000, 0.000]], [0.444, [0.665, 0.000, 0.000]], [0.446, [0.671, 0.000, 0.000]], [0.448, [0.671, 0.000, 0.000]], [0.450, [0.676, 0.000, 0.000]], [0.452, [0.676, 0.000, 0.000]], [0.454, [0.682, 0.000, 0.000]], [0.456, [0.682, 0.000, 0.000]], [0.458, [0.688, 0.000, 0.000]], [0.460, [0.688, 0.000, 0.000]], [0.462, [0.694, 0.000, 0.000]], [0.464, [0.694, 0.000, 0.000]], [0.466, [0.700, 0.000, 0.000]], [0.468, [0.700, 0.000, 0.000]], [0.470, [0.706, 0.000, 0.000]], [0.472, [0.706, 0.000, 0.000]], [0.474, [0.712, 0.000, 0.000]], [0.476, [0.712, 0.000, 0.000]], [0.477, [0.718, 0.000, 0.000]], [0.479, [0.718, 0.000, 0.000]], [0.481, [0.724, 0.000, 0.000]], [0.483, [0.724, 0.000, 0.000]], [0.485, [0.729, 0.000, 0.000]], [0.487, [0.729, 0.000, 0.000]], [0.489, [0.735, 0.000, 0.000]], [0.491, [0.735, 0.000, 0.000]], [0.493, [0.741, 0.000, 0.000]], [0.495, [0.741, 0.000, 0.000]], [0.497, [0.747, 0.000, 0.000]], [0.499, [0.747, 0.000, 0.000]], [0.501, [0.753, 0.004, 0.000]], [0.503, [0.753, 0.004, 0.000]], [0.505, [0.759, 0.012, 0.000]], [0.507, [0.759, 0.012, 0.000]], [0.509, [0.765, 0.020, 0.000]], [0.511, [0.765, 0.020, 0.000]], [0.513, [0.771, 0.027, 0.000]], [0.515, [0.771, 0.027, 0.000]], [0.517, [0.776, 0.035, 0.000]], [0.519, [0.776, 0.035, 0.000]], [0.521, [0.782, 0.043, 0.000]], [0.523, [0.782, 0.043, 0.000]], [0.524, [0.788, 0.051, 0.000]], [0.526, [0.788, 0.051, 0.000]], [0.528, [0.794, 0.059, 0.000]], [0.530, [0.794, 0.059, 0.000]], [0.532, [0.800, 0.067, 0.000]], [0.534, [0.800, 0.067, 0.000]], [0.536, [0.806, 0.075, 0.000]], [0.538, [0.806, 0.075, 0.000]], [0.540, [0.812, 0.082, 0.000]], [0.542, [0.812, 0.082, 0.000]], [0.544, [0.818, 0.090, 0.000]], [0.546, [0.818, 0.090, 0.000]], [0.548, [0.824, 0.098, 0.000]], [0.550, [0.824, 0.098, 0.000]], [0.552, [0.829, 0.106, 0.000]], [0.554, [0.829, 0.106, 0.000]], [0.556, [0.835, 0.114, 0.000]], [0.558, [0.835, 0.114, 0.000]], [0.560, [0.841, 0.122, 0.000]], [0.562, [0.841, 0.122, 0.000]], [0.564, [0.847, 0.129, 0.000]], [0.566, [0.847, 0.129, 0.000]], [0.568, [0.853, 0.137, 0.000]], [0.569, [0.853, 0.137, 0.000]], [0.571, [0.859, 0.145, 0.000]], [0.573, [0.859, 0.145, 0.000]], [0.575, [0.865, 0.153, 0.000]], [0.577, [0.865, 0.153, 0.000]], [0.579, [0.871, 0.161, 0.000]], [0.581, [0.871, 0.161, 0.000]], [0.583, [0.876, 0.169, 0.000]], [0.585, [0.876, 0.169, 0.000]], [0.587, [0.882, 0.176, 0.000]], [0.589, [0.882, 0.176, 0.000]], [0.591, [0.888, 0.184, 0.000]], [0.593, [0.888, 0.184, 0.000]], [0.595, [0.894, 0.192, 0.000]], [0.597, [0.894, 0.192, 0.000]], [0.599, [0.900, 0.200, 0.000]], [0.601, [0.900, 0.200, 0.000]], [0.603, [0.906, 0.208, 0.000]], [0.605, [0.906, 0.208, 0.000]], [0.607, [0.912, 0.216, 0.000]], [0.609, [0.912, 0.216, 0.000]], [0.611, [0.918, 0.224, 0.000]], [0.613, [0.918, 0.224, 0.000]], [0.614, [0.924, 0.231, 0.000]], [0.616, [0.924, 0.231, 0.000]], [0.618, [0.929, 0.239, 0.000]], [0.620, [0.929, 0.239, 0.000]], [0.622, [0.935, 0.247, 0.000]], [0.624, [0.935, 0.247, 0.000]], [0.626, [0.941, 0.255, 0.000]], [0.628, [0.941, 0.255, 0.000]], [0.630, [0.947, 0.263, 0.000]], [0.632, [0.947, 0.263, 0.000]], [0.634, [0.953, 0.271, 0.000]], [0.636, [0.953, 0.271, 0.000]], [0.638, [0.959, 0.278, 0.000]], [0.640, [0.959, 0.278, 0.000]], [0.642, [0.965, 0.286, 0.000]], [0.644, [0.965, 0.286, 0.000]], [0.646, [0.971, 0.294, 0.000]], [0.648, [0.971, 0.294, 0.000]], [0.650, [0.976, 0.302, 0.000]], [0.652, [0.976, 0.302, 0.000]], [0.654, [0.982, 0.310, 0.000]], [0.656, [0.982, 0.310, 0.000]], [0.658, [0.988, 0.318, 0.000]], [0.659, [0.988, 0.318, 0.000]], [0.661, [0.994, 0.325, 0.000]], [0.663, [0.994, 0.325, 0.000]], [0.665, [1.000, 0.333, 0.000]], [0.667, [1.000, 0.333, 0.000]], [0.669, [1.000, 0.341, 0.000]], [0.671, [1.000, 0.341, 0.000]], [0.673, [1.000, 0.349, 0.000]], [0.675, [1.000, 0.349, 0.000]], [0.677, [1.000, 0.357, 0.000]], [0.679, [1.000, 0.357, 0.000]], [0.681, [1.000, 0.365, 0.000]], [0.683, [1.000, 0.365, 0.000]], [0.685, [1.000, 0.373, 0.000]], [0.687, [1.000, 0.373, 0.000]], [0.689, [1.000, 0.380, 0.000]], [0.691, [1.000, 0.380, 0.000]], [0.693, [1.000, 0.388, 0.000]], [0.695, [1.000, 0.388, 0.000]], [0.697, [1.000, 0.396, 0.000]], [0.699, [1.000, 0.396, 0.000]], [0.701, [1.000, 0.404, 0.000]], [0.703, [1.000, 0.404, 0.000]], [0.705, [1.000, 0.412, 0.000]], [0.706, [1.000, 0.412, 0.000]], [0.708, [1.000, 0.420, 0.000]], [0.710, [1.000, 0.420, 0.000]], [0.712, [1.000, 0.427, 0.000]], [0.714, [1.000, 0.427, 0.000]], [0.716, [1.000, 0.435, 0.000]], [0.718, [1.000, 0.435, 0.000]], [0.720, [1.000, 0.443, 0.000]], [0.722, [1.000, 0.443, 0.000]], [0.724, [1.000, 0.451, 0.000]], [0.726, [1.000, 0.451, 0.000]], [0.728, [1.000, 0.459, 0.000]], [0.730, [1.000, 0.459, 0.000]], [0.732, [1.000, 0.467, 0.000]], [0.734, [1.000, 0.467, 0.000]], [0.736, [1.000, 0.475, 0.000]], [0.738, [1.000, 0.475, 0.000]], [0.740, [1.000, 0.482, 0.000]], [0.742, [1.000, 0.482, 0.000]], [0.744, [1.000, 0.490, 0.000]], [0.746, [1.000, 0.490, 0.000]], [0.748, [1.000, 0.498, 0.000]], [0.750, [1.000, 0.498, 0.000]], [0.751, [1.000, 0.506, 0.012]], [0.753, [1.000, 0.506, 0.012]], [0.755, [1.000, 0.514, 0.027]], [0.757, [1.000, 0.514, 0.027]], [0.759, [1.000, 0.522, 0.043]], [0.761, [1.000, 0.522, 0.043]], [0.763, [1.000, 0.529, 0.059]], [0.765, [1.000, 0.529, 0.059]], [0.767, [1.000, 0.537, 0.075]], [0.769, [1.000, 0.537, 0.075]], [0.771, [1.000, 0.545, 0.090]], [0.773, [1.000, 0.545, 0.090]], [0.775, [1.000, 0.553, 0.106]], [0.777, [1.000, 0.553, 0.106]], [0.779, [1.000, 0.561, 0.122]], [0.781, [1.000, 0.561, 0.122]], [0.783, [1.000, 0.569, 0.137]], [0.785, [1.000, 0.569, 0.137]], [0.787, [1.000, 0.576, 0.153]], [0.789, [1.000, 0.576, 0.153]], [0.791, [1.000, 0.584, 0.169]], [0.793, [1.000, 0.584, 0.169]], [0.795, [1.000, 0.592, 0.184]], [0.796, [1.000, 0.592, 0.184]], [0.798, [1.000, 0.600, 0.200]], [0.800, [1.000, 0.600, 0.200]], [0.802, [1.000, 0.608, 0.216]], [0.804, [1.000, 0.608, 0.216]], [0.806, [1.000, 0.616, 0.231]], [0.808, [1.000, 0.616, 0.231]], [0.810, [1.000, 0.624, 0.247]], [0.812, [1.000, 0.624, 0.247]], [0.814, [1.000, 0.631, 0.263]], [0.816, [1.000, 0.631, 0.263]], [0.818, [1.000, 0.639, 0.278]], [0.820, [1.000, 0.639, 0.278]], [0.822, [1.000, 0.647, 0.294]], [0.824, [1.000, 0.647, 0.294]], [0.826, [1.000, 0.655, 0.310]], [0.828, [1.000, 0.655, 0.310]], [0.830, [1.000, 0.663, 0.325]], [0.832, [1.000, 0.663, 0.325]], [0.834, [1.000, 0.671, 0.341]], [0.836, [1.000, 0.671, 0.341]], [0.838, [1.000, 0.678, 0.357]], [0.840, [1.000, 0.678, 0.357]], [0.841, [1.000, 0.686, 0.373]], [0.843, [1.000, 0.686, 0.373]], [0.845, [1.000, 0.694, 0.388]], [0.847, [1.000, 0.694, 0.388]], [0.849, [1.000, 0.702, 0.404]], [0.851, [1.000, 0.702, 0.404]], [0.853, [1.000, 0.710, 0.420]], [0.855, [1.000, 0.710, 0.420]], [0.857, [1.000, 0.718, 0.435]], [0.859, [1.000, 0.718, 0.435]], [0.861, [1.000, 0.725, 0.451]], [0.863, [1.000, 0.725, 0.451]], [0.865, [1.000, 0.733, 0.467]], [0.867, [1.000, 0.733, 0.467]], [0.869, [1.000, 0.741, 0.482]], [0.871, [1.000, 0.741, 0.482]], [0.873, [1.000, 0.749, 0.498]], [0.875, [1.000, 0.749, 0.498]], [0.877, [1.000, 0.757, 0.514]], [0.879, [1.000, 0.757, 0.514]], [0.881, [1.000, 0.765, 0.529]], [0.883, [1.000, 0.765, 0.529]], [0.885, [1.000, 0.773, 0.545]], [0.886, [1.000, 0.773, 0.545]], [0.888, [1.000, 0.780, 0.561]], [0.890, [1.000, 0.780, 0.561]], [0.892, [1.000, 0.788, 0.576]], [0.894, [1.000, 0.788, 0.576]], [0.896, [1.000, 0.796, 0.592]], [0.898, [1.000, 0.796, 0.592]], [0.900, [1.000, 0.804, 0.608]], [0.902, [1.000, 0.804, 0.608]], [0.904, [1.000, 0.812, 0.624]], [0.906, [1.000, 0.812, 0.624]], [0.908, [1.000, 0.820, 0.639]], [0.910, [1.000, 0.820, 0.639]], [0.912, [1.000, 0.827, 0.655]], [0.914, [1.000, 0.827, 0.655]], [0.916, [1.000, 0.835, 0.671]], [0.918, [1.000, 0.835, 0.671]], [0.920, [1.000, 0.843, 0.686]], [0.922, [1.000, 0.843, 0.686]], [0.924, [1.000, 0.851, 0.702]], [0.926, [1.000, 0.851, 0.702]], [0.928, [1.000, 0.859, 0.718]], [0.930, [1.000, 0.859, 0.718]], [0.932, [1.000, 0.867, 0.733]], [0.933, [1.000, 0.867, 0.733]], [0.935, [1.000, 0.875, 0.749]], [0.937, [1.000, 0.875, 0.749]], [0.939, [1.000, 0.882, 0.765]], [0.941, [1.000, 0.882, 0.765]], [0.943, [1.000, 0.890, 0.780]], [0.945, [1.000, 0.890, 0.780]], [0.947, [1.000, 0.898, 0.796]], [0.949, [1.000, 0.898, 0.796]], [0.951, [1.000, 0.906, 0.812]], [0.953, [1.000, 0.906, 0.812]], [0.955, [1.000, 0.914, 0.827]], [0.957, [1.000, 0.914, 0.827]], [0.959, [1.000, 0.922, 0.843]], [0.961, [1.000, 0.922, 0.843]], [0.963, [1.000, 0.929, 0.859]], [0.965, [1.000, 0.929, 0.859]], [0.967, [1.000, 0.937, 0.875]], [0.969, [1.000, 0.937, 0.875]], [0.971, [1.000, 0.945, 0.890]], [0.973, [1.000, 0.945, 0.890]], [0.975, [1.000, 0.953, 0.906]], [0.977, [1.000, 0.953, 0.906]], [0.978, [1.000, 0.961, 0.922]], [0.980, [1.000, 0.961, 0.922]], [0.982, [1.000, 0.969, 0.937]], [0.984, [1.000, 0.969, 0.937]], [0.986, [1.000, 0.976, 0.953]], [0.988, [1.000, 0.976, 0.953]], [0.990, [1.000, 0.984, 0.969]], [0.992, [1.000, 0.984, 0.969]], [0.994, [1.000, 0.992, 0.984]], [0.996, [1.000, 0.992, 0.984]], [0.998, [1.000, 1.000, 1.000]], [1.000, [1.000, 1.000, 1.000]]]; +var gray = [[0.000, [0.000, 0.000, 0.000]], [0.002, [0.000, 0.000, 0.000]], [0.004, [0.004, 0.004, 0.004]], [0.006, [0.004, 0.004, 0.004]], [0.008, [0.008, 0.008, 0.008]], [0.010, [0.008, 0.008, 0.008]], [0.012, [0.012, 0.012, 0.012]], [0.014, [0.012, 0.012, 0.012]], [0.016, [0.016, 0.016, 0.016]], [0.018, [0.016, 0.016, 0.016]], [0.020, [0.020, 0.020, 0.020]], [0.022, [0.020, 0.020, 0.020]], [0.023, [0.024, 0.024, 0.024]], [0.025, [0.024, 0.024, 0.024]], [0.027, [0.027, 0.027, 0.027]], [0.029, [0.027, 0.027, 0.027]], [0.031, [0.031, 0.031, 0.031]], [0.033, [0.031, 0.031, 0.031]], [0.035, [0.035, 0.035, 0.035]], [0.037, [0.035, 0.035, 0.035]], [0.039, [0.039, 0.039, 0.039]], [0.041, [0.039, 0.039, 0.039]], [0.043, [0.043, 0.043, 0.043]], [0.045, [0.043, 0.043, 0.043]], [0.047, [0.047, 0.047, 0.047]], [0.049, [0.047, 0.047, 0.047]], [0.051, [0.051, 0.051, 0.051]], [0.053, [0.051, 0.051, 0.051]], [0.055, [0.055, 0.055, 0.055]], [0.057, [0.055, 0.055, 0.055]], [0.059, [0.059, 0.059, 0.059]], [0.061, [0.059, 0.059, 0.059]], [0.063, [0.063, 0.063, 0.063]], [0.065, [0.063, 0.063, 0.063]], [0.067, [0.067, 0.067, 0.067]], [0.068, [0.067, 0.067, 0.067]], [0.070, [0.071, 0.071, 0.071]], [0.072, [0.071, 0.071, 0.071]], [0.074, [0.075, 0.075, 0.075]], [0.076, [0.075, 0.075, 0.075]], [0.078, [0.078, 0.078, 0.078]], [0.080, [0.078, 0.078, 0.078]], [0.082, [0.082, 0.082, 0.082]], [0.084, [0.082, 0.082, 0.082]], [0.086, [0.086, 0.086, 0.086]], [0.088, [0.086, 0.086, 0.086]], [0.090, [0.090, 0.090, 0.090]], [0.092, [0.090, 0.090, 0.090]], [0.094, [0.094, 0.094, 0.094]], [0.096, [0.094, 0.094, 0.094]], [0.098, [0.098, 0.098, 0.098]], [0.100, [0.098, 0.098, 0.098]], [0.102, [0.102, 0.102, 0.102]], [0.104, [0.102, 0.102, 0.102]], [0.106, [0.106, 0.106, 0.106]], [0.108, [0.106, 0.106, 0.106]], [0.110, [0.110, 0.110, 0.110]], [0.112, [0.110, 0.110, 0.110]], [0.114, [0.114, 0.114, 0.114]], [0.115, [0.114, 0.114, 0.114]], [0.117, [0.118, 0.118, 0.118]], [0.119, [0.118, 0.118, 0.118]], [0.121, [0.122, 0.122, 0.122]], [0.123, [0.122, 0.122, 0.122]], [0.125, [0.125, 0.125, 0.125]], [0.127, [0.125, 0.125, 0.125]], [0.129, [0.129, 0.129, 0.129]], [0.131, [0.129, 0.129, 0.129]], [0.133, [0.133, 0.133, 0.133]], [0.135, [0.133, 0.133, 0.133]], [0.137, [0.137, 0.137, 0.137]], [0.139, [0.137, 0.137, 0.137]], [0.141, [0.141, 0.141, 0.141]], [0.143, [0.141, 0.141, 0.141]], [0.145, [0.145, 0.145, 0.145]], [0.147, [0.145, 0.145, 0.145]], [0.149, [0.149, 0.149, 0.149]], [0.151, [0.149, 0.149, 0.149]], [0.153, [0.153, 0.153, 0.153]], [0.155, [0.153, 0.153, 0.153]], [0.157, [0.157, 0.157, 0.157]], [0.159, [0.157, 0.157, 0.157]], [0.160, [0.161, 0.161, 0.161]], [0.162, [0.161, 0.161, 0.161]], [0.164, [0.165, 0.165, 0.165]], [0.166, [0.165, 0.165, 0.165]], [0.168, [0.169, 0.169, 0.169]], [0.170, [0.169, 0.169, 0.169]], [0.172, [0.173, 0.173, 0.173]], [0.174, [0.173, 0.173, 0.173]], [0.176, [0.176, 0.176, 0.176]], [0.178, [0.176, 0.176, 0.176]], [0.180, [0.180, 0.180, 0.180]], [0.182, [0.180, 0.180, 0.180]], [0.184, [0.184, 0.184, 0.184]], [0.186, [0.184, 0.184, 0.184]], [0.188, [0.188, 0.188, 0.188]], [0.190, [0.188, 0.188, 0.188]], [0.192, [0.192, 0.192, 0.192]], [0.194, [0.192, 0.192, 0.192]], [0.196, [0.196, 0.196, 0.196]], [0.198, [0.196, 0.196, 0.196]], [0.200, [0.200, 0.200, 0.200]], [0.202, [0.200, 0.200, 0.200]], [0.204, [0.204, 0.204, 0.204]], [0.205, [0.204, 0.204, 0.204]], [0.207, [0.208, 0.208, 0.208]], [0.209, [0.208, 0.208, 0.208]], [0.211, [0.212, 0.212, 0.212]], [0.213, [0.212, 0.212, 0.212]], [0.215, [0.216, 0.216, 0.216]], [0.217, [0.216, 0.216, 0.216]], [0.219, [0.220, 0.220, 0.220]], [0.221, [0.220, 0.220, 0.220]], [0.223, [0.224, 0.224, 0.224]], [0.225, [0.224, 0.224, 0.224]], [0.227, [0.227, 0.227, 0.227]], [0.229, [0.227, 0.227, 0.227]], [0.231, [0.231, 0.231, 0.231]], [0.233, [0.231, 0.231, 0.231]], [0.235, [0.235, 0.235, 0.235]], [0.237, [0.235, 0.235, 0.235]], [0.239, [0.239, 0.239, 0.239]], [0.241, [0.239, 0.239, 0.239]], [0.243, [0.243, 0.243, 0.243]], [0.245, [0.243, 0.243, 0.243]], [0.247, [0.247, 0.247, 0.247]], [0.249, [0.247, 0.247, 0.247]], [0.250, [0.251, 0.251, 0.251]], [0.252, [0.251, 0.251, 0.251]], [0.254, [0.255, 0.255, 0.255]], [0.256, [0.255, 0.255, 0.255]], [0.258, [0.259, 0.259, 0.259]], [0.260, [0.259, 0.259, 0.259]], [0.262, [0.263, 0.263, 0.263]], [0.264, [0.263, 0.263, 0.263]], [0.266, [0.267, 0.267, 0.267]], [0.268, [0.267, 0.267, 0.267]], [0.270, [0.271, 0.271, 0.271]], [0.272, [0.271, 0.271, 0.271]], [0.274, [0.275, 0.275, 0.275]], [0.276, [0.275, 0.275, 0.275]], [0.278, [0.278, 0.278, 0.278]], [0.280, [0.278, 0.278, 0.278]], [0.282, [0.282, 0.282, 0.282]], [0.284, [0.282, 0.282, 0.282]], [0.286, [0.286, 0.286, 0.286]], [0.288, [0.286, 0.286, 0.286]], [0.290, [0.290, 0.290, 0.290]], [0.292, [0.290, 0.290, 0.290]], [0.294, [0.294, 0.294, 0.294]], [0.295, [0.294, 0.294, 0.294]], [0.297, [0.298, 0.298, 0.298]], [0.299, [0.298, 0.298, 0.298]], [0.301, [0.302, 0.302, 0.302]], [0.303, [0.302, 0.302, 0.302]], [0.305, [0.306, 0.306, 0.306]], [0.307, [0.306, 0.306, 0.306]], [0.309, [0.310, 0.310, 0.310]], [0.311, [0.310, 0.310, 0.310]], [0.313, [0.314, 0.314, 0.314]], [0.315, [0.314, 0.314, 0.314]], [0.317, [0.318, 0.318, 0.318]], [0.319, [0.318, 0.318, 0.318]], [0.321, [0.322, 0.322, 0.322]], [0.323, [0.322, 0.322, 0.322]], [0.325, [0.325, 0.325, 0.325]], [0.327, [0.325, 0.325, 0.325]], [0.329, [0.329, 0.329, 0.329]], [0.331, [0.329, 0.329, 0.329]], [0.333, [0.333, 0.333, 0.333]], [0.335, [0.333, 0.333, 0.333]], [0.337, [0.337, 0.337, 0.337]], [0.339, [0.337, 0.337, 0.337]], [0.341, [0.341, 0.341, 0.341]], [0.342, [0.341, 0.341, 0.341]], [0.344, [0.345, 0.345, 0.345]], [0.346, [0.345, 0.345, 0.345]], [0.348, [0.349, 0.349, 0.349]], [0.350, [0.349, 0.349, 0.349]], [0.352, [0.353, 0.353, 0.353]], [0.354, [0.353, 0.353, 0.353]], [0.356, [0.357, 0.357, 0.357]], [0.358, [0.357, 0.357, 0.357]], [0.360, [0.361, 0.361, 0.361]], [0.362, [0.361, 0.361, 0.361]], [0.364, [0.365, 0.365, 0.365]], [0.366, [0.365, 0.365, 0.365]], [0.368, [0.369, 0.369, 0.369]], [0.370, [0.369, 0.369, 0.369]], [0.372, [0.373, 0.373, 0.373]], [0.374, [0.373, 0.373, 0.373]], [0.376, [0.376, 0.376, 0.376]], [0.378, [0.376, 0.376, 0.376]], [0.380, [0.380, 0.380, 0.380]], [0.382, [0.380, 0.380, 0.380]], [0.384, [0.384, 0.384, 0.384]], [0.386, [0.384, 0.384, 0.384]], [0.387, [0.388, 0.388, 0.388]], [0.389, [0.388, 0.388, 0.388]], [0.391, [0.392, 0.392, 0.392]], [0.393, [0.392, 0.392, 0.392]], [0.395, [0.396, 0.396, 0.396]], [0.397, [0.396, 0.396, 0.396]], [0.399, [0.400, 0.400, 0.400]], [0.401, [0.400, 0.400, 0.400]], [0.403, [0.404, 0.404, 0.404]], [0.405, [0.404, 0.404, 0.404]], [0.407, [0.408, 0.408, 0.408]], [0.409, [0.408, 0.408, 0.408]], [0.411, [0.412, 0.412, 0.412]], [0.413, [0.412, 0.412, 0.412]], [0.415, [0.416, 0.416, 0.416]], [0.417, [0.416, 0.416, 0.416]], [0.419, [0.420, 0.420, 0.420]], [0.421, [0.420, 0.420, 0.420]], [0.423, [0.424, 0.424, 0.424]], [0.425, [0.424, 0.424, 0.424]], [0.427, [0.427, 0.427, 0.427]], [0.429, [0.427, 0.427, 0.427]], [0.431, [0.431, 0.431, 0.431]], [0.432, [0.431, 0.431, 0.431]], [0.434, [0.435, 0.435, 0.435]], [0.436, [0.435, 0.435, 0.435]], [0.438, [0.439, 0.439, 0.439]], [0.440, [0.439, 0.439, 0.439]], [0.442, [0.443, 0.443, 0.443]], [0.444, [0.443, 0.443, 0.443]], [0.446, [0.447, 0.447, 0.447]], [0.448, [0.447, 0.447, 0.447]], [0.450, [0.451, 0.451, 0.451]], [0.452, [0.451, 0.451, 0.451]], [0.454, [0.455, 0.455, 0.455]], [0.456, [0.455, 0.455, 0.455]], [0.458, [0.459, 0.459, 0.459]], [0.460, [0.459, 0.459, 0.459]], [0.462, [0.463, 0.463, 0.463]], [0.464, [0.463, 0.463, 0.463]], [0.466, [0.467, 0.467, 0.467]], [0.468, [0.467, 0.467, 0.467]], [0.470, [0.471, 0.471, 0.471]], [0.472, [0.471, 0.471, 0.471]], [0.474, [0.475, 0.475, 0.475]], [0.476, [0.475, 0.475, 0.475]], [0.477, [0.478, 0.478, 0.478]], [0.479, [0.478, 0.478, 0.478]], [0.481, [0.482, 0.482, 0.482]], [0.483, [0.482, 0.482, 0.482]], [0.485, [0.486, 0.486, 0.486]], [0.487, [0.486, 0.486, 0.486]], [0.489, [0.490, 0.490, 0.490]], [0.491, [0.490, 0.490, 0.490]], [0.493, [0.494, 0.494, 0.494]], [0.495, [0.494, 0.494, 0.494]], [0.497, [0.498, 0.498, 0.498]], [0.499, [0.498, 0.498, 0.498]], [0.501, [0.502, 0.502, 0.502]], [0.503, [0.502, 0.502, 0.502]], [0.505, [0.506, 0.506, 0.506]], [0.507, [0.506, 0.506, 0.506]], [0.509, [0.510, 0.510, 0.510]], [0.511, [0.510, 0.510, 0.510]], [0.513, [0.514, 0.514, 0.514]], [0.515, [0.514, 0.514, 0.514]], [0.517, [0.518, 0.518, 0.518]], [0.519, [0.518, 0.518, 0.518]], [0.521, [0.522, 0.522, 0.522]], [0.523, [0.522, 0.522, 0.522]], [0.524, [0.525, 0.525, 0.525]], [0.526, [0.525, 0.525, 0.525]], [0.528, [0.529, 0.529, 0.529]], [0.530, [0.529, 0.529, 0.529]], [0.532, [0.533, 0.533, 0.533]], [0.534, [0.533, 0.533, 0.533]], [0.536, [0.537, 0.537, 0.537]], [0.538, [0.537, 0.537, 0.537]], [0.540, [0.541, 0.541, 0.541]], [0.542, [0.541, 0.541, 0.541]], [0.544, [0.545, 0.545, 0.545]], [0.546, [0.545, 0.545, 0.545]], [0.548, [0.549, 0.549, 0.549]], [0.550, [0.549, 0.549, 0.549]], [0.552, [0.553, 0.553, 0.553]], [0.554, [0.553, 0.553, 0.553]], [0.556, [0.557, 0.557, 0.557]], [0.558, [0.557, 0.557, 0.557]], [0.560, [0.561, 0.561, 0.561]], [0.562, [0.561, 0.561, 0.561]], [0.564, [0.565, 0.565, 0.565]], [0.566, [0.565, 0.565, 0.565]], [0.568, [0.569, 0.569, 0.569]], [0.569, [0.569, 0.569, 0.569]], [0.571, [0.573, 0.573, 0.573]], [0.573, [0.573, 0.573, 0.573]], [0.575, [0.576, 0.576, 0.576]], [0.577, [0.576, 0.576, 0.576]], [0.579, [0.580, 0.580, 0.580]], [0.581, [0.580, 0.580, 0.580]], [0.583, [0.584, 0.584, 0.584]], [0.585, [0.584, 0.584, 0.584]], [0.587, [0.588, 0.588, 0.588]], [0.589, [0.588, 0.588, 0.588]], [0.591, [0.592, 0.592, 0.592]], [0.593, [0.592, 0.592, 0.592]], [0.595, [0.596, 0.596, 0.596]], [0.597, [0.596, 0.596, 0.596]], [0.599, [0.600, 0.600, 0.600]], [0.601, [0.600, 0.600, 0.600]], [0.603, [0.604, 0.604, 0.604]], [0.605, [0.604, 0.604, 0.604]], [0.607, [0.608, 0.608, 0.608]], [0.609, [0.608, 0.608, 0.608]], [0.611, [0.612, 0.612, 0.612]], [0.613, [0.612, 0.612, 0.612]], [0.614, [0.616, 0.616, 0.616]], [0.616, [0.616, 0.616, 0.616]], [0.618, [0.620, 0.620, 0.620]], [0.620, [0.620, 0.620, 0.620]], [0.622, [0.624, 0.624, 0.624]], [0.624, [0.624, 0.624, 0.624]], [0.626, [0.627, 0.627, 0.627]], [0.628, [0.627, 0.627, 0.627]], [0.630, [0.631, 0.631, 0.631]], [0.632, [0.631, 0.631, 0.631]], [0.634, [0.635, 0.635, 0.635]], [0.636, [0.635, 0.635, 0.635]], [0.638, [0.639, 0.639, 0.639]], [0.640, [0.639, 0.639, 0.639]], [0.642, [0.643, 0.643, 0.643]], [0.644, [0.643, 0.643, 0.643]], [0.646, [0.647, 0.647, 0.647]], [0.648, [0.647, 0.647, 0.647]], [0.650, [0.651, 0.651, 0.651]], [0.652, [0.651, 0.651, 0.651]], [0.654, [0.655, 0.655, 0.655]], [0.656, [0.655, 0.655, 0.655]], [0.658, [0.659, 0.659, 0.659]], [0.659, [0.659, 0.659, 0.659]], [0.661, [0.663, 0.663, 0.663]], [0.663, [0.663, 0.663, 0.663]], [0.665, [0.667, 0.667, 0.667]], [0.667, [0.667, 0.667, 0.667]], [0.669, [0.671, 0.671, 0.671]], [0.671, [0.671, 0.671, 0.671]], [0.673, [0.675, 0.675, 0.675]], [0.675, [0.675, 0.675, 0.675]], [0.677, [0.678, 0.678, 0.678]], [0.679, [0.678, 0.678, 0.678]], [0.681, [0.682, 0.682, 0.682]], [0.683, [0.682, 0.682, 0.682]], [0.685, [0.686, 0.686, 0.686]], [0.687, [0.686, 0.686, 0.686]], [0.689, [0.690, 0.690, 0.690]], [0.691, [0.690, 0.690, 0.690]], [0.693, [0.694, 0.694, 0.694]], [0.695, [0.694, 0.694, 0.694]], [0.697, [0.698, 0.698, 0.698]], [0.699, [0.698, 0.698, 0.698]], [0.701, [0.702, 0.702, 0.702]], [0.703, [0.702, 0.702, 0.702]], [0.705, [0.706, 0.706, 0.706]], [0.706, [0.706, 0.706, 0.706]], [0.708, [0.710, 0.710, 0.710]], [0.710, [0.710, 0.710, 0.710]], [0.712, [0.714, 0.714, 0.714]], [0.714, [0.714, 0.714, 0.714]], [0.716, [0.718, 0.718, 0.718]], [0.718, [0.718, 0.718, 0.718]], [0.720, [0.722, 0.722, 0.722]], [0.722, [0.722, 0.722, 0.722]], [0.724, [0.725, 0.725, 0.725]], [0.726, [0.725, 0.725, 0.725]], [0.728, [0.729, 0.729, 0.729]], [0.730, [0.729, 0.729, 0.729]], [0.732, [0.733, 0.733, 0.733]], [0.734, [0.733, 0.733, 0.733]], [0.736, [0.737, 0.737, 0.737]], [0.738, [0.737, 0.737, 0.737]], [0.740, [0.741, 0.741, 0.741]], [0.742, [0.741, 0.741, 0.741]], [0.744, [0.745, 0.745, 0.745]], [0.746, [0.745, 0.745, 0.745]], [0.748, [0.749, 0.749, 0.749]], [0.750, [0.749, 0.749, 0.749]], [0.751, [0.753, 0.753, 0.753]], [0.753, [0.753, 0.753, 0.753]], [0.755, [0.757, 0.757, 0.757]], [0.757, [0.757, 0.757, 0.757]], [0.759, [0.761, 0.761, 0.761]], [0.761, [0.761, 0.761, 0.761]], [0.763, [0.765, 0.765, 0.765]], [0.765, [0.765, 0.765, 0.765]], [0.767, [0.769, 0.769, 0.769]], [0.769, [0.769, 0.769, 0.769]], [0.771, [0.773, 0.773, 0.773]], [0.773, [0.773, 0.773, 0.773]], [0.775, [0.776, 0.776, 0.776]], [0.777, [0.776, 0.776, 0.776]], [0.779, [0.780, 0.780, 0.780]], [0.781, [0.780, 0.780, 0.780]], [0.783, [0.784, 0.784, 0.784]], [0.785, [0.784, 0.784, 0.784]], [0.787, [0.788, 0.788, 0.788]], [0.789, [0.788, 0.788, 0.788]], [0.791, [0.792, 0.792, 0.792]], [0.793, [0.792, 0.792, 0.792]], [0.795, [0.796, 0.796, 0.796]], [0.796, [0.796, 0.796, 0.796]], [0.798, [0.800, 0.800, 0.800]], [0.800, [0.800, 0.800, 0.800]], [0.802, [0.804, 0.804, 0.804]], [0.804, [0.804, 0.804, 0.804]], [0.806, [0.808, 0.808, 0.808]], [0.808, [0.808, 0.808, 0.808]], [0.810, [0.812, 0.812, 0.812]], [0.812, [0.812, 0.812, 0.812]], [0.814, [0.816, 0.816, 0.816]], [0.816, [0.816, 0.816, 0.816]], [0.818, [0.820, 0.820, 0.820]], [0.820, [0.820, 0.820, 0.820]], [0.822, [0.824, 0.824, 0.824]], [0.824, [0.824, 0.824, 0.824]], [0.826, [0.827, 0.827, 0.827]], [0.828, [0.827, 0.827, 0.827]], [0.830, [0.831, 0.831, 0.831]], [0.832, [0.831, 0.831, 0.831]], [0.834, [0.835, 0.835, 0.835]], [0.836, [0.835, 0.835, 0.835]], [0.838, [0.839, 0.839, 0.839]], [0.840, [0.839, 0.839, 0.839]], [0.841, [0.843, 0.843, 0.843]], [0.843, [0.843, 0.843, 0.843]], [0.845, [0.847, 0.847, 0.847]], [0.847, [0.847, 0.847, 0.847]], [0.849, [0.851, 0.851, 0.851]], [0.851, [0.851, 0.851, 0.851]], [0.853, [0.855, 0.855, 0.855]], [0.855, [0.855, 0.855, 0.855]], [0.857, [0.859, 0.859, 0.859]], [0.859, [0.859, 0.859, 0.859]], [0.861, [0.863, 0.863, 0.863]], [0.863, [0.863, 0.863, 0.863]], [0.865, [0.867, 0.867, 0.867]], [0.867, [0.867, 0.867, 0.867]], [0.869, [0.871, 0.871, 0.871]], [0.871, [0.871, 0.871, 0.871]], [0.873, [0.875, 0.875, 0.875]], [0.875, [0.875, 0.875, 0.875]], [0.877, [0.878, 0.878, 0.878]], [0.879, [0.878, 0.878, 0.878]], [0.881, [0.882, 0.882, 0.882]], [0.883, [0.882, 0.882, 0.882]], [0.885, [0.886, 0.886, 0.886]], [0.886, [0.886, 0.886, 0.886]], [0.888, [0.890, 0.890, 0.890]], [0.890, [0.890, 0.890, 0.890]], [0.892, [0.894, 0.894, 0.894]], [0.894, [0.894, 0.894, 0.894]], [0.896, [0.898, 0.898, 0.898]], [0.898, [0.898, 0.898, 0.898]], [0.900, [0.902, 0.902, 0.902]], [0.902, [0.902, 0.902, 0.902]], [0.904, [0.906, 0.906, 0.906]], [0.906, [0.906, 0.906, 0.906]], [0.908, [0.910, 0.910, 0.910]], [0.910, [0.910, 0.910, 0.910]], [0.912, [0.914, 0.914, 0.914]], [0.914, [0.914, 0.914, 0.914]], [0.916, [0.918, 0.918, 0.918]], [0.918, [0.918, 0.918, 0.918]], [0.920, [0.922, 0.922, 0.922]], [0.922, [0.922, 0.922, 0.922]], [0.924, [0.925, 0.925, 0.925]], [0.926, [0.925, 0.925, 0.925]], [0.928, [0.929, 0.929, 0.929]], [0.930, [0.929, 0.929, 0.929]], [0.932, [0.933, 0.933, 0.933]], [0.933, [0.933, 0.933, 0.933]], [0.935, [0.937, 0.937, 0.937]], [0.937, [0.937, 0.937, 0.937]], [0.939, [0.941, 0.941, 0.941]], [0.941, [0.941, 0.941, 0.941]], [0.943, [0.945, 0.945, 0.945]], [0.945, [0.945, 0.945, 0.945]], [0.947, [0.949, 0.949, 0.949]], [0.949, [0.949, 0.949, 0.949]], [0.951, [0.953, 0.953, 0.953]], [0.953, [0.953, 0.953, 0.953]], [0.955, [0.957, 0.957, 0.957]], [0.957, [0.957, 0.957, 0.957]], [0.959, [0.961, 0.961, 0.961]], [0.961, [0.961, 0.961, 0.961]], [0.963, [0.965, 0.965, 0.965]], [0.965, [0.965, 0.965, 0.965]], [0.967, [0.969, 0.969, 0.969]], [0.969, [0.969, 0.969, 0.969]], [0.971, [0.973, 0.973, 0.973]], [0.973, [0.973, 0.973, 0.973]], [0.975, [0.976, 0.976, 0.976]], [0.977, [0.976, 0.976, 0.976]], [0.978, [0.980, 0.980, 0.980]], [0.980, [0.980, 0.980, 0.980]], [0.982, [0.984, 0.984, 0.984]], [0.984, [0.984, 0.984, 0.984]], [0.986, [0.988, 0.988, 0.988]], [0.988, [0.988, 0.988, 0.988]], [0.990, [0.992, 0.992, 0.992]], [0.992, [0.992, 0.992, 0.992]], [0.994, [0.996, 0.996, 0.996]], [0.996, [0.996, 0.996, 0.996]], [0.998, [1.000, 1.000, 1.000]], [1.000, [1.000, 1.000, 1.000]]]; +var hot = [[0.000, [0.042, 0.000, 0.000]], [0.002, [0.042, 0.000, 0.000]], [0.004, [0.052, 0.000, 0.000]], [0.006, [0.052, 0.000, 0.000]], [0.008, [0.062, 0.000, 0.000]], [0.010, [0.062, 0.000, 0.000]], [0.012, [0.072, 0.000, 0.000]], [0.014, [0.072, 0.000, 0.000]], [0.016, [0.083, 0.000, 0.000]], [0.018, [0.083, 0.000, 0.000]], [0.020, [0.093, 0.000, 0.000]], [0.022, [0.093, 0.000, 0.000]], [0.023, [0.103, 0.000, 0.000]], [0.025, [0.103, 0.000, 0.000]], [0.027, [0.114, 0.000, 0.000]], [0.029, [0.114, 0.000, 0.000]], [0.031, [0.124, 0.000, 0.000]], [0.033, [0.124, 0.000, 0.000]], [0.035, [0.134, 0.000, 0.000]], [0.037, [0.134, 0.000, 0.000]], [0.039, [0.145, 0.000, 0.000]], [0.041, [0.145, 0.000, 0.000]], [0.043, [0.155, 0.000, 0.000]], [0.045, [0.155, 0.000, 0.000]], [0.047, [0.165, 0.000, 0.000]], [0.049, [0.165, 0.000, 0.000]], [0.051, [0.175, 0.000, 0.000]], [0.053, [0.175, 0.000, 0.000]], [0.055, [0.186, 0.000, 0.000]], [0.057, [0.186, 0.000, 0.000]], [0.059, [0.196, 0.000, 0.000]], [0.061, [0.196, 0.000, 0.000]], [0.063, [0.206, 0.000, 0.000]], [0.065, [0.206, 0.000, 0.000]], [0.067, [0.217, 0.000, 0.000]], [0.068, [0.217, 0.000, 0.000]], [0.070, [0.227, 0.000, 0.000]], [0.072, [0.227, 0.000, 0.000]], [0.074, [0.237, 0.000, 0.000]], [0.076, [0.237, 0.000, 0.000]], [0.078, [0.247, 0.000, 0.000]], [0.080, [0.247, 0.000, 0.000]], [0.082, [0.258, 0.000, 0.000]], [0.084, [0.258, 0.000, 0.000]], [0.086, [0.268, 0.000, 0.000]], [0.088, [0.268, 0.000, 0.000]], [0.090, [0.278, 0.000, 0.000]], [0.092, [0.278, 0.000, 0.000]], [0.094, [0.289, 0.000, 0.000]], [0.096, [0.289, 0.000, 0.000]], [0.098, [0.299, 0.000, 0.000]], [0.100, [0.299, 0.000, 0.000]], [0.102, [0.309, 0.000, 0.000]], [0.104, [0.309, 0.000, 0.000]], [0.106, [0.320, 0.000, 0.000]], [0.108, [0.320, 0.000, 0.000]], [0.110, [0.330, 0.000, 0.000]], [0.112, [0.330, 0.000, 0.000]], [0.114, [0.340, 0.000, 0.000]], [0.115, [0.340, 0.000, 0.000]], [0.117, [0.350, 0.000, 0.000]], [0.119, [0.350, 0.000, 0.000]], [0.121, [0.361, 0.000, 0.000]], [0.123, [0.361, 0.000, 0.000]], [0.125, [0.371, 0.000, 0.000]], [0.127, [0.371, 0.000, 0.000]], [0.129, [0.381, 0.000, 0.000]], [0.131, [0.381, 0.000, 0.000]], [0.133, [0.392, 0.000, 0.000]], [0.135, [0.392, 0.000, 0.000]], [0.137, [0.402, 0.000, 0.000]], [0.139, [0.402, 0.000, 0.000]], [0.141, [0.412, 0.000, 0.000]], [0.143, [0.412, 0.000, 0.000]], [0.145, [0.423, 0.000, 0.000]], [0.147, [0.423, 0.000, 0.000]], [0.149, [0.433, 0.000, 0.000]], [0.151, [0.433, 0.000, 0.000]], [0.153, [0.443, 0.000, 0.000]], [0.155, [0.443, 0.000, 0.000]], [0.157, [0.453, 0.000, 0.000]], [0.159, [0.453, 0.000, 0.000]], [0.160, [0.464, 0.000, 0.000]], [0.162, [0.464, 0.000, 0.000]], [0.164, [0.474, 0.000, 0.000]], [0.166, [0.474, 0.000, 0.000]], [0.168, [0.484, 0.000, 0.000]], [0.170, [0.484, 0.000, 0.000]], [0.172, [0.495, 0.000, 0.000]], [0.174, [0.495, 0.000, 0.000]], [0.176, [0.505, 0.000, 0.000]], [0.178, [0.505, 0.000, 0.000]], [0.180, [0.515, 0.000, 0.000]], [0.182, [0.515, 0.000, 0.000]], [0.184, [0.525, 0.000, 0.000]], [0.186, [0.525, 0.000, 0.000]], [0.188, [0.536, 0.000, 0.000]], [0.190, [0.536, 0.000, 0.000]], [0.192, [0.546, 0.000, 0.000]], [0.194, [0.546, 0.000, 0.000]], [0.196, [0.556, 0.000, 0.000]], [0.198, [0.556, 0.000, 0.000]], [0.200, [0.567, 0.000, 0.000]], [0.202, [0.567, 0.000, 0.000]], [0.204, [0.577, 0.000, 0.000]], [0.205, [0.577, 0.000, 0.000]], [0.207, [0.587, 0.000, 0.000]], [0.209, [0.587, 0.000, 0.000]], [0.211, [0.598, 0.000, 0.000]], [0.213, [0.598, 0.000, 0.000]], [0.215, [0.608, 0.000, 0.000]], [0.217, [0.608, 0.000, 0.000]], [0.219, [0.618, 0.000, 0.000]], [0.221, [0.618, 0.000, 0.000]], [0.223, [0.628, 0.000, 0.000]], [0.225, [0.628, 0.000, 0.000]], [0.227, [0.639, 0.000, 0.000]], [0.229, [0.639, 0.000, 0.000]], [0.231, [0.649, 0.000, 0.000]], [0.233, [0.649, 0.000, 0.000]], [0.235, [0.659, 0.000, 0.000]], [0.237, [0.659, 0.000, 0.000]], [0.239, [0.670, 0.000, 0.000]], [0.241, [0.670, 0.000, 0.000]], [0.243, [0.680, 0.000, 0.000]], [0.245, [0.680, 0.000, 0.000]], [0.247, [0.690, 0.000, 0.000]], [0.249, [0.690, 0.000, 0.000]], [0.250, [0.700, 0.000, 0.000]], [0.252, [0.700, 0.000, 0.000]], [0.254, [0.711, 0.000, 0.000]], [0.256, [0.711, 0.000, 0.000]], [0.258, [0.721, 0.000, 0.000]], [0.260, [0.721, 0.000, 0.000]], [0.262, [0.731, 0.000, 0.000]], [0.264, [0.731, 0.000, 0.000]], [0.266, [0.742, 0.000, 0.000]], [0.268, [0.742, 0.000, 0.000]], [0.270, [0.752, 0.000, 0.000]], [0.272, [0.752, 0.000, 0.000]], [0.274, [0.762, 0.000, 0.000]], [0.276, [0.762, 0.000, 0.000]], [0.278, [0.773, 0.000, 0.000]], [0.280, [0.773, 0.000, 0.000]], [0.282, [0.783, 0.000, 0.000]], [0.284, [0.783, 0.000, 0.000]], [0.286, [0.793, 0.000, 0.000]], [0.288, [0.793, 0.000, 0.000]], [0.290, [0.803, 0.000, 0.000]], [0.292, [0.803, 0.000, 0.000]], [0.294, [0.814, 0.000, 0.000]], [0.295, [0.814, 0.000, 0.000]], [0.297, [0.824, 0.000, 0.000]], [0.299, [0.824, 0.000, 0.000]], [0.301, [0.834, 0.000, 0.000]], [0.303, [0.834, 0.000, 0.000]], [0.305, [0.845, 0.000, 0.000]], [0.307, [0.845, 0.000, 0.000]], [0.309, [0.855, 0.000, 0.000]], [0.311, [0.855, 0.000, 0.000]], [0.313, [0.865, 0.000, 0.000]], [0.315, [0.865, 0.000, 0.000]], [0.317, [0.875, 0.000, 0.000]], [0.319, [0.875, 0.000, 0.000]], [0.321, [0.886, 0.000, 0.000]], [0.323, [0.886, 0.000, 0.000]], [0.325, [0.896, 0.000, 0.000]], [0.327, [0.896, 0.000, 0.000]], [0.329, [0.906, 0.000, 0.000]], [0.331, [0.906, 0.000, 0.000]], [0.333, [0.917, 0.000, 0.000]], [0.335, [0.917, 0.000, 0.000]], [0.337, [0.927, 0.000, 0.000]], [0.339, [0.927, 0.000, 0.000]], [0.341, [0.937, 0.000, 0.000]], [0.342, [0.937, 0.000, 0.000]], [0.344, [0.948, 0.000, 0.000]], [0.346, [0.948, 0.000, 0.000]], [0.348, [0.958, 0.000, 0.000]], [0.350, [0.958, 0.000, 0.000]], [0.352, [0.968, 0.000, 0.000]], [0.354, [0.968, 0.000, 0.000]], [0.356, [0.978, 0.000, 0.000]], [0.358, [0.978, 0.000, 0.000]], [0.360, [0.989, 0.000, 0.000]], [0.362, [0.989, 0.000, 0.000]], [0.364, [0.999, 0.000, 0.000]], [0.366, [0.999, 0.000, 0.000]], [0.368, [1.000, 0.009, 0.000]], [0.370, [1.000, 0.009, 0.000]], [0.372, [1.000, 0.020, 0.000]], [0.374, [1.000, 0.020, 0.000]], [0.376, [1.000, 0.030, 0.000]], [0.378, [1.000, 0.030, 0.000]], [0.380, [1.000, 0.040, 0.000]], [0.382, [1.000, 0.040, 0.000]], [0.384, [1.000, 0.050, 0.000]], [0.386, [1.000, 0.050, 0.000]], [0.387, [1.000, 0.061, 0.000]], [0.389, [1.000, 0.061, 0.000]], [0.391, [1.000, 0.071, 0.000]], [0.393, [1.000, 0.071, 0.000]], [0.395, [1.000, 0.081, 0.000]], [0.397, [1.000, 0.081, 0.000]], [0.399, [1.000, 0.092, 0.000]], [0.401, [1.000, 0.092, 0.000]], [0.403, [1.000, 0.102, 0.000]], [0.405, [1.000, 0.102, 0.000]], [0.407, [1.000, 0.112, 0.000]], [0.409, [1.000, 0.112, 0.000]], [0.411, [1.000, 0.123, 0.000]], [0.413, [1.000, 0.123, 0.000]], [0.415, [1.000, 0.133, 0.000]], [0.417, [1.000, 0.133, 0.000]], [0.419, [1.000, 0.143, 0.000]], [0.421, [1.000, 0.143, 0.000]], [0.423, [1.000, 0.153, 0.000]], [0.425, [1.000, 0.153, 0.000]], [0.427, [1.000, 0.164, 0.000]], [0.429, [1.000, 0.164, 0.000]], [0.431, [1.000, 0.174, 0.000]], [0.432, [1.000, 0.174, 0.000]], [0.434, [1.000, 0.184, 0.000]], [0.436, [1.000, 0.184, 0.000]], [0.438, [1.000, 0.195, 0.000]], [0.440, [1.000, 0.195, 0.000]], [0.442, [1.000, 0.205, 0.000]], [0.444, [1.000, 0.205, 0.000]], [0.446, [1.000, 0.215, 0.000]], [0.448, [1.000, 0.215, 0.000]], [0.450, [1.000, 0.225, 0.000]], [0.452, [1.000, 0.225, 0.000]], [0.454, [1.000, 0.236, 0.000]], [0.456, [1.000, 0.236, 0.000]], [0.458, [1.000, 0.246, 0.000]], [0.460, [1.000, 0.246, 0.000]], [0.462, [1.000, 0.256, 0.000]], [0.464, [1.000, 0.256, 0.000]], [0.466, [1.000, 0.267, 0.000]], [0.468, [1.000, 0.267, 0.000]], [0.470, [1.000, 0.277, 0.000]], [0.472, [1.000, 0.277, 0.000]], [0.474, [1.000, 0.287, 0.000]], [0.476, [1.000, 0.287, 0.000]], [0.477, [1.000, 0.298, 0.000]], [0.479, [1.000, 0.298, 0.000]], [0.481, [1.000, 0.308, 0.000]], [0.483, [1.000, 0.308, 0.000]], [0.485, [1.000, 0.318, 0.000]], [0.487, [1.000, 0.318, 0.000]], [0.489, [1.000, 0.328, 0.000]], [0.491, [1.000, 0.328, 0.000]], [0.493, [1.000, 0.339, 0.000]], [0.495, [1.000, 0.339, 0.000]], [0.497, [1.000, 0.349, 0.000]], [0.499, [1.000, 0.349, 0.000]], [0.501, [1.000, 0.359, 0.000]], [0.503, [1.000, 0.359, 0.000]], [0.505, [1.000, 0.370, 0.000]], [0.507, [1.000, 0.370, 0.000]], [0.509, [1.000, 0.380, 0.000]], [0.511, [1.000, 0.380, 0.000]], [0.513, [1.000, 0.390, 0.000]], [0.515, [1.000, 0.390, 0.000]], [0.517, [1.000, 0.400, 0.000]], [0.519, [1.000, 0.400, 0.000]], [0.521, [1.000, 0.411, 0.000]], [0.523, [1.000, 0.411, 0.000]], [0.524, [1.000, 0.421, 0.000]], [0.526, [1.000, 0.421, 0.000]], [0.528, [1.000, 0.431, 0.000]], [0.530, [1.000, 0.431, 0.000]], [0.532, [1.000, 0.442, 0.000]], [0.534, [1.000, 0.442, 0.000]], [0.536, [1.000, 0.452, 0.000]], [0.538, [1.000, 0.452, 0.000]], [0.540, [1.000, 0.462, 0.000]], [0.542, [1.000, 0.462, 0.000]], [0.544, [1.000, 0.473, 0.000]], [0.546, [1.000, 0.473, 0.000]], [0.548, [1.000, 0.483, 0.000]], [0.550, [1.000, 0.483, 0.000]], [0.552, [1.000, 0.493, 0.000]], [0.554, [1.000, 0.493, 0.000]], [0.556, [1.000, 0.503, 0.000]], [0.558, [1.000, 0.503, 0.000]], [0.560, [1.000, 0.514, 0.000]], [0.562, [1.000, 0.514, 0.000]], [0.564, [1.000, 0.524, 0.000]], [0.566, [1.000, 0.524, 0.000]], [0.568, [1.000, 0.534, 0.000]], [0.569, [1.000, 0.534, 0.000]], [0.571, [1.000, 0.545, 0.000]], [0.573, [1.000, 0.545, 0.000]], [0.575, [1.000, 0.555, 0.000]], [0.577, [1.000, 0.555, 0.000]], [0.579, [1.000, 0.565, 0.000]], [0.581, [1.000, 0.565, 0.000]], [0.583, [1.000, 0.575, 0.000]], [0.585, [1.000, 0.575, 0.000]], [0.587, [1.000, 0.586, 0.000]], [0.589, [1.000, 0.586, 0.000]], [0.591, [1.000, 0.596, 0.000]], [0.593, [1.000, 0.596, 0.000]], [0.595, [1.000, 0.606, 0.000]], [0.597, [1.000, 0.606, 0.000]], [0.599, [1.000, 0.617, 0.000]], [0.601, [1.000, 0.617, 0.000]], [0.603, [1.000, 0.627, 0.000]], [0.605, [1.000, 0.627, 0.000]], [0.607, [1.000, 0.637, 0.000]], [0.609, [1.000, 0.637, 0.000]], [0.611, [1.000, 0.648, 0.000]], [0.613, [1.000, 0.648, 0.000]], [0.614, [1.000, 0.658, 0.000]], [0.616, [1.000, 0.658, 0.000]], [0.618, [1.000, 0.668, 0.000]], [0.620, [1.000, 0.668, 0.000]], [0.622, [1.000, 0.678, 0.000]], [0.624, [1.000, 0.678, 0.000]], [0.626, [1.000, 0.689, 0.000]], [0.628, [1.000, 0.689, 0.000]], [0.630, [1.000, 0.699, 0.000]], [0.632, [1.000, 0.699, 0.000]], [0.634, [1.000, 0.709, 0.000]], [0.636, [1.000, 0.709, 0.000]], [0.638, [1.000, 0.720, 0.000]], [0.640, [1.000, 0.720, 0.000]], [0.642, [1.000, 0.730, 0.000]], [0.644, [1.000, 0.730, 0.000]], [0.646, [1.000, 0.740, 0.000]], [0.648, [1.000, 0.740, 0.000]], [0.650, [1.000, 0.750, 0.000]], [0.652, [1.000, 0.750, 0.000]], [0.654, [1.000, 0.761, 0.000]], [0.656, [1.000, 0.761, 0.000]], [0.658, [1.000, 0.771, 0.000]], [0.659, [1.000, 0.771, 0.000]], [0.661, [1.000, 0.781, 0.000]], [0.663, [1.000, 0.781, 0.000]], [0.665, [1.000, 0.792, 0.000]], [0.667, [1.000, 0.792, 0.000]], [0.669, [1.000, 0.802, 0.000]], [0.671, [1.000, 0.802, 0.000]], [0.673, [1.000, 0.812, 0.000]], [0.675, [1.000, 0.812, 0.000]], [0.677, [1.000, 0.823, 0.000]], [0.679, [1.000, 0.823, 0.000]], [0.681, [1.000, 0.833, 0.000]], [0.683, [1.000, 0.833, 0.000]], [0.685, [1.000, 0.843, 0.000]], [0.687, [1.000, 0.843, 0.000]], [0.689, [1.000, 0.853, 0.000]], [0.691, [1.000, 0.853, 0.000]], [0.693, [1.000, 0.864, 0.000]], [0.695, [1.000, 0.864, 0.000]], [0.697, [1.000, 0.874, 0.000]], [0.699, [1.000, 0.874, 0.000]], [0.701, [1.000, 0.884, 0.000]], [0.703, [1.000, 0.884, 0.000]], [0.705, [1.000, 0.895, 0.000]], [0.706, [1.000, 0.895, 0.000]], [0.708, [1.000, 0.905, 0.000]], [0.710, [1.000, 0.905, 0.000]], [0.712, [1.000, 0.915, 0.000]], [0.714, [1.000, 0.915, 0.000]], [0.716, [1.000, 0.925, 0.000]], [0.718, [1.000, 0.925, 0.000]], [0.720, [1.000, 0.936, 0.000]], [0.722, [1.000, 0.936, 0.000]], [0.724, [1.000, 0.946, 0.000]], [0.726, [1.000, 0.946, 0.000]], [0.728, [1.000, 0.956, 0.000]], [0.730, [1.000, 0.956, 0.000]], [0.732, [1.000, 0.967, 0.000]], [0.734, [1.000, 0.967, 0.000]], [0.736, [1.000, 0.977, 0.000]], [0.738, [1.000, 0.977, 0.000]], [0.740, [1.000, 0.987, 0.000]], [0.742, [1.000, 0.987, 0.000]], [0.744, [1.000, 0.998, 0.000]], [0.746, [1.000, 0.998, 0.000]], [0.748, [1.000, 1.000, 0.012]], [0.750, [1.000, 1.000, 0.012]], [0.751, [1.000, 1.000, 0.027]], [0.753, [1.000, 1.000, 0.027]], [0.755, [1.000, 1.000, 0.043]], [0.757, [1.000, 1.000, 0.043]], [0.759, [1.000, 1.000, 0.058]], [0.761, [1.000, 1.000, 0.058]], [0.763, [1.000, 1.000, 0.074]], [0.765, [1.000, 1.000, 0.074]], [0.767, [1.000, 1.000, 0.089]], [0.769, [1.000, 1.000, 0.089]], [0.771, [1.000, 1.000, 0.104]], [0.773, [1.000, 1.000, 0.104]], [0.775, [1.000, 1.000, 0.120]], [0.777, [1.000, 1.000, 0.120]], [0.779, [1.000, 1.000, 0.135]], [0.781, [1.000, 1.000, 0.135]], [0.783, [1.000, 1.000, 0.151]], [0.785, [1.000, 1.000, 0.151]], [0.787, [1.000, 1.000, 0.166]], [0.789, [1.000, 1.000, 0.166]], [0.791, [1.000, 1.000, 0.182]], [0.793, [1.000, 1.000, 0.182]], [0.795, [1.000, 1.000, 0.197]], [0.796, [1.000, 1.000, 0.197]], [0.798, [1.000, 1.000, 0.212]], [0.800, [1.000, 1.000, 0.212]], [0.802, [1.000, 1.000, 0.228]], [0.804, [1.000, 1.000, 0.228]], [0.806, [1.000, 1.000, 0.243]], [0.808, [1.000, 1.000, 0.243]], [0.810, [1.000, 1.000, 0.259]], [0.812, [1.000, 1.000, 0.259]], [0.814, [1.000, 1.000, 0.274]], [0.816, [1.000, 1.000, 0.274]], [0.818, [1.000, 1.000, 0.290]], [0.820, [1.000, 1.000, 0.290]], [0.822, [1.000, 1.000, 0.305]], [0.824, [1.000, 1.000, 0.305]], [0.826, [1.000, 1.000, 0.321]], [0.828, [1.000, 1.000, 0.321]], [0.830, [1.000, 1.000, 0.336]], [0.832, [1.000, 1.000, 0.336]], [0.834, [1.000, 1.000, 0.351]], [0.836, [1.000, 1.000, 0.351]], [0.838, [1.000, 1.000, 0.367]], [0.840, [1.000, 1.000, 0.367]], [0.841, [1.000, 1.000, 0.382]], [0.843, [1.000, 1.000, 0.382]], [0.845, [1.000, 1.000, 0.398]], [0.847, [1.000, 1.000, 0.398]], [0.849, [1.000, 1.000, 0.413]], [0.851, [1.000, 1.000, 0.413]], [0.853, [1.000, 1.000, 0.429]], [0.855, [1.000, 1.000, 0.429]], [0.857, [1.000, 1.000, 0.444]], [0.859, [1.000, 1.000, 0.444]], [0.861, [1.000, 1.000, 0.460]], [0.863, [1.000, 1.000, 0.460]], [0.865, [1.000, 1.000, 0.475]], [0.867, [1.000, 1.000, 0.475]], [0.869, [1.000, 1.000, 0.490]], [0.871, [1.000, 1.000, 0.490]], [0.873, [1.000, 1.000, 0.506]], [0.875, [1.000, 1.000, 0.506]], [0.877, [1.000, 1.000, 0.521]], [0.879, [1.000, 1.000, 0.521]], [0.881, [1.000, 1.000, 0.537]], [0.883, [1.000, 1.000, 0.537]], [0.885, [1.000, 1.000, 0.552]], [0.886, [1.000, 1.000, 0.552]], [0.888, [1.000, 1.000, 0.568]], [0.890, [1.000, 1.000, 0.568]], [0.892, [1.000, 1.000, 0.583]], [0.894, [1.000, 1.000, 0.583]], [0.896, [1.000, 1.000, 0.599]], [0.898, [1.000, 1.000, 0.599]], [0.900, [1.000, 1.000, 0.614]], [0.902, [1.000, 1.000, 0.614]], [0.904, [1.000, 1.000, 0.629]], [0.906, [1.000, 1.000, 0.629]], [0.908, [1.000, 1.000, 0.645]], [0.910, [1.000, 1.000, 0.645]], [0.912, [1.000, 1.000, 0.660]], [0.914, [1.000, 1.000, 0.660]], [0.916, [1.000, 1.000, 0.676]], [0.918, [1.000, 1.000, 0.676]], [0.920, [1.000, 1.000, 0.691]], [0.922, [1.000, 1.000, 0.691]], [0.924, [1.000, 1.000, 0.707]], [0.926, [1.000, 1.000, 0.707]], [0.928, [1.000, 1.000, 0.722]], [0.930, [1.000, 1.000, 0.722]], [0.932, [1.000, 1.000, 0.737]], [0.933, [1.000, 1.000, 0.737]], [0.935, [1.000, 1.000, 0.753]], [0.937, [1.000, 1.000, 0.753]], [0.939, [1.000, 1.000, 0.768]], [0.941, [1.000, 1.000, 0.768]], [0.943, [1.000, 1.000, 0.784]], [0.945, [1.000, 1.000, 0.784]], [0.947, [1.000, 1.000, 0.799]], [0.949, [1.000, 1.000, 0.799]], [0.951, [1.000, 1.000, 0.815]], [0.953, [1.000, 1.000, 0.815]], [0.955, [1.000, 1.000, 0.830]], [0.957, [1.000, 1.000, 0.830]], [0.959, [1.000, 1.000, 0.846]], [0.961, [1.000, 1.000, 0.846]], [0.963, [1.000, 1.000, 0.861]], [0.965, [1.000, 1.000, 0.861]], [0.967, [1.000, 1.000, 0.876]], [0.969, [1.000, 1.000, 0.876]], [0.971, [1.000, 1.000, 0.892]], [0.973, [1.000, 1.000, 0.892]], [0.975, [1.000, 1.000, 0.907]], [0.977, [1.000, 1.000, 0.907]], [0.978, [1.000, 1.000, 0.923]], [0.980, [1.000, 1.000, 0.923]], [0.982, [1.000, 1.000, 0.938]], [0.984, [1.000, 1.000, 0.938]], [0.986, [1.000, 1.000, 0.954]], [0.988, [1.000, 1.000, 0.954]], [0.990, [1.000, 1.000, 0.969]], [0.992, [1.000, 1.000, 0.969]], [0.994, [1.000, 1.000, 0.985]], [0.996, [1.000, 1.000, 0.985]], [0.998, [1.000, 1.000, 1.000]], [1.000, [1.000, 1.000, 1.000]]]; +var pink = [[0.000, [0.118, 0.000, 0.000]], [0.002, [0.118, 0.000, 0.000]], [0.004, [0.137, 0.025, 0.025]], [0.006, [0.137, 0.025, 0.025]], [0.008, [0.156, 0.051, 0.051]], [0.010, [0.156, 0.051, 0.051]], [0.012, [0.176, 0.076, 0.076]], [0.014, [0.176, 0.076, 0.076]], [0.016, [0.195, 0.102, 0.102]], [0.018, [0.195, 0.102, 0.102]], [0.020, [0.209, 0.113, 0.113]], [0.022, [0.209, 0.113, 0.113]], [0.023, [0.222, 0.123, 0.123]], [0.025, [0.222, 0.123, 0.123]], [0.027, [0.236, 0.134, 0.134]], [0.029, [0.236, 0.134, 0.134]], [0.031, [0.249, 0.144, 0.144]], [0.033, [0.249, 0.144, 0.144]], [0.035, [0.261, 0.153, 0.153]], [0.037, [0.261, 0.153, 0.153]], [0.039, [0.272, 0.161, 0.161]], [0.041, [0.272, 0.161, 0.161]], [0.043, [0.283, 0.169, 0.169]], [0.045, [0.283, 0.169, 0.169]], [0.047, [0.294, 0.177, 0.177]], [0.049, [0.294, 0.177, 0.177]], [0.051, [0.304, 0.184, 0.184]], [0.053, [0.304, 0.184, 0.184]], [0.055, [0.313, 0.191, 0.191]], [0.057, [0.313, 0.191, 0.191]], [0.059, [0.323, 0.198, 0.198]], [0.061, [0.323, 0.198, 0.198]], [0.063, [0.332, 0.204, 0.204]], [0.065, [0.332, 0.204, 0.204]], [0.067, [0.341, 0.211, 0.211]], [0.068, [0.341, 0.211, 0.211]], [0.070, [0.350, 0.217, 0.217]], [0.072, [0.350, 0.217, 0.217]], [0.074, [0.358, 0.223, 0.223]], [0.076, [0.358, 0.223, 0.223]], [0.078, [0.367, 0.229, 0.229]], [0.080, [0.367, 0.229, 0.229]], [0.082, [0.375, 0.234, 0.234]], [0.084, [0.375, 0.234, 0.234]], [0.086, [0.383, 0.240, 0.240]], [0.088, [0.383, 0.240, 0.240]], [0.090, [0.391, 0.245, 0.245]], [0.092, [0.391, 0.245, 0.245]], [0.094, [0.399, 0.250, 0.250]], [0.096, [0.399, 0.250, 0.250]], [0.098, [0.406, 0.256, 0.256]], [0.100, [0.406, 0.256, 0.256]], [0.102, [0.413, 0.261, 0.261]], [0.104, [0.413, 0.261, 0.261]], [0.106, [0.421, 0.266, 0.266]], [0.108, [0.421, 0.266, 0.266]], [0.110, [0.428, 0.271, 0.271]], [0.112, [0.428, 0.271, 0.271]], [0.114, [0.435, 0.275, 0.275]], [0.115, [0.435, 0.275, 0.275]], [0.117, [0.442, 0.280, 0.280]], [0.119, [0.442, 0.280, 0.280]], [0.121, [0.448, 0.285, 0.285]], [0.123, [0.448, 0.285, 0.285]], [0.125, [0.455, 0.289, 0.289]], [0.127, [0.455, 0.289, 0.289]], [0.129, [0.462, 0.294, 0.294]], [0.131, [0.462, 0.294, 0.294]], [0.133, [0.468, 0.298, 0.298]], [0.135, [0.468, 0.298, 0.298]], [0.137, [0.475, 0.302, 0.302]], [0.139, [0.475, 0.302, 0.302]], [0.141, [0.481, 0.307, 0.307]], [0.143, [0.481, 0.307, 0.307]], [0.145, [0.487, 0.311, 0.311]], [0.147, [0.487, 0.311, 0.311]], [0.149, [0.493, 0.315, 0.315]], [0.151, [0.493, 0.315, 0.315]], [0.153, [0.500, 0.319, 0.319]], [0.155, [0.500, 0.319, 0.319]], [0.157, [0.506, 0.323, 0.323]], [0.159, [0.506, 0.323, 0.323]], [0.160, [0.512, 0.327, 0.327]], [0.162, [0.512, 0.327, 0.327]], [0.164, [0.517, 0.331, 0.331]], [0.166, [0.517, 0.331, 0.331]], [0.168, [0.523, 0.335, 0.335]], [0.170, [0.523, 0.335, 0.335]], [0.172, [0.529, 0.339, 0.339]], [0.174, [0.529, 0.339, 0.339]], [0.176, [0.535, 0.343, 0.343]], [0.178, [0.535, 0.343, 0.343]], [0.180, [0.540, 0.347, 0.347]], [0.182, [0.540, 0.347, 0.347]], [0.184, [0.546, 0.350, 0.350]], [0.186, [0.546, 0.350, 0.350]], [0.188, [0.551, 0.354, 0.354]], [0.190, [0.551, 0.354, 0.354]], [0.192, [0.557, 0.358, 0.358]], [0.194, [0.557, 0.358, 0.358]], [0.196, [0.562, 0.361, 0.361]], [0.198, [0.562, 0.361, 0.361]], [0.200, [0.568, 0.365, 0.365]], [0.202, [0.568, 0.365, 0.365]], [0.204, [0.573, 0.369, 0.369]], [0.205, [0.573, 0.369, 0.369]], [0.207, [0.578, 0.372, 0.372]], [0.209, [0.578, 0.372, 0.372]], [0.211, [0.583, 0.376, 0.376]], [0.213, [0.583, 0.376, 0.376]], [0.215, [0.588, 0.379, 0.379]], [0.217, [0.588, 0.379, 0.379]], [0.219, [0.594, 0.383, 0.383]], [0.221, [0.594, 0.383, 0.383]], [0.223, [0.599, 0.386, 0.386]], [0.225, [0.599, 0.386, 0.386]], [0.227, [0.604, 0.389, 0.389]], [0.229, [0.604, 0.389, 0.389]], [0.231, [0.609, 0.393, 0.393]], [0.233, [0.609, 0.393, 0.393]], [0.235, [0.614, 0.396, 0.396]], [0.237, [0.614, 0.396, 0.396]], [0.239, [0.619, 0.399, 0.399]], [0.241, [0.619, 0.399, 0.399]], [0.243, [0.623, 0.403, 0.403]], [0.245, [0.623, 0.403, 0.403]], [0.247, [0.628, 0.406, 0.406]], [0.249, [0.628, 0.406, 0.406]], [0.250, [0.633, 0.409, 0.409]], [0.252, [0.633, 0.409, 0.409]], [0.254, [0.638, 0.412, 0.412]], [0.256, [0.638, 0.412, 0.412]], [0.258, [0.643, 0.415, 0.415]], [0.260, [0.643, 0.415, 0.415]], [0.262, [0.647, 0.418, 0.418]], [0.264, [0.647, 0.418, 0.418]], [0.266, [0.652, 0.422, 0.422]], [0.268, [0.652, 0.422, 0.422]], [0.270, [0.657, 0.425, 0.425]], [0.272, [0.657, 0.425, 0.425]], [0.274, [0.661, 0.428, 0.428]], [0.276, [0.661, 0.428, 0.428]], [0.278, [0.666, 0.431, 0.431]], [0.280, [0.666, 0.431, 0.431]], [0.282, [0.670, 0.434, 0.434]], [0.284, [0.670, 0.434, 0.434]], [0.286, [0.675, 0.437, 0.437]], [0.288, [0.675, 0.437, 0.437]], [0.290, [0.679, 0.440, 0.440]], [0.292, [0.679, 0.440, 0.440]], [0.294, [0.684, 0.443, 0.443]], [0.295, [0.684, 0.443, 0.443]], [0.297, [0.688, 0.446, 0.446]], [0.299, [0.688, 0.446, 0.446]], [0.301, [0.692, 0.449, 0.449]], [0.303, [0.692, 0.449, 0.449]], [0.305, [0.697, 0.452, 0.452]], [0.307, [0.697, 0.452, 0.452]], [0.309, [0.701, 0.454, 0.454]], [0.311, [0.701, 0.454, 0.454]], [0.313, [0.705, 0.457, 0.457]], [0.315, [0.705, 0.457, 0.457]], [0.317, [0.710, 0.460, 0.460]], [0.319, [0.710, 0.460, 0.460]], [0.321, [0.714, 0.463, 0.463]], [0.323, [0.714, 0.463, 0.463]], [0.325, [0.718, 0.466, 0.466]], [0.327, [0.718, 0.466, 0.466]], [0.329, [0.722, 0.469, 0.469]], [0.331, [0.722, 0.469, 0.469]], [0.333, [0.726, 0.471, 0.471]], [0.335, [0.726, 0.471, 0.471]], [0.337, [0.731, 0.474, 0.474]], [0.339, [0.731, 0.474, 0.474]], [0.341, [0.735, 0.477, 0.477]], [0.342, [0.735, 0.477, 0.477]], [0.344, [0.739, 0.480, 0.480]], [0.346, [0.739, 0.480, 0.480]], [0.348, [0.743, 0.482, 0.482]], [0.350, [0.743, 0.482, 0.482]], [0.352, [0.747, 0.485, 0.485]], [0.354, [0.747, 0.485, 0.485]], [0.356, [0.751, 0.488, 0.488]], [0.358, [0.751, 0.488, 0.488]], [0.360, [0.755, 0.490, 0.490]], [0.362, [0.755, 0.490, 0.490]], [0.364, [0.759, 0.493, 0.493]], [0.366, [0.759, 0.493, 0.493]], [0.368, [0.761, 0.499, 0.496]], [0.370, [0.761, 0.499, 0.496]], [0.372, [0.763, 0.505, 0.498]], [0.374, [0.763, 0.505, 0.498]], [0.376, [0.764, 0.511, 0.501]], [0.378, [0.764, 0.511, 0.501]], [0.380, [0.766, 0.517, 0.504]], [0.382, [0.766, 0.517, 0.504]], [0.384, [0.768, 0.522, 0.506]], [0.386, [0.768, 0.522, 0.506]], [0.387, [0.770, 0.528, 0.509]], [0.389, [0.770, 0.528, 0.509]], [0.391, [0.771, 0.534, 0.511]], [0.393, [0.771, 0.534, 0.511]], [0.395, [0.773, 0.540, 0.514]], [0.397, [0.773, 0.540, 0.514]], [0.399, [0.775, 0.545, 0.516]], [0.401, [0.775, 0.545, 0.516]], [0.403, [0.776, 0.551, 0.519]], [0.405, [0.776, 0.551, 0.519]], [0.407, [0.778, 0.556, 0.521]], [0.409, [0.778, 0.556, 0.521]], [0.411, [0.780, 0.562, 0.524]], [0.413, [0.780, 0.562, 0.524]], [0.415, [0.781, 0.567, 0.526]], [0.417, [0.781, 0.567, 0.526]], [0.419, [0.783, 0.572, 0.529]], [0.421, [0.783, 0.572, 0.529]], [0.423, [0.785, 0.577, 0.531]], [0.425, [0.785, 0.577, 0.531]], [0.427, [0.786, 0.583, 0.534]], [0.429, [0.786, 0.583, 0.534]], [0.431, [0.788, 0.588, 0.536]], [0.432, [0.788, 0.588, 0.536]], [0.434, [0.790, 0.593, 0.539]], [0.436, [0.790, 0.593, 0.539]], [0.438, [0.791, 0.598, 0.541]], [0.440, [0.791, 0.598, 0.541]], [0.442, [0.793, 0.603, 0.544]], [0.444, [0.793, 0.603, 0.544]], [0.446, [0.795, 0.608, 0.546]], [0.448, [0.795, 0.608, 0.546]], [0.450, [0.796, 0.613, 0.548]], [0.452, [0.796, 0.613, 0.548]], [0.454, [0.798, 0.618, 0.551]], [0.456, [0.798, 0.618, 0.551]], [0.458, [0.800, 0.623, 0.553]], [0.460, [0.800, 0.623, 0.553]], [0.462, [0.801, 0.628, 0.555]], [0.464, [0.801, 0.628, 0.555]], [0.466, [0.803, 0.632, 0.558]], [0.468, [0.803, 0.632, 0.558]], [0.470, [0.804, 0.637, 0.560]], [0.472, [0.804, 0.637, 0.560]], [0.474, [0.806, 0.642, 0.562]], [0.476, [0.806, 0.642, 0.562]], [0.477, [0.808, 0.647, 0.565]], [0.479, [0.808, 0.647, 0.565]], [0.481, [0.809, 0.651, 0.567]], [0.483, [0.809, 0.651, 0.567]], [0.485, [0.811, 0.656, 0.569]], [0.487, [0.811, 0.656, 0.569]], [0.489, [0.812, 0.660, 0.572]], [0.491, [0.812, 0.660, 0.572]], [0.493, [0.814, 0.665, 0.574]], [0.495, [0.814, 0.665, 0.574]], [0.497, [0.816, 0.670, 0.576]], [0.499, [0.816, 0.670, 0.576]], [0.501, [0.817, 0.674, 0.578]], [0.503, [0.817, 0.674, 0.578]], [0.505, [0.819, 0.679, 0.581]], [0.507, [0.819, 0.679, 0.581]], [0.509, [0.820, 0.683, 0.583]], [0.511, [0.820, 0.683, 0.583]], [0.513, [0.822, 0.687, 0.585]], [0.515, [0.822, 0.687, 0.585]], [0.517, [0.824, 0.692, 0.587]], [0.519, [0.824, 0.692, 0.587]], [0.521, [0.825, 0.696, 0.590]], [0.523, [0.825, 0.696, 0.590]], [0.524, [0.827, 0.700, 0.592]], [0.526, [0.827, 0.700, 0.592]], [0.528, [0.828, 0.705, 0.594]], [0.530, [0.828, 0.705, 0.594]], [0.532, [0.830, 0.709, 0.596]], [0.534, [0.830, 0.709, 0.596]], [0.536, [0.832, 0.713, 0.598]], [0.538, [0.832, 0.713, 0.598]], [0.540, [0.833, 0.718, 0.601]], [0.542, [0.833, 0.718, 0.601]], [0.544, [0.835, 0.722, 0.603]], [0.546, [0.835, 0.722, 0.603]], [0.548, [0.836, 0.726, 0.605]], [0.550, [0.836, 0.726, 0.605]], [0.552, [0.838, 0.730, 0.607]], [0.554, [0.838, 0.730, 0.607]], [0.556, [0.839, 0.734, 0.609]], [0.558, [0.839, 0.734, 0.609]], [0.560, [0.841, 0.738, 0.611]], [0.562, [0.841, 0.738, 0.611]], [0.564, [0.842, 0.742, 0.614]], [0.566, [0.842, 0.742, 0.614]], [0.568, [0.844, 0.746, 0.616]], [0.569, [0.844, 0.746, 0.616]], [0.571, [0.846, 0.750, 0.618]], [0.573, [0.846, 0.750, 0.618]], [0.575, [0.847, 0.754, 0.620]], [0.577, [0.847, 0.754, 0.620]], [0.579, [0.849, 0.758, 0.622]], [0.581, [0.849, 0.758, 0.622]], [0.583, [0.850, 0.762, 0.624]], [0.585, [0.850, 0.762, 0.624]], [0.587, [0.852, 0.766, 0.626]], [0.589, [0.852, 0.766, 0.626]], [0.591, [0.853, 0.770, 0.628]], [0.593, [0.853, 0.770, 0.628]], [0.595, [0.855, 0.774, 0.630]], [0.597, [0.855, 0.774, 0.630]], [0.599, [0.856, 0.778, 0.632]], [0.601, [0.856, 0.778, 0.632]], [0.603, [0.858, 0.782, 0.635]], [0.605, [0.858, 0.782, 0.635]], [0.607, [0.859, 0.786, 0.637]], [0.609, [0.859, 0.786, 0.637]], [0.611, [0.861, 0.790, 0.639]], [0.613, [0.861, 0.790, 0.639]], [0.614, [0.862, 0.794, 0.641]], [0.616, [0.862, 0.794, 0.641]], [0.618, [0.864, 0.797, 0.643]], [0.620, [0.864, 0.797, 0.643]], [0.622, [0.865, 0.801, 0.645]], [0.624, [0.865, 0.801, 0.645]], [0.626, [0.867, 0.805, 0.647]], [0.628, [0.867, 0.805, 0.647]], [0.630, [0.868, 0.809, 0.649]], [0.632, [0.868, 0.809, 0.649]], [0.634, [0.870, 0.812, 0.651]], [0.636, [0.870, 0.812, 0.651]], [0.638, [0.871, 0.816, 0.653]], [0.640, [0.871, 0.816, 0.653]], [0.642, [0.873, 0.820, 0.655]], [0.644, [0.873, 0.820, 0.655]], [0.646, [0.874, 0.823, 0.657]], [0.648, [0.874, 0.823, 0.657]], [0.650, [0.876, 0.827, 0.659]], [0.652, [0.876, 0.827, 0.659]], [0.654, [0.877, 0.831, 0.661]], [0.656, [0.877, 0.831, 0.661]], [0.658, [0.879, 0.834, 0.663]], [0.659, [0.879, 0.834, 0.663]], [0.661, [0.880, 0.838, 0.665]], [0.663, [0.880, 0.838, 0.665]], [0.665, [0.882, 0.842, 0.667]], [0.667, [0.882, 0.842, 0.667]], [0.669, [0.883, 0.845, 0.669]], [0.671, [0.883, 0.845, 0.669]], [0.673, [0.885, 0.849, 0.671]], [0.675, [0.885, 0.849, 0.671]], [0.677, [0.886, 0.852, 0.673]], [0.679, [0.886, 0.852, 0.673]], [0.681, [0.888, 0.856, 0.674]], [0.683, [0.888, 0.856, 0.674]], [0.685, [0.889, 0.859, 0.676]], [0.687, [0.889, 0.859, 0.676]], [0.689, [0.891, 0.863, 0.678]], [0.691, [0.891, 0.863, 0.678]], [0.693, [0.892, 0.866, 0.680]], [0.695, [0.892, 0.866, 0.680]], [0.697, [0.894, 0.870, 0.682]], [0.699, [0.894, 0.870, 0.682]], [0.701, [0.895, 0.873, 0.684]], [0.703, [0.895, 0.873, 0.684]], [0.705, [0.897, 0.877, 0.686]], [0.706, [0.897, 0.877, 0.686]], [0.708, [0.898, 0.880, 0.688]], [0.710, [0.898, 0.880, 0.688]], [0.712, [0.900, 0.884, 0.690]], [0.714, [0.900, 0.884, 0.690]], [0.716, [0.901, 0.887, 0.692]], [0.718, [0.901, 0.887, 0.692]], [0.720, [0.902, 0.890, 0.694]], [0.722, [0.902, 0.890, 0.694]], [0.724, [0.904, 0.894, 0.695]], [0.726, [0.904, 0.894, 0.695]], [0.728, [0.905, 0.897, 0.697]], [0.730, [0.905, 0.897, 0.697]], [0.732, [0.907, 0.901, 0.699]], [0.734, [0.907, 0.901, 0.699]], [0.736, [0.908, 0.904, 0.701]], [0.738, [0.908, 0.904, 0.701]], [0.740, [0.910, 0.907, 0.703]], [0.742, [0.910, 0.907, 0.703]], [0.744, [0.911, 0.911, 0.705]], [0.746, [0.911, 0.911, 0.705]], [0.748, [0.913, 0.913, 0.709]], [0.750, [0.913, 0.913, 0.709]], [0.751, [0.914, 0.914, 0.715]], [0.753, [0.914, 0.914, 0.715]], [0.755, [0.915, 0.915, 0.720]], [0.757, [0.915, 0.915, 0.720]], [0.759, [0.917, 0.917, 0.726]], [0.761, [0.917, 0.917, 0.726]], [0.763, [0.918, 0.918, 0.731]], [0.765, [0.918, 0.918, 0.731]], [0.767, [0.920, 0.920, 0.736]], [0.769, [0.920, 0.920, 0.736]], [0.771, [0.921, 0.921, 0.741]], [0.773, [0.921, 0.921, 0.741]], [0.775, [0.922, 0.922, 0.747]], [0.777, [0.922, 0.922, 0.747]], [0.779, [0.924, 0.924, 0.752]], [0.781, [0.924, 0.924, 0.752]], [0.783, [0.925, 0.925, 0.757]], [0.785, [0.925, 0.925, 0.757]], [0.787, [0.927, 0.927, 0.762]], [0.789, [0.927, 0.927, 0.762]], [0.791, [0.928, 0.928, 0.767]], [0.793, [0.928, 0.928, 0.767]], [0.795, [0.930, 0.930, 0.772]], [0.796, [0.930, 0.930, 0.772]], [0.798, [0.931, 0.931, 0.777]], [0.800, [0.931, 0.931, 0.777]], [0.802, [0.932, 0.932, 0.782]], [0.804, [0.932, 0.932, 0.782]], [0.806, [0.934, 0.934, 0.787]], [0.808, [0.934, 0.934, 0.787]], [0.810, [0.935, 0.935, 0.792]], [0.812, [0.935, 0.935, 0.792]], [0.814, [0.937, 0.937, 0.797]], [0.816, [0.937, 0.937, 0.797]], [0.818, [0.938, 0.938, 0.802]], [0.820, [0.938, 0.938, 0.802]], [0.822, [0.939, 0.939, 0.807]], [0.824, [0.939, 0.939, 0.807]], [0.826, [0.941, 0.941, 0.811]], [0.828, [0.941, 0.941, 0.811]], [0.830, [0.942, 0.942, 0.816]], [0.832, [0.942, 0.942, 0.816]], [0.834, [0.943, 0.943, 0.821]], [0.836, [0.943, 0.943, 0.821]], [0.838, [0.945, 0.945, 0.826]], [0.840, [0.945, 0.945, 0.826]], [0.841, [0.946, 0.946, 0.830]], [0.843, [0.946, 0.946, 0.830]], [0.845, [0.948, 0.948, 0.835]], [0.847, [0.948, 0.948, 0.835]], [0.849, [0.949, 0.949, 0.840]], [0.851, [0.949, 0.949, 0.840]], [0.853, [0.950, 0.950, 0.844]], [0.855, [0.950, 0.950, 0.844]], [0.857, [0.952, 0.952, 0.849]], [0.859, [0.952, 0.952, 0.849]], [0.861, [0.953, 0.953, 0.853]], [0.863, [0.953, 0.953, 0.853]], [0.865, [0.955, 0.955, 0.858]], [0.867, [0.955, 0.955, 0.858]], [0.869, [0.956, 0.956, 0.862]], [0.871, [0.956, 0.956, 0.862]], [0.873, [0.957, 0.957, 0.867]], [0.875, [0.957, 0.957, 0.867]], [0.877, [0.959, 0.959, 0.871]], [0.879, [0.959, 0.959, 0.871]], [0.881, [0.960, 0.960, 0.876]], [0.883, [0.960, 0.960, 0.876]], [0.885, [0.961, 0.961, 0.880]], [0.886, [0.961, 0.961, 0.880]], [0.888, [0.963, 0.963, 0.885]], [0.890, [0.963, 0.963, 0.885]], [0.892, [0.964, 0.964, 0.889]], [0.894, [0.964, 0.964, 0.889]], [0.896, [0.965, 0.965, 0.893]], [0.898, [0.965, 0.965, 0.893]], [0.900, [0.967, 0.967, 0.898]], [0.902, [0.967, 0.967, 0.898]], [0.904, [0.968, 0.968, 0.902]], [0.906, [0.968, 0.968, 0.902]], [0.908, [0.969, 0.969, 0.906]], [0.910, [0.969, 0.969, 0.906]], [0.912, [0.971, 0.971, 0.911]], [0.914, [0.971, 0.971, 0.911]], [0.916, [0.972, 0.972, 0.915]], [0.918, [0.972, 0.972, 0.915]], [0.920, [0.974, 0.974, 0.919]], [0.922, [0.974, 0.974, 0.919]], [0.924, [0.975, 0.975, 0.923]], [0.926, [0.975, 0.975, 0.923]], [0.928, [0.976, 0.976, 0.927]], [0.930, [0.976, 0.976, 0.927]], [0.932, [0.978, 0.978, 0.932]], [0.933, [0.978, 0.978, 0.932]], [0.935, [0.979, 0.979, 0.936]], [0.937, [0.979, 0.979, 0.936]], [0.939, [0.980, 0.980, 0.940]], [0.941, [0.980, 0.980, 0.940]], [0.943, [0.982, 0.982, 0.944]], [0.945, [0.982, 0.982, 0.944]], [0.947, [0.983, 0.983, 0.948]], [0.949, [0.983, 0.983, 0.948]], [0.951, [0.984, 0.984, 0.952]], [0.953, [0.984, 0.984, 0.952]], [0.955, [0.986, 0.986, 0.956]], [0.957, [0.986, 0.986, 0.956]], [0.959, [0.987, 0.987, 0.960]], [0.961, [0.987, 0.987, 0.960]], [0.963, [0.988, 0.988, 0.964]], [0.965, [0.988, 0.988, 0.964]], [0.967, [0.989, 0.989, 0.968]], [0.969, [0.989, 0.989, 0.968]], [0.971, [0.991, 0.991, 0.972]], [0.973, [0.991, 0.991, 0.972]], [0.975, [0.992, 0.992, 0.976]], [0.977, [0.992, 0.992, 0.976]], [0.978, [0.993, 0.993, 0.980]], [0.980, [0.993, 0.993, 0.980]], [0.982, [0.995, 0.995, 0.984]], [0.984, [0.995, 0.995, 0.984]], [0.986, [0.996, 0.996, 0.988]], [0.988, [0.996, 0.996, 0.988]], [0.990, [0.997, 0.997, 0.992]], [0.992, [0.997, 0.997, 0.992]], [0.994, [0.999, 0.999, 0.996]], [0.996, [0.999, 0.999, 0.996]], [0.998, [1.000, 1.000, 1.000]], [1.000, [1.000, 1.000, 1.000]]]; +var spring = [[0.000, [1.000, 0.000, 1.000]], [0.002, [1.000, 0.000, 1.000]], [0.004, [1.000, 0.004, 0.996]], [0.006, [1.000, 0.004, 0.996]], [0.008, [1.000, 0.008, 0.992]], [0.010, [1.000, 0.008, 0.992]], [0.012, [1.000, 0.012, 0.988]], [0.014, [1.000, 0.012, 0.988]], [0.016, [1.000, 0.016, 0.984]], [0.018, [1.000, 0.016, 0.984]], [0.020, [1.000, 0.020, 0.980]], [0.022, [1.000, 0.020, 0.980]], [0.023, [1.000, 0.024, 0.976]], [0.025, [1.000, 0.024, 0.976]], [0.027, [1.000, 0.027, 0.973]], [0.029, [1.000, 0.027, 0.973]], [0.031, [1.000, 0.031, 0.969]], [0.033, [1.000, 0.031, 0.969]], [0.035, [1.000, 0.035, 0.965]], [0.037, [1.000, 0.035, 0.965]], [0.039, [1.000, 0.039, 0.961]], [0.041, [1.000, 0.039, 0.961]], [0.043, [1.000, 0.043, 0.957]], [0.045, [1.000, 0.043, 0.957]], [0.047, [1.000, 0.047, 0.953]], [0.049, [1.000, 0.047, 0.953]], [0.051, [1.000, 0.051, 0.949]], [0.053, [1.000, 0.051, 0.949]], [0.055, [1.000, 0.055, 0.945]], [0.057, [1.000, 0.055, 0.945]], [0.059, [1.000, 0.059, 0.941]], [0.061, [1.000, 0.059, 0.941]], [0.063, [1.000, 0.063, 0.937]], [0.065, [1.000, 0.063, 0.937]], [0.067, [1.000, 0.067, 0.933]], [0.068, [1.000, 0.067, 0.933]], [0.070, [1.000, 0.071, 0.929]], [0.072, [1.000, 0.071, 0.929]], [0.074, [1.000, 0.075, 0.925]], [0.076, [1.000, 0.075, 0.925]], [0.078, [1.000, 0.078, 0.922]], [0.080, [1.000, 0.078, 0.922]], [0.082, [1.000, 0.082, 0.918]], [0.084, [1.000, 0.082, 0.918]], [0.086, [1.000, 0.086, 0.914]], [0.088, [1.000, 0.086, 0.914]], [0.090, [1.000, 0.090, 0.910]], [0.092, [1.000, 0.090, 0.910]], [0.094, [1.000, 0.094, 0.906]], [0.096, [1.000, 0.094, 0.906]], [0.098, [1.000, 0.098, 0.902]], [0.100, [1.000, 0.098, 0.902]], [0.102, [1.000, 0.102, 0.898]], [0.104, [1.000, 0.102, 0.898]], [0.106, [1.000, 0.106, 0.894]], [0.108, [1.000, 0.106, 0.894]], [0.110, [1.000, 0.110, 0.890]], [0.112, [1.000, 0.110, 0.890]], [0.114, [1.000, 0.114, 0.886]], [0.115, [1.000, 0.114, 0.886]], [0.117, [1.000, 0.118, 0.882]], [0.119, [1.000, 0.118, 0.882]], [0.121, [1.000, 0.122, 0.878]], [0.123, [1.000, 0.122, 0.878]], [0.125, [1.000, 0.125, 0.875]], [0.127, [1.000, 0.125, 0.875]], [0.129, [1.000, 0.129, 0.871]], [0.131, [1.000, 0.129, 0.871]], [0.133, [1.000, 0.133, 0.867]], [0.135, [1.000, 0.133, 0.867]], [0.137, [1.000, 0.137, 0.863]], [0.139, [1.000, 0.137, 0.863]], [0.141, [1.000, 0.141, 0.859]], [0.143, [1.000, 0.141, 0.859]], [0.145, [1.000, 0.145, 0.855]], [0.147, [1.000, 0.145, 0.855]], [0.149, [1.000, 0.149, 0.851]], [0.151, [1.000, 0.149, 0.851]], [0.153, [1.000, 0.153, 0.847]], [0.155, [1.000, 0.153, 0.847]], [0.157, [1.000, 0.157, 0.843]], [0.159, [1.000, 0.157, 0.843]], [0.160, [1.000, 0.161, 0.839]], [0.162, [1.000, 0.161, 0.839]], [0.164, [1.000, 0.165, 0.835]], [0.166, [1.000, 0.165, 0.835]], [0.168, [1.000, 0.169, 0.831]], [0.170, [1.000, 0.169, 0.831]], [0.172, [1.000, 0.173, 0.827]], [0.174, [1.000, 0.173, 0.827]], [0.176, [1.000, 0.176, 0.824]], [0.178, [1.000, 0.176, 0.824]], [0.180, [1.000, 0.180, 0.820]], [0.182, [1.000, 0.180, 0.820]], [0.184, [1.000, 0.184, 0.816]], [0.186, [1.000, 0.184, 0.816]], [0.188, [1.000, 0.188, 0.812]], [0.190, [1.000, 0.188, 0.812]], [0.192, [1.000, 0.192, 0.808]], [0.194, [1.000, 0.192, 0.808]], [0.196, [1.000, 0.196, 0.804]], [0.198, [1.000, 0.196, 0.804]], [0.200, [1.000, 0.200, 0.800]], [0.202, [1.000, 0.200, 0.800]], [0.204, [1.000, 0.204, 0.796]], [0.205, [1.000, 0.204, 0.796]], [0.207, [1.000, 0.208, 0.792]], [0.209, [1.000, 0.208, 0.792]], [0.211, [1.000, 0.212, 0.788]], [0.213, [1.000, 0.212, 0.788]], [0.215, [1.000, 0.216, 0.784]], [0.217, [1.000, 0.216, 0.784]], [0.219, [1.000, 0.220, 0.780]], [0.221, [1.000, 0.220, 0.780]], [0.223, [1.000, 0.224, 0.776]], [0.225, [1.000, 0.224, 0.776]], [0.227, [1.000, 0.227, 0.773]], [0.229, [1.000, 0.227, 0.773]], [0.231, [1.000, 0.231, 0.769]], [0.233, [1.000, 0.231, 0.769]], [0.235, [1.000, 0.235, 0.765]], [0.237, [1.000, 0.235, 0.765]], [0.239, [1.000, 0.239, 0.761]], [0.241, [1.000, 0.239, 0.761]], [0.243, [1.000, 0.243, 0.757]], [0.245, [1.000, 0.243, 0.757]], [0.247, [1.000, 0.247, 0.753]], [0.249, [1.000, 0.247, 0.753]], [0.250, [1.000, 0.251, 0.749]], [0.252, [1.000, 0.251, 0.749]], [0.254, [1.000, 0.255, 0.745]], [0.256, [1.000, 0.255, 0.745]], [0.258, [1.000, 0.259, 0.741]], [0.260, [1.000, 0.259, 0.741]], [0.262, [1.000, 0.263, 0.737]], [0.264, [1.000, 0.263, 0.737]], [0.266, [1.000, 0.267, 0.733]], [0.268, [1.000, 0.267, 0.733]], [0.270, [1.000, 0.271, 0.729]], [0.272, [1.000, 0.271, 0.729]], [0.274, [1.000, 0.275, 0.725]], [0.276, [1.000, 0.275, 0.725]], [0.278, [1.000, 0.278, 0.722]], [0.280, [1.000, 0.278, 0.722]], [0.282, [1.000, 0.282, 0.718]], [0.284, [1.000, 0.282, 0.718]], [0.286, [1.000, 0.286, 0.714]], [0.288, [1.000, 0.286, 0.714]], [0.290, [1.000, 0.290, 0.710]], [0.292, [1.000, 0.290, 0.710]], [0.294, [1.000, 0.294, 0.706]], [0.295, [1.000, 0.294, 0.706]], [0.297, [1.000, 0.298, 0.702]], [0.299, [1.000, 0.298, 0.702]], [0.301, [1.000, 0.302, 0.698]], [0.303, [1.000, 0.302, 0.698]], [0.305, [1.000, 0.306, 0.694]], [0.307, [1.000, 0.306, 0.694]], [0.309, [1.000, 0.310, 0.690]], [0.311, [1.000, 0.310, 0.690]], [0.313, [1.000, 0.314, 0.686]], [0.315, [1.000, 0.314, 0.686]], [0.317, [1.000, 0.318, 0.682]], [0.319, [1.000, 0.318, 0.682]], [0.321, [1.000, 0.322, 0.678]], [0.323, [1.000, 0.322, 0.678]], [0.325, [1.000, 0.325, 0.675]], [0.327, [1.000, 0.325, 0.675]], [0.329, [1.000, 0.329, 0.671]], [0.331, [1.000, 0.329, 0.671]], [0.333, [1.000, 0.333, 0.667]], [0.335, [1.000, 0.333, 0.667]], [0.337, [1.000, 0.337, 0.663]], [0.339, [1.000, 0.337, 0.663]], [0.341, [1.000, 0.341, 0.659]], [0.342, [1.000, 0.341, 0.659]], [0.344, [1.000, 0.345, 0.655]], [0.346, [1.000, 0.345, 0.655]], [0.348, [1.000, 0.349, 0.651]], [0.350, [1.000, 0.349, 0.651]], [0.352, [1.000, 0.353, 0.647]], [0.354, [1.000, 0.353, 0.647]], [0.356, [1.000, 0.357, 0.643]], [0.358, [1.000, 0.357, 0.643]], [0.360, [1.000, 0.361, 0.639]], [0.362, [1.000, 0.361, 0.639]], [0.364, [1.000, 0.365, 0.635]], [0.366, [1.000, 0.365, 0.635]], [0.368, [1.000, 0.369, 0.631]], [0.370, [1.000, 0.369, 0.631]], [0.372, [1.000, 0.373, 0.627]], [0.374, [1.000, 0.373, 0.627]], [0.376, [1.000, 0.376, 0.624]], [0.378, [1.000, 0.376, 0.624]], [0.380, [1.000, 0.380, 0.620]], [0.382, [1.000, 0.380, 0.620]], [0.384, [1.000, 0.384, 0.616]], [0.386, [1.000, 0.384, 0.616]], [0.387, [1.000, 0.388, 0.612]], [0.389, [1.000, 0.388, 0.612]], [0.391, [1.000, 0.392, 0.608]], [0.393, [1.000, 0.392, 0.608]], [0.395, [1.000, 0.396, 0.604]], [0.397, [1.000, 0.396, 0.604]], [0.399, [1.000, 0.400, 0.600]], [0.401, [1.000, 0.400, 0.600]], [0.403, [1.000, 0.404, 0.596]], [0.405, [1.000, 0.404, 0.596]], [0.407, [1.000, 0.408, 0.592]], [0.409, [1.000, 0.408, 0.592]], [0.411, [1.000, 0.412, 0.588]], [0.413, [1.000, 0.412, 0.588]], [0.415, [1.000, 0.416, 0.584]], [0.417, [1.000, 0.416, 0.584]], [0.419, [1.000, 0.420, 0.580]], [0.421, [1.000, 0.420, 0.580]], [0.423, [1.000, 0.424, 0.576]], [0.425, [1.000, 0.424, 0.576]], [0.427, [1.000, 0.427, 0.573]], [0.429, [1.000, 0.427, 0.573]], [0.431, [1.000, 0.431, 0.569]], [0.432, [1.000, 0.431, 0.569]], [0.434, [1.000, 0.435, 0.565]], [0.436, [1.000, 0.435, 0.565]], [0.438, [1.000, 0.439, 0.561]], [0.440, [1.000, 0.439, 0.561]], [0.442, [1.000, 0.443, 0.557]], [0.444, [1.000, 0.443, 0.557]], [0.446, [1.000, 0.447, 0.553]], [0.448, [1.000, 0.447, 0.553]], [0.450, [1.000, 0.451, 0.549]], [0.452, [1.000, 0.451, 0.549]], [0.454, [1.000, 0.455, 0.545]], [0.456, [1.000, 0.455, 0.545]], [0.458, [1.000, 0.459, 0.541]], [0.460, [1.000, 0.459, 0.541]], [0.462, [1.000, 0.463, 0.537]], [0.464, [1.000, 0.463, 0.537]], [0.466, [1.000, 0.467, 0.533]], [0.468, [1.000, 0.467, 0.533]], [0.470, [1.000, 0.471, 0.529]], [0.472, [1.000, 0.471, 0.529]], [0.474, [1.000, 0.475, 0.525]], [0.476, [1.000, 0.475, 0.525]], [0.477, [1.000, 0.478, 0.522]], [0.479, [1.000, 0.478, 0.522]], [0.481, [1.000, 0.482, 0.518]], [0.483, [1.000, 0.482, 0.518]], [0.485, [1.000, 0.486, 0.514]], [0.487, [1.000, 0.486, 0.514]], [0.489, [1.000, 0.490, 0.510]], [0.491, [1.000, 0.490, 0.510]], [0.493, [1.000, 0.494, 0.506]], [0.495, [1.000, 0.494, 0.506]], [0.497, [1.000, 0.498, 0.502]], [0.499, [1.000, 0.498, 0.502]], [0.501, [1.000, 0.502, 0.498]], [0.503, [1.000, 0.502, 0.498]], [0.505, [1.000, 0.506, 0.494]], [0.507, [1.000, 0.506, 0.494]], [0.509, [1.000, 0.510, 0.490]], [0.511, [1.000, 0.510, 0.490]], [0.513, [1.000, 0.514, 0.486]], [0.515, [1.000, 0.514, 0.486]], [0.517, [1.000, 0.518, 0.482]], [0.519, [1.000, 0.518, 0.482]], [0.521, [1.000, 0.522, 0.478]], [0.523, [1.000, 0.522, 0.478]], [0.524, [1.000, 0.525, 0.475]], [0.526, [1.000, 0.525, 0.475]], [0.528, [1.000, 0.529, 0.471]], [0.530, [1.000, 0.529, 0.471]], [0.532, [1.000, 0.533, 0.467]], [0.534, [1.000, 0.533, 0.467]], [0.536, [1.000, 0.537, 0.463]], [0.538, [1.000, 0.537, 0.463]], [0.540, [1.000, 0.541, 0.459]], [0.542, [1.000, 0.541, 0.459]], [0.544, [1.000, 0.545, 0.455]], [0.546, [1.000, 0.545, 0.455]], [0.548, [1.000, 0.549, 0.451]], [0.550, [1.000, 0.549, 0.451]], [0.552, [1.000, 0.553, 0.447]], [0.554, [1.000, 0.553, 0.447]], [0.556, [1.000, 0.557, 0.443]], [0.558, [1.000, 0.557, 0.443]], [0.560, [1.000, 0.561, 0.439]], [0.562, [1.000, 0.561, 0.439]], [0.564, [1.000, 0.565, 0.435]], [0.566, [1.000, 0.565, 0.435]], [0.568, [1.000, 0.569, 0.431]], [0.569, [1.000, 0.569, 0.431]], [0.571, [1.000, 0.573, 0.427]], [0.573, [1.000, 0.573, 0.427]], [0.575, [1.000, 0.576, 0.424]], [0.577, [1.000, 0.576, 0.424]], [0.579, [1.000, 0.580, 0.420]], [0.581, [1.000, 0.580, 0.420]], [0.583, [1.000, 0.584, 0.416]], [0.585, [1.000, 0.584, 0.416]], [0.587, [1.000, 0.588, 0.412]], [0.589, [1.000, 0.588, 0.412]], [0.591, [1.000, 0.592, 0.408]], [0.593, [1.000, 0.592, 0.408]], [0.595, [1.000, 0.596, 0.404]], [0.597, [1.000, 0.596, 0.404]], [0.599, [1.000, 0.600, 0.400]], [0.601, [1.000, 0.600, 0.400]], [0.603, [1.000, 0.604, 0.396]], [0.605, [1.000, 0.604, 0.396]], [0.607, [1.000, 0.608, 0.392]], [0.609, [1.000, 0.608, 0.392]], [0.611, [1.000, 0.612, 0.388]], [0.613, [1.000, 0.612, 0.388]], [0.614, [1.000, 0.616, 0.384]], [0.616, [1.000, 0.616, 0.384]], [0.618, [1.000, 0.620, 0.380]], [0.620, [1.000, 0.620, 0.380]], [0.622, [1.000, 0.624, 0.376]], [0.624, [1.000, 0.624, 0.376]], [0.626, [1.000, 0.627, 0.373]], [0.628, [1.000, 0.627, 0.373]], [0.630, [1.000, 0.631, 0.369]], [0.632, [1.000, 0.631, 0.369]], [0.634, [1.000, 0.635, 0.365]], [0.636, [1.000, 0.635, 0.365]], [0.638, [1.000, 0.639, 0.361]], [0.640, [1.000, 0.639, 0.361]], [0.642, [1.000, 0.643, 0.357]], [0.644, [1.000, 0.643, 0.357]], [0.646, [1.000, 0.647, 0.353]], [0.648, [1.000, 0.647, 0.353]], [0.650, [1.000, 0.651, 0.349]], [0.652, [1.000, 0.651, 0.349]], [0.654, [1.000, 0.655, 0.345]], [0.656, [1.000, 0.655, 0.345]], [0.658, [1.000, 0.659, 0.341]], [0.659, [1.000, 0.659, 0.341]], [0.661, [1.000, 0.663, 0.337]], [0.663, [1.000, 0.663, 0.337]], [0.665, [1.000, 0.667, 0.333]], [0.667, [1.000, 0.667, 0.333]], [0.669, [1.000, 0.671, 0.329]], [0.671, [1.000, 0.671, 0.329]], [0.673, [1.000, 0.675, 0.325]], [0.675, [1.000, 0.675, 0.325]], [0.677, [1.000, 0.678, 0.322]], [0.679, [1.000, 0.678, 0.322]], [0.681, [1.000, 0.682, 0.318]], [0.683, [1.000, 0.682, 0.318]], [0.685, [1.000, 0.686, 0.314]], [0.687, [1.000, 0.686, 0.314]], [0.689, [1.000, 0.690, 0.310]], [0.691, [1.000, 0.690, 0.310]], [0.693, [1.000, 0.694, 0.306]], [0.695, [1.000, 0.694, 0.306]], [0.697, [1.000, 0.698, 0.302]], [0.699, [1.000, 0.698, 0.302]], [0.701, [1.000, 0.702, 0.298]], [0.703, [1.000, 0.702, 0.298]], [0.705, [1.000, 0.706, 0.294]], [0.706, [1.000, 0.706, 0.294]], [0.708, [1.000, 0.710, 0.290]], [0.710, [1.000, 0.710, 0.290]], [0.712, [1.000, 0.714, 0.286]], [0.714, [1.000, 0.714, 0.286]], [0.716, [1.000, 0.718, 0.282]], [0.718, [1.000, 0.718, 0.282]], [0.720, [1.000, 0.722, 0.278]], [0.722, [1.000, 0.722, 0.278]], [0.724, [1.000, 0.725, 0.275]], [0.726, [1.000, 0.725, 0.275]], [0.728, [1.000, 0.729, 0.271]], [0.730, [1.000, 0.729, 0.271]], [0.732, [1.000, 0.733, 0.267]], [0.734, [1.000, 0.733, 0.267]], [0.736, [1.000, 0.737, 0.263]], [0.738, [1.000, 0.737, 0.263]], [0.740, [1.000, 0.741, 0.259]], [0.742, [1.000, 0.741, 0.259]], [0.744, [1.000, 0.745, 0.255]], [0.746, [1.000, 0.745, 0.255]], [0.748, [1.000, 0.749, 0.251]], [0.750, [1.000, 0.749, 0.251]], [0.751, [1.000, 0.753, 0.247]], [0.753, [1.000, 0.753, 0.247]], [0.755, [1.000, 0.757, 0.243]], [0.757, [1.000, 0.757, 0.243]], [0.759, [1.000, 0.761, 0.239]], [0.761, [1.000, 0.761, 0.239]], [0.763, [1.000, 0.765, 0.235]], [0.765, [1.000, 0.765, 0.235]], [0.767, [1.000, 0.769, 0.231]], [0.769, [1.000, 0.769, 0.231]], [0.771, [1.000, 0.773, 0.227]], [0.773, [1.000, 0.773, 0.227]], [0.775, [1.000, 0.776, 0.224]], [0.777, [1.000, 0.776, 0.224]], [0.779, [1.000, 0.780, 0.220]], [0.781, [1.000, 0.780, 0.220]], [0.783, [1.000, 0.784, 0.216]], [0.785, [1.000, 0.784, 0.216]], [0.787, [1.000, 0.788, 0.212]], [0.789, [1.000, 0.788, 0.212]], [0.791, [1.000, 0.792, 0.208]], [0.793, [1.000, 0.792, 0.208]], [0.795, [1.000, 0.796, 0.204]], [0.796, [1.000, 0.796, 0.204]], [0.798, [1.000, 0.800, 0.200]], [0.800, [1.000, 0.800, 0.200]], [0.802, [1.000, 0.804, 0.196]], [0.804, [1.000, 0.804, 0.196]], [0.806, [1.000, 0.808, 0.192]], [0.808, [1.000, 0.808, 0.192]], [0.810, [1.000, 0.812, 0.188]], [0.812, [1.000, 0.812, 0.188]], [0.814, [1.000, 0.816, 0.184]], [0.816, [1.000, 0.816, 0.184]], [0.818, [1.000, 0.820, 0.180]], [0.820, [1.000, 0.820, 0.180]], [0.822, [1.000, 0.824, 0.176]], [0.824, [1.000, 0.824, 0.176]], [0.826, [1.000, 0.827, 0.173]], [0.828, [1.000, 0.827, 0.173]], [0.830, [1.000, 0.831, 0.169]], [0.832, [1.000, 0.831, 0.169]], [0.834, [1.000, 0.835, 0.165]], [0.836, [1.000, 0.835, 0.165]], [0.838, [1.000, 0.839, 0.161]], [0.840, [1.000, 0.839, 0.161]], [0.841, [1.000, 0.843, 0.157]], [0.843, [1.000, 0.843, 0.157]], [0.845, [1.000, 0.847, 0.153]], [0.847, [1.000, 0.847, 0.153]], [0.849, [1.000, 0.851, 0.149]], [0.851, [1.000, 0.851, 0.149]], [0.853, [1.000, 0.855, 0.145]], [0.855, [1.000, 0.855, 0.145]], [0.857, [1.000, 0.859, 0.141]], [0.859, [1.000, 0.859, 0.141]], [0.861, [1.000, 0.863, 0.137]], [0.863, [1.000, 0.863, 0.137]], [0.865, [1.000, 0.867, 0.133]], [0.867, [1.000, 0.867, 0.133]], [0.869, [1.000, 0.871, 0.129]], [0.871, [1.000, 0.871, 0.129]], [0.873, [1.000, 0.875, 0.125]], [0.875, [1.000, 0.875, 0.125]], [0.877, [1.000, 0.878, 0.122]], [0.879, [1.000, 0.878, 0.122]], [0.881, [1.000, 0.882, 0.118]], [0.883, [1.000, 0.882, 0.118]], [0.885, [1.000, 0.886, 0.114]], [0.886, [1.000, 0.886, 0.114]], [0.888, [1.000, 0.890, 0.110]], [0.890, [1.000, 0.890, 0.110]], [0.892, [1.000, 0.894, 0.106]], [0.894, [1.000, 0.894, 0.106]], [0.896, [1.000, 0.898, 0.102]], [0.898, [1.000, 0.898, 0.102]], [0.900, [1.000, 0.902, 0.098]], [0.902, [1.000, 0.902, 0.098]], [0.904, [1.000, 0.906, 0.094]], [0.906, [1.000, 0.906, 0.094]], [0.908, [1.000, 0.910, 0.090]], [0.910, [1.000, 0.910, 0.090]], [0.912, [1.000, 0.914, 0.086]], [0.914, [1.000, 0.914, 0.086]], [0.916, [1.000, 0.918, 0.082]], [0.918, [1.000, 0.918, 0.082]], [0.920, [1.000, 0.922, 0.078]], [0.922, [1.000, 0.922, 0.078]], [0.924, [1.000, 0.925, 0.075]], [0.926, [1.000, 0.925, 0.075]], [0.928, [1.000, 0.929, 0.071]], [0.930, [1.000, 0.929, 0.071]], [0.932, [1.000, 0.933, 0.067]], [0.933, [1.000, 0.933, 0.067]], [0.935, [1.000, 0.937, 0.063]], [0.937, [1.000, 0.937, 0.063]], [0.939, [1.000, 0.941, 0.059]], [0.941, [1.000, 0.941, 0.059]], [0.943, [1.000, 0.945, 0.055]], [0.945, [1.000, 0.945, 0.055]], [0.947, [1.000, 0.949, 0.051]], [0.949, [1.000, 0.949, 0.051]], [0.951, [1.000, 0.953, 0.047]], [0.953, [1.000, 0.953, 0.047]], [0.955, [1.000, 0.957, 0.043]], [0.957, [1.000, 0.957, 0.043]], [0.959, [1.000, 0.961, 0.039]], [0.961, [1.000, 0.961, 0.039]], [0.963, [1.000, 0.965, 0.035]], [0.965, [1.000, 0.965, 0.035]], [0.967, [1.000, 0.969, 0.031]], [0.969, [1.000, 0.969, 0.031]], [0.971, [1.000, 0.973, 0.027]], [0.973, [1.000, 0.973, 0.027]], [0.975, [1.000, 0.976, 0.024]], [0.977, [1.000, 0.976, 0.024]], [0.978, [1.000, 0.980, 0.020]], [0.980, [1.000, 0.980, 0.020]], [0.982, [1.000, 0.984, 0.016]], [0.984, [1.000, 0.984, 0.016]], [0.986, [1.000, 0.988, 0.012]], [0.988, [1.000, 0.988, 0.012]], [0.990, [1.000, 0.992, 0.008]], [0.992, [1.000, 0.992, 0.008]], [0.994, [1.000, 0.996, 0.004]], [0.996, [1.000, 0.996, 0.004]], [0.998, [1.000, 1.000, 0.000]], [1.000, [1.000, 1.000, 0.000]]]; +var summer = [[0.000, [0.000, 0.500, 0.400]], [0.002, [0.000, 0.500, 0.400]], [0.004, [0.004, 0.502, 0.400]], [0.006, [0.004, 0.502, 0.400]], [0.008, [0.008, 0.504, 0.400]], [0.010, [0.008, 0.504, 0.400]], [0.012, [0.012, 0.506, 0.400]], [0.014, [0.012, 0.506, 0.400]], [0.016, [0.016, 0.508, 0.400]], [0.018, [0.016, 0.508, 0.400]], [0.020, [0.020, 0.510, 0.400]], [0.022, [0.020, 0.510, 0.400]], [0.023, [0.024, 0.512, 0.400]], [0.025, [0.024, 0.512, 0.400]], [0.027, [0.027, 0.514, 0.400]], [0.029, [0.027, 0.514, 0.400]], [0.031, [0.031, 0.516, 0.400]], [0.033, [0.031, 0.516, 0.400]], [0.035, [0.035, 0.518, 0.400]], [0.037, [0.035, 0.518, 0.400]], [0.039, [0.039, 0.520, 0.400]], [0.041, [0.039, 0.520, 0.400]], [0.043, [0.043, 0.522, 0.400]], [0.045, [0.043, 0.522, 0.400]], [0.047, [0.047, 0.524, 0.400]], [0.049, [0.047, 0.524, 0.400]], [0.051, [0.051, 0.525, 0.400]], [0.053, [0.051, 0.525, 0.400]], [0.055, [0.055, 0.527, 0.400]], [0.057, [0.055, 0.527, 0.400]], [0.059, [0.059, 0.529, 0.400]], [0.061, [0.059, 0.529, 0.400]], [0.063, [0.063, 0.531, 0.400]], [0.065, [0.063, 0.531, 0.400]], [0.067, [0.067, 0.533, 0.400]], [0.068, [0.067, 0.533, 0.400]], [0.070, [0.071, 0.535, 0.400]], [0.072, [0.071, 0.535, 0.400]], [0.074, [0.075, 0.537, 0.400]], [0.076, [0.075, 0.537, 0.400]], [0.078, [0.078, 0.539, 0.400]], [0.080, [0.078, 0.539, 0.400]], [0.082, [0.082, 0.541, 0.400]], [0.084, [0.082, 0.541, 0.400]], [0.086, [0.086, 0.543, 0.400]], [0.088, [0.086, 0.543, 0.400]], [0.090, [0.090, 0.545, 0.400]], [0.092, [0.090, 0.545, 0.400]], [0.094, [0.094, 0.547, 0.400]], [0.096, [0.094, 0.547, 0.400]], [0.098, [0.098, 0.549, 0.400]], [0.100, [0.098, 0.549, 0.400]], [0.102, [0.102, 0.551, 0.400]], [0.104, [0.102, 0.551, 0.400]], [0.106, [0.106, 0.553, 0.400]], [0.108, [0.106, 0.553, 0.400]], [0.110, [0.110, 0.555, 0.400]], [0.112, [0.110, 0.555, 0.400]], [0.114, [0.114, 0.557, 0.400]], [0.115, [0.114, 0.557, 0.400]], [0.117, [0.118, 0.559, 0.400]], [0.119, [0.118, 0.559, 0.400]], [0.121, [0.122, 0.561, 0.400]], [0.123, [0.122, 0.561, 0.400]], [0.125, [0.125, 0.563, 0.400]], [0.127, [0.125, 0.563, 0.400]], [0.129, [0.129, 0.565, 0.400]], [0.131, [0.129, 0.565, 0.400]], [0.133, [0.133, 0.567, 0.400]], [0.135, [0.133, 0.567, 0.400]], [0.137, [0.137, 0.569, 0.400]], [0.139, [0.137, 0.569, 0.400]], [0.141, [0.141, 0.571, 0.400]], [0.143, [0.141, 0.571, 0.400]], [0.145, [0.145, 0.573, 0.400]], [0.147, [0.145, 0.573, 0.400]], [0.149, [0.149, 0.575, 0.400]], [0.151, [0.149, 0.575, 0.400]], [0.153, [0.153, 0.576, 0.400]], [0.155, [0.153, 0.576, 0.400]], [0.157, [0.157, 0.578, 0.400]], [0.159, [0.157, 0.578, 0.400]], [0.160, [0.161, 0.580, 0.400]], [0.162, [0.161, 0.580, 0.400]], [0.164, [0.165, 0.582, 0.400]], [0.166, [0.165, 0.582, 0.400]], [0.168, [0.169, 0.584, 0.400]], [0.170, [0.169, 0.584, 0.400]], [0.172, [0.173, 0.586, 0.400]], [0.174, [0.173, 0.586, 0.400]], [0.176, [0.176, 0.588, 0.400]], [0.178, [0.176, 0.588, 0.400]], [0.180, [0.180, 0.590, 0.400]], [0.182, [0.180, 0.590, 0.400]], [0.184, [0.184, 0.592, 0.400]], [0.186, [0.184, 0.592, 0.400]], [0.188, [0.188, 0.594, 0.400]], [0.190, [0.188, 0.594, 0.400]], [0.192, [0.192, 0.596, 0.400]], [0.194, [0.192, 0.596, 0.400]], [0.196, [0.196, 0.598, 0.400]], [0.198, [0.196, 0.598, 0.400]], [0.200, [0.200, 0.600, 0.400]], [0.202, [0.200, 0.600, 0.400]], [0.204, [0.204, 0.602, 0.400]], [0.205, [0.204, 0.602, 0.400]], [0.207, [0.208, 0.604, 0.400]], [0.209, [0.208, 0.604, 0.400]], [0.211, [0.212, 0.606, 0.400]], [0.213, [0.212, 0.606, 0.400]], [0.215, [0.216, 0.608, 0.400]], [0.217, [0.216, 0.608, 0.400]], [0.219, [0.220, 0.610, 0.400]], [0.221, [0.220, 0.610, 0.400]], [0.223, [0.224, 0.612, 0.400]], [0.225, [0.224, 0.612, 0.400]], [0.227, [0.227, 0.614, 0.400]], [0.229, [0.227, 0.614, 0.400]], [0.231, [0.231, 0.616, 0.400]], [0.233, [0.231, 0.616, 0.400]], [0.235, [0.235, 0.618, 0.400]], [0.237, [0.235, 0.618, 0.400]], [0.239, [0.239, 0.620, 0.400]], [0.241, [0.239, 0.620, 0.400]], [0.243, [0.243, 0.622, 0.400]], [0.245, [0.243, 0.622, 0.400]], [0.247, [0.247, 0.624, 0.400]], [0.249, [0.247, 0.624, 0.400]], [0.250, [0.251, 0.625, 0.400]], [0.252, [0.251, 0.625, 0.400]], [0.254, [0.255, 0.627, 0.400]], [0.256, [0.255, 0.627, 0.400]], [0.258, [0.259, 0.629, 0.400]], [0.260, [0.259, 0.629, 0.400]], [0.262, [0.263, 0.631, 0.400]], [0.264, [0.263, 0.631, 0.400]], [0.266, [0.267, 0.633, 0.400]], [0.268, [0.267, 0.633, 0.400]], [0.270, [0.271, 0.635, 0.400]], [0.272, [0.271, 0.635, 0.400]], [0.274, [0.275, 0.637, 0.400]], [0.276, [0.275, 0.637, 0.400]], [0.278, [0.278, 0.639, 0.400]], [0.280, [0.278, 0.639, 0.400]], [0.282, [0.282, 0.641, 0.400]], [0.284, [0.282, 0.641, 0.400]], [0.286, [0.286, 0.643, 0.400]], [0.288, [0.286, 0.643, 0.400]], [0.290, [0.290, 0.645, 0.400]], [0.292, [0.290, 0.645, 0.400]], [0.294, [0.294, 0.647, 0.400]], [0.295, [0.294, 0.647, 0.400]], [0.297, [0.298, 0.649, 0.400]], [0.299, [0.298, 0.649, 0.400]], [0.301, [0.302, 0.651, 0.400]], [0.303, [0.302, 0.651, 0.400]], [0.305, [0.306, 0.653, 0.400]], [0.307, [0.306, 0.653, 0.400]], [0.309, [0.310, 0.655, 0.400]], [0.311, [0.310, 0.655, 0.400]], [0.313, [0.314, 0.657, 0.400]], [0.315, [0.314, 0.657, 0.400]], [0.317, [0.318, 0.659, 0.400]], [0.319, [0.318, 0.659, 0.400]], [0.321, [0.322, 0.661, 0.400]], [0.323, [0.322, 0.661, 0.400]], [0.325, [0.325, 0.663, 0.400]], [0.327, [0.325, 0.663, 0.400]], [0.329, [0.329, 0.665, 0.400]], [0.331, [0.329, 0.665, 0.400]], [0.333, [0.333, 0.667, 0.400]], [0.335, [0.333, 0.667, 0.400]], [0.337, [0.337, 0.669, 0.400]], [0.339, [0.337, 0.669, 0.400]], [0.341, [0.341, 0.671, 0.400]], [0.342, [0.341, 0.671, 0.400]], [0.344, [0.345, 0.673, 0.400]], [0.346, [0.345, 0.673, 0.400]], [0.348, [0.349, 0.675, 0.400]], [0.350, [0.349, 0.675, 0.400]], [0.352, [0.353, 0.676, 0.400]], [0.354, [0.353, 0.676, 0.400]], [0.356, [0.357, 0.678, 0.400]], [0.358, [0.357, 0.678, 0.400]], [0.360, [0.361, 0.680, 0.400]], [0.362, [0.361, 0.680, 0.400]], [0.364, [0.365, 0.682, 0.400]], [0.366, [0.365, 0.682, 0.400]], [0.368, [0.369, 0.684, 0.400]], [0.370, [0.369, 0.684, 0.400]], [0.372, [0.373, 0.686, 0.400]], [0.374, [0.373, 0.686, 0.400]], [0.376, [0.376, 0.688, 0.400]], [0.378, [0.376, 0.688, 0.400]], [0.380, [0.380, 0.690, 0.400]], [0.382, [0.380, 0.690, 0.400]], [0.384, [0.384, 0.692, 0.400]], [0.386, [0.384, 0.692, 0.400]], [0.387, [0.388, 0.694, 0.400]], [0.389, [0.388, 0.694, 0.400]], [0.391, [0.392, 0.696, 0.400]], [0.393, [0.392, 0.696, 0.400]], [0.395, [0.396, 0.698, 0.400]], [0.397, [0.396, 0.698, 0.400]], [0.399, [0.400, 0.700, 0.400]], [0.401, [0.400, 0.700, 0.400]], [0.403, [0.404, 0.702, 0.400]], [0.405, [0.404, 0.702, 0.400]], [0.407, [0.408, 0.704, 0.400]], [0.409, [0.408, 0.704, 0.400]], [0.411, [0.412, 0.706, 0.400]], [0.413, [0.412, 0.706, 0.400]], [0.415, [0.416, 0.708, 0.400]], [0.417, [0.416, 0.708, 0.400]], [0.419, [0.420, 0.710, 0.400]], [0.421, [0.420, 0.710, 0.400]], [0.423, [0.424, 0.712, 0.400]], [0.425, [0.424, 0.712, 0.400]], [0.427, [0.427, 0.714, 0.400]], [0.429, [0.427, 0.714, 0.400]], [0.431, [0.431, 0.716, 0.400]], [0.432, [0.431, 0.716, 0.400]], [0.434, [0.435, 0.718, 0.400]], [0.436, [0.435, 0.718, 0.400]], [0.438, [0.439, 0.720, 0.400]], [0.440, [0.439, 0.720, 0.400]], [0.442, [0.443, 0.722, 0.400]], [0.444, [0.443, 0.722, 0.400]], [0.446, [0.447, 0.724, 0.400]], [0.448, [0.447, 0.724, 0.400]], [0.450, [0.451, 0.725, 0.400]], [0.452, [0.451, 0.725, 0.400]], [0.454, [0.455, 0.727, 0.400]], [0.456, [0.455, 0.727, 0.400]], [0.458, [0.459, 0.729, 0.400]], [0.460, [0.459, 0.729, 0.400]], [0.462, [0.463, 0.731, 0.400]], [0.464, [0.463, 0.731, 0.400]], [0.466, [0.467, 0.733, 0.400]], [0.468, [0.467, 0.733, 0.400]], [0.470, [0.471, 0.735, 0.400]], [0.472, [0.471, 0.735, 0.400]], [0.474, [0.475, 0.737, 0.400]], [0.476, [0.475, 0.737, 0.400]], [0.477, [0.478, 0.739, 0.400]], [0.479, [0.478, 0.739, 0.400]], [0.481, [0.482, 0.741, 0.400]], [0.483, [0.482, 0.741, 0.400]], [0.485, [0.486, 0.743, 0.400]], [0.487, [0.486, 0.743, 0.400]], [0.489, [0.490, 0.745, 0.400]], [0.491, [0.490, 0.745, 0.400]], [0.493, [0.494, 0.747, 0.400]], [0.495, [0.494, 0.747, 0.400]], [0.497, [0.498, 0.749, 0.400]], [0.499, [0.498, 0.749, 0.400]], [0.501, [0.502, 0.751, 0.400]], [0.503, [0.502, 0.751, 0.400]], [0.505, [0.506, 0.753, 0.400]], [0.507, [0.506, 0.753, 0.400]], [0.509, [0.510, 0.755, 0.400]], [0.511, [0.510, 0.755, 0.400]], [0.513, [0.514, 0.757, 0.400]], [0.515, [0.514, 0.757, 0.400]], [0.517, [0.518, 0.759, 0.400]], [0.519, [0.518, 0.759, 0.400]], [0.521, [0.522, 0.761, 0.400]], [0.523, [0.522, 0.761, 0.400]], [0.524, [0.525, 0.763, 0.400]], [0.526, [0.525, 0.763, 0.400]], [0.528, [0.529, 0.765, 0.400]], [0.530, [0.529, 0.765, 0.400]], [0.532, [0.533, 0.767, 0.400]], [0.534, [0.533, 0.767, 0.400]], [0.536, [0.537, 0.769, 0.400]], [0.538, [0.537, 0.769, 0.400]], [0.540, [0.541, 0.771, 0.400]], [0.542, [0.541, 0.771, 0.400]], [0.544, [0.545, 0.773, 0.400]], [0.546, [0.545, 0.773, 0.400]], [0.548, [0.549, 0.775, 0.400]], [0.550, [0.549, 0.775, 0.400]], [0.552, [0.553, 0.776, 0.400]], [0.554, [0.553, 0.776, 0.400]], [0.556, [0.557, 0.778, 0.400]], [0.558, [0.557, 0.778, 0.400]], [0.560, [0.561, 0.780, 0.400]], [0.562, [0.561, 0.780, 0.400]], [0.564, [0.565, 0.782, 0.400]], [0.566, [0.565, 0.782, 0.400]], [0.568, [0.569, 0.784, 0.400]], [0.569, [0.569, 0.784, 0.400]], [0.571, [0.573, 0.786, 0.400]], [0.573, [0.573, 0.786, 0.400]], [0.575, [0.576, 0.788, 0.400]], [0.577, [0.576, 0.788, 0.400]], [0.579, [0.580, 0.790, 0.400]], [0.581, [0.580, 0.790, 0.400]], [0.583, [0.584, 0.792, 0.400]], [0.585, [0.584, 0.792, 0.400]], [0.587, [0.588, 0.794, 0.400]], [0.589, [0.588, 0.794, 0.400]], [0.591, [0.592, 0.796, 0.400]], [0.593, [0.592, 0.796, 0.400]], [0.595, [0.596, 0.798, 0.400]], [0.597, [0.596, 0.798, 0.400]], [0.599, [0.600, 0.800, 0.400]], [0.601, [0.600, 0.800, 0.400]], [0.603, [0.604, 0.802, 0.400]], [0.605, [0.604, 0.802, 0.400]], [0.607, [0.608, 0.804, 0.400]], [0.609, [0.608, 0.804, 0.400]], [0.611, [0.612, 0.806, 0.400]], [0.613, [0.612, 0.806, 0.400]], [0.614, [0.616, 0.808, 0.400]], [0.616, [0.616, 0.808, 0.400]], [0.618, [0.620, 0.810, 0.400]], [0.620, [0.620, 0.810, 0.400]], [0.622, [0.624, 0.812, 0.400]], [0.624, [0.624, 0.812, 0.400]], [0.626, [0.627, 0.814, 0.400]], [0.628, [0.627, 0.814, 0.400]], [0.630, [0.631, 0.816, 0.400]], [0.632, [0.631, 0.816, 0.400]], [0.634, [0.635, 0.818, 0.400]], [0.636, [0.635, 0.818, 0.400]], [0.638, [0.639, 0.820, 0.400]], [0.640, [0.639, 0.820, 0.400]], [0.642, [0.643, 0.822, 0.400]], [0.644, [0.643, 0.822, 0.400]], [0.646, [0.647, 0.824, 0.400]], [0.648, [0.647, 0.824, 0.400]], [0.650, [0.651, 0.825, 0.400]], [0.652, [0.651, 0.825, 0.400]], [0.654, [0.655, 0.827, 0.400]], [0.656, [0.655, 0.827, 0.400]], [0.658, [0.659, 0.829, 0.400]], [0.659, [0.659, 0.829, 0.400]], [0.661, [0.663, 0.831, 0.400]], [0.663, [0.663, 0.831, 0.400]], [0.665, [0.667, 0.833, 0.400]], [0.667, [0.667, 0.833, 0.400]], [0.669, [0.671, 0.835, 0.400]], [0.671, [0.671, 0.835, 0.400]], [0.673, [0.675, 0.837, 0.400]], [0.675, [0.675, 0.837, 0.400]], [0.677, [0.678, 0.839, 0.400]], [0.679, [0.678, 0.839, 0.400]], [0.681, [0.682, 0.841, 0.400]], [0.683, [0.682, 0.841, 0.400]], [0.685, [0.686, 0.843, 0.400]], [0.687, [0.686, 0.843, 0.400]], [0.689, [0.690, 0.845, 0.400]], [0.691, [0.690, 0.845, 0.400]], [0.693, [0.694, 0.847, 0.400]], [0.695, [0.694, 0.847, 0.400]], [0.697, [0.698, 0.849, 0.400]], [0.699, [0.698, 0.849, 0.400]], [0.701, [0.702, 0.851, 0.400]], [0.703, [0.702, 0.851, 0.400]], [0.705, [0.706, 0.853, 0.400]], [0.706, [0.706, 0.853, 0.400]], [0.708, [0.710, 0.855, 0.400]], [0.710, [0.710, 0.855, 0.400]], [0.712, [0.714, 0.857, 0.400]], [0.714, [0.714, 0.857, 0.400]], [0.716, [0.718, 0.859, 0.400]], [0.718, [0.718, 0.859, 0.400]], [0.720, [0.722, 0.861, 0.400]], [0.722, [0.722, 0.861, 0.400]], [0.724, [0.725, 0.863, 0.400]], [0.726, [0.725, 0.863, 0.400]], [0.728, [0.729, 0.865, 0.400]], [0.730, [0.729, 0.865, 0.400]], [0.732, [0.733, 0.867, 0.400]], [0.734, [0.733, 0.867, 0.400]], [0.736, [0.737, 0.869, 0.400]], [0.738, [0.737, 0.869, 0.400]], [0.740, [0.741, 0.871, 0.400]], [0.742, [0.741, 0.871, 0.400]], [0.744, [0.745, 0.873, 0.400]], [0.746, [0.745, 0.873, 0.400]], [0.748, [0.749, 0.875, 0.400]], [0.750, [0.749, 0.875, 0.400]], [0.751, [0.753, 0.876, 0.400]], [0.753, [0.753, 0.876, 0.400]], [0.755, [0.757, 0.878, 0.400]], [0.757, [0.757, 0.878, 0.400]], [0.759, [0.761, 0.880, 0.400]], [0.761, [0.761, 0.880, 0.400]], [0.763, [0.765, 0.882, 0.400]], [0.765, [0.765, 0.882, 0.400]], [0.767, [0.769, 0.884, 0.400]], [0.769, [0.769, 0.884, 0.400]], [0.771, [0.773, 0.886, 0.400]], [0.773, [0.773, 0.886, 0.400]], [0.775, [0.776, 0.888, 0.400]], [0.777, [0.776, 0.888, 0.400]], [0.779, [0.780, 0.890, 0.400]], [0.781, [0.780, 0.890, 0.400]], [0.783, [0.784, 0.892, 0.400]], [0.785, [0.784, 0.892, 0.400]], [0.787, [0.788, 0.894, 0.400]], [0.789, [0.788, 0.894, 0.400]], [0.791, [0.792, 0.896, 0.400]], [0.793, [0.792, 0.896, 0.400]], [0.795, [0.796, 0.898, 0.400]], [0.796, [0.796, 0.898, 0.400]], [0.798, [0.800, 0.900, 0.400]], [0.800, [0.800, 0.900, 0.400]], [0.802, [0.804, 0.902, 0.400]], [0.804, [0.804, 0.902, 0.400]], [0.806, [0.808, 0.904, 0.400]], [0.808, [0.808, 0.904, 0.400]], [0.810, [0.812, 0.906, 0.400]], [0.812, [0.812, 0.906, 0.400]], [0.814, [0.816, 0.908, 0.400]], [0.816, [0.816, 0.908, 0.400]], [0.818, [0.820, 0.910, 0.400]], [0.820, [0.820, 0.910, 0.400]], [0.822, [0.824, 0.912, 0.400]], [0.824, [0.824, 0.912, 0.400]], [0.826, [0.827, 0.914, 0.400]], [0.828, [0.827, 0.914, 0.400]], [0.830, [0.831, 0.916, 0.400]], [0.832, [0.831, 0.916, 0.400]], [0.834, [0.835, 0.918, 0.400]], [0.836, [0.835, 0.918, 0.400]], [0.838, [0.839, 0.920, 0.400]], [0.840, [0.839, 0.920, 0.400]], [0.841, [0.843, 0.922, 0.400]], [0.843, [0.843, 0.922, 0.400]], [0.845, [0.847, 0.924, 0.400]], [0.847, [0.847, 0.924, 0.400]], [0.849, [0.851, 0.925, 0.400]], [0.851, [0.851, 0.925, 0.400]], [0.853, [0.855, 0.927, 0.400]], [0.855, [0.855, 0.927, 0.400]], [0.857, [0.859, 0.929, 0.400]], [0.859, [0.859, 0.929, 0.400]], [0.861, [0.863, 0.931, 0.400]], [0.863, [0.863, 0.931, 0.400]], [0.865, [0.867, 0.933, 0.400]], [0.867, [0.867, 0.933, 0.400]], [0.869, [0.871, 0.935, 0.400]], [0.871, [0.871, 0.935, 0.400]], [0.873, [0.875, 0.937, 0.400]], [0.875, [0.875, 0.937, 0.400]], [0.877, [0.878, 0.939, 0.400]], [0.879, [0.878, 0.939, 0.400]], [0.881, [0.882, 0.941, 0.400]], [0.883, [0.882, 0.941, 0.400]], [0.885, [0.886, 0.943, 0.400]], [0.886, [0.886, 0.943, 0.400]], [0.888, [0.890, 0.945, 0.400]], [0.890, [0.890, 0.945, 0.400]], [0.892, [0.894, 0.947, 0.400]], [0.894, [0.894, 0.947, 0.400]], [0.896, [0.898, 0.949, 0.400]], [0.898, [0.898, 0.949, 0.400]], [0.900, [0.902, 0.951, 0.400]], [0.902, [0.902, 0.951, 0.400]], [0.904, [0.906, 0.953, 0.400]], [0.906, [0.906, 0.953, 0.400]], [0.908, [0.910, 0.955, 0.400]], [0.910, [0.910, 0.955, 0.400]], [0.912, [0.914, 0.957, 0.400]], [0.914, [0.914, 0.957, 0.400]], [0.916, [0.918, 0.959, 0.400]], [0.918, [0.918, 0.959, 0.400]], [0.920, [0.922, 0.961, 0.400]], [0.922, [0.922, 0.961, 0.400]], [0.924, [0.925, 0.963, 0.400]], [0.926, [0.925, 0.963, 0.400]], [0.928, [0.929, 0.965, 0.400]], [0.930, [0.929, 0.965, 0.400]], [0.932, [0.933, 0.967, 0.400]], [0.933, [0.933, 0.967, 0.400]], [0.935, [0.937, 0.969, 0.400]], [0.937, [0.937, 0.969, 0.400]], [0.939, [0.941, 0.971, 0.400]], [0.941, [0.941, 0.971, 0.400]], [0.943, [0.945, 0.973, 0.400]], [0.945, [0.945, 0.973, 0.400]], [0.947, [0.949, 0.975, 0.400]], [0.949, [0.949, 0.975, 0.400]], [0.951, [0.953, 0.976, 0.400]], [0.953, [0.953, 0.976, 0.400]], [0.955, [0.957, 0.978, 0.400]], [0.957, [0.957, 0.978, 0.400]], [0.959, [0.961, 0.980, 0.400]], [0.961, [0.961, 0.980, 0.400]], [0.963, [0.965, 0.982, 0.400]], [0.965, [0.965, 0.982, 0.400]], [0.967, [0.969, 0.984, 0.400]], [0.969, [0.969, 0.984, 0.400]], [0.971, [0.973, 0.986, 0.400]], [0.973, [0.973, 0.986, 0.400]], [0.975, [0.976, 0.988, 0.400]], [0.977, [0.976, 0.988, 0.400]], [0.978, [0.980, 0.990, 0.400]], [0.980, [0.980, 0.990, 0.400]], [0.982, [0.984, 0.992, 0.400]], [0.984, [0.984, 0.992, 0.400]], [0.986, [0.988, 0.994, 0.400]], [0.988, [0.988, 0.994, 0.400]], [0.990, [0.992, 0.996, 0.400]], [0.992, [0.992, 0.996, 0.400]], [0.994, [0.996, 0.998, 0.400]], [0.996, [0.996, 0.998, 0.400]], [0.998, [1.000, 1.000, 0.400]], [1.000, [1.000, 1.000, 0.400]]]; +var winter = [[0.000, [0.000, 0.000, 1.000]], [0.002, [0.000, 0.000, 1.000]], [0.004, [0.000, 0.004, 0.998]], [0.006, [0.000, 0.004, 0.998]], [0.008, [0.000, 0.008, 0.996]], [0.010, [0.000, 0.008, 0.996]], [0.012, [0.000, 0.012, 0.994]], [0.014, [0.000, 0.012, 0.994]], [0.016, [0.000, 0.016, 0.992]], [0.018, [0.000, 0.016, 0.992]], [0.020, [0.000, 0.020, 0.990]], [0.022, [0.000, 0.020, 0.990]], [0.023, [0.000, 0.024, 0.988]], [0.025, [0.000, 0.024, 0.988]], [0.027, [0.000, 0.027, 0.986]], [0.029, [0.000, 0.027, 0.986]], [0.031, [0.000, 0.031, 0.984]], [0.033, [0.000, 0.031, 0.984]], [0.035, [0.000, 0.035, 0.982]], [0.037, [0.000, 0.035, 0.982]], [0.039, [0.000, 0.039, 0.980]], [0.041, [0.000, 0.039, 0.980]], [0.043, [0.000, 0.043, 0.978]], [0.045, [0.000, 0.043, 0.978]], [0.047, [0.000, 0.047, 0.976]], [0.049, [0.000, 0.047, 0.976]], [0.051, [0.000, 0.051, 0.975]], [0.053, [0.000, 0.051, 0.975]], [0.055, [0.000, 0.055, 0.973]], [0.057, [0.000, 0.055, 0.973]], [0.059, [0.000, 0.059, 0.971]], [0.061, [0.000, 0.059, 0.971]], [0.063, [0.000, 0.063, 0.969]], [0.065, [0.000, 0.063, 0.969]], [0.067, [0.000, 0.067, 0.967]], [0.068, [0.000, 0.067, 0.967]], [0.070, [0.000, 0.071, 0.965]], [0.072, [0.000, 0.071, 0.965]], [0.074, [0.000, 0.075, 0.963]], [0.076, [0.000, 0.075, 0.963]], [0.078, [0.000, 0.078, 0.961]], [0.080, [0.000, 0.078, 0.961]], [0.082, [0.000, 0.082, 0.959]], [0.084, [0.000, 0.082, 0.959]], [0.086, [0.000, 0.086, 0.957]], [0.088, [0.000, 0.086, 0.957]], [0.090, [0.000, 0.090, 0.955]], [0.092, [0.000, 0.090, 0.955]], [0.094, [0.000, 0.094, 0.953]], [0.096, [0.000, 0.094, 0.953]], [0.098, [0.000, 0.098, 0.951]], [0.100, [0.000, 0.098, 0.951]], [0.102, [0.000, 0.102, 0.949]], [0.104, [0.000, 0.102, 0.949]], [0.106, [0.000, 0.106, 0.947]], [0.108, [0.000, 0.106, 0.947]], [0.110, [0.000, 0.110, 0.945]], [0.112, [0.000, 0.110, 0.945]], [0.114, [0.000, 0.114, 0.943]], [0.115, [0.000, 0.114, 0.943]], [0.117, [0.000, 0.118, 0.941]], [0.119, [0.000, 0.118, 0.941]], [0.121, [0.000, 0.122, 0.939]], [0.123, [0.000, 0.122, 0.939]], [0.125, [0.000, 0.125, 0.937]], [0.127, [0.000, 0.125, 0.937]], [0.129, [0.000, 0.129, 0.935]], [0.131, [0.000, 0.129, 0.935]], [0.133, [0.000, 0.133, 0.933]], [0.135, [0.000, 0.133, 0.933]], [0.137, [0.000, 0.137, 0.931]], [0.139, [0.000, 0.137, 0.931]], [0.141, [0.000, 0.141, 0.929]], [0.143, [0.000, 0.141, 0.929]], [0.145, [0.000, 0.145, 0.927]], [0.147, [0.000, 0.145, 0.927]], [0.149, [0.000, 0.149, 0.925]], [0.151, [0.000, 0.149, 0.925]], [0.153, [0.000, 0.153, 0.924]], [0.155, [0.000, 0.153, 0.924]], [0.157, [0.000, 0.157, 0.922]], [0.159, [0.000, 0.157, 0.922]], [0.160, [0.000, 0.161, 0.920]], [0.162, [0.000, 0.161, 0.920]], [0.164, [0.000, 0.165, 0.918]], [0.166, [0.000, 0.165, 0.918]], [0.168, [0.000, 0.169, 0.916]], [0.170, [0.000, 0.169, 0.916]], [0.172, [0.000, 0.173, 0.914]], [0.174, [0.000, 0.173, 0.914]], [0.176, [0.000, 0.176, 0.912]], [0.178, [0.000, 0.176, 0.912]], [0.180, [0.000, 0.180, 0.910]], [0.182, [0.000, 0.180, 0.910]], [0.184, [0.000, 0.184, 0.908]], [0.186, [0.000, 0.184, 0.908]], [0.188, [0.000, 0.188, 0.906]], [0.190, [0.000, 0.188, 0.906]], [0.192, [0.000, 0.192, 0.904]], [0.194, [0.000, 0.192, 0.904]], [0.196, [0.000, 0.196, 0.902]], [0.198, [0.000, 0.196, 0.902]], [0.200, [0.000, 0.200, 0.900]], [0.202, [0.000, 0.200, 0.900]], [0.204, [0.000, 0.204, 0.898]], [0.205, [0.000, 0.204, 0.898]], [0.207, [0.000, 0.208, 0.896]], [0.209, [0.000, 0.208, 0.896]], [0.211, [0.000, 0.212, 0.894]], [0.213, [0.000, 0.212, 0.894]], [0.215, [0.000, 0.216, 0.892]], [0.217, [0.000, 0.216, 0.892]], [0.219, [0.000, 0.220, 0.890]], [0.221, [0.000, 0.220, 0.890]], [0.223, [0.000, 0.224, 0.888]], [0.225, [0.000, 0.224, 0.888]], [0.227, [0.000, 0.227, 0.886]], [0.229, [0.000, 0.227, 0.886]], [0.231, [0.000, 0.231, 0.884]], [0.233, [0.000, 0.231, 0.884]], [0.235, [0.000, 0.235, 0.882]], [0.237, [0.000, 0.235, 0.882]], [0.239, [0.000, 0.239, 0.880]], [0.241, [0.000, 0.239, 0.880]], [0.243, [0.000, 0.243, 0.878]], [0.245, [0.000, 0.243, 0.878]], [0.247, [0.000, 0.247, 0.876]], [0.249, [0.000, 0.247, 0.876]], [0.250, [0.000, 0.251, 0.875]], [0.252, [0.000, 0.251, 0.875]], [0.254, [0.000, 0.255, 0.873]], [0.256, [0.000, 0.255, 0.873]], [0.258, [0.000, 0.259, 0.871]], [0.260, [0.000, 0.259, 0.871]], [0.262, [0.000, 0.263, 0.869]], [0.264, [0.000, 0.263, 0.869]], [0.266, [0.000, 0.267, 0.867]], [0.268, [0.000, 0.267, 0.867]], [0.270, [0.000, 0.271, 0.865]], [0.272, [0.000, 0.271, 0.865]], [0.274, [0.000, 0.275, 0.863]], [0.276, [0.000, 0.275, 0.863]], [0.278, [0.000, 0.278, 0.861]], [0.280, [0.000, 0.278, 0.861]], [0.282, [0.000, 0.282, 0.859]], [0.284, [0.000, 0.282, 0.859]], [0.286, [0.000, 0.286, 0.857]], [0.288, [0.000, 0.286, 0.857]], [0.290, [0.000, 0.290, 0.855]], [0.292, [0.000, 0.290, 0.855]], [0.294, [0.000, 0.294, 0.853]], [0.295, [0.000, 0.294, 0.853]], [0.297, [0.000, 0.298, 0.851]], [0.299, [0.000, 0.298, 0.851]], [0.301, [0.000, 0.302, 0.849]], [0.303, [0.000, 0.302, 0.849]], [0.305, [0.000, 0.306, 0.847]], [0.307, [0.000, 0.306, 0.847]], [0.309, [0.000, 0.310, 0.845]], [0.311, [0.000, 0.310, 0.845]], [0.313, [0.000, 0.314, 0.843]], [0.315, [0.000, 0.314, 0.843]], [0.317, [0.000, 0.318, 0.841]], [0.319, [0.000, 0.318, 0.841]], [0.321, [0.000, 0.322, 0.839]], [0.323, [0.000, 0.322, 0.839]], [0.325, [0.000, 0.325, 0.837]], [0.327, [0.000, 0.325, 0.837]], [0.329, [0.000, 0.329, 0.835]], [0.331, [0.000, 0.329, 0.835]], [0.333, [0.000, 0.333, 0.833]], [0.335, [0.000, 0.333, 0.833]], [0.337, [0.000, 0.337, 0.831]], [0.339, [0.000, 0.337, 0.831]], [0.341, [0.000, 0.341, 0.829]], [0.342, [0.000, 0.341, 0.829]], [0.344, [0.000, 0.345, 0.827]], [0.346, [0.000, 0.345, 0.827]], [0.348, [0.000, 0.349, 0.825]], [0.350, [0.000, 0.349, 0.825]], [0.352, [0.000, 0.353, 0.824]], [0.354, [0.000, 0.353, 0.824]], [0.356, [0.000, 0.357, 0.822]], [0.358, [0.000, 0.357, 0.822]], [0.360, [0.000, 0.361, 0.820]], [0.362, [0.000, 0.361, 0.820]], [0.364, [0.000, 0.365, 0.818]], [0.366, [0.000, 0.365, 0.818]], [0.368, [0.000, 0.369, 0.816]], [0.370, [0.000, 0.369, 0.816]], [0.372, [0.000, 0.373, 0.814]], [0.374, [0.000, 0.373, 0.814]], [0.376, [0.000, 0.376, 0.812]], [0.378, [0.000, 0.376, 0.812]], [0.380, [0.000, 0.380, 0.810]], [0.382, [0.000, 0.380, 0.810]], [0.384, [0.000, 0.384, 0.808]], [0.386, [0.000, 0.384, 0.808]], [0.387, [0.000, 0.388, 0.806]], [0.389, [0.000, 0.388, 0.806]], [0.391, [0.000, 0.392, 0.804]], [0.393, [0.000, 0.392, 0.804]], [0.395, [0.000, 0.396, 0.802]], [0.397, [0.000, 0.396, 0.802]], [0.399, [0.000, 0.400, 0.800]], [0.401, [0.000, 0.400, 0.800]], [0.403, [0.000, 0.404, 0.798]], [0.405, [0.000, 0.404, 0.798]], [0.407, [0.000, 0.408, 0.796]], [0.409, [0.000, 0.408, 0.796]], [0.411, [0.000, 0.412, 0.794]], [0.413, [0.000, 0.412, 0.794]], [0.415, [0.000, 0.416, 0.792]], [0.417, [0.000, 0.416, 0.792]], [0.419, [0.000, 0.420, 0.790]], [0.421, [0.000, 0.420, 0.790]], [0.423, [0.000, 0.424, 0.788]], [0.425, [0.000, 0.424, 0.788]], [0.427, [0.000, 0.427, 0.786]], [0.429, [0.000, 0.427, 0.786]], [0.431, [0.000, 0.431, 0.784]], [0.432, [0.000, 0.431, 0.784]], [0.434, [0.000, 0.435, 0.782]], [0.436, [0.000, 0.435, 0.782]], [0.438, [0.000, 0.439, 0.780]], [0.440, [0.000, 0.439, 0.780]], [0.442, [0.000, 0.443, 0.778]], [0.444, [0.000, 0.443, 0.778]], [0.446, [0.000, 0.447, 0.776]], [0.448, [0.000, 0.447, 0.776]], [0.450, [0.000, 0.451, 0.775]], [0.452, [0.000, 0.451, 0.775]], [0.454, [0.000, 0.455, 0.773]], [0.456, [0.000, 0.455, 0.773]], [0.458, [0.000, 0.459, 0.771]], [0.460, [0.000, 0.459, 0.771]], [0.462, [0.000, 0.463, 0.769]], [0.464, [0.000, 0.463, 0.769]], [0.466, [0.000, 0.467, 0.767]], [0.468, [0.000, 0.467, 0.767]], [0.470, [0.000, 0.471, 0.765]], [0.472, [0.000, 0.471, 0.765]], [0.474, [0.000, 0.475, 0.763]], [0.476, [0.000, 0.475, 0.763]], [0.477, [0.000, 0.478, 0.761]], [0.479, [0.000, 0.478, 0.761]], [0.481, [0.000, 0.482, 0.759]], [0.483, [0.000, 0.482, 0.759]], [0.485, [0.000, 0.486, 0.757]], [0.487, [0.000, 0.486, 0.757]], [0.489, [0.000, 0.490, 0.755]], [0.491, [0.000, 0.490, 0.755]], [0.493, [0.000, 0.494, 0.753]], [0.495, [0.000, 0.494, 0.753]], [0.497, [0.000, 0.498, 0.751]], [0.499, [0.000, 0.498, 0.751]], [0.501, [0.000, 0.502, 0.749]], [0.503, [0.000, 0.502, 0.749]], [0.505, [0.000, 0.506, 0.747]], [0.507, [0.000, 0.506, 0.747]], [0.509, [0.000, 0.510, 0.745]], [0.511, [0.000, 0.510, 0.745]], [0.513, [0.000, 0.514, 0.743]], [0.515, [0.000, 0.514, 0.743]], [0.517, [0.000, 0.518, 0.741]], [0.519, [0.000, 0.518, 0.741]], [0.521, [0.000, 0.522, 0.739]], [0.523, [0.000, 0.522, 0.739]], [0.524, [0.000, 0.525, 0.737]], [0.526, [0.000, 0.525, 0.737]], [0.528, [0.000, 0.529, 0.735]], [0.530, [0.000, 0.529, 0.735]], [0.532, [0.000, 0.533, 0.733]], [0.534, [0.000, 0.533, 0.733]], [0.536, [0.000, 0.537, 0.731]], [0.538, [0.000, 0.537, 0.731]], [0.540, [0.000, 0.541, 0.729]], [0.542, [0.000, 0.541, 0.729]], [0.544, [0.000, 0.545, 0.727]], [0.546, [0.000, 0.545, 0.727]], [0.548, [0.000, 0.549, 0.725]], [0.550, [0.000, 0.549, 0.725]], [0.552, [0.000, 0.553, 0.724]], [0.554, [0.000, 0.553, 0.724]], [0.556, [0.000, 0.557, 0.722]], [0.558, [0.000, 0.557, 0.722]], [0.560, [0.000, 0.561, 0.720]], [0.562, [0.000, 0.561, 0.720]], [0.564, [0.000, 0.565, 0.718]], [0.566, [0.000, 0.565, 0.718]], [0.568, [0.000, 0.569, 0.716]], [0.569, [0.000, 0.569, 0.716]], [0.571, [0.000, 0.573, 0.714]], [0.573, [0.000, 0.573, 0.714]], [0.575, [0.000, 0.576, 0.712]], [0.577, [0.000, 0.576, 0.712]], [0.579, [0.000, 0.580, 0.710]], [0.581, [0.000, 0.580, 0.710]], [0.583, [0.000, 0.584, 0.708]], [0.585, [0.000, 0.584, 0.708]], [0.587, [0.000, 0.588, 0.706]], [0.589, [0.000, 0.588, 0.706]], [0.591, [0.000, 0.592, 0.704]], [0.593, [0.000, 0.592, 0.704]], [0.595, [0.000, 0.596, 0.702]], [0.597, [0.000, 0.596, 0.702]], [0.599, [0.000, 0.600, 0.700]], [0.601, [0.000, 0.600, 0.700]], [0.603, [0.000, 0.604, 0.698]], [0.605, [0.000, 0.604, 0.698]], [0.607, [0.000, 0.608, 0.696]], [0.609, [0.000, 0.608, 0.696]], [0.611, [0.000, 0.612, 0.694]], [0.613, [0.000, 0.612, 0.694]], [0.614, [0.000, 0.616, 0.692]], [0.616, [0.000, 0.616, 0.692]], [0.618, [0.000, 0.620, 0.690]], [0.620, [0.000, 0.620, 0.690]], [0.622, [0.000, 0.624, 0.688]], [0.624, [0.000, 0.624, 0.688]], [0.626, [0.000, 0.627, 0.686]], [0.628, [0.000, 0.627, 0.686]], [0.630, [0.000, 0.631, 0.684]], [0.632, [0.000, 0.631, 0.684]], [0.634, [0.000, 0.635, 0.682]], [0.636, [0.000, 0.635, 0.682]], [0.638, [0.000, 0.639, 0.680]], [0.640, [0.000, 0.639, 0.680]], [0.642, [0.000, 0.643, 0.678]], [0.644, [0.000, 0.643, 0.678]], [0.646, [0.000, 0.647, 0.676]], [0.648, [0.000, 0.647, 0.676]], [0.650, [0.000, 0.651, 0.675]], [0.652, [0.000, 0.651, 0.675]], [0.654, [0.000, 0.655, 0.673]], [0.656, [0.000, 0.655, 0.673]], [0.658, [0.000, 0.659, 0.671]], [0.659, [0.000, 0.659, 0.671]], [0.661, [0.000, 0.663, 0.669]], [0.663, [0.000, 0.663, 0.669]], [0.665, [0.000, 0.667, 0.667]], [0.667, [0.000, 0.667, 0.667]], [0.669, [0.000, 0.671, 0.665]], [0.671, [0.000, 0.671, 0.665]], [0.673, [0.000, 0.675, 0.663]], [0.675, [0.000, 0.675, 0.663]], [0.677, [0.000, 0.678, 0.661]], [0.679, [0.000, 0.678, 0.661]], [0.681, [0.000, 0.682, 0.659]], [0.683, [0.000, 0.682, 0.659]], [0.685, [0.000, 0.686, 0.657]], [0.687, [0.000, 0.686, 0.657]], [0.689, [0.000, 0.690, 0.655]], [0.691, [0.000, 0.690, 0.655]], [0.693, [0.000, 0.694, 0.653]], [0.695, [0.000, 0.694, 0.653]], [0.697, [0.000, 0.698, 0.651]], [0.699, [0.000, 0.698, 0.651]], [0.701, [0.000, 0.702, 0.649]], [0.703, [0.000, 0.702, 0.649]], [0.705, [0.000, 0.706, 0.647]], [0.706, [0.000, 0.706, 0.647]], [0.708, [0.000, 0.710, 0.645]], [0.710, [0.000, 0.710, 0.645]], [0.712, [0.000, 0.714, 0.643]], [0.714, [0.000, 0.714, 0.643]], [0.716, [0.000, 0.718, 0.641]], [0.718, [0.000, 0.718, 0.641]], [0.720, [0.000, 0.722, 0.639]], [0.722, [0.000, 0.722, 0.639]], [0.724, [0.000, 0.725, 0.637]], [0.726, [0.000, 0.725, 0.637]], [0.728, [0.000, 0.729, 0.635]], [0.730, [0.000, 0.729, 0.635]], [0.732, [0.000, 0.733, 0.633]], [0.734, [0.000, 0.733, 0.633]], [0.736, [0.000, 0.737, 0.631]], [0.738, [0.000, 0.737, 0.631]], [0.740, [0.000, 0.741, 0.629]], [0.742, [0.000, 0.741, 0.629]], [0.744, [0.000, 0.745, 0.627]], [0.746, [0.000, 0.745, 0.627]], [0.748, [0.000, 0.749, 0.625]], [0.750, [0.000, 0.749, 0.625]], [0.751, [0.000, 0.753, 0.624]], [0.753, [0.000, 0.753, 0.624]], [0.755, [0.000, 0.757, 0.622]], [0.757, [0.000, 0.757, 0.622]], [0.759, [0.000, 0.761, 0.620]], [0.761, [0.000, 0.761, 0.620]], [0.763, [0.000, 0.765, 0.618]], [0.765, [0.000, 0.765, 0.618]], [0.767, [0.000, 0.769, 0.616]], [0.769, [0.000, 0.769, 0.616]], [0.771, [0.000, 0.773, 0.614]], [0.773, [0.000, 0.773, 0.614]], [0.775, [0.000, 0.776, 0.612]], [0.777, [0.000, 0.776, 0.612]], [0.779, [0.000, 0.780, 0.610]], [0.781, [0.000, 0.780, 0.610]], [0.783, [0.000, 0.784, 0.608]], [0.785, [0.000, 0.784, 0.608]], [0.787, [0.000, 0.788, 0.606]], [0.789, [0.000, 0.788, 0.606]], [0.791, [0.000, 0.792, 0.604]], [0.793, [0.000, 0.792, 0.604]], [0.795, [0.000, 0.796, 0.602]], [0.796, [0.000, 0.796, 0.602]], [0.798, [0.000, 0.800, 0.600]], [0.800, [0.000, 0.800, 0.600]], [0.802, [0.000, 0.804, 0.598]], [0.804, [0.000, 0.804, 0.598]], [0.806, [0.000, 0.808, 0.596]], [0.808, [0.000, 0.808, 0.596]], [0.810, [0.000, 0.812, 0.594]], [0.812, [0.000, 0.812, 0.594]], [0.814, [0.000, 0.816, 0.592]], [0.816, [0.000, 0.816, 0.592]], [0.818, [0.000, 0.820, 0.590]], [0.820, [0.000, 0.820, 0.590]], [0.822, [0.000, 0.824, 0.588]], [0.824, [0.000, 0.824, 0.588]], [0.826, [0.000, 0.827, 0.586]], [0.828, [0.000, 0.827, 0.586]], [0.830, [0.000, 0.831, 0.584]], [0.832, [0.000, 0.831, 0.584]], [0.834, [0.000, 0.835, 0.582]], [0.836, [0.000, 0.835, 0.582]], [0.838, [0.000, 0.839, 0.580]], [0.840, [0.000, 0.839, 0.580]], [0.841, [0.000, 0.843, 0.578]], [0.843, [0.000, 0.843, 0.578]], [0.845, [0.000, 0.847, 0.576]], [0.847, [0.000, 0.847, 0.576]], [0.849, [0.000, 0.851, 0.575]], [0.851, [0.000, 0.851, 0.575]], [0.853, [0.000, 0.855, 0.573]], [0.855, [0.000, 0.855, 0.573]], [0.857, [0.000, 0.859, 0.571]], [0.859, [0.000, 0.859, 0.571]], [0.861, [0.000, 0.863, 0.569]], [0.863, [0.000, 0.863, 0.569]], [0.865, [0.000, 0.867, 0.567]], [0.867, [0.000, 0.867, 0.567]], [0.869, [0.000, 0.871, 0.565]], [0.871, [0.000, 0.871, 0.565]], [0.873, [0.000, 0.875, 0.563]], [0.875, [0.000, 0.875, 0.563]], [0.877, [0.000, 0.878, 0.561]], [0.879, [0.000, 0.878, 0.561]], [0.881, [0.000, 0.882, 0.559]], [0.883, [0.000, 0.882, 0.559]], [0.885, [0.000, 0.886, 0.557]], [0.886, [0.000, 0.886, 0.557]], [0.888, [0.000, 0.890, 0.555]], [0.890, [0.000, 0.890, 0.555]], [0.892, [0.000, 0.894, 0.553]], [0.894, [0.000, 0.894, 0.553]], [0.896, [0.000, 0.898, 0.551]], [0.898, [0.000, 0.898, 0.551]], [0.900, [0.000, 0.902, 0.549]], [0.902, [0.000, 0.902, 0.549]], [0.904, [0.000, 0.906, 0.547]], [0.906, [0.000, 0.906, 0.547]], [0.908, [0.000, 0.910, 0.545]], [0.910, [0.000, 0.910, 0.545]], [0.912, [0.000, 0.914, 0.543]], [0.914, [0.000, 0.914, 0.543]], [0.916, [0.000, 0.918, 0.541]], [0.918, [0.000, 0.918, 0.541]], [0.920, [0.000, 0.922, 0.539]], [0.922, [0.000, 0.922, 0.539]], [0.924, [0.000, 0.925, 0.537]], [0.926, [0.000, 0.925, 0.537]], [0.928, [0.000, 0.929, 0.535]], [0.930, [0.000, 0.929, 0.535]], [0.932, [0.000, 0.933, 0.533]], [0.933, [0.000, 0.933, 0.533]], [0.935, [0.000, 0.937, 0.531]], [0.937, [0.000, 0.937, 0.531]], [0.939, [0.000, 0.941, 0.529]], [0.941, [0.000, 0.941, 0.529]], [0.943, [0.000, 0.945, 0.527]], [0.945, [0.000, 0.945, 0.527]], [0.947, [0.000, 0.949, 0.525]], [0.949, [0.000, 0.949, 0.525]], [0.951, [0.000, 0.953, 0.524]], [0.953, [0.000, 0.953, 0.524]], [0.955, [0.000, 0.957, 0.522]], [0.957, [0.000, 0.957, 0.522]], [0.959, [0.000, 0.961, 0.520]], [0.961, [0.000, 0.961, 0.520]], [0.963, [0.000, 0.965, 0.518]], [0.965, [0.000, 0.965, 0.518]], [0.967, [0.000, 0.969, 0.516]], [0.969, [0.000, 0.969, 0.516]], [0.971, [0.000, 0.973, 0.514]], [0.973, [0.000, 0.973, 0.514]], [0.975, [0.000, 0.976, 0.512]], [0.977, [0.000, 0.976, 0.512]], [0.978, [0.000, 0.980, 0.510]], [0.980, [0.000, 0.980, 0.510]], [0.982, [0.000, 0.984, 0.508]], [0.984, [0.000, 0.984, 0.508]], [0.986, [0.000, 0.988, 0.506]], [0.988, [0.000, 0.988, 0.506]], [0.990, [0.000, 0.992, 0.504]], [0.992, [0.000, 0.992, 0.504]], [0.994, [0.000, 0.996, 0.502]], [0.996, [0.000, 0.996, 0.502]], [0.998, [0.000, 1.000, 0.500]], [1.000, [0.000, 1.000, 0.500]]]; + +// Miscellaneous +var CMRmap = [[0.000, [0.000, 0.000, 0.000]], [0.002, [0.000, 0.000, 0.000]], [0.004, [0.005, 0.005, 0.016]], [0.006, [0.005, 0.005, 0.016]], [0.008, [0.009, 0.009, 0.031]], [0.010, [0.009, 0.009, 0.031]], [0.012, [0.014, 0.014, 0.047]], [0.014, [0.014, 0.014, 0.047]], [0.016, [0.019, 0.019, 0.063]], [0.018, [0.019, 0.019, 0.063]], [0.020, [0.024, 0.024, 0.078]], [0.022, [0.024, 0.024, 0.078]], [0.023, [0.028, 0.028, 0.094]], [0.025, [0.028, 0.028, 0.094]], [0.027, [0.033, 0.033, 0.110]], [0.029, [0.033, 0.033, 0.110]], [0.031, [0.038, 0.038, 0.125]], [0.033, [0.038, 0.038, 0.125]], [0.035, [0.042, 0.042, 0.141]], [0.037, [0.042, 0.042, 0.141]], [0.039, [0.047, 0.047, 0.157]], [0.041, [0.047, 0.047, 0.157]], [0.043, [0.052, 0.052, 0.173]], [0.045, [0.052, 0.052, 0.173]], [0.047, [0.056, 0.056, 0.188]], [0.049, [0.056, 0.056, 0.188]], [0.051, [0.061, 0.061, 0.204]], [0.053, [0.061, 0.061, 0.204]], [0.055, [0.066, 0.066, 0.220]], [0.057, [0.066, 0.066, 0.220]], [0.059, [0.071, 0.071, 0.235]], [0.061, [0.071, 0.071, 0.235]], [0.063, [0.075, 0.075, 0.251]], [0.065, [0.075, 0.075, 0.251]], [0.067, [0.080, 0.080, 0.267]], [0.068, [0.080, 0.080, 0.267]], [0.070, [0.085, 0.085, 0.282]], [0.072, [0.085, 0.085, 0.282]], [0.074, [0.089, 0.089, 0.298]], [0.076, [0.089, 0.089, 0.298]], [0.078, [0.094, 0.094, 0.314]], [0.080, [0.094, 0.094, 0.314]], [0.082, [0.099, 0.099, 0.329]], [0.084, [0.099, 0.099, 0.329]], [0.086, [0.104, 0.104, 0.345]], [0.088, [0.104, 0.104, 0.345]], [0.090, [0.108, 0.108, 0.361]], [0.092, [0.108, 0.108, 0.361]], [0.094, [0.113, 0.113, 0.376]], [0.096, [0.113, 0.113, 0.376]], [0.098, [0.118, 0.118, 0.392]], [0.100, [0.118, 0.118, 0.392]], [0.102, [0.122, 0.122, 0.408]], [0.104, [0.122, 0.122, 0.408]], [0.106, [0.127, 0.127, 0.424]], [0.108, [0.127, 0.127, 0.424]], [0.110, [0.132, 0.132, 0.439]], [0.112, [0.132, 0.132, 0.439]], [0.114, [0.136, 0.136, 0.455]], [0.115, [0.136, 0.136, 0.455]], [0.117, [0.141, 0.141, 0.471]], [0.119, [0.141, 0.141, 0.471]], [0.121, [0.146, 0.146, 0.486]], [0.123, [0.146, 0.146, 0.486]], [0.125, [0.151, 0.150, 0.501]], [0.127, [0.151, 0.150, 0.501]], [0.129, [0.155, 0.150, 0.509]], [0.131, [0.155, 0.150, 0.509]], [0.133, [0.160, 0.150, 0.517]], [0.135, [0.160, 0.150, 0.517]], [0.137, [0.165, 0.150, 0.525]], [0.139, [0.165, 0.150, 0.525]], [0.141, [0.169, 0.150, 0.532]], [0.143, [0.169, 0.150, 0.532]], [0.145, [0.174, 0.150, 0.540]], [0.147, [0.174, 0.150, 0.540]], [0.149, [0.179, 0.150, 0.548]], [0.151, [0.179, 0.150, 0.548]], [0.153, [0.184, 0.150, 0.556]], [0.155, [0.184, 0.150, 0.556]], [0.157, [0.188, 0.150, 0.564]], [0.159, [0.188, 0.150, 0.564]], [0.160, [0.193, 0.150, 0.572]], [0.162, [0.193, 0.150, 0.572]], [0.164, [0.198, 0.150, 0.579]], [0.166, [0.198, 0.150, 0.579]], [0.168, [0.202, 0.150, 0.587]], [0.170, [0.202, 0.150, 0.587]], [0.172, [0.207, 0.150, 0.595]], [0.174, [0.207, 0.150, 0.595]], [0.176, [0.212, 0.150, 0.603]], [0.178, [0.212, 0.150, 0.603]], [0.180, [0.216, 0.150, 0.611]], [0.182, [0.216, 0.150, 0.611]], [0.184, [0.221, 0.150, 0.619]], [0.186, [0.221, 0.150, 0.619]], [0.188, [0.226, 0.150, 0.626]], [0.190, [0.226, 0.150, 0.626]], [0.192, [0.231, 0.150, 0.634]], [0.194, [0.231, 0.150, 0.634]], [0.196, [0.235, 0.150, 0.642]], [0.198, [0.235, 0.150, 0.642]], [0.200, [0.240, 0.150, 0.650]], [0.202, [0.240, 0.150, 0.650]], [0.204, [0.245, 0.150, 0.658]], [0.205, [0.245, 0.150, 0.658]], [0.207, [0.249, 0.150, 0.666]], [0.209, [0.249, 0.150, 0.666]], [0.211, [0.254, 0.150, 0.674]], [0.213, [0.254, 0.150, 0.674]], [0.215, [0.259, 0.150, 0.681]], [0.217, [0.259, 0.150, 0.681]], [0.219, [0.264, 0.150, 0.689]], [0.221, [0.264, 0.150, 0.689]], [0.223, [0.268, 0.150, 0.697]], [0.225, [0.268, 0.150, 0.697]], [0.227, [0.273, 0.150, 0.705]], [0.229, [0.273, 0.150, 0.705]], [0.231, [0.278, 0.150, 0.713]], [0.233, [0.278, 0.150, 0.713]], [0.235, [0.282, 0.150, 0.721]], [0.237, [0.282, 0.150, 0.721]], [0.239, [0.287, 0.150, 0.728]], [0.241, [0.287, 0.150, 0.728]], [0.243, [0.292, 0.150, 0.736]], [0.245, [0.292, 0.150, 0.736]], [0.247, [0.296, 0.150, 0.744]], [0.249, [0.296, 0.150, 0.744]], [0.250, [0.302, 0.150, 0.748]], [0.252, [0.302, 0.150, 0.748]], [0.254, [0.312, 0.152, 0.740]], [0.256, [0.312, 0.152, 0.740]], [0.258, [0.321, 0.154, 0.732]], [0.260, [0.321, 0.154, 0.732]], [0.262, [0.331, 0.155, 0.725]], [0.264, [0.331, 0.155, 0.725]], [0.266, [0.340, 0.157, 0.717]], [0.268, [0.340, 0.157, 0.717]], [0.270, [0.349, 0.158, 0.709]], [0.272, [0.349, 0.158, 0.709]], [0.274, [0.359, 0.160, 0.701]], [0.276, [0.359, 0.160, 0.701]], [0.278, [0.368, 0.161, 0.693]], [0.280, [0.368, 0.161, 0.693]], [0.282, [0.378, 0.163, 0.685]], [0.284, [0.378, 0.163, 0.685]], [0.286, [0.387, 0.165, 0.677]], [0.288, [0.387, 0.165, 0.677]], [0.290, [0.396, 0.166, 0.670]], [0.292, [0.396, 0.166, 0.670]], [0.294, [0.406, 0.168, 0.662]], [0.295, [0.406, 0.168, 0.662]], [0.297, [0.415, 0.169, 0.654]], [0.299, [0.415, 0.169, 0.654]], [0.301, [0.425, 0.171, 0.646]], [0.303, [0.425, 0.171, 0.646]], [0.305, [0.434, 0.172, 0.638]], [0.307, [0.434, 0.172, 0.638]], [0.309, [0.444, 0.174, 0.630]], [0.311, [0.444, 0.174, 0.630]], [0.313, [0.453, 0.175, 0.623]], [0.315, [0.453, 0.175, 0.623]], [0.317, [0.462, 0.177, 0.615]], [0.319, [0.462, 0.177, 0.615]], [0.321, [0.472, 0.179, 0.607]], [0.323, [0.472, 0.179, 0.607]], [0.325, [0.481, 0.180, 0.599]], [0.327, [0.481, 0.180, 0.599]], [0.329, [0.491, 0.182, 0.591]], [0.331, [0.491, 0.182, 0.591]], [0.333, [0.500, 0.183, 0.583]], [0.335, [0.500, 0.183, 0.583]], [0.337, [0.509, 0.185, 0.575]], [0.339, [0.509, 0.185, 0.575]], [0.341, [0.519, 0.186, 0.568]], [0.342, [0.519, 0.186, 0.568]], [0.344, [0.528, 0.188, 0.560]], [0.346, [0.528, 0.188, 0.560]], [0.348, [0.538, 0.190, 0.552]], [0.350, [0.538, 0.190, 0.552]], [0.352, [0.547, 0.191, 0.544]], [0.354, [0.547, 0.191, 0.544]], [0.356, [0.556, 0.193, 0.536]], [0.358, [0.556, 0.193, 0.536]], [0.360, [0.566, 0.194, 0.528]], [0.362, [0.566, 0.194, 0.528]], [0.364, [0.575, 0.196, 0.521]], [0.366, [0.575, 0.196, 0.521]], [0.368, [0.585, 0.197, 0.513]], [0.370, [0.585, 0.197, 0.513]], [0.372, [0.594, 0.199, 0.505]], [0.374, [0.594, 0.199, 0.505]], [0.376, [0.605, 0.201, 0.496]], [0.378, [0.605, 0.201, 0.496]], [0.380, [0.617, 0.202, 0.485]], [0.382, [0.617, 0.202, 0.485]], [0.384, [0.630, 0.204, 0.474]], [0.386, [0.630, 0.204, 0.474]], [0.387, [0.642, 0.205, 0.463]], [0.389, [0.642, 0.205, 0.463]], [0.391, [0.655, 0.207, 0.452]], [0.393, [0.655, 0.207, 0.452]], [0.395, [0.667, 0.208, 0.441]], [0.397, [0.667, 0.208, 0.441]], [0.399, [0.680, 0.210, 0.430]], [0.401, [0.680, 0.210, 0.430]], [0.403, [0.693, 0.212, 0.419]], [0.405, [0.693, 0.212, 0.419]], [0.407, [0.705, 0.213, 0.408]], [0.409, [0.705, 0.213, 0.408]], [0.411, [0.718, 0.215, 0.397]], [0.413, [0.718, 0.215, 0.397]], [0.415, [0.730, 0.216, 0.386]], [0.417, [0.730, 0.216, 0.386]], [0.419, [0.743, 0.218, 0.375]], [0.421, [0.743, 0.218, 0.375]], [0.423, [0.755, 0.219, 0.364]], [0.425, [0.755, 0.219, 0.364]], [0.427, [0.768, 0.221, 0.353]], [0.429, [0.768, 0.221, 0.353]], [0.431, [0.780, 0.223, 0.342]], [0.432, [0.780, 0.223, 0.342]], [0.434, [0.793, 0.224, 0.331]], [0.436, [0.793, 0.224, 0.331]], [0.438, [0.805, 0.226, 0.320]], [0.440, [0.805, 0.226, 0.320]], [0.442, [0.818, 0.227, 0.309]], [0.444, [0.818, 0.227, 0.309]], [0.446, [0.831, 0.229, 0.298]], [0.448, [0.831, 0.229, 0.298]], [0.450, [0.843, 0.230, 0.287]], [0.452, [0.843, 0.230, 0.287]], [0.454, [0.856, 0.232, 0.276]], [0.456, [0.856, 0.232, 0.276]], [0.458, [0.868, 0.234, 0.265]], [0.460, [0.868, 0.234, 0.265]], [0.462, [0.881, 0.235, 0.254]], [0.464, [0.881, 0.235, 0.254]], [0.466, [0.893, 0.237, 0.243]], [0.468, [0.893, 0.237, 0.243]], [0.470, [0.906, 0.238, 0.232]], [0.472, [0.906, 0.238, 0.232]], [0.474, [0.918, 0.240, 0.221]], [0.476, [0.918, 0.240, 0.221]], [0.477, [0.931, 0.241, 0.210]], [0.479, [0.931, 0.241, 0.210]], [0.481, [0.944, 0.243, 0.199]], [0.483, [0.944, 0.243, 0.199]], [0.485, [0.956, 0.245, 0.188]], [0.487, [0.956, 0.245, 0.188]], [0.489, [0.969, 0.246, 0.177]], [0.491, [0.969, 0.246, 0.177]], [0.493, [0.981, 0.248, 0.166]], [0.495, [0.981, 0.248, 0.166]], [0.497, [0.994, 0.249, 0.155]], [0.499, [0.994, 0.249, 0.155]], [0.501, [0.998, 0.254, 0.148]], [0.503, [0.998, 0.254, 0.148]], [0.505, [0.995, 0.262, 0.143]], [0.507, [0.995, 0.262, 0.143]], [0.509, [0.992, 0.270, 0.138]], [0.511, [0.992, 0.270, 0.138]], [0.513, [0.989, 0.277, 0.134]], [0.515, [0.989, 0.277, 0.134]], [0.517, [0.986, 0.285, 0.129]], [0.519, [0.986, 0.285, 0.129]], [0.521, [0.983, 0.293, 0.124]], [0.523, [0.983, 0.293, 0.124]], [0.524, [0.980, 0.301, 0.119]], [0.526, [0.980, 0.301, 0.119]], [0.528, [0.976, 0.309, 0.115]], [0.530, [0.976, 0.309, 0.115]], [0.532, [0.973, 0.317, 0.110]], [0.534, [0.973, 0.317, 0.110]], [0.536, [0.970, 0.325, 0.105]], [0.538, [0.970, 0.325, 0.105]], [0.540, [0.967, 0.332, 0.101]], [0.542, [0.967, 0.332, 0.101]], [0.544, [0.964, 0.340, 0.096]], [0.546, [0.964, 0.340, 0.096]], [0.548, [0.961, 0.348, 0.091]], [0.550, [0.961, 0.348, 0.091]], [0.552, [0.958, 0.356, 0.086]], [0.554, [0.958, 0.356, 0.086]], [0.556, [0.955, 0.364, 0.082]], [0.558, [0.955, 0.364, 0.082]], [0.560, [0.951, 0.372, 0.077]], [0.562, [0.951, 0.372, 0.077]], [0.564, [0.948, 0.379, 0.072]], [0.566, [0.948, 0.379, 0.072]], [0.568, [0.945, 0.387, 0.068]], [0.569, [0.945, 0.387, 0.068]], [0.571, [0.942, 0.395, 0.063]], [0.573, [0.942, 0.395, 0.063]], [0.575, [0.939, 0.403, 0.058]], [0.577, [0.939, 0.403, 0.058]], [0.579, [0.936, 0.411, 0.054]], [0.581, [0.936, 0.411, 0.054]], [0.583, [0.933, 0.419, 0.049]], [0.585, [0.933, 0.419, 0.049]], [0.587, [0.929, 0.426, 0.044]], [0.589, [0.929, 0.426, 0.044]], [0.591, [0.926, 0.434, 0.039]], [0.593, [0.926, 0.434, 0.039]], [0.595, [0.923, 0.442, 0.035]], [0.597, [0.923, 0.442, 0.035]], [0.599, [0.920, 0.450, 0.030]], [0.601, [0.920, 0.450, 0.030]], [0.603, [0.917, 0.458, 0.025]], [0.605, [0.917, 0.458, 0.025]], [0.607, [0.914, 0.466, 0.021]], [0.609, [0.914, 0.466, 0.021]], [0.611, [0.911, 0.474, 0.016]], [0.613, [0.911, 0.474, 0.016]], [0.614, [0.907, 0.481, 0.011]], [0.616, [0.907, 0.481, 0.011]], [0.618, [0.904, 0.489, 0.006]], [0.620, [0.904, 0.489, 0.006]], [0.622, [0.901, 0.497, 0.002]], [0.624, [0.901, 0.497, 0.002]], [0.626, [0.900, 0.505, 0.002]], [0.628, [0.900, 0.505, 0.002]], [0.630, [0.900, 0.513, 0.005]], [0.632, [0.900, 0.513, 0.005]], [0.634, [0.900, 0.521, 0.008]], [0.636, [0.900, 0.521, 0.008]], [0.638, [0.900, 0.528, 0.011]], [0.640, [0.900, 0.528, 0.011]], [0.642, [0.900, 0.536, 0.015]], [0.644, [0.900, 0.536, 0.015]], [0.646, [0.900, 0.544, 0.018]], [0.648, [0.900, 0.544, 0.018]], [0.650, [0.900, 0.552, 0.021]], [0.652, [0.900, 0.552, 0.021]], [0.654, [0.900, 0.560, 0.024]], [0.656, [0.900, 0.560, 0.024]], [0.658, [0.900, 0.568, 0.027]], [0.659, [0.900, 0.568, 0.027]], [0.661, [0.900, 0.575, 0.030]], [0.663, [0.900, 0.575, 0.030]], [0.665, [0.900, 0.583, 0.033]], [0.667, [0.900, 0.583, 0.033]], [0.669, [0.900, 0.591, 0.036]], [0.671, [0.900, 0.591, 0.036]], [0.673, [0.900, 0.599, 0.040]], [0.675, [0.900, 0.599, 0.040]], [0.677, [0.900, 0.607, 0.043]], [0.679, [0.900, 0.607, 0.043]], [0.681, [0.900, 0.615, 0.046]], [0.683, [0.900, 0.615, 0.046]], [0.685, [0.900, 0.623, 0.049]], [0.687, [0.900, 0.623, 0.049]], [0.689, [0.900, 0.630, 0.052]], [0.691, [0.900, 0.630, 0.052]], [0.693, [0.900, 0.638, 0.055]], [0.695, [0.900, 0.638, 0.055]], [0.697, [0.900, 0.646, 0.058]], [0.699, [0.900, 0.646, 0.058]], [0.701, [0.900, 0.654, 0.062]], [0.703, [0.900, 0.654, 0.062]], [0.705, [0.900, 0.662, 0.065]], [0.706, [0.900, 0.662, 0.065]], [0.708, [0.900, 0.670, 0.068]], [0.710, [0.900, 0.670, 0.068]], [0.712, [0.900, 0.677, 0.071]], [0.714, [0.900, 0.677, 0.071]], [0.716, [0.900, 0.685, 0.074]], [0.718, [0.900, 0.685, 0.074]], [0.720, [0.900, 0.693, 0.077]], [0.722, [0.900, 0.693, 0.077]], [0.724, [0.900, 0.701, 0.080]], [0.726, [0.900, 0.701, 0.080]], [0.728, [0.900, 0.709, 0.084]], [0.730, [0.900, 0.709, 0.084]], [0.732, [0.900, 0.717, 0.087]], [0.734, [0.900, 0.717, 0.087]], [0.736, [0.900, 0.725, 0.090]], [0.738, [0.900, 0.725, 0.090]], [0.740, [0.900, 0.732, 0.093]], [0.742, [0.900, 0.732, 0.093]], [0.744, [0.900, 0.740, 0.096]], [0.746, [0.900, 0.740, 0.096]], [0.748, [0.900, 0.748, 0.099]], [0.750, [0.900, 0.748, 0.099]], [0.751, [0.900, 0.754, 0.109]], [0.753, [0.900, 0.754, 0.109]], [0.755, [0.900, 0.758, 0.122]], [0.757, [0.900, 0.758, 0.122]], [0.759, [0.900, 0.763, 0.135]], [0.761, [0.900, 0.763, 0.135]], [0.763, [0.900, 0.768, 0.147]], [0.765, [0.900, 0.768, 0.147]], [0.767, [0.900, 0.772, 0.160]], [0.769, [0.900, 0.772, 0.160]], [0.771, [0.900, 0.777, 0.172]], [0.773, [0.900, 0.777, 0.172]], [0.775, [0.900, 0.782, 0.185]], [0.777, [0.900, 0.782, 0.185]], [0.779, [0.900, 0.786, 0.197]], [0.781, [0.900, 0.786, 0.197]], [0.783, [0.900, 0.791, 0.210]], [0.785, [0.900, 0.791, 0.210]], [0.787, [0.900, 0.796, 0.222]], [0.789, [0.900, 0.796, 0.222]], [0.791, [0.900, 0.801, 0.235]], [0.793, [0.900, 0.801, 0.235]], [0.795, [0.900, 0.805, 0.247]], [0.796, [0.900, 0.805, 0.247]], [0.798, [0.900, 0.810, 0.260]], [0.800, [0.900, 0.810, 0.260]], [0.802, [0.900, 0.815, 0.273]], [0.804, [0.900, 0.815, 0.273]], [0.806, [0.900, 0.819, 0.285]], [0.808, [0.900, 0.819, 0.285]], [0.810, [0.900, 0.824, 0.298]], [0.812, [0.900, 0.824, 0.298]], [0.814, [0.900, 0.829, 0.310]], [0.816, [0.900, 0.829, 0.310]], [0.818, [0.900, 0.834, 0.323]], [0.820, [0.900, 0.834, 0.323]], [0.822, [0.900, 0.838, 0.335]], [0.824, [0.900, 0.838, 0.335]], [0.826, [0.900, 0.843, 0.348]], [0.828, [0.900, 0.843, 0.348]], [0.830, [0.900, 0.848, 0.360]], [0.832, [0.900, 0.848, 0.360]], [0.834, [0.900, 0.852, 0.373]], [0.836, [0.900, 0.852, 0.373]], [0.838, [0.900, 0.857, 0.385]], [0.840, [0.900, 0.857, 0.385]], [0.841, [0.900, 0.862, 0.398]], [0.843, [0.900, 0.862, 0.398]], [0.845, [0.900, 0.866, 0.411]], [0.847, [0.900, 0.866, 0.411]], [0.849, [0.900, 0.871, 0.423]], [0.851, [0.900, 0.871, 0.423]], [0.853, [0.900, 0.876, 0.436]], [0.855, [0.900, 0.876, 0.436]], [0.857, [0.900, 0.881, 0.448]], [0.859, [0.900, 0.881, 0.448]], [0.861, [0.900, 0.885, 0.461]], [0.863, [0.900, 0.885, 0.461]], [0.865, [0.900, 0.890, 0.473]], [0.867, [0.900, 0.890, 0.473]], [0.869, [0.900, 0.895, 0.486]], [0.871, [0.900, 0.895, 0.486]], [0.873, [0.900, 0.899, 0.498]], [0.875, [0.900, 0.899, 0.498]], [0.877, [0.903, 0.903, 0.514]], [0.879, [0.903, 0.903, 0.514]], [0.881, [0.906, 0.906, 0.529]], [0.883, [0.906, 0.906, 0.529]], [0.885, [0.909, 0.909, 0.545]], [0.886, [0.909, 0.909, 0.545]], [0.888, [0.912, 0.912, 0.561]], [0.890, [0.912, 0.912, 0.561]], [0.892, [0.915, 0.915, 0.576]], [0.894, [0.915, 0.915, 0.576]], [0.896, [0.918, 0.918, 0.592]], [0.898, [0.918, 0.918, 0.592]], [0.900, [0.922, 0.922, 0.608]], [0.902, [0.922, 0.922, 0.608]], [0.904, [0.925, 0.925, 0.624]], [0.906, [0.925, 0.925, 0.624]], [0.908, [0.928, 0.928, 0.639]], [0.910, [0.928, 0.928, 0.639]], [0.912, [0.931, 0.931, 0.655]], [0.914, [0.931, 0.931, 0.655]], [0.916, [0.934, 0.934, 0.671]], [0.918, [0.934, 0.934, 0.671]], [0.920, [0.937, 0.937, 0.686]], [0.922, [0.937, 0.937, 0.686]], [0.924, [0.940, 0.940, 0.702]], [0.926, [0.940, 0.940, 0.702]], [0.928, [0.944, 0.944, 0.718]], [0.930, [0.944, 0.944, 0.718]], [0.932, [0.947, 0.947, 0.733]], [0.933, [0.947, 0.947, 0.733]], [0.935, [0.950, 0.950, 0.749]], [0.937, [0.950, 0.950, 0.749]], [0.939, [0.953, 0.953, 0.765]], [0.941, [0.953, 0.953, 0.765]], [0.943, [0.956, 0.956, 0.780]], [0.945, [0.956, 0.956, 0.780]], [0.947, [0.959, 0.959, 0.796]], [0.949, [0.959, 0.959, 0.796]], [0.951, [0.962, 0.962, 0.812]], [0.953, [0.962, 0.962, 0.812]], [0.955, [0.965, 0.965, 0.827]], [0.957, [0.965, 0.965, 0.827]], [0.959, [0.969, 0.969, 0.843]], [0.961, [0.969, 0.969, 0.843]], [0.963, [0.972, 0.972, 0.859]], [0.965, [0.972, 0.972, 0.859]], [0.967, [0.975, 0.975, 0.875]], [0.969, [0.975, 0.975, 0.875]], [0.971, [0.978, 0.978, 0.890]], [0.973, [0.978, 0.978, 0.890]], [0.975, [0.981, 0.981, 0.906]], [0.977, [0.981, 0.981, 0.906]], [0.978, [0.984, 0.984, 0.922]], [0.980, [0.984, 0.984, 0.922]], [0.982, [0.987, 0.987, 0.937]], [0.984, [0.987, 0.987, 0.937]], [0.986, [0.991, 0.991, 0.953]], [0.988, [0.991, 0.991, 0.953]], [0.990, [0.994, 0.994, 0.969]], [0.992, [0.994, 0.994, 0.969]], [0.994, [0.997, 0.997, 0.984]], [0.996, [0.997, 0.997, 0.984]], [0.998, [1.000, 1.000, 1.000]], [1.000, [1.000, 1.000, 1.000]]]; +var brg = [[0.000, [0.000, 0.000, 1.000]], [0.002, [0.000, 0.000, 1.000]], [0.004, [0.008, 0.000, 0.992]], [0.006, [0.008, 0.000, 0.992]], [0.008, [0.016, 0.000, 0.984]], [0.010, [0.016, 0.000, 0.984]], [0.012, [0.024, 0.000, 0.976]], [0.014, [0.024, 0.000, 0.976]], [0.016, [0.031, 0.000, 0.969]], [0.018, [0.031, 0.000, 0.969]], [0.020, [0.039, 0.000, 0.961]], [0.022, [0.039, 0.000, 0.961]], [0.023, [0.047, 0.000, 0.953]], [0.025, [0.047, 0.000, 0.953]], [0.027, [0.055, 0.000, 0.945]], [0.029, [0.055, 0.000, 0.945]], [0.031, [0.063, 0.000, 0.937]], [0.033, [0.063, 0.000, 0.937]], [0.035, [0.071, 0.000, 0.929]], [0.037, [0.071, 0.000, 0.929]], [0.039, [0.078, 0.000, 0.922]], [0.041, [0.078, 0.000, 0.922]], [0.043, [0.086, 0.000, 0.914]], [0.045, [0.086, 0.000, 0.914]], [0.047, [0.094, 0.000, 0.906]], [0.049, [0.094, 0.000, 0.906]], [0.051, [0.102, 0.000, 0.898]], [0.053, [0.102, 0.000, 0.898]], [0.055, [0.110, 0.000, 0.890]], [0.057, [0.110, 0.000, 0.890]], [0.059, [0.118, 0.000, 0.882]], [0.061, [0.118, 0.000, 0.882]], [0.063, [0.125, 0.000, 0.875]], [0.065, [0.125, 0.000, 0.875]], [0.067, [0.133, 0.000, 0.867]], [0.068, [0.133, 0.000, 0.867]], [0.070, [0.141, 0.000, 0.859]], [0.072, [0.141, 0.000, 0.859]], [0.074, [0.149, 0.000, 0.851]], [0.076, [0.149, 0.000, 0.851]], [0.078, [0.157, 0.000, 0.843]], [0.080, [0.157, 0.000, 0.843]], [0.082, [0.165, 0.000, 0.835]], [0.084, [0.165, 0.000, 0.835]], [0.086, [0.173, 0.000, 0.827]], [0.088, [0.173, 0.000, 0.827]], [0.090, [0.180, 0.000, 0.820]], [0.092, [0.180, 0.000, 0.820]], [0.094, [0.188, 0.000, 0.812]], [0.096, [0.188, 0.000, 0.812]], [0.098, [0.196, 0.000, 0.804]], [0.100, [0.196, 0.000, 0.804]], [0.102, [0.204, 0.000, 0.796]], [0.104, [0.204, 0.000, 0.796]], [0.106, [0.212, 0.000, 0.788]], [0.108, [0.212, 0.000, 0.788]], [0.110, [0.220, 0.000, 0.780]], [0.112, [0.220, 0.000, 0.780]], [0.114, [0.227, 0.000, 0.773]], [0.115, [0.227, 0.000, 0.773]], [0.117, [0.235, 0.000, 0.765]], [0.119, [0.235, 0.000, 0.765]], [0.121, [0.243, 0.000, 0.757]], [0.123, [0.243, 0.000, 0.757]], [0.125, [0.251, 0.000, 0.749]], [0.127, [0.251, 0.000, 0.749]], [0.129, [0.259, 0.000, 0.741]], [0.131, [0.259, 0.000, 0.741]], [0.133, [0.267, 0.000, 0.733]], [0.135, [0.267, 0.000, 0.733]], [0.137, [0.275, 0.000, 0.725]], [0.139, [0.275, 0.000, 0.725]], [0.141, [0.282, 0.000, 0.718]], [0.143, [0.282, 0.000, 0.718]], [0.145, [0.290, 0.000, 0.710]], [0.147, [0.290, 0.000, 0.710]], [0.149, [0.298, 0.000, 0.702]], [0.151, [0.298, 0.000, 0.702]], [0.153, [0.306, 0.000, 0.694]], [0.155, [0.306, 0.000, 0.694]], [0.157, [0.314, 0.000, 0.686]], [0.159, [0.314, 0.000, 0.686]], [0.160, [0.322, 0.000, 0.678]], [0.162, [0.322, 0.000, 0.678]], [0.164, [0.329, 0.000, 0.671]], [0.166, [0.329, 0.000, 0.671]], [0.168, [0.337, 0.000, 0.663]], [0.170, [0.337, 0.000, 0.663]], [0.172, [0.345, 0.000, 0.655]], [0.174, [0.345, 0.000, 0.655]], [0.176, [0.353, 0.000, 0.647]], [0.178, [0.353, 0.000, 0.647]], [0.180, [0.361, 0.000, 0.639]], [0.182, [0.361, 0.000, 0.639]], [0.184, [0.369, 0.000, 0.631]], [0.186, [0.369, 0.000, 0.631]], [0.188, [0.376, 0.000, 0.624]], [0.190, [0.376, 0.000, 0.624]], [0.192, [0.384, 0.000, 0.616]], [0.194, [0.384, 0.000, 0.616]], [0.196, [0.392, 0.000, 0.608]], [0.198, [0.392, 0.000, 0.608]], [0.200, [0.400, 0.000, 0.600]], [0.202, [0.400, 0.000, 0.600]], [0.204, [0.408, 0.000, 0.592]], [0.205, [0.408, 0.000, 0.592]], [0.207, [0.416, 0.000, 0.584]], [0.209, [0.416, 0.000, 0.584]], [0.211, [0.424, 0.000, 0.576]], [0.213, [0.424, 0.000, 0.576]], [0.215, [0.431, 0.000, 0.569]], [0.217, [0.431, 0.000, 0.569]], [0.219, [0.439, 0.000, 0.561]], [0.221, [0.439, 0.000, 0.561]], [0.223, [0.447, 0.000, 0.553]], [0.225, [0.447, 0.000, 0.553]], [0.227, [0.455, 0.000, 0.545]], [0.229, [0.455, 0.000, 0.545]], [0.231, [0.463, 0.000, 0.537]], [0.233, [0.463, 0.000, 0.537]], [0.235, [0.471, 0.000, 0.529]], [0.237, [0.471, 0.000, 0.529]], [0.239, [0.478, 0.000, 0.522]], [0.241, [0.478, 0.000, 0.522]], [0.243, [0.486, 0.000, 0.514]], [0.245, [0.486, 0.000, 0.514]], [0.247, [0.494, 0.000, 0.506]], [0.249, [0.494, 0.000, 0.506]], [0.250, [0.502, 0.000, 0.498]], [0.252, [0.502, 0.000, 0.498]], [0.254, [0.510, 0.000, 0.490]], [0.256, [0.510, 0.000, 0.490]], [0.258, [0.518, 0.000, 0.482]], [0.260, [0.518, 0.000, 0.482]], [0.262, [0.525, 0.000, 0.475]], [0.264, [0.525, 0.000, 0.475]], [0.266, [0.533, 0.000, 0.467]], [0.268, [0.533, 0.000, 0.467]], [0.270, [0.541, 0.000, 0.459]], [0.272, [0.541, 0.000, 0.459]], [0.274, [0.549, 0.000, 0.451]], [0.276, [0.549, 0.000, 0.451]], [0.278, [0.557, 0.000, 0.443]], [0.280, [0.557, 0.000, 0.443]], [0.282, [0.565, 0.000, 0.435]], [0.284, [0.565, 0.000, 0.435]], [0.286, [0.573, 0.000, 0.427]], [0.288, [0.573, 0.000, 0.427]], [0.290, [0.580, 0.000, 0.420]], [0.292, [0.580, 0.000, 0.420]], [0.294, [0.588, 0.000, 0.412]], [0.295, [0.588, 0.000, 0.412]], [0.297, [0.596, 0.000, 0.404]], [0.299, [0.596, 0.000, 0.404]], [0.301, [0.604, 0.000, 0.396]], [0.303, [0.604, 0.000, 0.396]], [0.305, [0.612, 0.000, 0.388]], [0.307, [0.612, 0.000, 0.388]], [0.309, [0.620, 0.000, 0.380]], [0.311, [0.620, 0.000, 0.380]], [0.313, [0.627, 0.000, 0.373]], [0.315, [0.627, 0.000, 0.373]], [0.317, [0.635, 0.000, 0.365]], [0.319, [0.635, 0.000, 0.365]], [0.321, [0.643, 0.000, 0.357]], [0.323, [0.643, 0.000, 0.357]], [0.325, [0.651, 0.000, 0.349]], [0.327, [0.651, 0.000, 0.349]], [0.329, [0.659, 0.000, 0.341]], [0.331, [0.659, 0.000, 0.341]], [0.333, [0.667, 0.000, 0.333]], [0.335, [0.667, 0.000, 0.333]], [0.337, [0.675, 0.000, 0.325]], [0.339, [0.675, 0.000, 0.325]], [0.341, [0.682, 0.000, 0.318]], [0.342, [0.682, 0.000, 0.318]], [0.344, [0.690, 0.000, 0.310]], [0.346, [0.690, 0.000, 0.310]], [0.348, [0.698, 0.000, 0.302]], [0.350, [0.698, 0.000, 0.302]], [0.352, [0.706, 0.000, 0.294]], [0.354, [0.706, 0.000, 0.294]], [0.356, [0.714, 0.000, 0.286]], [0.358, [0.714, 0.000, 0.286]], [0.360, [0.722, 0.000, 0.278]], [0.362, [0.722, 0.000, 0.278]], [0.364, [0.729, 0.000, 0.271]], [0.366, [0.729, 0.000, 0.271]], [0.368, [0.737, 0.000, 0.263]], [0.370, [0.737, 0.000, 0.263]], [0.372, [0.745, 0.000, 0.255]], [0.374, [0.745, 0.000, 0.255]], [0.376, [0.753, 0.000, 0.247]], [0.378, [0.753, 0.000, 0.247]], [0.380, [0.761, 0.000, 0.239]], [0.382, [0.761, 0.000, 0.239]], [0.384, [0.769, 0.000, 0.231]], [0.386, [0.769, 0.000, 0.231]], [0.387, [0.776, 0.000, 0.224]], [0.389, [0.776, 0.000, 0.224]], [0.391, [0.784, 0.000, 0.216]], [0.393, [0.784, 0.000, 0.216]], [0.395, [0.792, 0.000, 0.208]], [0.397, [0.792, 0.000, 0.208]], [0.399, [0.800, 0.000, 0.200]], [0.401, [0.800, 0.000, 0.200]], [0.403, [0.808, 0.000, 0.192]], [0.405, [0.808, 0.000, 0.192]], [0.407, [0.816, 0.000, 0.184]], [0.409, [0.816, 0.000, 0.184]], [0.411, [0.824, 0.000, 0.176]], [0.413, [0.824, 0.000, 0.176]], [0.415, [0.831, 0.000, 0.169]], [0.417, [0.831, 0.000, 0.169]], [0.419, [0.839, 0.000, 0.161]], [0.421, [0.839, 0.000, 0.161]], [0.423, [0.847, 0.000, 0.153]], [0.425, [0.847, 0.000, 0.153]], [0.427, [0.855, 0.000, 0.145]], [0.429, [0.855, 0.000, 0.145]], [0.431, [0.863, 0.000, 0.137]], [0.432, [0.863, 0.000, 0.137]], [0.434, [0.871, 0.000, 0.129]], [0.436, [0.871, 0.000, 0.129]], [0.438, [0.878, 0.000, 0.122]], [0.440, [0.878, 0.000, 0.122]], [0.442, [0.886, 0.000, 0.114]], [0.444, [0.886, 0.000, 0.114]], [0.446, [0.894, 0.000, 0.106]], [0.448, [0.894, 0.000, 0.106]], [0.450, [0.902, 0.000, 0.098]], [0.452, [0.902, 0.000, 0.098]], [0.454, [0.910, 0.000, 0.090]], [0.456, [0.910, 0.000, 0.090]], [0.458, [0.918, 0.000, 0.082]], [0.460, [0.918, 0.000, 0.082]], [0.462, [0.925, 0.000, 0.075]], [0.464, [0.925, 0.000, 0.075]], [0.466, [0.933, 0.000, 0.067]], [0.468, [0.933, 0.000, 0.067]], [0.470, [0.941, 0.000, 0.059]], [0.472, [0.941, 0.000, 0.059]], [0.474, [0.949, 0.000, 0.051]], [0.476, [0.949, 0.000, 0.051]], [0.477, [0.957, 0.000, 0.043]], [0.479, [0.957, 0.000, 0.043]], [0.481, [0.965, 0.000, 0.035]], [0.483, [0.965, 0.000, 0.035]], [0.485, [0.973, 0.000, 0.027]], [0.487, [0.973, 0.000, 0.027]], [0.489, [0.980, 0.000, 0.020]], [0.491, [0.980, 0.000, 0.020]], [0.493, [0.988, 0.000, 0.012]], [0.495, [0.988, 0.000, 0.012]], [0.497, [0.996, 0.000, 0.004]], [0.499, [0.996, 0.000, 0.004]], [0.501, [0.996, 0.004, 0.000]], [0.503, [0.996, 0.004, 0.000]], [0.505, [0.988, 0.012, 0.000]], [0.507, [0.988, 0.012, 0.000]], [0.509, [0.980, 0.020, 0.000]], [0.511, [0.980, 0.020, 0.000]], [0.513, [0.973, 0.027, 0.000]], [0.515, [0.973, 0.027, 0.000]], [0.517, [0.965, 0.035, 0.000]], [0.519, [0.965, 0.035, 0.000]], [0.521, [0.957, 0.043, 0.000]], [0.523, [0.957, 0.043, 0.000]], [0.524, [0.949, 0.051, 0.000]], [0.526, [0.949, 0.051, 0.000]], [0.528, [0.941, 0.059, 0.000]], [0.530, [0.941, 0.059, 0.000]], [0.532, [0.933, 0.067, 0.000]], [0.534, [0.933, 0.067, 0.000]], [0.536, [0.925, 0.075, 0.000]], [0.538, [0.925, 0.075, 0.000]], [0.540, [0.918, 0.082, 0.000]], [0.542, [0.918, 0.082, 0.000]], [0.544, [0.910, 0.090, 0.000]], [0.546, [0.910, 0.090, 0.000]], [0.548, [0.902, 0.098, 0.000]], [0.550, [0.902, 0.098, 0.000]], [0.552, [0.894, 0.106, 0.000]], [0.554, [0.894, 0.106, 0.000]], [0.556, [0.886, 0.114, 0.000]], [0.558, [0.886, 0.114, 0.000]], [0.560, [0.878, 0.122, 0.000]], [0.562, [0.878, 0.122, 0.000]], [0.564, [0.871, 0.129, 0.000]], [0.566, [0.871, 0.129, 0.000]], [0.568, [0.863, 0.137, 0.000]], [0.569, [0.863, 0.137, 0.000]], [0.571, [0.855, 0.145, 0.000]], [0.573, [0.855, 0.145, 0.000]], [0.575, [0.847, 0.153, 0.000]], [0.577, [0.847, 0.153, 0.000]], [0.579, [0.839, 0.161, 0.000]], [0.581, [0.839, 0.161, 0.000]], [0.583, [0.831, 0.169, 0.000]], [0.585, [0.831, 0.169, 0.000]], [0.587, [0.824, 0.176, 0.000]], [0.589, [0.824, 0.176, 0.000]], [0.591, [0.816, 0.184, 0.000]], [0.593, [0.816, 0.184, 0.000]], [0.595, [0.808, 0.192, 0.000]], [0.597, [0.808, 0.192, 0.000]], [0.599, [0.800, 0.200, 0.000]], [0.601, [0.800, 0.200, 0.000]], [0.603, [0.792, 0.208, 0.000]], [0.605, [0.792, 0.208, 0.000]], [0.607, [0.784, 0.216, 0.000]], [0.609, [0.784, 0.216, 0.000]], [0.611, [0.776, 0.224, 0.000]], [0.613, [0.776, 0.224, 0.000]], [0.614, [0.769, 0.231, 0.000]], [0.616, [0.769, 0.231, 0.000]], [0.618, [0.761, 0.239, 0.000]], [0.620, [0.761, 0.239, 0.000]], [0.622, [0.753, 0.247, 0.000]], [0.624, [0.753, 0.247, 0.000]], [0.626, [0.745, 0.255, 0.000]], [0.628, [0.745, 0.255, 0.000]], [0.630, [0.737, 0.263, 0.000]], [0.632, [0.737, 0.263, 0.000]], [0.634, [0.729, 0.271, 0.000]], [0.636, [0.729, 0.271, 0.000]], [0.638, [0.722, 0.278, 0.000]], [0.640, [0.722, 0.278, 0.000]], [0.642, [0.714, 0.286, 0.000]], [0.644, [0.714, 0.286, 0.000]], [0.646, [0.706, 0.294, 0.000]], [0.648, [0.706, 0.294, 0.000]], [0.650, [0.698, 0.302, 0.000]], [0.652, [0.698, 0.302, 0.000]], [0.654, [0.690, 0.310, 0.000]], [0.656, [0.690, 0.310, 0.000]], [0.658, [0.682, 0.318, 0.000]], [0.659, [0.682, 0.318, 0.000]], [0.661, [0.675, 0.325, 0.000]], [0.663, [0.675, 0.325, 0.000]], [0.665, [0.667, 0.333, 0.000]], [0.667, [0.667, 0.333, 0.000]], [0.669, [0.659, 0.341, 0.000]], [0.671, [0.659, 0.341, 0.000]], [0.673, [0.651, 0.349, 0.000]], [0.675, [0.651, 0.349, 0.000]], [0.677, [0.643, 0.357, 0.000]], [0.679, [0.643, 0.357, 0.000]], [0.681, [0.635, 0.365, 0.000]], [0.683, [0.635, 0.365, 0.000]], [0.685, [0.627, 0.373, 0.000]], [0.687, [0.627, 0.373, 0.000]], [0.689, [0.620, 0.380, 0.000]], [0.691, [0.620, 0.380, 0.000]], [0.693, [0.612, 0.388, 0.000]], [0.695, [0.612, 0.388, 0.000]], [0.697, [0.604, 0.396, 0.000]], [0.699, [0.604, 0.396, 0.000]], [0.701, [0.596, 0.404, 0.000]], [0.703, [0.596, 0.404, 0.000]], [0.705, [0.588, 0.412, 0.000]], [0.706, [0.588, 0.412, 0.000]], [0.708, [0.580, 0.420, 0.000]], [0.710, [0.580, 0.420, 0.000]], [0.712, [0.573, 0.427, 0.000]], [0.714, [0.573, 0.427, 0.000]], [0.716, [0.565, 0.435, 0.000]], [0.718, [0.565, 0.435, 0.000]], [0.720, [0.557, 0.443, 0.000]], [0.722, [0.557, 0.443, 0.000]], [0.724, [0.549, 0.451, 0.000]], [0.726, [0.549, 0.451, 0.000]], [0.728, [0.541, 0.459, 0.000]], [0.730, [0.541, 0.459, 0.000]], [0.732, [0.533, 0.467, 0.000]], [0.734, [0.533, 0.467, 0.000]], [0.736, [0.525, 0.475, 0.000]], [0.738, [0.525, 0.475, 0.000]], [0.740, [0.518, 0.482, 0.000]], [0.742, [0.518, 0.482, 0.000]], [0.744, [0.510, 0.490, 0.000]], [0.746, [0.510, 0.490, 0.000]], [0.748, [0.502, 0.498, 0.000]], [0.750, [0.502, 0.498, 0.000]], [0.751, [0.494, 0.506, 0.000]], [0.753, [0.494, 0.506, 0.000]], [0.755, [0.486, 0.514, 0.000]], [0.757, [0.486, 0.514, 0.000]], [0.759, [0.478, 0.522, 0.000]], [0.761, [0.478, 0.522, 0.000]], [0.763, [0.471, 0.529, 0.000]], [0.765, [0.471, 0.529, 0.000]], [0.767, [0.463, 0.537, 0.000]], [0.769, [0.463, 0.537, 0.000]], [0.771, [0.455, 0.545, 0.000]], [0.773, [0.455, 0.545, 0.000]], [0.775, [0.447, 0.553, 0.000]], [0.777, [0.447, 0.553, 0.000]], [0.779, [0.439, 0.561, 0.000]], [0.781, [0.439, 0.561, 0.000]], [0.783, [0.431, 0.569, 0.000]], [0.785, [0.431, 0.569, 0.000]], [0.787, [0.424, 0.576, 0.000]], [0.789, [0.424, 0.576, 0.000]], [0.791, [0.416, 0.584, 0.000]], [0.793, [0.416, 0.584, 0.000]], [0.795, [0.408, 0.592, 0.000]], [0.796, [0.408, 0.592, 0.000]], [0.798, [0.400, 0.600, 0.000]], [0.800, [0.400, 0.600, 0.000]], [0.802, [0.392, 0.608, 0.000]], [0.804, [0.392, 0.608, 0.000]], [0.806, [0.384, 0.616, 0.000]], [0.808, [0.384, 0.616, 0.000]], [0.810, [0.376, 0.624, 0.000]], [0.812, [0.376, 0.624, 0.000]], [0.814, [0.369, 0.631, 0.000]], [0.816, [0.369, 0.631, 0.000]], [0.818, [0.361, 0.639, 0.000]], [0.820, [0.361, 0.639, 0.000]], [0.822, [0.353, 0.647, 0.000]], [0.824, [0.353, 0.647, 0.000]], [0.826, [0.345, 0.655, 0.000]], [0.828, [0.345, 0.655, 0.000]], [0.830, [0.337, 0.663, 0.000]], [0.832, [0.337, 0.663, 0.000]], [0.834, [0.329, 0.671, 0.000]], [0.836, [0.329, 0.671, 0.000]], [0.838, [0.322, 0.678, 0.000]], [0.840, [0.322, 0.678, 0.000]], [0.841, [0.314, 0.686, 0.000]], [0.843, [0.314, 0.686, 0.000]], [0.845, [0.306, 0.694, 0.000]], [0.847, [0.306, 0.694, 0.000]], [0.849, [0.298, 0.702, 0.000]], [0.851, [0.298, 0.702, 0.000]], [0.853, [0.290, 0.710, 0.000]], [0.855, [0.290, 0.710, 0.000]], [0.857, [0.282, 0.718, 0.000]], [0.859, [0.282, 0.718, 0.000]], [0.861, [0.275, 0.725, 0.000]], [0.863, [0.275, 0.725, 0.000]], [0.865, [0.267, 0.733, 0.000]], [0.867, [0.267, 0.733, 0.000]], [0.869, [0.259, 0.741, 0.000]], [0.871, [0.259, 0.741, 0.000]], [0.873, [0.251, 0.749, 0.000]], [0.875, [0.251, 0.749, 0.000]], [0.877, [0.243, 0.757, 0.000]], [0.879, [0.243, 0.757, 0.000]], [0.881, [0.235, 0.765, 0.000]], [0.883, [0.235, 0.765, 0.000]], [0.885, [0.227, 0.773, 0.000]], [0.886, [0.227, 0.773, 0.000]], [0.888, [0.220, 0.780, 0.000]], [0.890, [0.220, 0.780, 0.000]], [0.892, [0.212, 0.788, 0.000]], [0.894, [0.212, 0.788, 0.000]], [0.896, [0.204, 0.796, 0.000]], [0.898, [0.204, 0.796, 0.000]], [0.900, [0.196, 0.804, 0.000]], [0.902, [0.196, 0.804, 0.000]], [0.904, [0.188, 0.812, 0.000]], [0.906, [0.188, 0.812, 0.000]], [0.908, [0.180, 0.820, 0.000]], [0.910, [0.180, 0.820, 0.000]], [0.912, [0.173, 0.827, 0.000]], [0.914, [0.173, 0.827, 0.000]], [0.916, [0.165, 0.835, 0.000]], [0.918, [0.165, 0.835, 0.000]], [0.920, [0.157, 0.843, 0.000]], [0.922, [0.157, 0.843, 0.000]], [0.924, [0.149, 0.851, 0.000]], [0.926, [0.149, 0.851, 0.000]], [0.928, [0.141, 0.859, 0.000]], [0.930, [0.141, 0.859, 0.000]], [0.932, [0.133, 0.867, 0.000]], [0.933, [0.133, 0.867, 0.000]], [0.935, [0.125, 0.875, 0.000]], [0.937, [0.125, 0.875, 0.000]], [0.939, [0.118, 0.882, 0.000]], [0.941, [0.118, 0.882, 0.000]], [0.943, [0.110, 0.890, 0.000]], [0.945, [0.110, 0.890, 0.000]], [0.947, [0.102, 0.898, 0.000]], [0.949, [0.102, 0.898, 0.000]], [0.951, [0.094, 0.906, 0.000]], [0.953, [0.094, 0.906, 0.000]], [0.955, [0.086, 0.914, 0.000]], [0.957, [0.086, 0.914, 0.000]], [0.959, [0.078, 0.922, 0.000]], [0.961, [0.078, 0.922, 0.000]], [0.963, [0.071, 0.929, 0.000]], [0.965, [0.071, 0.929, 0.000]], [0.967, [0.063, 0.937, 0.000]], [0.969, [0.063, 0.937, 0.000]], [0.971, [0.055, 0.945, 0.000]], [0.973, [0.055, 0.945, 0.000]], [0.975, [0.047, 0.953, 0.000]], [0.977, [0.047, 0.953, 0.000]], [0.978, [0.039, 0.961, 0.000]], [0.980, [0.039, 0.961, 0.000]], [0.982, [0.031, 0.969, 0.000]], [0.984, [0.031, 0.969, 0.000]], [0.986, [0.024, 0.976, 0.000]], [0.988, [0.024, 0.976, 0.000]], [0.990, [0.016, 0.984, 0.000]], [0.992, [0.016, 0.984, 0.000]], [0.994, [0.008, 0.992, 0.000]], [0.996, [0.008, 0.992, 0.000]], [0.998, [0.000, 1.000, 0.000]], [1.000, [0.000, 1.000, 0.000]]]; +var cubehelix = [[0.000, [0.000, 0.000, 0.000]], [0.002, [0.000, 0.000, 0.000]], [0.004, [0.007, 0.002, 0.006]], [0.006, [0.007, 0.002, 0.006]], [0.008, [0.013, 0.004, 0.012]], [0.010, [0.013, 0.004, 0.012]], [0.012, [0.020, 0.007, 0.019]], [0.014, [0.020, 0.007, 0.019]], [0.016, [0.026, 0.009, 0.025]], [0.018, [0.026, 0.009, 0.025]], [0.020, [0.032, 0.011, 0.032]], [0.022, [0.032, 0.011, 0.032]], [0.023, [0.037, 0.014, 0.039]], [0.025, [0.037, 0.014, 0.039]], [0.027, [0.043, 0.016, 0.046]], [0.029, [0.043, 0.016, 0.046]], [0.031, [0.048, 0.019, 0.053]], [0.033, [0.048, 0.019, 0.053]], [0.035, [0.053, 0.021, 0.061]], [0.037, [0.053, 0.021, 0.061]], [0.039, [0.058, 0.024, 0.068]], [0.041, [0.058, 0.024, 0.068]], [0.043, [0.063, 0.027, 0.076]], [0.045, [0.063, 0.027, 0.076]], [0.047, [0.067, 0.030, 0.083]], [0.049, [0.067, 0.030, 0.083]], [0.051, [0.071, 0.033, 0.091]], [0.053, [0.071, 0.033, 0.091]], [0.055, [0.075, 0.036, 0.099]], [0.057, [0.075, 0.036, 0.099]], [0.059, [0.079, 0.040, 0.107]], [0.061, [0.079, 0.040, 0.107]], [0.063, [0.082, 0.043, 0.115]], [0.065, [0.082, 0.043, 0.115]], [0.067, [0.085, 0.047, 0.123]], [0.068, [0.085, 0.047, 0.123]], [0.070, [0.088, 0.051, 0.131]], [0.072, [0.088, 0.051, 0.131]], [0.074, [0.090, 0.054, 0.139]], [0.076, [0.090, 0.054, 0.139]], [0.078, [0.093, 0.058, 0.146]], [0.080, [0.093, 0.058, 0.146]], [0.082, [0.095, 0.063, 0.154]], [0.084, [0.095, 0.063, 0.154]], [0.086, [0.097, 0.067, 0.162]], [0.088, [0.097, 0.067, 0.162]], [0.090, [0.099, 0.071, 0.170]], [0.092, [0.099, 0.071, 0.170]], [0.094, [0.100, 0.076, 0.177]], [0.096, [0.100, 0.076, 0.177]], [0.098, [0.101, 0.080, 0.185]], [0.100, [0.101, 0.080, 0.185]], [0.102, [0.102, 0.085, 0.192]], [0.104, [0.102, 0.085, 0.192]], [0.106, [0.103, 0.090, 0.199]], [0.108, [0.103, 0.090, 0.199]], [0.110, [0.104, 0.095, 0.206]], [0.112, [0.104, 0.095, 0.206]], [0.114, [0.104, 0.100, 0.213]], [0.115, [0.104, 0.100, 0.213]], [0.117, [0.104, 0.105, 0.220]], [0.119, [0.104, 0.105, 0.220]], [0.121, [0.104, 0.111, 0.226]], [0.123, [0.104, 0.111, 0.226]], [0.125, [0.104, 0.116, 0.233]], [0.127, [0.104, 0.116, 0.233]], [0.129, [0.104, 0.122, 0.239]], [0.131, [0.104, 0.122, 0.239]], [0.133, [0.104, 0.128, 0.245]], [0.135, [0.104, 0.128, 0.245]], [0.137, [0.103, 0.134, 0.251]], [0.139, [0.103, 0.134, 0.251]], [0.141, [0.102, 0.140, 0.256]], [0.143, [0.102, 0.140, 0.256]], [0.145, [0.102, 0.146, 0.261]], [0.147, [0.102, 0.146, 0.261]], [0.149, [0.101, 0.152, 0.266]], [0.151, [0.101, 0.152, 0.266]], [0.153, [0.100, 0.158, 0.271]], [0.155, [0.100, 0.158, 0.271]], [0.157, [0.099, 0.164, 0.275]], [0.159, [0.099, 0.164, 0.275]], [0.160, [0.098, 0.171, 0.280]], [0.162, [0.098, 0.171, 0.280]], [0.164, [0.096, 0.177, 0.283]], [0.166, [0.096, 0.177, 0.283]], [0.168, [0.095, 0.184, 0.287]], [0.170, [0.095, 0.184, 0.287]], [0.172, [0.094, 0.190, 0.290]], [0.174, [0.094, 0.190, 0.290]], [0.176, [0.093, 0.197, 0.293]], [0.178, [0.093, 0.197, 0.293]], [0.180, [0.092, 0.204, 0.296]], [0.182, [0.092, 0.204, 0.296]], [0.184, [0.090, 0.211, 0.299]], [0.186, [0.090, 0.211, 0.299]], [0.188, [0.089, 0.218, 0.301]], [0.190, [0.089, 0.218, 0.301]], [0.192, [0.088, 0.224, 0.303]], [0.194, [0.088, 0.224, 0.303]], [0.196, [0.087, 0.231, 0.304]], [0.198, [0.087, 0.231, 0.304]], [0.200, [0.086, 0.238, 0.306]], [0.202, [0.086, 0.238, 0.306]], [0.204, [0.085, 0.245, 0.307]], [0.205, [0.085, 0.245, 0.307]], [0.207, [0.084, 0.252, 0.307]], [0.209, [0.084, 0.252, 0.307]], [0.211, [0.084, 0.259, 0.308]], [0.213, [0.084, 0.259, 0.308]], [0.215, [0.083, 0.266, 0.308]], [0.217, [0.083, 0.266, 0.308]], [0.219, [0.083, 0.273, 0.308]], [0.221, [0.083, 0.273, 0.308]], [0.223, [0.082, 0.280, 0.307]], [0.225, [0.082, 0.280, 0.307]], [0.227, [0.082, 0.287, 0.307]], [0.229, [0.082, 0.287, 0.307]], [0.231, [0.082, 0.293, 0.306]], [0.233, [0.082, 0.293, 0.306]], [0.235, [0.082, 0.300, 0.304]], [0.237, [0.082, 0.300, 0.304]], [0.239, [0.083, 0.307, 0.303]], [0.241, [0.083, 0.307, 0.303]], [0.243, [0.083, 0.314, 0.301]], [0.245, [0.083, 0.314, 0.301]], [0.247, [0.084, 0.320, 0.299]], [0.249, [0.084, 0.320, 0.299]], [0.250, [0.085, 0.327, 0.297]], [0.252, [0.085, 0.327, 0.297]], [0.254, [0.087, 0.333, 0.295]], [0.256, [0.087, 0.333, 0.295]], [0.258, [0.088, 0.339, 0.292]], [0.260, [0.088, 0.339, 0.292]], [0.262, [0.090, 0.346, 0.290]], [0.264, [0.090, 0.346, 0.290]], [0.266, [0.092, 0.352, 0.287]], [0.268, [0.092, 0.352, 0.287]], [0.270, [0.094, 0.358, 0.284]], [0.272, [0.094, 0.358, 0.284]], [0.274, [0.097, 0.364, 0.281]], [0.276, [0.097, 0.364, 0.281]], [0.278, [0.099, 0.370, 0.277]], [0.280, [0.099, 0.370, 0.277]], [0.282, [0.103, 0.375, 0.274]], [0.284, [0.103, 0.375, 0.274]], [0.286, [0.106, 0.381, 0.270]], [0.288, [0.106, 0.381, 0.270]], [0.290, [0.110, 0.386, 0.266]], [0.292, [0.110, 0.386, 0.266]], [0.294, [0.114, 0.392, 0.263]], [0.295, [0.114, 0.392, 0.263]], [0.297, [0.118, 0.397, 0.259]], [0.299, [0.118, 0.397, 0.259]], [0.301, [0.122, 0.402, 0.255]], [0.303, [0.122, 0.402, 0.255]], [0.305, [0.127, 0.407, 0.251]], [0.307, [0.127, 0.407, 0.251]], [0.309, [0.133, 0.412, 0.247]], [0.311, [0.133, 0.412, 0.247]], [0.313, [0.138, 0.416, 0.243]], [0.315, [0.138, 0.416, 0.243]], [0.317, [0.144, 0.421, 0.239]], [0.319, [0.144, 0.421, 0.239]], [0.321, [0.150, 0.425, 0.235]], [0.323, [0.150, 0.425, 0.235]], [0.325, [0.156, 0.429, 0.231]], [0.327, [0.156, 0.429, 0.231]], [0.329, [0.163, 0.433, 0.228]], [0.331, [0.163, 0.433, 0.228]], [0.333, [0.170, 0.437, 0.224]], [0.335, [0.170, 0.437, 0.224]], [0.337, [0.177, 0.440, 0.220]], [0.339, [0.177, 0.440, 0.220]], [0.341, [0.185, 0.444, 0.216]], [0.342, [0.185, 0.444, 0.216]], [0.344, [0.193, 0.447, 0.213]], [0.346, [0.193, 0.447, 0.213]], [0.348, [0.201, 0.450, 0.210]], [0.350, [0.201, 0.450, 0.210]], [0.352, [0.209, 0.453, 0.206]], [0.354, [0.209, 0.453, 0.206]], [0.356, [0.218, 0.456, 0.203]], [0.358, [0.218, 0.456, 0.203]], [0.360, [0.227, 0.459, 0.200]], [0.362, [0.227, 0.459, 0.200]], [0.364, [0.236, 0.461, 0.198]], [0.366, [0.236, 0.461, 0.198]], [0.368, [0.246, 0.463, 0.195]], [0.370, [0.246, 0.463, 0.195]], [0.372, [0.255, 0.466, 0.193]], [0.374, [0.255, 0.466, 0.193]], [0.376, [0.265, 0.468, 0.191]], [0.378, [0.265, 0.468, 0.191]], [0.380, [0.276, 0.469, 0.189]], [0.382, [0.276, 0.469, 0.189]], [0.384, [0.286, 0.471, 0.187]], [0.386, [0.286, 0.471, 0.187]], [0.387, [0.296, 0.473, 0.186]], [0.389, [0.296, 0.473, 0.186]], [0.391, [0.307, 0.474, 0.185]], [0.393, [0.307, 0.474, 0.185]], [0.395, [0.318, 0.475, 0.184]], [0.397, [0.318, 0.475, 0.184]], [0.399, [0.329, 0.476, 0.184]], [0.401, [0.329, 0.476, 0.184]], [0.403, [0.341, 0.477, 0.184]], [0.405, [0.341, 0.477, 0.184]], [0.407, [0.352, 0.478, 0.184]], [0.409, [0.352, 0.478, 0.184]], [0.411, [0.363, 0.479, 0.184]], [0.413, [0.363, 0.479, 0.184]], [0.415, [0.375, 0.479, 0.185]], [0.417, [0.375, 0.479, 0.185]], [0.419, [0.387, 0.480, 0.186]], [0.421, [0.387, 0.480, 0.186]], [0.423, [0.399, 0.480, 0.187]], [0.425, [0.399, 0.480, 0.187]], [0.427, [0.411, 0.480, 0.189]], [0.429, [0.411, 0.480, 0.189]], [0.431, [0.423, 0.481, 0.191]], [0.432, [0.423, 0.481, 0.191]], [0.434, [0.435, 0.481, 0.194]], [0.436, [0.435, 0.481, 0.194]], [0.438, [0.447, 0.481, 0.197]], [0.440, [0.447, 0.481, 0.197]], [0.442, [0.459, 0.481, 0.200]], [0.444, [0.459, 0.481, 0.200]], [0.446, [0.471, 0.480, 0.203]], [0.448, [0.471, 0.480, 0.203]], [0.450, [0.483, 0.480, 0.207]], [0.452, [0.483, 0.480, 0.207]], [0.454, [0.495, 0.480, 0.211]], [0.456, [0.495, 0.480, 0.211]], [0.458, [0.507, 0.480, 0.216]], [0.460, [0.507, 0.480, 0.216]], [0.462, [0.519, 0.479, 0.221]], [0.464, [0.519, 0.479, 0.221]], [0.466, [0.531, 0.479, 0.227]], [0.468, [0.531, 0.479, 0.227]], [0.470, [0.543, 0.478, 0.232]], [0.472, [0.543, 0.478, 0.232]], [0.474, [0.554, 0.478, 0.238]], [0.476, [0.554, 0.478, 0.238]], [0.477, [0.566, 0.477, 0.245]], [0.479, [0.566, 0.477, 0.245]], [0.481, [0.578, 0.477, 0.252]], [0.483, [0.578, 0.477, 0.252]], [0.485, [0.589, 0.476, 0.259]], [0.487, [0.589, 0.476, 0.259]], [0.489, [0.600, 0.476, 0.266]], [0.491, [0.600, 0.476, 0.266]], [0.493, [0.611, 0.476, 0.274]], [0.495, [0.611, 0.476, 0.274]], [0.497, [0.622, 0.475, 0.282]], [0.499, [0.622, 0.475, 0.282]], [0.501, [0.633, 0.475, 0.291]], [0.503, [0.633, 0.475, 0.291]], [0.505, [0.643, 0.474, 0.299]], [0.507, [0.643, 0.474, 0.299]], [0.509, [0.654, 0.474, 0.309]], [0.511, [0.654, 0.474, 0.309]], [0.513, [0.664, 0.474, 0.318]], [0.515, [0.664, 0.474, 0.318]], [0.517, [0.674, 0.474, 0.328]], [0.519, [0.674, 0.474, 0.328]], [0.521, [0.683, 0.474, 0.338]], [0.523, [0.683, 0.474, 0.338]], [0.524, [0.693, 0.474, 0.348]], [0.526, [0.693, 0.474, 0.348]], [0.528, [0.702, 0.474, 0.358]], [0.530, [0.702, 0.474, 0.358]], [0.532, [0.711, 0.474, 0.369]], [0.534, [0.711, 0.474, 0.369]], [0.536, [0.719, 0.474, 0.380]], [0.538, [0.719, 0.474, 0.380]], [0.540, [0.727, 0.474, 0.391]], [0.542, [0.727, 0.474, 0.391]], [0.544, [0.735, 0.475, 0.403]], [0.546, [0.735, 0.475, 0.403]], [0.548, [0.743, 0.475, 0.414]], [0.550, [0.743, 0.475, 0.414]], [0.552, [0.751, 0.476, 0.426]], [0.554, [0.751, 0.476, 0.426]], [0.556, [0.758, 0.477, 0.438]], [0.558, [0.758, 0.477, 0.438]], [0.560, [0.764, 0.478, 0.450]], [0.562, [0.764, 0.478, 0.450]], [0.564, [0.771, 0.479, 0.462]], [0.566, [0.771, 0.479, 0.462]], [0.568, [0.777, 0.480, 0.474]], [0.569, [0.777, 0.480, 0.474]], [0.571, [0.783, 0.482, 0.487]], [0.573, [0.783, 0.482, 0.487]], [0.575, [0.788, 0.483, 0.499]], [0.577, [0.788, 0.483, 0.499]], [0.579, [0.794, 0.485, 0.512]], [0.581, [0.794, 0.485, 0.512]], [0.583, [0.798, 0.487, 0.524]], [0.585, [0.798, 0.487, 0.524]], [0.587, [0.803, 0.489, 0.537]], [0.589, [0.803, 0.489, 0.537]], [0.591, [0.807, 0.491, 0.550]], [0.593, [0.807, 0.491, 0.550]], [0.595, [0.811, 0.493, 0.563]], [0.597, [0.811, 0.493, 0.563]], [0.599, [0.815, 0.495, 0.575]], [0.601, [0.815, 0.495, 0.575]], [0.603, [0.818, 0.498, 0.588]], [0.605, [0.818, 0.498, 0.588]], [0.607, [0.821, 0.501, 0.601]], [0.609, [0.821, 0.501, 0.601]], [0.611, [0.823, 0.504, 0.613]], [0.613, [0.823, 0.504, 0.613]], [0.614, [0.826, 0.507, 0.626]], [0.616, [0.826, 0.507, 0.626]], [0.618, [0.828, 0.510, 0.638]], [0.620, [0.828, 0.510, 0.638]], [0.622, [0.829, 0.514, 0.651]], [0.624, [0.829, 0.514, 0.651]], [0.626, [0.831, 0.518, 0.663]], [0.628, [0.831, 0.518, 0.663]], [0.630, [0.832, 0.521, 0.675]], [0.632, [0.832, 0.521, 0.675]], [0.634, [0.833, 0.525, 0.687]], [0.636, [0.833, 0.525, 0.687]], [0.638, [0.833, 0.530, 0.699]], [0.640, [0.833, 0.530, 0.699]], [0.642, [0.833, 0.534, 0.710]], [0.644, [0.833, 0.534, 0.710]], [0.646, [0.833, 0.538, 0.722]], [0.648, [0.833, 0.538, 0.722]], [0.650, [0.833, 0.543, 0.733]], [0.652, [0.833, 0.543, 0.733]], [0.654, [0.833, 0.548, 0.744]], [0.656, [0.833, 0.548, 0.744]], [0.658, [0.832, 0.553, 0.755]], [0.659, [0.832, 0.553, 0.755]], [0.661, [0.831, 0.558, 0.766]], [0.663, [0.831, 0.558, 0.766]], [0.665, [0.830, 0.563, 0.776]], [0.667, [0.830, 0.563, 0.776]], [0.669, [0.829, 0.569, 0.786]], [0.671, [0.829, 0.569, 0.786]], [0.673, [0.827, 0.574, 0.796]], [0.675, [0.827, 0.574, 0.796]], [0.677, [0.825, 0.580, 0.806]], [0.679, [0.825, 0.580, 0.806]], [0.681, [0.824, 0.586, 0.815]], [0.683, [0.824, 0.586, 0.815]], [0.685, [0.822, 0.592, 0.824]], [0.687, [0.822, 0.592, 0.824]], [0.689, [0.819, 0.598, 0.833]], [0.691, [0.819, 0.598, 0.833]], [0.693, [0.817, 0.604, 0.842]], [0.695, [0.817, 0.604, 0.842]], [0.697, [0.815, 0.610, 0.850]], [0.699, [0.815, 0.610, 0.850]], [0.701, [0.812, 0.617, 0.858]], [0.703, [0.812, 0.617, 0.858]], [0.705, [0.810, 0.623, 0.865]], [0.706, [0.810, 0.623, 0.865]], [0.708, [0.807, 0.630, 0.873]], [0.710, [0.807, 0.630, 0.873]], [0.712, [0.805, 0.637, 0.880]], [0.714, [0.805, 0.637, 0.880]], [0.716, [0.802, 0.643, 0.886]], [0.718, [0.802, 0.643, 0.886]], [0.720, [0.799, 0.650, 0.893]], [0.722, [0.799, 0.650, 0.893]], [0.724, [0.796, 0.657, 0.899]], [0.726, [0.796, 0.657, 0.899]], [0.728, [0.794, 0.664, 0.904]], [0.730, [0.794, 0.664, 0.904]], [0.732, [0.791, 0.671, 0.910]], [0.734, [0.791, 0.671, 0.910]], [0.736, [0.788, 0.678, 0.915]], [0.738, [0.788, 0.678, 0.915]], [0.740, [0.786, 0.685, 0.919]], [0.742, [0.786, 0.685, 0.919]], [0.744, [0.783, 0.693, 0.924]], [0.746, [0.783, 0.693, 0.924]], [0.748, [0.780, 0.700, 0.928]], [0.750, [0.780, 0.700, 0.928]], [0.751, [0.778, 0.707, 0.931]], [0.753, [0.778, 0.707, 0.931]], [0.755, [0.776, 0.714, 0.935]], [0.757, [0.776, 0.714, 0.935]], [0.759, [0.773, 0.721, 0.938]], [0.761, [0.773, 0.721, 0.938]], [0.763, [0.771, 0.729, 0.941]], [0.765, [0.771, 0.729, 0.941]], [0.767, [0.769, 0.736, 0.943]], [0.769, [0.769, 0.736, 0.943]], [0.771, [0.767, 0.743, 0.946]], [0.773, [0.767, 0.743, 0.946]], [0.775, [0.765, 0.750, 0.948]], [0.777, [0.765, 0.750, 0.948]], [0.779, [0.764, 0.757, 0.949]], [0.781, [0.764, 0.757, 0.949]], [0.783, [0.762, 0.764, 0.951]], [0.785, [0.762, 0.764, 0.951]], [0.787, [0.761, 0.771, 0.952]], [0.789, [0.761, 0.771, 0.952]], [0.791, [0.760, 0.778, 0.953]], [0.793, [0.760, 0.778, 0.953]], [0.795, [0.759, 0.785, 0.954]], [0.796, [0.759, 0.785, 0.954]], [0.798, [0.759, 0.792, 0.954]], [0.800, [0.759, 0.792, 0.954]], [0.802, [0.758, 0.799, 0.955]], [0.804, [0.758, 0.799, 0.955]], [0.806, [0.758, 0.806, 0.955]], [0.808, [0.758, 0.806, 0.955]], [0.810, [0.758, 0.812, 0.955]], [0.812, [0.758, 0.812, 0.955]], [0.814, [0.758, 0.819, 0.955]], [0.816, [0.758, 0.819, 0.955]], [0.818, [0.759, 0.825, 0.954]], [0.820, [0.759, 0.825, 0.954]], [0.822, [0.760, 0.832, 0.954]], [0.824, [0.760, 0.832, 0.954]], [0.826, [0.761, 0.838, 0.953]], [0.828, [0.761, 0.838, 0.953]], [0.830, [0.762, 0.844, 0.952]], [0.832, [0.762, 0.844, 0.952]], [0.834, [0.763, 0.850, 0.952]], [0.836, [0.763, 0.850, 0.952]], [0.838, [0.765, 0.856, 0.951]], [0.840, [0.765, 0.856, 0.951]], [0.841, [0.767, 0.862, 0.950]], [0.843, [0.767, 0.862, 0.950]], [0.845, [0.769, 0.868, 0.949]], [0.847, [0.769, 0.868, 0.949]], [0.849, [0.772, 0.873, 0.947]], [0.851, [0.772, 0.873, 0.947]], [0.853, [0.775, 0.879, 0.946]], [0.855, [0.775, 0.879, 0.946]], [0.857, [0.778, 0.884, 0.945]], [0.859, [0.778, 0.884, 0.945]], [0.861, [0.781, 0.889, 0.944]], [0.863, [0.781, 0.889, 0.944]], [0.865, [0.784, 0.894, 0.943]], [0.867, [0.784, 0.894, 0.943]], [0.869, [0.788, 0.899, 0.942]], [0.871, [0.788, 0.899, 0.942]], [0.873, [0.792, 0.904, 0.941]], [0.875, [0.792, 0.904, 0.941]], [0.877, [0.796, 0.909, 0.940]], [0.879, [0.796, 0.909, 0.940]], [0.881, [0.801, 0.913, 0.939]], [0.883, [0.801, 0.913, 0.939]], [0.885, [0.806, 0.918, 0.938]], [0.886, [0.806, 0.918, 0.938]], [0.888, [0.811, 0.922, 0.937]], [0.890, [0.811, 0.922, 0.937]], [0.892, [0.816, 0.926, 0.937]], [0.894, [0.816, 0.926, 0.937]], [0.896, [0.821, 0.930, 0.936]], [0.898, [0.821, 0.930, 0.936]], [0.900, [0.827, 0.934, 0.936]], [0.902, [0.827, 0.934, 0.936]], [0.904, [0.833, 0.938, 0.936]], [0.906, [0.833, 0.938, 0.936]], [0.908, [0.839, 0.941, 0.936]], [0.910, [0.839, 0.941, 0.936]], [0.912, [0.845, 0.945, 0.936]], [0.914, [0.845, 0.945, 0.936]], [0.916, [0.851, 0.948, 0.936]], [0.918, [0.851, 0.948, 0.936]], [0.920, [0.857, 0.951, 0.937]], [0.922, [0.857, 0.951, 0.937]], [0.924, [0.864, 0.954, 0.938]], [0.926, [0.864, 0.954, 0.938]], [0.928, [0.871, 0.957, 0.939]], [0.930, [0.871, 0.957, 0.939]], [0.932, [0.878, 0.960, 0.940]], [0.933, [0.878, 0.960, 0.940]], [0.935, [0.885, 0.963, 0.941]], [0.937, [0.885, 0.963, 0.941]], [0.939, [0.892, 0.966, 0.943]], [0.941, [0.892, 0.966, 0.943]], [0.943, [0.899, 0.969, 0.945]], [0.945, [0.899, 0.969, 0.945]], [0.947, [0.906, 0.971, 0.947]], [0.949, [0.906, 0.971, 0.947]], [0.951, [0.913, 0.974, 0.949]], [0.953, [0.913, 0.974, 0.949]], [0.955, [0.921, 0.976, 0.952]], [0.957, [0.921, 0.976, 0.952]], [0.959, [0.928, 0.979, 0.955]], [0.961, [0.928, 0.979, 0.955]], [0.963, [0.935, 0.981, 0.958]], [0.965, [0.935, 0.981, 0.958]], [0.967, [0.943, 0.983, 0.962]], [0.969, [0.943, 0.983, 0.962]], [0.971, [0.950, 0.985, 0.966]], [0.973, [0.950, 0.985, 0.966]], [0.975, [0.957, 0.987, 0.970]], [0.977, [0.957, 0.987, 0.970]], [0.978, [0.965, 0.990, 0.974]], [0.980, [0.965, 0.990, 0.974]], [0.982, [0.972, 0.992, 0.979]], [0.984, [0.972, 0.992, 0.979]], [0.986, [0.979, 0.994, 0.984]], [0.988, [0.979, 0.994, 0.984]], [0.990, [0.986, 0.996, 0.989]], [0.992, [0.986, 0.996, 0.989]], [0.994, [0.993, 0.998, 0.994]], [0.996, [0.993, 0.998, 0.994]], [0.998, [1.000, 1.000, 1.000]], [1.000, [1.000, 1.000, 1.000]]]; +var flag = [[0.000, [1.000, 0.000, 0.000]], [0.002, [1.000, 0.000, 0.000]], [0.004, [1.000, 0.378, 0.210]], [0.006, [1.000, 0.378, 0.210]], [0.008, [1.000, 0.701, 0.493]], [0.010, [1.000, 0.701, 0.493]], [0.012, [1.000, 0.918, 0.777]], [0.014, [1.000, 0.918, 0.777]], [0.016, [1.000, 1.000, 1.000]], [0.018, [1.000, 1.000, 1.000]], [0.020, [0.803, 0.932, 1.000]], [0.022, [0.803, 0.932, 1.000]], [0.023, [0.521, 0.726, 1.000]], [0.025, [0.521, 0.726, 1.000]], [0.027, [0.236, 0.412, 1.000]], [0.029, [0.236, 0.412, 1.000]], [0.031, [0.000, 0.037, 1.000]], [0.033, [0.000, 0.037, 1.000]], [0.035, [0.000, 0.000, 0.816]], [0.037, [0.000, 0.000, 0.816]], [0.039, [0.000, 0.000, 0.535]], [0.041, [0.000, 0.000, 0.535]], [0.043, [0.000, 0.000, 0.249]], [0.045, [0.000, 0.000, 0.249]], [0.047, [0.000, 0.000, 0.000]], [0.049, [0.000, 0.000, 0.000]], [0.051, [0.172, 0.000, 0.000]], [0.053, [0.172, 0.000, 0.000]], [0.055, [0.452, 0.000, 0.000]], [0.057, [0.452, 0.000, 0.000]], [0.059, [0.738, 0.000, 0.000]], [0.061, [0.738, 0.000, 0.000]], [0.063, [0.990, 0.000, 0.000]], [0.065, [0.990, 0.000, 0.000]], [0.067, [1.000, 0.309, 0.160]], [0.068, [1.000, 0.309, 0.160]], [0.070, [1.000, 0.646, 0.438]], [0.072, [1.000, 0.646, 0.438]], [0.074, [1.000, 0.887, 0.725]], [0.076, [1.000, 0.887, 0.725]], [0.078, [1.000, 0.996, 0.979]], [0.080, [1.000, 0.996, 0.979]], [0.082, [0.853, 0.957, 1.000]], [0.084, [0.853, 0.957, 1.000]], [0.086, [0.576, 0.775, 1.000]], [0.088, [0.576, 0.775, 1.000]], [0.090, [0.288, 0.479, 1.000]], [0.092, [0.288, 0.479, 1.000]], [0.094, [0.032, 0.111, 1.000]], [0.096, [0.032, 0.111, 1.000]], [0.098, [0.000, 0.000, 0.865]], [0.100, [0.000, 0.000, 0.865]], [0.102, [0.000, 0.000, 0.590]], [0.104, [0.000, 0.000, 0.590]], [0.106, [0.000, 0.000, 0.301]], [0.108, [0.000, 0.000, 0.301]], [0.110, [0.000, 0.000, 0.043]], [0.112, [0.000, 0.000, 0.043]], [0.114, [0.123, 0.000, 0.000]], [0.115, [0.123, 0.000, 0.000]], [0.117, [0.396, 0.000, 0.000]], [0.119, [0.396, 0.000, 0.000]], [0.121, [0.685, 0.000, 0.000]], [0.123, [0.685, 0.000, 0.000]], [0.125, [0.946, 0.000, 0.000]], [0.127, [0.946, 0.000, 0.000]], [0.129, [1.000, 0.238, 0.111]], [0.131, [1.000, 0.238, 0.111]], [0.133, [1.000, 0.588, 0.383]], [0.135, [1.000, 0.588, 0.383]], [0.137, [1.000, 0.850, 0.672]], [0.139, [1.000, 0.850, 0.672]], [0.141, [1.000, 0.986, 0.935]], [0.143, [1.000, 0.986, 0.935]], [0.145, [0.901, 0.976, 1.000]], [0.147, [0.901, 0.976, 1.000]], [0.149, [0.631, 0.820, 1.000]], [0.151, [0.631, 0.820, 1.000]], [0.153, [0.342, 0.542, 1.000]], [0.155, [0.342, 0.542, 1.000]], [0.157, [0.076, 0.184, 1.000]], [0.159, [0.076, 0.184, 1.000]], [0.160, [0.000, 0.000, 0.912]], [0.162, [0.000, 0.000, 0.912]], [0.164, [0.000, 0.000, 0.645]], [0.166, [0.000, 0.000, 0.645]], [0.168, [0.000, 0.000, 0.355]], [0.170, [0.000, 0.000, 0.355]], [0.172, [0.000, 0.000, 0.088]], [0.174, [0.000, 0.000, 0.088]], [0.176, [0.076, 0.000, 0.000]], [0.178, [0.076, 0.000, 0.000]], [0.180, [0.342, 0.000, 0.000]], [0.182, [0.342, 0.000, 0.000]], [0.184, [0.631, 0.000, 0.000]], [0.186, [0.631, 0.000, 0.000]], [0.188, [0.901, 0.000, 0.000]], [0.190, [0.901, 0.000, 0.000]], [0.192, [1.000, 0.166, 0.065]], [0.194, [1.000, 0.166, 0.065]], [0.196, [1.000, 0.526, 0.328]], [0.198, [1.000, 0.526, 0.328]], [0.200, [1.000, 0.809, 0.617]], [0.202, [1.000, 0.809, 0.617]], [0.204, [1.000, 0.971, 0.889]], [0.205, [1.000, 0.971, 0.889]], [0.207, [0.946, 0.989, 1.000]], [0.209, [0.946, 0.989, 1.000]], [0.211, [0.685, 0.860, 1.000]], [0.213, [0.685, 0.860, 1.000]], [0.215, [0.396, 0.603, 1.000]], [0.217, [0.396, 0.603, 1.000]], [0.219, [0.123, 0.256, 1.000]], [0.221, [0.123, 0.256, 1.000]], [0.223, [0.000, 0.000, 0.957]], [0.225, [0.000, 0.000, 0.957]], [0.227, [0.000, 0.000, 0.699]], [0.229, [0.000, 0.000, 0.699]], [0.231, [0.000, 0.000, 0.410]], [0.233, [0.000, 0.000, 0.410]], [0.235, [0.000, 0.000, 0.135]], [0.237, [0.000, 0.000, 0.135]], [0.239, [0.032, 0.000, 0.000]], [0.241, [0.032, 0.000, 0.000]], [0.243, [0.288, 0.000, 0.000]], [0.245, [0.288, 0.000, 0.000]], [0.247, [0.576, 0.000, 0.000]], [0.249, [0.576, 0.000, 0.000]], [0.250, [0.853, 0.000, 0.000]], [0.252, [0.853, 0.000, 0.000]], [0.254, [1.000, 0.092, 0.021]], [0.256, [1.000, 0.092, 0.021]], [0.258, [1.000, 0.462, 0.275]], [0.260, [1.000, 0.462, 0.275]], [0.262, [1.000, 0.763, 0.562]], [0.264, [1.000, 0.763, 0.562]], [0.266, [1.000, 0.951, 0.840]], [0.268, [1.000, 0.951, 0.840]], [0.270, [0.990, 0.997, 1.000]], [0.272, [0.990, 0.997, 1.000]], [0.274, [0.738, 0.895, 1.000]], [0.276, [0.738, 0.895, 1.000]], [0.278, [0.452, 0.660, 1.000]], [0.280, [0.452, 0.660, 1.000]], [0.282, [0.172, 0.327, 1.000]], [0.284, [0.172, 0.327, 1.000]], [0.286, [0.000, 0.000, 1.000]], [0.288, [0.000, 0.000, 1.000]], [0.290, [0.000, 0.000, 0.751]], [0.292, [0.000, 0.000, 0.751]], [0.294, [0.000, 0.000, 0.465]], [0.295, [0.000, 0.000, 0.465]], [0.297, [0.000, 0.000, 0.184]], [0.299, [0.000, 0.000, 0.184]], [0.301, [0.000, 0.000, 0.000]], [0.303, [0.000, 0.000, 0.000]], [0.305, [0.236, 0.000, 0.000]], [0.307, [0.236, 0.000, 0.000]], [0.309, [0.521, 0.000, 0.000]], [0.311, [0.521, 0.000, 0.000]], [0.313, [0.803, 0.000, 0.000]], [0.315, [0.803, 0.000, 0.000]], [0.317, [1.000, 0.018, 0.000]], [0.319, [1.000, 0.018, 0.000]], [0.321, [1.000, 0.395, 0.223]], [0.323, [1.000, 0.395, 0.223]], [0.325, [1.000, 0.714, 0.507]], [0.327, [1.000, 0.714, 0.507]], [0.329, [1.000, 0.926, 0.790]], [0.331, [1.000, 0.926, 0.790]], [0.333, [1.000, 1.000, 1.000]], [0.335, [1.000, 1.000, 1.000]], [0.337, [0.790, 0.926, 1.000]], [0.339, [0.790, 0.926, 1.000]], [0.341, [0.507, 0.714, 1.000]], [0.342, [0.507, 0.714, 1.000]], [0.344, [0.223, 0.395, 1.000]], [0.346, [0.223, 0.395, 1.000]], [0.348, [0.000, 0.018, 1.000]], [0.350, [0.000, 0.018, 1.000]], [0.352, [0.000, 0.000, 0.803]], [0.354, [0.000, 0.000, 0.803]], [0.356, [0.000, 0.000, 0.521]], [0.358, [0.000, 0.000, 0.521]], [0.360, [0.000, 0.000, 0.236]], [0.362, [0.000, 0.000, 0.236]], [0.364, [0.000, 0.000, 0.000]], [0.366, [0.000, 0.000, 0.000]], [0.368, [0.184, 0.000, 0.000]], [0.370, [0.184, 0.000, 0.000]], [0.372, [0.465, 0.000, 0.000]], [0.374, [0.465, 0.000, 0.000]], [0.376, [0.751, 0.000, 0.000]], [0.378, [0.751, 0.000, 0.000]], [0.380, [1.000, 0.000, 0.000]], [0.382, [1.000, 0.000, 0.000]], [0.384, [1.000, 0.327, 0.172]], [0.386, [1.000, 0.327, 0.172]], [0.387, [1.000, 0.660, 0.452]], [0.389, [1.000, 0.660, 0.452]], [0.391, [1.000, 0.895, 0.738]], [0.393, [1.000, 0.895, 0.738]], [0.395, [1.000, 0.997, 0.990]], [0.397, [1.000, 0.997, 0.990]], [0.399, [0.840, 0.951, 1.000]], [0.401, [0.840, 0.951, 1.000]], [0.403, [0.562, 0.763, 1.000]], [0.405, [0.562, 0.763, 1.000]], [0.407, [0.275, 0.462, 1.000]], [0.409, [0.275, 0.462, 1.000]], [0.411, [0.021, 0.092, 1.000]], [0.413, [0.021, 0.092, 1.000]], [0.415, [0.000, 0.000, 0.853]], [0.417, [0.000, 0.000, 0.853]], [0.419, [0.000, 0.000, 0.576]], [0.421, [0.000, 0.000, 0.576]], [0.423, [0.000, 0.000, 0.288]], [0.425, [0.000, 0.000, 0.288]], [0.427, [0.000, 0.000, 0.032]], [0.429, [0.000, 0.000, 0.032]], [0.431, [0.135, 0.000, 0.000]], [0.432, [0.135, 0.000, 0.000]], [0.434, [0.410, 0.000, 0.000]], [0.436, [0.410, 0.000, 0.000]], [0.438, [0.699, 0.000, 0.000]], [0.440, [0.699, 0.000, 0.000]], [0.442, [0.957, 0.000, 0.000]], [0.444, [0.957, 0.000, 0.000]], [0.446, [1.000, 0.256, 0.123]], [0.448, [1.000, 0.256, 0.123]], [0.450, [1.000, 0.603, 0.396]], [0.452, [1.000, 0.603, 0.396]], [0.454, [1.000, 0.860, 0.685]], [0.456, [1.000, 0.860, 0.685]], [0.458, [1.000, 0.989, 0.946]], [0.460, [1.000, 0.989, 0.946]], [0.462, [0.889, 0.971, 1.000]], [0.464, [0.889, 0.971, 1.000]], [0.466, [0.617, 0.809, 1.000]], [0.468, [0.617, 0.809, 1.000]], [0.470, [0.328, 0.526, 1.000]], [0.472, [0.328, 0.526, 1.000]], [0.474, [0.065, 0.166, 1.000]], [0.476, [0.065, 0.166, 1.000]], [0.477, [0.000, 0.000, 0.901]], [0.479, [0.000, 0.000, 0.901]], [0.481, [0.000, 0.000, 0.631]], [0.483, [0.000, 0.000, 0.631]], [0.485, [0.000, 0.000, 0.342]], [0.487, [0.000, 0.000, 0.342]], [0.489, [0.000, 0.000, 0.076]], [0.491, [0.000, 0.000, 0.076]], [0.493, [0.088, 0.000, 0.000]], [0.495, [0.088, 0.000, 0.000]], [0.497, [0.355, 0.000, 0.000]], [0.499, [0.355, 0.000, 0.000]], [0.501, [0.645, 0.000, 0.000]], [0.503, [0.645, 0.000, 0.000]], [0.505, [0.912, 0.000, 0.000]], [0.507, [0.912, 0.000, 0.000]], [0.509, [1.000, 0.184, 0.076]], [0.511, [1.000, 0.184, 0.076]], [0.513, [1.000, 0.542, 0.342]], [0.515, [1.000, 0.542, 0.342]], [0.517, [1.000, 0.820, 0.631]], [0.519, [1.000, 0.820, 0.631]], [0.521, [1.000, 0.976, 0.901]], [0.523, [1.000, 0.976, 0.901]], [0.524, [0.935, 0.986, 1.000]], [0.526, [0.935, 0.986, 1.000]], [0.528, [0.672, 0.850, 1.000]], [0.530, [0.672, 0.850, 1.000]], [0.532, [0.383, 0.588, 1.000]], [0.534, [0.383, 0.588, 1.000]], [0.536, [0.111, 0.238, 1.000]], [0.538, [0.111, 0.238, 1.000]], [0.540, [0.000, 0.000, 0.946]], [0.542, [0.000, 0.000, 0.946]], [0.544, [0.000, 0.000, 0.685]], [0.546, [0.000, 0.000, 0.685]], [0.548, [0.000, 0.000, 0.396]], [0.550, [0.000, 0.000, 0.396]], [0.552, [0.000, 0.000, 0.123]], [0.554, [0.000, 0.000, 0.123]], [0.556, [0.043, 0.000, 0.000]], [0.558, [0.043, 0.000, 0.000]], [0.560, [0.301, 0.000, 0.000]], [0.562, [0.301, 0.000, 0.000]], [0.564, [0.590, 0.000, 0.000]], [0.566, [0.590, 0.000, 0.000]], [0.568, [0.865, 0.000, 0.000]], [0.569, [0.865, 0.000, 0.000]], [0.571, [1.000, 0.111, 0.032]], [0.573, [1.000, 0.111, 0.032]], [0.575, [1.000, 0.479, 0.288]], [0.577, [1.000, 0.479, 0.288]], [0.579, [1.000, 0.775, 0.576]], [0.581, [1.000, 0.775, 0.576]], [0.583, [1.000, 0.957, 0.853]], [0.585, [1.000, 0.957, 0.853]], [0.587, [0.979, 0.996, 1.000]], [0.589, [0.979, 0.996, 1.000]], [0.591, [0.725, 0.887, 1.000]], [0.593, [0.725, 0.887, 1.000]], [0.595, [0.438, 0.646, 1.000]], [0.597, [0.438, 0.646, 1.000]], [0.599, [0.160, 0.309, 1.000]], [0.601, [0.160, 0.309, 1.000]], [0.603, [0.000, 0.000, 0.990]], [0.605, [0.000, 0.000, 0.990]], [0.607, [0.000, 0.000, 0.738]], [0.609, [0.000, 0.000, 0.738]], [0.611, [0.000, 0.000, 0.452]], [0.613, [0.000, 0.000, 0.452]], [0.614, [0.000, 0.000, 0.172]], [0.616, [0.000, 0.000, 0.172]], [0.618, [0.000, 0.000, 0.000]], [0.620, [0.000, 0.000, 0.000]], [0.622, [0.249, 0.000, 0.000]], [0.624, [0.249, 0.000, 0.000]], [0.626, [0.535, 0.000, 0.000]], [0.628, [0.535, 0.000, 0.000]], [0.630, [0.816, 0.000, 0.000]], [0.632, [0.816, 0.000, 0.000]], [0.634, [1.000, 0.037, 0.000]], [0.636, [1.000, 0.037, 0.000]], [0.638, [1.000, 0.412, 0.236]], [0.640, [1.000, 0.412, 0.236]], [0.642, [1.000, 0.726, 0.521]], [0.644, [1.000, 0.726, 0.521]], [0.646, [1.000, 0.932, 0.803]], [0.648, [1.000, 0.932, 0.803]], [0.650, [1.000, 1.000, 1.000]], [0.652, [1.000, 1.000, 1.000]], [0.654, [0.777, 0.918, 1.000]], [0.656, [0.777, 0.918, 1.000]], [0.658, [0.493, 0.701, 1.000]], [0.659, [0.493, 0.701, 1.000]], [0.661, [0.210, 0.378, 1.000]], [0.663, [0.210, 0.378, 1.000]], [0.665, [0.000, 0.000, 1.000]], [0.667, [0.000, 0.000, 1.000]], [0.669, [0.000, 0.000, 0.790]], [0.671, [0.000, 0.000, 0.790]], [0.673, [0.000, 0.000, 0.507]], [0.675, [0.000, 0.000, 0.507]], [0.677, [0.000, 0.000, 0.223]], [0.679, [0.000, 0.000, 0.223]], [0.681, [0.000, 0.000, 0.000]], [0.683, [0.000, 0.000, 0.000]], [0.685, [0.197, 0.000, 0.000]], [0.687, [0.197, 0.000, 0.000]], [0.689, [0.479, 0.000, 0.000]], [0.691, [0.479, 0.000, 0.000]], [0.693, [0.764, 0.000, 0.000]], [0.695, [0.764, 0.000, 0.000]], [0.697, [1.000, 0.000, 0.000]], [0.699, [1.000, 0.000, 0.000]], [0.701, [1.000, 0.344, 0.184]], [0.703, [1.000, 0.344, 0.184]], [0.705, [1.000, 0.674, 0.465]], [0.706, [1.000, 0.674, 0.465]], [0.708, [1.000, 0.903, 0.751]], [0.710, [1.000, 0.903, 0.751]], [0.712, [1.000, 0.998, 1.000]], [0.714, [1.000, 0.998, 1.000]], [0.716, [0.828, 0.945, 1.000]], [0.718, [0.828, 0.945, 1.000]], [0.720, [0.548, 0.751, 1.000]], [0.722, [0.548, 0.751, 1.000]], [0.724, [0.262, 0.446, 1.000]], [0.726, [0.262, 0.446, 1.000]], [0.728, [0.010, 0.074, 1.000]], [0.730, [0.010, 0.074, 1.000]], [0.732, [0.000, 0.000, 0.840]], [0.734, [0.000, 0.000, 0.840]], [0.736, [0.000, 0.000, 0.562]], [0.738, [0.000, 0.000, 0.562]], [0.740, [0.000, 0.000, 0.275]], [0.742, [0.000, 0.000, 0.275]], [0.744, [0.000, 0.000, 0.021]], [0.746, [0.000, 0.000, 0.021]], [0.748, [0.147, 0.000, 0.000]], [0.750, [0.147, 0.000, 0.000]], [0.751, [0.424, 0.000, 0.000]], [0.753, [0.424, 0.000, 0.000]], [0.755, [0.712, 0.000, 0.000]], [0.757, [0.712, 0.000, 0.000]], [0.759, [0.968, 0.000, 0.000]], [0.761, [0.968, 0.000, 0.000]], [0.763, [1.000, 0.274, 0.135]], [0.765, [1.000, 0.274, 0.135]], [0.767, [1.000, 0.617, 0.410]], [0.769, [1.000, 0.617, 0.410]], [0.771, [1.000, 0.869, 0.699]], [0.773, [1.000, 0.869, 0.699]], [0.775, [1.000, 0.992, 0.957]], [0.777, [1.000, 0.992, 0.957]], [0.779, [0.877, 0.967, 1.000]], [0.781, [0.877, 0.967, 1.000]], [0.783, [0.604, 0.798, 1.000]], [0.785, [0.604, 0.798, 1.000]], [0.787, [0.315, 0.511, 1.000]], [0.789, [0.315, 0.511, 1.000]], [0.791, [0.054, 0.147, 1.000]], [0.793, [0.054, 0.147, 1.000]], [0.795, [0.000, 0.000, 0.889]], [0.796, [0.000, 0.000, 0.889]], [0.798, [0.000, 0.000, 0.617]], [0.800, [0.000, 0.000, 0.617]], [0.802, [0.000, 0.000, 0.328]], [0.804, [0.000, 0.000, 0.328]], [0.806, [0.000, 0.000, 0.065]], [0.808, [0.000, 0.000, 0.065]], [0.810, [0.099, 0.000, 0.000]], [0.812, [0.099, 0.000, 0.000]], [0.814, [0.369, 0.000, 0.000]], [0.816, [0.369, 0.000, 0.000]], [0.818, [0.658, 0.000, 0.000]], [0.820, [0.658, 0.000, 0.000]], [0.822, [0.924, 0.000, 0.000]], [0.824, [0.924, 0.000, 0.000]], [0.826, [1.000, 0.202, 0.088]], [0.828, [1.000, 0.202, 0.088]], [0.830, [1.000, 0.557, 0.355]], [0.832, [1.000, 0.557, 0.355]], [0.834, [1.000, 0.830, 0.645]], [0.836, [1.000, 0.830, 0.645]], [0.838, [1.000, 0.979, 0.912]], [0.840, [1.000, 0.979, 0.912]], [0.841, [0.924, 0.983, 1.000]], [0.843, [0.924, 0.983, 1.000]], [0.845, [0.658, 0.840, 1.000]], [0.847, [0.658, 0.840, 1.000]], [0.849, [0.369, 0.573, 1.000]], [0.851, [0.369, 0.573, 1.000]], [0.853, [0.099, 0.220, 1.000]], [0.855, [0.099, 0.220, 1.000]], [0.857, [0.000, 0.000, 0.935]], [0.859, [0.000, 0.000, 0.935]], [0.861, [0.000, 0.000, 0.672]], [0.863, [0.000, 0.000, 0.672]], [0.865, [0.000, 0.000, 0.383]], [0.867, [0.000, 0.000, 0.383]], [0.869, [0.000, 0.000, 0.111]], [0.871, [0.000, 0.000, 0.111]], [0.873, [0.054, 0.000, 0.000]], [0.875, [0.054, 0.000, 0.000]], [0.877, [0.315, 0.000, 0.000]], [0.879, [0.315, 0.000, 0.000]], [0.881, [0.604, 0.000, 0.000]], [0.883, [0.604, 0.000, 0.000]], [0.885, [0.877, 0.000, 0.000]], [0.886, [0.877, 0.000, 0.000]], [0.888, [1.000, 0.129, 0.043]], [0.890, [1.000, 0.129, 0.043]], [0.892, [1.000, 0.495, 0.301]], [0.894, [1.000, 0.495, 0.301]], [0.896, [1.000, 0.787, 0.590]], [0.898, [1.000, 0.787, 0.590]], [0.900, [1.000, 0.962, 0.865]], [0.902, [1.000, 0.962, 0.865]], [0.904, [0.968, 0.994, 1.000]], [0.906, [0.968, 0.994, 1.000]], [0.908, [0.712, 0.878, 1.000]], [0.910, [0.712, 0.878, 1.000]], [0.912, [0.424, 0.632, 1.000]], [0.914, [0.424, 0.632, 1.000]], [0.916, [0.147, 0.291, 1.000]], [0.918, [0.147, 0.291, 1.000]], [0.920, [0.000, 0.000, 0.979]], [0.922, [0.000, 0.000, 0.979]], [0.924, [0.000, 0.000, 0.725]], [0.926, [0.000, 0.000, 0.725]], [0.928, [0.000, 0.000, 0.438]], [0.930, [0.000, 0.000, 0.438]], [0.932, [0.000, 0.000, 0.160]], [0.933, [0.000, 0.000, 0.160]], [0.935, [0.010, 0.000, 0.000]], [0.937, [0.010, 0.000, 0.000]], [0.939, [0.262, 0.000, 0.000]], [0.941, [0.262, 0.000, 0.000]], [0.943, [0.548, 0.000, 0.000]], [0.945, [0.548, 0.000, 0.000]], [0.947, [0.828, 0.000, 0.000]], [0.949, [0.828, 0.000, 0.000]], [0.951, [1.000, 0.055, 0.000]], [0.953, [1.000, 0.055, 0.000]], [0.955, [1.000, 0.429, 0.249]], [0.957, [1.000, 0.429, 0.249]], [0.959, [1.000, 0.739, 0.535]], [0.961, [1.000, 0.739, 0.535]], [0.963, [1.000, 0.939, 0.816]], [0.965, [1.000, 0.939, 0.816]], [0.967, [1.000, 0.999, 1.000]], [0.969, [1.000, 0.999, 1.000]], [0.971, [0.764, 0.911, 1.000]], [0.973, [0.764, 0.911, 1.000]], [0.975, [0.479, 0.687, 1.000]], [0.977, [0.479, 0.687, 1.000]], [0.978, [0.197, 0.361, 1.000]], [0.980, [0.197, 0.361, 1.000]], [0.982, [0.000, 0.000, 1.000]], [0.984, [0.000, 0.000, 1.000]], [0.986, [0.000, 0.000, 0.777]], [0.988, [0.000, 0.000, 0.777]], [0.990, [0.000, 0.000, 0.493]], [0.992, [0.000, 0.000, 0.493]], [0.994, [0.000, 0.000, 0.210]], [0.996, [0.000, 0.000, 0.210]], [0.998, [0.000, 0.000, 0.000]], [1.000, [0.000, 0.000, 0.000]]]; +var gist_earth = [[0.000, [0.000, 0.000, 0.000]], [0.002, [0.000, 0.000, 0.000]], [0.004, [0.003, 0.000, 0.169]], [0.006, [0.003, 0.000, 0.169]], [0.008, [0.005, 0.000, 0.222]], [0.010, [0.005, 0.000, 0.222]], [0.012, [0.008, 0.000, 0.264]], [0.014, [0.008, 0.000, 0.264]], [0.016, [0.010, 0.000, 0.306]], [0.018, [0.010, 0.000, 0.306]], [0.020, [0.013, 0.000, 0.348]], [0.022, [0.013, 0.000, 0.348]], [0.023, [0.016, 0.000, 0.390]], [0.025, [0.016, 0.000, 0.390]], [0.027, [0.018, 0.000, 0.432]], [0.029, [0.018, 0.000, 0.432]], [0.031, [0.021, 0.009, 0.455]], [0.033, [0.021, 0.009, 0.455]], [0.035, [0.024, 0.018, 0.456]], [0.037, [0.024, 0.018, 0.456]], [0.039, [0.026, 0.027, 0.456]], [0.041, [0.026, 0.027, 0.456]], [0.043, [0.029, 0.036, 0.457]], [0.045, [0.029, 0.036, 0.457]], [0.047, [0.031, 0.045, 0.458]], [0.049, [0.031, 0.045, 0.458]], [0.051, [0.034, 0.054, 0.458]], [0.053, [0.034, 0.054, 0.458]], [0.055, [0.037, 0.063, 0.459]], [0.057, [0.037, 0.063, 0.459]], [0.059, [0.039, 0.072, 0.460]], [0.061, [0.039, 0.072, 0.460]], [0.063, [0.042, 0.081, 0.461]], [0.065, [0.042, 0.081, 0.461]], [0.067, [0.044, 0.090, 0.461]], [0.068, [0.044, 0.090, 0.461]], [0.070, [0.047, 0.099, 0.462]], [0.072, [0.047, 0.099, 0.462]], [0.074, [0.050, 0.108, 0.463]], [0.076, [0.050, 0.108, 0.463]], [0.078, [0.052, 0.117, 0.463]], [0.080, [0.052, 0.117, 0.463]], [0.082, [0.055, 0.126, 0.464]], [0.084, [0.055, 0.126, 0.464]], [0.086, [0.057, 0.135, 0.465]], [0.088, [0.057, 0.135, 0.465]], [0.090, [0.060, 0.144, 0.466]], [0.092, [0.060, 0.144, 0.466]], [0.094, [0.063, 0.153, 0.466]], [0.096, [0.063, 0.153, 0.466]], [0.098, [0.065, 0.162, 0.467]], [0.100, [0.065, 0.162, 0.467]], [0.102, [0.068, 0.171, 0.468]], [0.104, [0.068, 0.171, 0.468]], [0.106, [0.071, 0.180, 0.468]], [0.108, [0.071, 0.180, 0.468]], [0.110, [0.073, 0.189, 0.469]], [0.112, [0.073, 0.189, 0.469]], [0.114, [0.076, 0.197, 0.470]], [0.115, [0.076, 0.197, 0.470]], [0.117, [0.078, 0.206, 0.471]], [0.119, [0.078, 0.206, 0.471]], [0.121, [0.081, 0.214, 0.471]], [0.123, [0.081, 0.214, 0.471]], [0.125, [0.084, 0.222, 0.472]], [0.127, [0.084, 0.222, 0.472]], [0.129, [0.086, 0.230, 0.473]], [0.131, [0.086, 0.230, 0.473]], [0.133, [0.089, 0.238, 0.473]], [0.135, [0.089, 0.238, 0.473]], [0.137, [0.091, 0.246, 0.474]], [0.139, [0.091, 0.246, 0.474]], [0.141, [0.094, 0.255, 0.475]], [0.143, [0.094, 0.255, 0.475]], [0.145, [0.097, 0.263, 0.476]], [0.147, [0.097, 0.263, 0.476]], [0.149, [0.099, 0.271, 0.476]], [0.151, [0.099, 0.271, 0.476]], [0.153, [0.102, 0.279, 0.477]], [0.155, [0.102, 0.279, 0.477]], [0.157, [0.105, 0.287, 0.478]], [0.159, [0.105, 0.287, 0.478]], [0.160, [0.107, 0.295, 0.478]], [0.162, [0.107, 0.295, 0.478]], [0.164, [0.110, 0.304, 0.479]], [0.166, [0.110, 0.304, 0.479]], [0.168, [0.112, 0.311, 0.480]], [0.170, [0.112, 0.311, 0.480]], [0.172, [0.115, 0.318, 0.480]], [0.174, [0.115, 0.318, 0.480]], [0.176, [0.118, 0.326, 0.481]], [0.178, [0.118, 0.326, 0.481]], [0.180, [0.120, 0.333, 0.482]], [0.182, [0.120, 0.333, 0.482]], [0.184, [0.123, 0.340, 0.483]], [0.186, [0.123, 0.340, 0.483]], [0.188, [0.125, 0.348, 0.483]], [0.190, [0.125, 0.348, 0.483]], [0.192, [0.128, 0.355, 0.484]], [0.194, [0.128, 0.355, 0.484]], [0.196, [0.131, 0.362, 0.485]], [0.198, [0.131, 0.362, 0.485]], [0.200, [0.133, 0.370, 0.485]], [0.202, [0.133, 0.370, 0.485]], [0.204, [0.136, 0.377, 0.486]], [0.205, [0.136, 0.377, 0.486]], [0.207, [0.139, 0.384, 0.487]], [0.209, [0.139, 0.384, 0.487]], [0.211, [0.141, 0.390, 0.488]], [0.213, [0.141, 0.390, 0.488]], [0.215, [0.144, 0.397, 0.488]], [0.217, [0.144, 0.397, 0.488]], [0.219, [0.146, 0.403, 0.489]], [0.221, [0.146, 0.403, 0.489]], [0.223, [0.149, 0.409, 0.490]], [0.225, [0.149, 0.409, 0.490]], [0.227, [0.152, 0.415, 0.490]], [0.229, [0.152, 0.415, 0.490]], [0.231, [0.154, 0.421, 0.491]], [0.233, [0.154, 0.421, 0.491]], [0.235, [0.157, 0.428, 0.492]], [0.237, [0.157, 0.428, 0.492]], [0.239, [0.159, 0.434, 0.493]], [0.241, [0.159, 0.434, 0.493]], [0.243, [0.162, 0.440, 0.493]], [0.245, [0.162, 0.440, 0.493]], [0.247, [0.165, 0.446, 0.494]], [0.249, [0.165, 0.446, 0.494]], [0.250, [0.167, 0.452, 0.495]], [0.252, [0.167, 0.452, 0.495]], [0.254, [0.170, 0.459, 0.495]], [0.256, [0.170, 0.459, 0.495]], [0.258, [0.172, 0.465, 0.496]], [0.260, [0.172, 0.465, 0.496]], [0.262, [0.175, 0.471, 0.497]], [0.264, [0.175, 0.471, 0.497]], [0.266, [0.178, 0.477, 0.498]], [0.268, [0.178, 0.477, 0.498]], [0.270, [0.180, 0.483, 0.498]], [0.272, [0.180, 0.483, 0.498]], [0.274, [0.183, 0.490, 0.499]], [0.276, [0.183, 0.490, 0.499]], [0.278, [0.186, 0.496, 0.500]], [0.280, [0.186, 0.496, 0.500]], [0.282, [0.188, 0.502, 0.500]], [0.284, [0.188, 0.502, 0.500]], [0.286, [0.190, 0.504, 0.496]], [0.288, [0.190, 0.504, 0.496]], [0.290, [0.192, 0.506, 0.491]], [0.292, [0.192, 0.506, 0.491]], [0.294, [0.194, 0.509, 0.486]], [0.295, [0.194, 0.509, 0.486]], [0.297, [0.196, 0.511, 0.481]], [0.299, [0.196, 0.511, 0.481]], [0.301, [0.197, 0.513, 0.476]], [0.303, [0.197, 0.513, 0.476]], [0.305, [0.199, 0.516, 0.472]], [0.307, [0.199, 0.516, 0.472]], [0.309, [0.201, 0.518, 0.467]], [0.311, [0.201, 0.518, 0.467]], [0.313, [0.203, 0.520, 0.462]], [0.315, [0.203, 0.520, 0.462]], [0.317, [0.205, 0.522, 0.457]], [0.319, [0.205, 0.522, 0.457]], [0.321, [0.207, 0.525, 0.452]], [0.323, [0.207, 0.525, 0.452]], [0.325, [0.209, 0.527, 0.448]], [0.327, [0.209, 0.527, 0.448]], [0.329, [0.210, 0.529, 0.443]], [0.331, [0.210, 0.529, 0.443]], [0.333, [0.212, 0.531, 0.438]], [0.335, [0.212, 0.531, 0.438]], [0.337, [0.214, 0.534, 0.433]], [0.339, [0.214, 0.534, 0.433]], [0.341, [0.216, 0.536, 0.428]], [0.342, [0.216, 0.536, 0.428]], [0.344, [0.218, 0.538, 0.424]], [0.346, [0.218, 0.538, 0.424]], [0.348, [0.220, 0.540, 0.419]], [0.350, [0.220, 0.540, 0.419]], [0.352, [0.221, 0.543, 0.414]], [0.354, [0.221, 0.543, 0.414]], [0.356, [0.223, 0.545, 0.409]], [0.358, [0.223, 0.545, 0.409]], [0.360, [0.225, 0.547, 0.404]], [0.362, [0.225, 0.547, 0.404]], [0.364, [0.227, 0.549, 0.400]], [0.366, [0.227, 0.549, 0.400]], [0.368, [0.229, 0.552, 0.395]], [0.370, [0.229, 0.552, 0.395]], [0.372, [0.231, 0.554, 0.390]], [0.374, [0.231, 0.554, 0.390]], [0.376, [0.233, 0.556, 0.385]], [0.378, [0.233, 0.556, 0.385]], [0.380, [0.234, 0.558, 0.380]], [0.382, [0.234, 0.558, 0.380]], [0.384, [0.236, 0.561, 0.376]], [0.386, [0.236, 0.561, 0.376]], [0.387, [0.238, 0.563, 0.371]], [0.389, [0.238, 0.563, 0.371]], [0.391, [0.240, 0.565, 0.366]], [0.393, [0.240, 0.565, 0.366]], [0.395, [0.242, 0.567, 0.361]], [0.397, [0.242, 0.567, 0.361]], [0.399, [0.244, 0.570, 0.356]], [0.401, [0.244, 0.570, 0.356]], [0.403, [0.246, 0.572, 0.352]], [0.405, [0.246, 0.572, 0.352]], [0.407, [0.247, 0.574, 0.347]], [0.409, [0.247, 0.574, 0.347]], [0.411, [0.249, 0.576, 0.342]], [0.413, [0.249, 0.576, 0.342]], [0.415, [0.251, 0.579, 0.337]], [0.417, [0.251, 0.579, 0.337]], [0.419, [0.253, 0.581, 0.332]], [0.421, [0.253, 0.581, 0.332]], [0.423, [0.255, 0.583, 0.328]], [0.425, [0.255, 0.583, 0.328]], [0.427, [0.257, 0.586, 0.323]], [0.429, [0.257, 0.586, 0.323]], [0.431, [0.258, 0.588, 0.318]], [0.432, [0.258, 0.588, 0.318]], [0.434, [0.260, 0.590, 0.313]], [0.436, [0.260, 0.590, 0.313]], [0.438, [0.262, 0.592, 0.308]], [0.440, [0.262, 0.592, 0.308]], [0.442, [0.264, 0.595, 0.304]], [0.444, [0.264, 0.595, 0.304]], [0.446, [0.266, 0.597, 0.299]], [0.448, [0.266, 0.597, 0.299]], [0.450, [0.268, 0.599, 0.294]], [0.452, [0.268, 0.599, 0.294]], [0.454, [0.270, 0.601, 0.289]], [0.456, [0.270, 0.601, 0.289]], [0.458, [0.271, 0.604, 0.284]], [0.460, [0.271, 0.604, 0.284]], [0.462, [0.280, 0.606, 0.280]], [0.464, [0.280, 0.606, 0.280]], [0.466, [0.289, 0.608, 0.275]], [0.468, [0.289, 0.608, 0.275]], [0.470, [0.298, 0.610, 0.277]], [0.472, [0.298, 0.610, 0.277]], [0.474, [0.306, 0.613, 0.279]], [0.476, [0.306, 0.613, 0.279]], [0.477, [0.315, 0.615, 0.282]], [0.479, [0.315, 0.615, 0.282]], [0.481, [0.324, 0.617, 0.284]], [0.483, [0.324, 0.617, 0.284]], [0.485, [0.332, 0.619, 0.286]], [0.487, [0.332, 0.619, 0.286]], [0.489, [0.341, 0.622, 0.288]], [0.491, [0.341, 0.622, 0.288]], [0.493, [0.350, 0.624, 0.291]], [0.495, [0.350, 0.624, 0.291]], [0.497, [0.359, 0.626, 0.293]], [0.499, [0.359, 0.626, 0.293]], [0.501, [0.367, 0.628, 0.295]], [0.503, [0.367, 0.628, 0.295]], [0.505, [0.376, 0.631, 0.298]], [0.507, [0.376, 0.631, 0.298]], [0.509, [0.385, 0.633, 0.300]], [0.511, [0.385, 0.633, 0.300]], [0.513, [0.393, 0.635, 0.302]], [0.515, [0.393, 0.635, 0.302]], [0.517, [0.402, 0.637, 0.304]], [0.519, [0.402, 0.637, 0.304]], [0.521, [0.411, 0.640, 0.307]], [0.523, [0.411, 0.640, 0.307]], [0.524, [0.420, 0.641, 0.309]], [0.526, [0.420, 0.641, 0.309]], [0.528, [0.428, 0.643, 0.311]], [0.530, [0.428, 0.643, 0.311]], [0.532, [0.437, 0.645, 0.314]], [0.534, [0.437, 0.645, 0.314]], [0.536, [0.446, 0.647, 0.316]], [0.538, [0.446, 0.647, 0.316]], [0.540, [0.455, 0.648, 0.318]], [0.542, [0.455, 0.648, 0.318]], [0.544, [0.463, 0.650, 0.320]], [0.546, [0.463, 0.650, 0.320]], [0.548, [0.472, 0.652, 0.322]], [0.550, [0.472, 0.652, 0.322]], [0.552, [0.478, 0.653, 0.323]], [0.554, [0.478, 0.653, 0.323]], [0.556, [0.485, 0.655, 0.324]], [0.558, [0.485, 0.655, 0.324]], [0.560, [0.491, 0.657, 0.325]], [0.562, [0.491, 0.657, 0.325]], [0.564, [0.498, 0.659, 0.327]], [0.566, [0.498, 0.659, 0.327]], [0.568, [0.504, 0.660, 0.328]], [0.569, [0.504, 0.660, 0.328]], [0.571, [0.511, 0.662, 0.329]], [0.573, [0.511, 0.662, 0.329]], [0.575, [0.517, 0.664, 0.330]], [0.577, [0.517, 0.664, 0.330]], [0.579, [0.524, 0.665, 0.332]], [0.581, [0.524, 0.665, 0.332]], [0.583, [0.530, 0.667, 0.333]], [0.585, [0.530, 0.667, 0.333]], [0.587, [0.537, 0.669, 0.334]], [0.589, [0.537, 0.669, 0.334]], [0.591, [0.543, 0.671, 0.335]], [0.593, [0.543, 0.671, 0.335]], [0.595, [0.550, 0.672, 0.337]], [0.597, [0.550, 0.672, 0.337]], [0.599, [0.556, 0.674, 0.338]], [0.601, [0.556, 0.674, 0.338]], [0.603, [0.562, 0.676, 0.339]], [0.605, [0.562, 0.676, 0.339]], [0.607, [0.569, 0.678, 0.340]], [0.609, [0.569, 0.678, 0.340]], [0.611, [0.575, 0.679, 0.342]], [0.613, [0.575, 0.679, 0.342]], [0.614, [0.582, 0.681, 0.343]], [0.616, [0.582, 0.681, 0.343]], [0.618, [0.588, 0.683, 0.344]], [0.620, [0.588, 0.683, 0.344]], [0.622, [0.595, 0.684, 0.345]], [0.624, [0.595, 0.684, 0.345]], [0.626, [0.601, 0.686, 0.347]], [0.628, [0.601, 0.686, 0.347]], [0.630, [0.608, 0.688, 0.348]], [0.632, [0.608, 0.688, 0.348]], [0.634, [0.614, 0.690, 0.349]], [0.636, [0.614, 0.690, 0.349]], [0.638, [0.621, 0.691, 0.350]], [0.640, [0.621, 0.691, 0.350]], [0.642, [0.627, 0.693, 0.351]], [0.644, [0.627, 0.693, 0.351]], [0.646, [0.634, 0.695, 0.353]], [0.648, [0.634, 0.695, 0.353]], [0.650, [0.640, 0.696, 0.354]], [0.652, [0.640, 0.696, 0.354]], [0.654, [0.647, 0.698, 0.355]], [0.656, [0.647, 0.698, 0.355]], [0.658, [0.653, 0.700, 0.356]], [0.659, [0.653, 0.700, 0.356]], [0.661, [0.659, 0.702, 0.358]], [0.663, [0.659, 0.702, 0.358]], [0.665, [0.666, 0.703, 0.359]], [0.667, [0.666, 0.703, 0.359]], [0.669, [0.672, 0.705, 0.360]], [0.671, [0.672, 0.705, 0.360]], [0.673, [0.679, 0.707, 0.361]], [0.675, [0.679, 0.707, 0.361]], [0.677, [0.685, 0.709, 0.363]], [0.679, [0.685, 0.709, 0.363]], [0.681, [0.692, 0.710, 0.364]], [0.683, [0.692, 0.710, 0.364]], [0.685, [0.698, 0.712, 0.365]], [0.687, [0.698, 0.712, 0.365]], [0.689, [0.705, 0.714, 0.366]], [0.691, [0.705, 0.714, 0.366]], [0.693, [0.711, 0.715, 0.368]], [0.695, [0.711, 0.715, 0.368]], [0.697, [0.718, 0.717, 0.369]], [0.699, [0.718, 0.717, 0.369]], [0.701, [0.719, 0.714, 0.370]], [0.703, [0.719, 0.714, 0.370]], [0.705, [0.721, 0.710, 0.371]], [0.706, [0.721, 0.710, 0.371]], [0.708, [0.723, 0.707, 0.373]], [0.710, [0.723, 0.707, 0.373]], [0.712, [0.724, 0.704, 0.374]], [0.714, [0.724, 0.704, 0.374]], [0.716, [0.726, 0.700, 0.375]], [0.718, [0.726, 0.700, 0.375]], [0.720, [0.727, 0.697, 0.376]], [0.722, [0.727, 0.697, 0.376]], [0.724, [0.729, 0.693, 0.378]], [0.726, [0.729, 0.693, 0.378]], [0.728, [0.731, 0.690, 0.379]], [0.730, [0.731, 0.690, 0.379]], [0.732, [0.732, 0.687, 0.380]], [0.734, [0.732, 0.687, 0.380]], [0.736, [0.734, 0.683, 0.381]], [0.738, [0.734, 0.683, 0.381]], [0.740, [0.736, 0.680, 0.382]], [0.742, [0.736, 0.680, 0.382]], [0.744, [0.737, 0.676, 0.384]], [0.746, [0.737, 0.676, 0.384]], [0.748, [0.739, 0.673, 0.385]], [0.750, [0.739, 0.673, 0.385]], [0.751, [0.741, 0.670, 0.386]], [0.753, [0.741, 0.670, 0.386]], [0.755, [0.742, 0.666, 0.387]], [0.757, [0.742, 0.666, 0.387]], [0.759, [0.744, 0.663, 0.389]], [0.761, [0.744, 0.663, 0.389]], [0.763, [0.745, 0.659, 0.390]], [0.765, [0.745, 0.659, 0.390]], [0.767, [0.747, 0.656, 0.391]], [0.769, [0.747, 0.656, 0.391]], [0.771, [0.749, 0.653, 0.392]], [0.773, [0.749, 0.653, 0.392]], [0.775, [0.750, 0.649, 0.394]], [0.777, [0.750, 0.649, 0.394]], [0.779, [0.752, 0.646, 0.395]], [0.781, [0.752, 0.646, 0.395]], [0.783, [0.754, 0.643, 0.396]], [0.785, [0.754, 0.643, 0.396]], [0.787, [0.755, 0.639, 0.406]], [0.789, [0.755, 0.639, 0.406]], [0.791, [0.760, 0.641, 0.415]], [0.793, [0.760, 0.641, 0.415]], [0.795, [0.764, 0.643, 0.425]], [0.796, [0.764, 0.643, 0.425]], [0.798, [0.768, 0.645, 0.435]], [0.800, [0.768, 0.645, 0.435]], [0.802, [0.773, 0.646, 0.444]], [0.804, [0.773, 0.646, 0.444]], [0.806, [0.777, 0.648, 0.454]], [0.808, [0.777, 0.648, 0.454]], [0.810, [0.782, 0.652, 0.463]], [0.812, [0.782, 0.652, 0.463]], [0.814, [0.786, 0.655, 0.473]], [0.816, [0.786, 0.655, 0.473]], [0.818, [0.790, 0.658, 0.483]], [0.820, [0.790, 0.658, 0.483]], [0.822, [0.795, 0.662, 0.492]], [0.824, [0.795, 0.662, 0.492]], [0.826, [0.799, 0.665, 0.502]], [0.828, [0.799, 0.665, 0.502]], [0.830, [0.804, 0.668, 0.511]], [0.832, [0.804, 0.668, 0.511]], [0.834, [0.808, 0.672, 0.521]], [0.836, [0.808, 0.672, 0.521]], [0.838, [0.812, 0.675, 0.531]], [0.840, [0.812, 0.675, 0.531]], [0.841, [0.817, 0.679, 0.540]], [0.843, [0.817, 0.679, 0.540]], [0.845, [0.821, 0.682, 0.550]], [0.847, [0.821, 0.682, 0.550]], [0.849, [0.826, 0.685, 0.559]], [0.851, [0.826, 0.685, 0.559]], [0.853, [0.830, 0.689, 0.569]], [0.855, [0.830, 0.689, 0.569]], [0.857, [0.834, 0.692, 0.579]], [0.859, [0.834, 0.692, 0.579]], [0.861, [0.839, 0.696, 0.588]], [0.863, [0.839, 0.696, 0.588]], [0.865, [0.843, 0.699, 0.598]], [0.867, [0.843, 0.699, 0.598]], [0.869, [0.847, 0.705, 0.607]], [0.871, [0.847, 0.705, 0.607]], [0.873, [0.852, 0.710, 0.617]], [0.875, [0.852, 0.710, 0.617]], [0.877, [0.856, 0.716, 0.627]], [0.879, [0.856, 0.716, 0.627]], [0.881, [0.861, 0.722, 0.636]], [0.883, [0.861, 0.722, 0.636]], [0.885, [0.865, 0.727, 0.646]], [0.886, [0.865, 0.727, 0.646]], [0.888, [0.869, 0.732, 0.656]], [0.890, [0.869, 0.732, 0.656]], [0.892, [0.874, 0.738, 0.665]], [0.894, [0.874, 0.738, 0.665]], [0.896, [0.878, 0.743, 0.677]], [0.898, [0.878, 0.743, 0.677]], [0.900, [0.883, 0.751, 0.689]], [0.902, [0.883, 0.751, 0.689]], [0.904, [0.887, 0.758, 0.701]], [0.906, [0.887, 0.758, 0.701]], [0.908, [0.891, 0.766, 0.712]], [0.910, [0.891, 0.766, 0.712]], [0.912, [0.896, 0.774, 0.724]], [0.914, [0.896, 0.774, 0.724]], [0.916, [0.900, 0.781, 0.736]], [0.918, [0.900, 0.781, 0.736]], [0.920, [0.904, 0.789, 0.748]], [0.922, [0.904, 0.789, 0.748]], [0.924, [0.909, 0.797, 0.760]], [0.926, [0.909, 0.797, 0.760]], [0.928, [0.913, 0.804, 0.772]], [0.930, [0.913, 0.804, 0.772]], [0.932, [0.918, 0.812, 0.783]], [0.933, [0.918, 0.812, 0.783]], [0.935, [0.922, 0.820, 0.795]], [0.937, [0.922, 0.820, 0.795]], [0.939, [0.926, 0.827, 0.807]], [0.941, [0.926, 0.827, 0.807]], [0.943, [0.931, 0.836, 0.819]], [0.945, [0.931, 0.836, 0.819]], [0.947, [0.935, 0.845, 0.831]], [0.949, [0.935, 0.845, 0.831]], [0.951, [0.940, 0.854, 0.842]], [0.953, [0.940, 0.854, 0.842]], [0.955, [0.944, 0.863, 0.854]], [0.957, [0.944, 0.863, 0.854]], [0.959, [0.948, 0.873, 0.866]], [0.961, [0.948, 0.873, 0.866]], [0.963, [0.953, 0.882, 0.878]], [0.965, [0.953, 0.882, 0.878]], [0.967, [0.957, 0.893, 0.890]], [0.969, [0.957, 0.893, 0.890]], [0.971, [0.961, 0.905, 0.902]], [0.973, [0.961, 0.905, 0.902]], [0.975, [0.966, 0.916, 0.913]], [0.977, [0.966, 0.916, 0.913]], [0.978, [0.970, 0.927, 0.925]], [0.980, [0.970, 0.927, 0.925]], [0.982, [0.975, 0.939, 0.937]], [0.984, [0.975, 0.939, 0.937]], [0.986, [0.979, 0.950, 0.949]], [0.988, [0.979, 0.950, 0.949]], [0.990, [0.983, 0.962, 0.961]], [0.992, [0.983, 0.962, 0.961]], [0.994, [0.988, 0.973, 0.972]], [0.996, [0.988, 0.973, 0.972]], [0.998, [0.992, 0.984, 0.984]], [1.000, [0.992, 0.984, 0.984]]]; +var gist_ncar = [[0.000, [0.000, 0.000, 0.502]], [0.002, [0.000, 0.000, 0.502]], [0.004, [0.000, 0.029, 0.465]], [0.006, [0.000, 0.029, 0.465]], [0.008, [0.000, 0.057, 0.428]], [0.010, [0.000, 0.057, 0.428]], [0.012, [0.000, 0.086, 0.391]], [0.014, [0.000, 0.086, 0.391]], [0.016, [0.000, 0.114, 0.354]], [0.018, [0.000, 0.114, 0.354]], [0.020, [0.000, 0.143, 0.318]], [0.022, [0.000, 0.143, 0.318]], [0.023, [0.000, 0.172, 0.281]], [0.025, [0.000, 0.172, 0.281]], [0.027, [0.000, 0.200, 0.244]], [0.029, [0.000, 0.200, 0.244]], [0.031, [0.000, 0.229, 0.207]], [0.033, [0.000, 0.229, 0.207]], [0.035, [0.000, 0.258, 0.170]], [0.037, [0.000, 0.258, 0.170]], [0.039, [0.000, 0.286, 0.133]], [0.041, [0.000, 0.286, 0.133]], [0.043, [0.000, 0.315, 0.096]], [0.045, [0.000, 0.315, 0.096]], [0.047, [0.000, 0.343, 0.059]], [0.049, [0.000, 0.343, 0.059]], [0.051, [0.000, 0.372, 0.022]], [0.053, [0.000, 0.372, 0.022]], [0.055, [0.000, 0.346, 0.087]], [0.057, [0.000, 0.346, 0.087]], [0.059, [0.000, 0.319, 0.152]], [0.061, [0.000, 0.319, 0.152]], [0.063, [0.000, 0.293, 0.218]], [0.065, [0.000, 0.293, 0.218]], [0.067, [0.000, 0.266, 0.283]], [0.068, [0.000, 0.266, 0.283]], [0.070, [0.000, 0.239, 0.348]], [0.072, [0.000, 0.239, 0.348]], [0.074, [0.000, 0.213, 0.413]], [0.076, [0.000, 0.213, 0.413]], [0.078, [0.000, 0.186, 0.478]], [0.080, [0.000, 0.186, 0.478]], [0.082, [0.000, 0.160, 0.544]], [0.084, [0.000, 0.160, 0.544]], [0.086, [0.000, 0.133, 0.609]], [0.088, [0.000, 0.133, 0.609]], [0.090, [0.000, 0.106, 0.674]], [0.092, [0.000, 0.106, 0.674]], [0.094, [0.000, 0.080, 0.739]], [0.096, [0.000, 0.080, 0.739]], [0.098, [0.000, 0.053, 0.804]], [0.100, [0.000, 0.053, 0.804]], [0.102, [0.000, 0.027, 0.870]], [0.104, [0.000, 0.027, 0.870]], [0.106, [0.000, 0.000, 0.935]], [0.108, [0.000, 0.000, 0.935]], [0.110, [0.000, 0.055, 1.000]], [0.112, [0.000, 0.055, 1.000]], [0.114, [0.000, 0.111, 1.000]], [0.115, [0.000, 0.111, 1.000]], [0.117, [0.000, 0.166, 1.000]], [0.119, [0.000, 0.166, 1.000]], [0.121, [0.000, 0.221, 1.000]], [0.123, [0.000, 0.221, 1.000]], [0.125, [0.000, 0.277, 1.000]], [0.127, [0.000, 0.277, 1.000]], [0.129, [0.000, 0.332, 1.000]], [0.131, [0.000, 0.332, 1.000]], [0.133, [0.000, 0.387, 1.000]], [0.135, [0.000, 0.387, 1.000]], [0.137, [0.000, 0.443, 1.000]], [0.139, [0.000, 0.443, 1.000]], [0.141, [0.000, 0.498, 1.000]], [0.143, [0.000, 0.498, 1.000]], [0.145, [0.000, 0.554, 1.000]], [0.147, [0.000, 0.554, 1.000]], [0.149, [0.000, 0.609, 1.000]], [0.151, [0.000, 0.609, 1.000]], [0.153, [0.000, 0.664, 1.000]], [0.155, [0.000, 0.664, 1.000]], [0.157, [0.000, 0.720, 1.000]], [0.159, [0.000, 0.720, 1.000]], [0.160, [0.000, 0.754, 1.000]], [0.162, [0.000, 0.754, 1.000]], [0.164, [0.000, 0.775, 1.000]], [0.166, [0.000, 0.775, 1.000]], [0.168, [0.000, 0.793, 1.000]], [0.170, [0.000, 0.793, 1.000]], [0.172, [0.000, 0.810, 1.000]], [0.174, [0.000, 0.810, 1.000]], [0.176, [0.000, 0.827, 1.000]], [0.178, [0.000, 0.827, 1.000]], [0.180, [0.000, 0.844, 1.000]], [0.182, [0.000, 0.844, 1.000]], [0.184, [0.000, 0.862, 1.000]], [0.186, [0.000, 0.862, 1.000]], [0.188, [0.000, 0.879, 1.000]], [0.190, [0.000, 0.879, 1.000]], [0.192, [0.000, 0.896, 1.000]], [0.194, [0.000, 0.896, 1.000]], [0.196, [0.000, 0.914, 1.000]], [0.198, [0.000, 0.914, 1.000]], [0.200, [0.000, 0.931, 1.000]], [0.202, [0.000, 0.931, 1.000]], [0.204, [0.000, 0.948, 1.000]], [0.205, [0.000, 0.948, 1.000]], [0.207, [0.000, 0.965, 0.974]], [0.209, [0.000, 0.965, 0.974]], [0.211, [0.000, 0.983, 0.948]], [0.213, [0.000, 0.983, 0.948]], [0.215, [0.000, 1.000, 0.923]], [0.217, [0.000, 1.000, 0.923]], [0.219, [0.000, 0.998, 0.897]], [0.221, [0.000, 0.998, 0.897]], [0.223, [0.000, 0.996, 0.871]], [0.225, [0.000, 0.996, 0.871]], [0.227, [0.000, 0.995, 0.846]], [0.229, [0.000, 0.995, 0.846]], [0.231, [0.000, 0.993, 0.820]], [0.233, [0.000, 0.993, 0.820]], [0.235, [0.000, 0.991, 0.794]], [0.237, [0.000, 0.991, 0.794]], [0.239, [0.000, 0.989, 0.768]], [0.241, [0.000, 0.989, 0.768]], [0.243, [0.000, 0.988, 0.743]], [0.245, [0.000, 0.988, 0.743]], [0.247, [0.000, 0.986, 0.717]], [0.249, [0.000, 0.986, 0.717]], [0.250, [0.000, 0.984, 0.691]], [0.252, [0.000, 0.984, 0.691]], [0.254, [0.000, 0.982, 0.666]], [0.256, [0.000, 0.982, 0.666]], [0.258, [0.000, 0.980, 0.640]], [0.260, [0.000, 0.980, 0.640]], [0.262, [0.000, 0.980, 0.614]], [0.264, [0.000, 0.980, 0.614]], [0.266, [0.000, 0.980, 0.573]], [0.268, [0.000, 0.980, 0.573]], [0.270, [0.000, 0.980, 0.532]], [0.272, [0.000, 0.980, 0.532]], [0.274, [0.000, 0.982, 0.491]], [0.276, [0.000, 0.982, 0.491]], [0.278, [0.000, 0.984, 0.450]], [0.280, [0.000, 0.984, 0.450]], [0.282, [0.000, 0.985, 0.409]], [0.284, [0.000, 0.985, 0.409]], [0.286, [0.000, 0.987, 0.369]], [0.288, [0.000, 0.987, 0.369]], [0.290, [0.000, 0.989, 0.328]], [0.292, [0.000, 0.989, 0.328]], [0.294, [0.000, 0.990, 0.287]], [0.295, [0.000, 0.990, 0.287]], [0.297, [0.000, 0.992, 0.246]], [0.299, [0.000, 0.992, 0.246]], [0.301, [0.000, 0.993, 0.205]], [0.303, [0.000, 0.993, 0.205]], [0.305, [0.000, 0.995, 0.164]], [0.307, [0.000, 0.995, 0.164]], [0.309, [0.000, 0.997, 0.123]], [0.311, [0.000, 0.997, 0.123]], [0.313, [0.025, 0.998, 0.082]], [0.315, [0.025, 0.998, 0.082]], [0.317, [0.050, 1.000, 0.041]], [0.319, [0.050, 1.000, 0.041]], [0.321, [0.075, 0.985, 0.000]], [0.323, [0.075, 0.985, 0.000]], [0.325, [0.100, 0.970, 0.000]], [0.327, [0.100, 0.970, 0.000]], [0.329, [0.125, 0.956, 0.000]], [0.331, [0.125, 0.956, 0.000]], [0.333, [0.150, 0.941, 0.000]], [0.335, [0.150, 0.941, 0.000]], [0.337, [0.175, 0.926, 0.000]], [0.339, [0.175, 0.926, 0.000]], [0.341, [0.200, 0.911, 0.000]], [0.342, [0.200, 0.911, 0.000]], [0.344, [0.225, 0.897, 0.000]], [0.346, [0.225, 0.897, 0.000]], [0.348, [0.250, 0.882, 0.000]], [0.350, [0.250, 0.882, 0.000]], [0.352, [0.275, 0.867, 0.000]], [0.354, [0.275, 0.867, 0.000]], [0.356, [0.300, 0.852, 0.000]], [0.358, [0.300, 0.852, 0.000]], [0.360, [0.325, 0.838, 0.000]], [0.362, [0.325, 0.838, 0.000]], [0.364, [0.350, 0.823, 0.000]], [0.366, [0.350, 0.823, 0.000]], [0.368, [0.375, 0.808, 0.000]], [0.370, [0.375, 0.808, 0.000]], [0.372, [0.399, 0.821, 0.000]], [0.374, [0.399, 0.821, 0.000]], [0.376, [0.407, 0.834, 0.000]], [0.378, [0.407, 0.834, 0.000]], [0.380, [0.415, 0.847, 0.000]], [0.382, [0.415, 0.847, 0.000]], [0.384, [0.423, 0.859, 0.000]], [0.386, [0.423, 0.859, 0.000]], [0.387, [0.430, 0.872, 0.000]], [0.389, [0.430, 0.872, 0.000]], [0.391, [0.438, 0.885, 0.000]], [0.393, [0.438, 0.885, 0.000]], [0.395, [0.446, 0.898, 0.000]], [0.397, [0.446, 0.898, 0.000]], [0.399, [0.454, 0.910, 0.000]], [0.401, [0.454, 0.910, 0.000]], [0.403, [0.462, 0.923, 0.000]], [0.405, [0.462, 0.923, 0.000]], [0.407, [0.469, 0.936, 0.000]], [0.409, [0.469, 0.936, 0.000]], [0.411, [0.477, 0.949, 0.000]], [0.413, [0.477, 0.949, 0.000]], [0.415, [0.485, 0.962, 0.000]], [0.417, [0.485, 0.962, 0.000]], [0.419, [0.493, 0.974, 0.016]], [0.421, [0.493, 0.974, 0.016]], [0.423, [0.500, 0.987, 0.031]], [0.425, [0.500, 0.987, 0.031]], [0.427, [0.518, 1.000, 0.047]], [0.429, [0.518, 1.000, 0.047]], [0.431, [0.536, 1.000, 0.062]], [0.432, [0.536, 1.000, 0.062]], [0.434, [0.554, 1.000, 0.078]], [0.436, [0.554, 1.000, 0.078]], [0.438, [0.572, 1.000, 0.094]], [0.440, [0.572, 1.000, 0.094]], [0.442, [0.590, 1.000, 0.109]], [0.444, [0.590, 1.000, 0.109]], [0.446, [0.608, 1.000, 0.125]], [0.448, [0.608, 1.000, 0.125]], [0.450, [0.625, 1.000, 0.141]], [0.452, [0.625, 1.000, 0.141]], [0.454, [0.643, 1.000, 0.156]], [0.456, [0.643, 1.000, 0.156]], [0.458, [0.661, 1.000, 0.172]], [0.460, [0.661, 1.000, 0.172]], [0.462, [0.679, 1.000, 0.187]], [0.464, [0.679, 1.000, 0.187]], [0.466, [0.697, 1.000, 0.203]], [0.468, [0.697, 1.000, 0.203]], [0.470, [0.715, 1.000, 0.219]], [0.472, [0.715, 1.000, 0.219]], [0.474, [0.732, 1.000, 0.234]], [0.476, [0.732, 1.000, 0.234]], [0.477, [0.750, 1.000, 0.219]], [0.479, [0.750, 1.000, 0.219]], [0.481, [0.768, 1.000, 0.203]], [0.483, [0.768, 1.000, 0.203]], [0.485, [0.786, 1.000, 0.187]], [0.487, [0.786, 1.000, 0.187]], [0.489, [0.804, 1.000, 0.172]], [0.491, [0.804, 1.000, 0.172]], [0.493, [0.822, 1.000, 0.156]], [0.495, [0.822, 1.000, 0.156]], [0.497, [0.840, 1.000, 0.140]], [0.499, [0.840, 1.000, 0.140]], [0.501, [0.857, 1.000, 0.125]], [0.503, [0.857, 1.000, 0.125]], [0.505, [0.875, 1.000, 0.109]], [0.507, [0.875, 1.000, 0.109]], [0.509, [0.893, 1.000, 0.094]], [0.511, [0.893, 1.000, 0.094]], [0.513, [0.911, 1.000, 0.078]], [0.515, [0.911, 1.000, 0.078]], [0.517, [0.929, 1.000, 0.062]], [0.519, [0.929, 1.000, 0.062]], [0.521, [0.947, 1.000, 0.047]], [0.523, [0.947, 1.000, 0.047]], [0.524, [0.964, 0.990, 0.031]], [0.526, [0.964, 0.990, 0.031]], [0.528, [0.982, 0.981, 0.015]], [0.530, [0.982, 0.981, 0.015]], [0.532, [1.000, 0.971, 0.000]], [0.534, [1.000, 0.971, 0.000]], [0.536, [1.000, 0.961, 0.000]], [0.538, [1.000, 0.961, 0.000]], [0.540, [1.000, 0.952, 0.000]], [0.542, [1.000, 0.952, 0.000]], [0.544, [1.000, 0.942, 0.000]], [0.546, [1.000, 0.942, 0.000]], [0.548, [1.000, 0.932, 0.000]], [0.550, [1.000, 0.932, 0.000]], [0.552, [1.000, 0.923, 0.000]], [0.554, [1.000, 0.923, 0.000]], [0.556, [1.000, 0.913, 0.000]], [0.558, [1.000, 0.913, 0.000]], [0.560, [1.000, 0.903, 0.000]], [0.562, [1.000, 0.903, 0.000]], [0.564, [1.000, 0.894, 0.000]], [0.566, [1.000, 0.894, 0.000]], [0.568, [1.000, 0.884, 0.000]], [0.569, [1.000, 0.884, 0.000]], [0.571, [1.000, 0.874, 0.000]], [0.573, [1.000, 0.874, 0.000]], [0.575, [1.000, 0.865, 0.000]], [0.577, [1.000, 0.865, 0.000]], [0.579, [1.000, 0.855, 0.000]], [0.581, [1.000, 0.855, 0.000]], [0.583, [1.000, 0.845, 0.004]], [0.585, [1.000, 0.845, 0.004]], [0.587, [1.000, 0.836, 0.008]], [0.589, [1.000, 0.836, 0.008]], [0.591, [1.000, 0.826, 0.013]], [0.593, [1.000, 0.826, 0.013]], [0.595, [1.000, 0.816, 0.017]], [0.597, [1.000, 0.816, 0.017]], [0.599, [1.000, 0.807, 0.021]], [0.601, [1.000, 0.807, 0.021]], [0.603, [1.000, 0.797, 0.025]], [0.605, [1.000, 0.797, 0.025]], [0.607, [1.000, 0.787, 0.030]], [0.609, [1.000, 0.787, 0.030]], [0.611, [1.000, 0.778, 0.034]], [0.613, [1.000, 0.778, 0.034]], [0.614, [1.000, 0.768, 0.038]], [0.616, [1.000, 0.768, 0.038]], [0.618, [1.000, 0.758, 0.042]], [0.620, [1.000, 0.758, 0.042]], [0.622, [1.000, 0.749, 0.046]], [0.624, [1.000, 0.749, 0.046]], [0.626, [1.000, 0.739, 0.051]], [0.628, [1.000, 0.739, 0.051]], [0.630, [1.000, 0.729, 0.055]], [0.632, [1.000, 0.729, 0.055]], [0.634, [1.000, 0.697, 0.051]], [0.636, [1.000, 0.697, 0.051]], [0.638, [1.000, 0.665, 0.048]], [0.640, [1.000, 0.665, 0.048]], [0.642, [1.000, 0.633, 0.044]], [0.644, [1.000, 0.633, 0.044]], [0.646, [1.000, 0.601, 0.040]], [0.648, [1.000, 0.601, 0.040]], [0.650, [1.000, 0.569, 0.037]], [0.652, [1.000, 0.569, 0.037]], [0.654, [1.000, 0.537, 0.033]], [0.656, [1.000, 0.537, 0.033]], [0.658, [1.000, 0.505, 0.029]], [0.659, [1.000, 0.505, 0.029]], [0.661, [1.000, 0.473, 0.026]], [0.663, [1.000, 0.473, 0.026]], [0.665, [1.000, 0.440, 0.022]], [0.667, [1.000, 0.440, 0.022]], [0.669, [1.000, 0.408, 0.018]], [0.671, [1.000, 0.408, 0.018]], [0.673, [1.000, 0.376, 0.015]], [0.675, [1.000, 0.376, 0.015]], [0.677, [1.000, 0.344, 0.011]], [0.679, [1.000, 0.344, 0.011]], [0.681, [1.000, 0.312, 0.007]], [0.683, [1.000, 0.312, 0.007]], [0.685, [1.000, 0.280, 0.004]], [0.687, [1.000, 0.280, 0.004]], [0.689, [1.000, 0.261, 0.000]], [0.691, [1.000, 0.261, 0.000]], [0.693, [1.000, 0.242, 0.000]], [0.695, [1.000, 0.242, 0.000]], [0.697, [1.000, 0.224, 0.000]], [0.699, [1.000, 0.224, 0.000]], [0.701, [1.000, 0.205, 0.000]], [0.703, [1.000, 0.205, 0.000]], [0.705, [1.000, 0.186, 0.000]], [0.706, [1.000, 0.186, 0.000]], [0.708, [1.000, 0.168, 0.000]], [0.710, [1.000, 0.168, 0.000]], [0.712, [1.000, 0.149, 0.000]], [0.714, [1.000, 0.149, 0.000]], [0.716, [1.000, 0.131, 0.000]], [0.718, [1.000, 0.131, 0.000]], [0.720, [1.000, 0.112, 0.000]], [0.722, [1.000, 0.112, 0.000]], [0.724, [1.000, 0.093, 0.000]], [0.726, [1.000, 0.093, 0.000]], [0.728, [1.000, 0.075, 0.000]], [0.730, [1.000, 0.075, 0.000]], [0.732, [1.000, 0.056, 0.000]], [0.734, [1.000, 0.056, 0.000]], [0.736, [1.000, 0.037, 0.000]], [0.738, [1.000, 0.037, 0.000]], [0.740, [1.000, 0.019, 0.069]], [0.742, [1.000, 0.019, 0.069]], [0.744, [1.000, 0.000, 0.138]], [0.746, [1.000, 0.000, 0.138]], [0.748, [1.000, 0.000, 0.208]], [0.750, [1.000, 0.000, 0.208]], [0.751, [1.000, 0.000, 0.277]], [0.753, [1.000, 0.000, 0.277]], [0.755, [1.000, 0.000, 0.347]], [0.757, [1.000, 0.000, 0.347]], [0.759, [1.000, 0.000, 0.417]], [0.761, [1.000, 0.000, 0.417]], [0.763, [1.000, 0.000, 0.486]], [0.765, [1.000, 0.000, 0.486]], [0.767, [1.000, 0.000, 0.556]], [0.769, [1.000, 0.000, 0.556]], [0.771, [1.000, 0.000, 0.625]], [0.773, [1.000, 0.000, 0.625]], [0.775, [1.000, 0.000, 0.695]], [0.777, [1.000, 0.000, 0.695]], [0.779, [1.000, 0.000, 0.764]], [0.781, [1.000, 0.000, 0.764]], [0.783, [1.000, 0.000, 0.834]], [0.785, [1.000, 0.000, 0.834]], [0.787, [1.000, 0.000, 0.903]], [0.789, [1.000, 0.000, 0.903]], [0.791, [1.000, 0.000, 0.973]], [0.793, [1.000, 0.000, 0.973]], [0.795, [0.973, 0.013, 0.987]], [0.796, [0.973, 0.013, 0.987]], [0.798, [0.946, 0.027, 1.000]], [0.800, [0.946, 0.027, 1.000]], [0.802, [0.919, 0.040, 1.000]], [0.804, [0.919, 0.040, 1.000]], [0.806, [0.892, 0.054, 1.000]], [0.808, [0.892, 0.054, 1.000]], [0.810, [0.865, 0.067, 1.000]], [0.812, [0.865, 0.067, 1.000]], [0.814, [0.838, 0.081, 1.000]], [0.816, [0.838, 0.081, 1.000]], [0.818, [0.811, 0.094, 1.000]], [0.820, [0.811, 0.094, 1.000]], [0.822, [0.784, 0.108, 1.000]], [0.824, [0.784, 0.108, 1.000]], [0.826, [0.757, 0.121, 1.000]], [0.828, [0.757, 0.121, 1.000]], [0.830, [0.730, 0.135, 1.000]], [0.832, [0.730, 0.135, 1.000]], [0.834, [0.703, 0.148, 1.000]], [0.836, [0.703, 0.148, 1.000]], [0.838, [0.676, 0.162, 1.000]], [0.840, [0.676, 0.162, 1.000]], [0.841, [0.649, 0.176, 1.000]], [0.843, [0.649, 0.176, 1.000]], [0.845, [0.622, 0.199, 0.995]], [0.847, [0.622, 0.199, 0.995]], [0.849, [0.645, 0.222, 0.991]], [0.851, [0.645, 0.222, 0.991]], [0.853, [0.668, 0.245, 0.986]], [0.855, [0.668, 0.245, 0.986]], [0.857, [0.691, 0.268, 0.981]], [0.859, [0.691, 0.268, 0.981]], [0.861, [0.715, 0.291, 0.976]], [0.863, [0.715, 0.291, 0.976]], [0.865, [0.738, 0.315, 0.972]], [0.867, [0.738, 0.315, 0.972]], [0.869, [0.761, 0.338, 0.967]], [0.871, [0.761, 0.338, 0.967]], [0.873, [0.784, 0.361, 0.962]], [0.875, [0.784, 0.361, 0.962]], [0.877, [0.808, 0.384, 0.958]], [0.879, [0.808, 0.384, 0.958]], [0.881, [0.831, 0.407, 0.953]], [0.883, [0.831, 0.407, 0.953]], [0.885, [0.854, 0.431, 0.948]], [0.886, [0.854, 0.431, 0.948]], [0.888, [0.877, 0.454, 0.943]], [0.890, [0.877, 0.454, 0.943]], [0.892, [0.900, 0.477, 0.939]], [0.894, [0.900, 0.477, 0.939]], [0.896, [0.924, 0.500, 0.934]], [0.898, [0.924, 0.500, 0.934]], [0.900, [0.926, 0.518, 0.937]], [0.902, [0.926, 0.518, 0.937]], [0.904, [0.929, 0.537, 0.939]], [0.906, [0.929, 0.537, 0.939]], [0.908, [0.932, 0.555, 0.941]], [0.910, [0.932, 0.555, 0.941]], [0.912, [0.935, 0.573, 0.944]], [0.914, [0.935, 0.573, 0.944]], [0.916, [0.937, 0.591, 0.946]], [0.918, [0.937, 0.591, 0.946]], [0.920, [0.940, 0.609, 0.948]], [0.922, [0.940, 0.609, 0.948]], [0.924, [0.943, 0.627, 0.951]], [0.926, [0.943, 0.627, 0.951]], [0.928, [0.946, 0.646, 0.953]], [0.930, [0.946, 0.646, 0.953]], [0.932, [0.949, 0.664, 0.956]], [0.933, [0.949, 0.664, 0.956]], [0.935, [0.951, 0.682, 0.958]], [0.937, [0.951, 0.682, 0.958]], [0.939, [0.954, 0.700, 0.960]], [0.941, [0.954, 0.700, 0.960]], [0.943, [0.957, 0.718, 0.963]], [0.945, [0.957, 0.718, 0.963]], [0.947, [0.960, 0.736, 0.965]], [0.949, [0.960, 0.736, 0.965]], [0.951, [0.963, 0.755, 0.967]], [0.953, [0.963, 0.755, 0.967]], [0.955, [0.965, 0.773, 0.970]], [0.957, [0.965, 0.773, 0.970]], [0.959, [0.968, 0.791, 0.972]], [0.961, [0.968, 0.791, 0.972]], [0.963, [0.971, 0.809, 0.975]], [0.965, [0.971, 0.809, 0.975]], [0.967, [0.974, 0.827, 0.977]], [0.969, [0.974, 0.827, 0.977]], [0.971, [0.977, 0.845, 0.979]], [0.973, [0.977, 0.845, 0.979]], [0.975, [0.979, 0.864, 0.982]], [0.977, [0.979, 0.864, 0.982]], [0.978, [0.982, 0.882, 0.984]], [0.980, [0.982, 0.882, 0.984]], [0.982, [0.985, 0.900, 0.987]], [0.984, [0.985, 0.900, 0.987]], [0.986, [0.988, 0.918, 0.989]], [0.988, [0.988, 0.918, 0.989]], [0.990, [0.991, 0.936, 0.991]], [0.992, [0.991, 0.936, 0.991]], [0.994, [0.993, 0.954, 0.994]], [0.996, [0.993, 0.954, 0.994]], [0.998, [0.996, 0.973, 0.996]], [1.000, [0.996, 0.973, 0.996]]]; +var gist_rainbow = [[0.000, [1.000, 0.000, 0.160]], [0.002, [1.000, 0.000, 0.160]], [0.004, [1.000, 0.000, 0.139]], [0.006, [1.000, 0.000, 0.139]], [0.008, [1.000, 0.000, 0.118]], [0.010, [1.000, 0.000, 0.118]], [0.012, [1.000, 0.000, 0.097]], [0.014, [1.000, 0.000, 0.097]], [0.016, [1.000, 0.000, 0.076]], [0.018, [1.000, 0.000, 0.076]], [0.020, [1.000, 0.000, 0.055]], [0.022, [1.000, 0.000, 0.055]], [0.023, [1.000, 0.000, 0.035]], [0.025, [1.000, 0.000, 0.035]], [0.027, [1.000, 0.000, 0.014]], [0.029, [1.000, 0.000, 0.014]], [0.031, [1.000, 0.007, 0.000]], [0.033, [1.000, 0.007, 0.000]], [0.035, [1.000, 0.029, 0.000]], [0.037, [1.000, 0.029, 0.000]], [0.039, [1.000, 0.050, 0.000]], [0.041, [1.000, 0.050, 0.000]], [0.043, [1.000, 0.071, 0.000]], [0.045, [1.000, 0.071, 0.000]], [0.047, [1.000, 0.092, 0.000]], [0.049, [1.000, 0.092, 0.000]], [0.051, [1.000, 0.113, 0.000]], [0.053, [1.000, 0.113, 0.000]], [0.055, [1.000, 0.135, 0.000]], [0.057, [1.000, 0.135, 0.000]], [0.059, [1.000, 0.156, 0.000]], [0.061, [1.000, 0.156, 0.000]], [0.063, [1.000, 0.177, 0.000]], [0.065, [1.000, 0.177, 0.000]], [0.067, [1.000, 0.198, 0.000]], [0.068, [1.000, 0.198, 0.000]], [0.070, [1.000, 0.219, 0.000]], [0.072, [1.000, 0.219, 0.000]], [0.074, [1.000, 0.241, 0.000]], [0.076, [1.000, 0.241, 0.000]], [0.078, [1.000, 0.262, 0.000]], [0.080, [1.000, 0.262, 0.000]], [0.082, [1.000, 0.283, 0.000]], [0.084, [1.000, 0.283, 0.000]], [0.086, [1.000, 0.304, 0.000]], [0.088, [1.000, 0.304, 0.000]], [0.090, [1.000, 0.325, 0.000]], [0.092, [1.000, 0.325, 0.000]], [0.094, [1.000, 0.347, 0.000]], [0.096, [1.000, 0.347, 0.000]], [0.098, [1.000, 0.368, 0.000]], [0.100, [1.000, 0.368, 0.000]], [0.102, [1.000, 0.389, 0.000]], [0.104, [1.000, 0.389, 0.000]], [0.106, [1.000, 0.410, 0.000]], [0.108, [1.000, 0.410, 0.000]], [0.110, [1.000, 0.431, 0.000]], [0.112, [1.000, 0.431, 0.000]], [0.114, [1.000, 0.453, 0.000]], [0.115, [1.000, 0.453, 0.000]], [0.117, [1.000, 0.474, 0.000]], [0.119, [1.000, 0.474, 0.000]], [0.121, [1.000, 0.495, 0.000]], [0.123, [1.000, 0.495, 0.000]], [0.125, [1.000, 0.516, 0.000]], [0.127, [1.000, 0.516, 0.000]], [0.129, [1.000, 0.537, 0.000]], [0.131, [1.000, 0.537, 0.000]], [0.133, [1.000, 0.559, 0.000]], [0.135, [1.000, 0.559, 0.000]], [0.137, [1.000, 0.580, 0.000]], [0.139, [1.000, 0.580, 0.000]], [0.141, [1.000, 0.601, 0.000]], [0.143, [1.000, 0.601, 0.000]], [0.145, [1.000, 0.622, 0.000]], [0.147, [1.000, 0.622, 0.000]], [0.149, [1.000, 0.643, 0.000]], [0.151, [1.000, 0.643, 0.000]], [0.153, [1.000, 0.665, 0.000]], [0.155, [1.000, 0.665, 0.000]], [0.157, [1.000, 0.686, 0.000]], [0.159, [1.000, 0.686, 0.000]], [0.160, [1.000, 0.707, 0.000]], [0.162, [1.000, 0.707, 0.000]], [0.164, [1.000, 0.728, 0.000]], [0.166, [1.000, 0.728, 0.000]], [0.168, [1.000, 0.749, 0.000]], [0.170, [1.000, 0.749, 0.000]], [0.172, [1.000, 0.771, 0.000]], [0.174, [1.000, 0.771, 0.000]], [0.176, [1.000, 0.792, 0.000]], [0.178, [1.000, 0.792, 0.000]], [0.180, [1.000, 0.813, 0.000]], [0.182, [1.000, 0.813, 0.000]], [0.184, [1.000, 0.834, 0.000]], [0.186, [1.000, 0.834, 0.000]], [0.188, [1.000, 0.855, 0.000]], [0.190, [1.000, 0.855, 0.000]], [0.192, [1.000, 0.877, 0.000]], [0.194, [1.000, 0.877, 0.000]], [0.196, [1.000, 0.898, 0.000]], [0.198, [1.000, 0.898, 0.000]], [0.200, [1.000, 0.919, 0.000]], [0.202, [1.000, 0.919, 0.000]], [0.204, [1.000, 0.940, 0.000]], [0.205, [1.000, 0.940, 0.000]], [0.207, [1.000, 0.961, 0.000]], [0.209, [1.000, 0.961, 0.000]], [0.211, [1.000, 0.983, 0.000]], [0.213, [1.000, 0.983, 0.000]], [0.215, [0.996, 1.000, 0.000]], [0.217, [0.996, 1.000, 0.000]], [0.219, [0.975, 1.000, 0.000]], [0.221, [0.975, 1.000, 0.000]], [0.223, [0.954, 1.000, 0.000]], [0.225, [0.954, 1.000, 0.000]], [0.227, [0.933, 1.000, 0.000]], [0.229, [0.933, 1.000, 0.000]], [0.231, [0.911, 1.000, 0.000]], [0.233, [0.911, 1.000, 0.000]], [0.235, [0.890, 1.000, 0.000]], [0.237, [0.890, 1.000, 0.000]], [0.239, [0.869, 1.000, 0.000]], [0.241, [0.869, 1.000, 0.000]], [0.243, [0.848, 1.000, 0.000]], [0.245, [0.848, 1.000, 0.000]], [0.247, [0.827, 1.000, 0.000]], [0.249, [0.827, 1.000, 0.000]], [0.250, [0.806, 1.000, 0.000]], [0.252, [0.806, 1.000, 0.000]], [0.254, [0.784, 1.000, 0.000]], [0.256, [0.784, 1.000, 0.000]], [0.258, [0.763, 1.000, 0.000]], [0.260, [0.763, 1.000, 0.000]], [0.262, [0.742, 1.000, 0.000]], [0.264, [0.742, 1.000, 0.000]], [0.266, [0.721, 1.000, 0.000]], [0.268, [0.721, 1.000, 0.000]], [0.270, [0.700, 1.000, 0.000]], [0.272, [0.700, 1.000, 0.000]], [0.274, [0.678, 1.000, 0.000]], [0.276, [0.678, 1.000, 0.000]], [0.278, [0.657, 1.000, 0.000]], [0.280, [0.657, 1.000, 0.000]], [0.282, [0.636, 1.000, 0.000]], [0.284, [0.636, 1.000, 0.000]], [0.286, [0.615, 1.000, 0.000]], [0.288, [0.615, 1.000, 0.000]], [0.290, [0.594, 1.000, 0.000]], [0.292, [0.594, 1.000, 0.000]], [0.294, [0.572, 1.000, 0.000]], [0.295, [0.572, 1.000, 0.000]], [0.297, [0.551, 1.000, 0.000]], [0.299, [0.551, 1.000, 0.000]], [0.301, [0.530, 1.000, 0.000]], [0.303, [0.530, 1.000, 0.000]], [0.305, [0.509, 1.000, 0.000]], [0.307, [0.509, 1.000, 0.000]], [0.309, [0.488, 1.000, 0.000]], [0.311, [0.488, 1.000, 0.000]], [0.313, [0.466, 1.000, 0.000]], [0.315, [0.466, 1.000, 0.000]], [0.317, [0.445, 1.000, 0.000]], [0.319, [0.445, 1.000, 0.000]], [0.321, [0.424, 1.000, 0.000]], [0.323, [0.424, 1.000, 0.000]], [0.325, [0.403, 1.000, 0.000]], [0.327, [0.403, 1.000, 0.000]], [0.329, [0.382, 1.000, 0.000]], [0.331, [0.382, 1.000, 0.000]], [0.333, [0.360, 1.000, 0.000]], [0.335, [0.360, 1.000, 0.000]], [0.337, [0.339, 1.000, 0.000]], [0.339, [0.339, 1.000, 0.000]], [0.341, [0.318, 1.000, 0.000]], [0.342, [0.318, 1.000, 0.000]], [0.344, [0.297, 1.000, 0.000]], [0.346, [0.297, 1.000, 0.000]], [0.348, [0.276, 1.000, 0.000]], [0.350, [0.276, 1.000, 0.000]], [0.352, [0.254, 1.000, 0.000]], [0.354, [0.254, 1.000, 0.000]], [0.356, [0.233, 1.000, 0.000]], [0.358, [0.233, 1.000, 0.000]], [0.360, [0.212, 1.000, 0.000]], [0.362, [0.212, 1.000, 0.000]], [0.364, [0.191, 1.000, 0.000]], [0.366, [0.191, 1.000, 0.000]], [0.368, [0.170, 1.000, 0.000]], [0.370, [0.170, 1.000, 0.000]], [0.372, [0.148, 1.000, 0.000]], [0.374, [0.148, 1.000, 0.000]], [0.376, [0.127, 1.000, 0.000]], [0.378, [0.127, 1.000, 0.000]], [0.380, [0.106, 1.000, 0.000]], [0.382, [0.106, 1.000, 0.000]], [0.384, [0.085, 1.000, 0.000]], [0.386, [0.085, 1.000, 0.000]], [0.387, [0.064, 1.000, 0.000]], [0.389, [0.064, 1.000, 0.000]], [0.391, [0.042, 1.000, 0.000]], [0.393, [0.042, 1.000, 0.000]], [0.395, [0.021, 1.000, 0.000]], [0.397, [0.021, 1.000, 0.000]], [0.399, [0.000, 1.000, 0.000]], [0.401, [0.000, 1.000, 0.000]], [0.403, [0.000, 1.000, 0.021]], [0.405, [0.000, 1.000, 0.021]], [0.407, [0.000, 1.000, 0.042]], [0.409, [0.000, 1.000, 0.042]], [0.411, [0.000, 1.000, 0.063]], [0.413, [0.000, 1.000, 0.063]], [0.415, [0.000, 1.000, 0.084]], [0.417, [0.000, 1.000, 0.084]], [0.419, [0.000, 1.000, 0.105]], [0.421, [0.000, 1.000, 0.105]], [0.423, [0.000, 1.000, 0.127]], [0.425, [0.000, 1.000, 0.127]], [0.427, [0.000, 1.000, 0.148]], [0.429, [0.000, 1.000, 0.148]], [0.431, [0.000, 1.000, 0.169]], [0.432, [0.000, 1.000, 0.169]], [0.434, [0.000, 1.000, 0.190]], [0.436, [0.000, 1.000, 0.190]], [0.438, [0.000, 1.000, 0.211]], [0.440, [0.000, 1.000, 0.211]], [0.442, [0.000, 1.000, 0.232]], [0.444, [0.000, 1.000, 0.232]], [0.446, [0.000, 1.000, 0.253]], [0.448, [0.000, 1.000, 0.253]], [0.450, [0.000, 1.000, 0.274]], [0.452, [0.000, 1.000, 0.274]], [0.454, [0.000, 1.000, 0.295]], [0.456, [0.000, 1.000, 0.295]], [0.458, [0.000, 1.000, 0.316]], [0.460, [0.000, 1.000, 0.316]], [0.462, [0.000, 1.000, 0.337]], [0.464, [0.000, 1.000, 0.337]], [0.466, [0.000, 1.000, 0.358]], [0.468, [0.000, 1.000, 0.358]], [0.470, [0.000, 1.000, 0.380]], [0.472, [0.000, 1.000, 0.380]], [0.474, [0.000, 1.000, 0.401]], [0.476, [0.000, 1.000, 0.401]], [0.477, [0.000, 1.000, 0.422]], [0.479, [0.000, 1.000, 0.422]], [0.481, [0.000, 1.000, 0.443]], [0.483, [0.000, 1.000, 0.443]], [0.485, [0.000, 1.000, 0.464]], [0.487, [0.000, 1.000, 0.464]], [0.489, [0.000, 1.000, 0.485]], [0.491, [0.000, 1.000, 0.485]], [0.493, [0.000, 1.000, 0.506]], [0.495, [0.000, 1.000, 0.506]], [0.497, [0.000, 1.000, 0.527]], [0.499, [0.000, 1.000, 0.527]], [0.501, [0.000, 1.000, 0.548]], [0.503, [0.000, 1.000, 0.548]], [0.505, [0.000, 1.000, 0.569]], [0.507, [0.000, 1.000, 0.569]], [0.509, [0.000, 1.000, 0.590]], [0.511, [0.000, 1.000, 0.590]], [0.513, [0.000, 1.000, 0.611]], [0.515, [0.000, 1.000, 0.611]], [0.517, [0.000, 1.000, 0.633]], [0.519, [0.000, 1.000, 0.633]], [0.521, [0.000, 1.000, 0.654]], [0.523, [0.000, 1.000, 0.654]], [0.524, [0.000, 1.000, 0.675]], [0.526, [0.000, 1.000, 0.675]], [0.528, [0.000, 1.000, 0.696]], [0.530, [0.000, 1.000, 0.696]], [0.532, [0.000, 1.000, 0.717]], [0.534, [0.000, 1.000, 0.717]], [0.536, [0.000, 1.000, 0.738]], [0.538, [0.000, 1.000, 0.738]], [0.540, [0.000, 1.000, 0.759]], [0.542, [0.000, 1.000, 0.759]], [0.544, [0.000, 1.000, 0.780]], [0.546, [0.000, 1.000, 0.780]], [0.548, [0.000, 1.000, 0.801]], [0.550, [0.000, 1.000, 0.801]], [0.552, [0.000, 1.000, 0.822]], [0.554, [0.000, 1.000, 0.822]], [0.556, [0.000, 1.000, 0.843]], [0.558, [0.000, 1.000, 0.843]], [0.560, [0.000, 1.000, 0.864]], [0.562, [0.000, 1.000, 0.864]], [0.564, [0.000, 1.000, 0.886]], [0.566, [0.000, 1.000, 0.886]], [0.568, [0.000, 1.000, 0.907]], [0.569, [0.000, 1.000, 0.907]], [0.571, [0.000, 1.000, 0.928]], [0.573, [0.000, 1.000, 0.928]], [0.575, [0.000, 1.000, 0.949]], [0.577, [0.000, 1.000, 0.949]], [0.579, [0.000, 1.000, 0.970]], [0.581, [0.000, 1.000, 0.970]], [0.583, [0.000, 1.000, 0.991]], [0.585, [0.000, 1.000, 0.991]], [0.587, [0.000, 0.988, 1.000]], [0.589, [0.000, 0.988, 1.000]], [0.591, [0.000, 0.967, 1.000]], [0.593, [0.000, 0.967, 1.000]], [0.595, [0.000, 0.945, 1.000]], [0.597, [0.000, 0.945, 1.000]], [0.599, [0.000, 0.924, 1.000]], [0.601, [0.000, 0.924, 1.000]], [0.603, [0.000, 0.903, 1.000]], [0.605, [0.000, 0.903, 1.000]], [0.607, [0.000, 0.881, 1.000]], [0.609, [0.000, 0.881, 1.000]], [0.611, [0.000, 0.860, 1.000]], [0.613, [0.000, 0.860, 1.000]], [0.614, [0.000, 0.839, 1.000]], [0.616, [0.000, 0.839, 1.000]], [0.618, [0.000, 0.817, 1.000]], [0.620, [0.000, 0.817, 1.000]], [0.622, [0.000, 0.796, 1.000]], [0.624, [0.000, 0.796, 1.000]], [0.626, [0.000, 0.775, 1.000]], [0.628, [0.000, 0.775, 1.000]], [0.630, [0.000, 0.753, 1.000]], [0.632, [0.000, 0.753, 1.000]], [0.634, [0.000, 0.732, 1.000]], [0.636, [0.000, 0.732, 1.000]], [0.638, [0.000, 0.711, 1.000]], [0.640, [0.000, 0.711, 1.000]], [0.642, [0.000, 0.689, 1.000]], [0.644, [0.000, 0.689, 1.000]], [0.646, [0.000, 0.668, 1.000]], [0.648, [0.000, 0.668, 1.000]], [0.650, [0.000, 0.647, 1.000]], [0.652, [0.000, 0.647, 1.000]], [0.654, [0.000, 0.626, 1.000]], [0.656, [0.000, 0.626, 1.000]], [0.658, [0.000, 0.604, 1.000]], [0.659, [0.000, 0.604, 1.000]], [0.661, [0.000, 0.583, 1.000]], [0.663, [0.000, 0.583, 1.000]], [0.665, [0.000, 0.562, 1.000]], [0.667, [0.000, 0.562, 1.000]], [0.669, [0.000, 0.540, 1.000]], [0.671, [0.000, 0.540, 1.000]], [0.673, [0.000, 0.519, 1.000]], [0.675, [0.000, 0.519, 1.000]], [0.677, [0.000, 0.498, 1.000]], [0.679, [0.000, 0.498, 1.000]], [0.681, [0.000, 0.476, 1.000]], [0.683, [0.000, 0.476, 1.000]], [0.685, [0.000, 0.455, 1.000]], [0.687, [0.000, 0.455, 1.000]], [0.689, [0.000, 0.434, 1.000]], [0.691, [0.000, 0.434, 1.000]], [0.693, [0.000, 0.412, 1.000]], [0.695, [0.000, 0.412, 1.000]], [0.697, [0.000, 0.391, 1.000]], [0.699, [0.000, 0.391, 1.000]], [0.701, [0.000, 0.370, 1.000]], [0.703, [0.000, 0.370, 1.000]], [0.705, [0.000, 0.348, 1.000]], [0.706, [0.000, 0.348, 1.000]], [0.708, [0.000, 0.327, 1.000]], [0.710, [0.000, 0.327, 1.000]], [0.712, [0.000, 0.306, 1.000]], [0.714, [0.000, 0.306, 1.000]], [0.716, [0.000, 0.285, 1.000]], [0.718, [0.000, 0.285, 1.000]], [0.720, [0.000, 0.263, 1.000]], [0.722, [0.000, 0.263, 1.000]], [0.724, [0.000, 0.242, 1.000]], [0.726, [0.000, 0.242, 1.000]], [0.728, [0.000, 0.221, 1.000]], [0.730, [0.000, 0.221, 1.000]], [0.732, [0.000, 0.199, 1.000]], [0.734, [0.000, 0.199, 1.000]], [0.736, [0.000, 0.178, 1.000]], [0.738, [0.000, 0.178, 1.000]], [0.740, [0.000, 0.157, 1.000]], [0.742, [0.000, 0.157, 1.000]], [0.744, [0.000, 0.135, 1.000]], [0.746, [0.000, 0.135, 1.000]], [0.748, [0.000, 0.114, 1.000]], [0.750, [0.000, 0.114, 1.000]], [0.751, [0.000, 0.093, 1.000]], [0.753, [0.000, 0.093, 1.000]], [0.755, [0.000, 0.071, 1.000]], [0.757, [0.000, 0.071, 1.000]], [0.759, [0.000, 0.050, 1.000]], [0.761, [0.000, 0.050, 1.000]], [0.763, [0.000, 0.029, 1.000]], [0.765, [0.000, 0.029, 1.000]], [0.767, [0.000, 0.007, 1.000]], [0.769, [0.000, 0.007, 1.000]], [0.771, [0.014, 0.000, 1.000]], [0.773, [0.014, 0.000, 1.000]], [0.775, [0.035, 0.000, 1.000]], [0.777, [0.035, 0.000, 1.000]], [0.779, [0.056, 0.000, 1.000]], [0.781, [0.056, 0.000, 1.000]], [0.783, [0.078, 0.000, 1.000]], [0.785, [0.078, 0.000, 1.000]], [0.787, [0.099, 0.000, 1.000]], [0.789, [0.099, 0.000, 1.000]], [0.791, [0.120, 0.000, 1.000]], [0.793, [0.120, 0.000, 1.000]], [0.795, [0.142, 0.000, 1.000]], [0.796, [0.142, 0.000, 1.000]], [0.798, [0.163, 0.000, 1.000]], [0.800, [0.163, 0.000, 1.000]], [0.802, [0.184, 0.000, 1.000]], [0.804, [0.184, 0.000, 1.000]], [0.806, [0.206, 0.000, 1.000]], [0.808, [0.206, 0.000, 1.000]], [0.810, [0.227, 0.000, 1.000]], [0.812, [0.227, 0.000, 1.000]], [0.814, [0.248, 0.000, 1.000]], [0.816, [0.248, 0.000, 1.000]], [0.818, [0.270, 0.000, 1.000]], [0.820, [0.270, 0.000, 1.000]], [0.822, [0.291, 0.000, 1.000]], [0.824, [0.291, 0.000, 1.000]], [0.826, [0.312, 0.000, 1.000]], [0.828, [0.312, 0.000, 1.000]], [0.830, [0.334, 0.000, 1.000]], [0.832, [0.334, 0.000, 1.000]], [0.834, [0.355, 0.000, 1.000]], [0.836, [0.355, 0.000, 1.000]], [0.838, [0.376, 0.000, 1.000]], [0.840, [0.376, 0.000, 1.000]], [0.841, [0.397, 0.000, 1.000]], [0.843, [0.397, 0.000, 1.000]], [0.845, [0.419, 0.000, 1.000]], [0.847, [0.419, 0.000, 1.000]], [0.849, [0.440, 0.000, 1.000]], [0.851, [0.440, 0.000, 1.000]], [0.853, [0.461, 0.000, 1.000]], [0.855, [0.461, 0.000, 1.000]], [0.857, [0.483, 0.000, 1.000]], [0.859, [0.483, 0.000, 1.000]], [0.861, [0.504, 0.000, 1.000]], [0.863, [0.504, 0.000, 1.000]], [0.865, [0.525, 0.000, 1.000]], [0.867, [0.525, 0.000, 1.000]], [0.869, [0.547, 0.000, 1.000]], [0.871, [0.547, 0.000, 1.000]], [0.873, [0.568, 0.000, 1.000]], [0.875, [0.568, 0.000, 1.000]], [0.877, [0.589, 0.000, 1.000]], [0.879, [0.589, 0.000, 1.000]], [0.881, [0.611, 0.000, 1.000]], [0.883, [0.611, 0.000, 1.000]], [0.885, [0.632, 0.000, 1.000]], [0.886, [0.632, 0.000, 1.000]], [0.888, [0.653, 0.000, 1.000]], [0.890, [0.653, 0.000, 1.000]], [0.892, [0.675, 0.000, 1.000]], [0.894, [0.675, 0.000, 1.000]], [0.896, [0.696, 0.000, 1.000]], [0.898, [0.696, 0.000, 1.000]], [0.900, [0.717, 0.000, 1.000]], [0.902, [0.717, 0.000, 1.000]], [0.904, [0.738, 0.000, 1.000]], [0.906, [0.738, 0.000, 1.000]], [0.908, [0.760, 0.000, 1.000]], [0.910, [0.760, 0.000, 1.000]], [0.912, [0.781, 0.000, 1.000]], [0.914, [0.781, 0.000, 1.000]], [0.916, [0.802, 0.000, 1.000]], [0.918, [0.802, 0.000, 1.000]], [0.920, [0.824, 0.000, 1.000]], [0.922, [0.824, 0.000, 1.000]], [0.924, [0.845, 0.000, 1.000]], [0.926, [0.845, 0.000, 1.000]], [0.928, [0.866, 0.000, 1.000]], [0.930, [0.866, 0.000, 1.000]], [0.932, [0.888, 0.000, 1.000]], [0.933, [0.888, 0.000, 1.000]], [0.935, [0.909, 0.000, 1.000]], [0.937, [0.909, 0.000, 1.000]], [0.939, [0.930, 0.000, 1.000]], [0.941, [0.930, 0.000, 1.000]], [0.943, [0.952, 0.000, 1.000]], [0.945, [0.952, 0.000, 1.000]], [0.947, [0.973, 0.000, 1.000]], [0.949, [0.973, 0.000, 1.000]], [0.951, [0.994, 0.000, 1.000]], [0.953, [0.994, 0.000, 1.000]], [0.955, [1.000, 0.000, 0.984]], [0.957, [1.000, 0.000, 0.984]], [0.959, [1.000, 0.000, 0.963]], [0.961, [1.000, 0.000, 0.963]], [0.963, [1.000, 0.000, 0.942]], [0.965, [1.000, 0.000, 0.942]], [0.967, [1.000, 0.000, 0.921]], [0.969, [1.000, 0.000, 0.921]], [0.971, [1.000, 0.000, 0.899]], [0.973, [1.000, 0.000, 0.899]], [0.975, [1.000, 0.000, 0.878]], [0.977, [1.000, 0.000, 0.878]], [0.978, [1.000, 0.000, 0.857]], [0.980, [1.000, 0.000, 0.857]], [0.982, [1.000, 0.000, 0.835]], [0.984, [1.000, 0.000, 0.835]], [0.986, [1.000, 0.000, 0.814]], [0.988, [1.000, 0.000, 0.814]], [0.990, [1.000, 0.000, 0.793]], [0.992, [1.000, 0.000, 0.793]], [0.994, [1.000, 0.000, 0.771]], [0.996, [1.000, 0.000, 0.771]], [0.998, [1.000, 0.000, 0.750]], [1.000, [1.000, 0.000, 0.750]]]; +var gist_stern = [[0.000, [0.000, 0.000, 0.000]], [0.002, [0.000, 0.000, 0.000]], [0.004, [0.072, 0.004, 0.008]], [0.006, [0.072, 0.004, 0.008]], [0.008, [0.143, 0.008, 0.016]], [0.010, [0.143, 0.008, 0.016]], [0.012, [0.215, 0.012, 0.024]], [0.014, [0.215, 0.012, 0.024]], [0.016, [0.287, 0.016, 0.031]], [0.018, [0.287, 0.016, 0.031]], [0.020, [0.358, 0.020, 0.039]], [0.022, [0.358, 0.020, 0.039]], [0.023, [0.430, 0.024, 0.047]], [0.025, [0.430, 0.024, 0.047]], [0.027, [0.502, 0.027, 0.055]], [0.029, [0.502, 0.027, 0.055]], [0.031, [0.574, 0.031, 0.063]], [0.033, [0.574, 0.031, 0.063]], [0.035, [0.645, 0.035, 0.071]], [0.037, [0.645, 0.035, 0.071]], [0.039, [0.717, 0.039, 0.078]], [0.041, [0.717, 0.039, 0.078]], [0.043, [0.789, 0.043, 0.086]], [0.045, [0.789, 0.043, 0.086]], [0.047, [0.860, 0.047, 0.094]], [0.049, [0.860, 0.047, 0.094]], [0.051, [0.932, 0.051, 0.102]], [0.053, [0.932, 0.051, 0.102]], [0.055, [0.999, 0.055, 0.110]], [0.057, [0.999, 0.055, 0.110]], [0.059, [0.979, 0.059, 0.118]], [0.061, [0.979, 0.059, 0.118]], [0.063, [0.960, 0.063, 0.125]], [0.065, [0.960, 0.063, 0.125]], [0.067, [0.940, 0.067, 0.133]], [0.068, [0.940, 0.067, 0.133]], [0.070, [0.921, 0.071, 0.141]], [0.072, [0.921, 0.071, 0.141]], [0.074, [0.901, 0.075, 0.149]], [0.076, [0.901, 0.075, 0.149]], [0.078, [0.882, 0.078, 0.157]], [0.080, [0.882, 0.078, 0.157]], [0.082, [0.862, 0.082, 0.165]], [0.084, [0.862, 0.082, 0.165]], [0.086, [0.843, 0.086, 0.173]], [0.088, [0.843, 0.086, 0.173]], [0.090, [0.823, 0.090, 0.180]], [0.092, [0.823, 0.090, 0.180]], [0.094, [0.804, 0.094, 0.188]], [0.096, [0.804, 0.094, 0.188]], [0.098, [0.784, 0.098, 0.196]], [0.100, [0.784, 0.098, 0.196]], [0.102, [0.765, 0.102, 0.204]], [0.104, [0.765, 0.102, 0.204]], [0.106, [0.745, 0.106, 0.212]], [0.108, [0.745, 0.106, 0.212]], [0.110, [0.725, 0.110, 0.220]], [0.112, [0.725, 0.110, 0.220]], [0.114, [0.706, 0.114, 0.227]], [0.115, [0.706, 0.114, 0.227]], [0.117, [0.686, 0.118, 0.235]], [0.119, [0.686, 0.118, 0.235]], [0.121, [0.667, 0.122, 0.243]], [0.123, [0.667, 0.122, 0.243]], [0.125, [0.647, 0.125, 0.251]], [0.127, [0.647, 0.125, 0.251]], [0.129, [0.628, 0.129, 0.259]], [0.131, [0.628, 0.129, 0.259]], [0.133, [0.608, 0.133, 0.267]], [0.135, [0.608, 0.133, 0.267]], [0.137, [0.589, 0.137, 0.275]], [0.139, [0.589, 0.137, 0.275]], [0.141, [0.569, 0.141, 0.282]], [0.143, [0.569, 0.141, 0.282]], [0.145, [0.550, 0.145, 0.290]], [0.147, [0.550, 0.145, 0.290]], [0.149, [0.530, 0.149, 0.298]], [0.151, [0.530, 0.149, 0.298]], [0.153, [0.511, 0.153, 0.306]], [0.155, [0.511, 0.153, 0.306]], [0.157, [0.491, 0.157, 0.314]], [0.159, [0.491, 0.157, 0.314]], [0.160, [0.471, 0.161, 0.322]], [0.162, [0.471, 0.161, 0.322]], [0.164, [0.452, 0.165, 0.329]], [0.166, [0.452, 0.165, 0.329]], [0.168, [0.432, 0.169, 0.337]], [0.170, [0.432, 0.169, 0.337]], [0.172, [0.413, 0.173, 0.345]], [0.174, [0.413, 0.173, 0.345]], [0.176, [0.393, 0.176, 0.353]], [0.178, [0.393, 0.176, 0.353]], [0.180, [0.374, 0.180, 0.361]], [0.182, [0.374, 0.180, 0.361]], [0.184, [0.354, 0.184, 0.369]], [0.186, [0.354, 0.184, 0.369]], [0.188, [0.335, 0.188, 0.376]], [0.190, [0.335, 0.188, 0.376]], [0.192, [0.315, 0.192, 0.384]], [0.194, [0.315, 0.192, 0.384]], [0.196, [0.296, 0.196, 0.392]], [0.198, [0.296, 0.196, 0.392]], [0.200, [0.276, 0.200, 0.400]], [0.202, [0.276, 0.200, 0.400]], [0.204, [0.257, 0.204, 0.408]], [0.205, [0.257, 0.204, 0.408]], [0.207, [0.237, 0.208, 0.416]], [0.209, [0.237, 0.208, 0.416]], [0.211, [0.217, 0.212, 0.424]], [0.213, [0.217, 0.212, 0.424]], [0.215, [0.198, 0.216, 0.431]], [0.217, [0.198, 0.216, 0.431]], [0.219, [0.178, 0.220, 0.439]], [0.221, [0.178, 0.220, 0.439]], [0.223, [0.159, 0.224, 0.447]], [0.225, [0.159, 0.224, 0.447]], [0.227, [0.139, 0.227, 0.455]], [0.229, [0.139, 0.227, 0.455]], [0.231, [0.120, 0.231, 0.463]], [0.233, [0.120, 0.231, 0.463]], [0.235, [0.100, 0.235, 0.471]], [0.237, [0.100, 0.235, 0.471]], [0.239, [0.081, 0.239, 0.478]], [0.241, [0.081, 0.239, 0.478]], [0.243, [0.061, 0.243, 0.486]], [0.245, [0.061, 0.243, 0.486]], [0.247, [0.042, 0.247, 0.494]], [0.249, [0.042, 0.247, 0.494]], [0.250, [0.251, 0.251, 0.502]], [0.252, [0.251, 0.251, 0.502]], [0.254, [0.255, 0.255, 0.510]], [0.256, [0.255, 0.255, 0.510]], [0.258, [0.259, 0.259, 0.518]], [0.260, [0.259, 0.259, 0.518]], [0.262, [0.263, 0.263, 0.525]], [0.264, [0.263, 0.263, 0.525]], [0.266, [0.267, 0.267, 0.533]], [0.268, [0.267, 0.267, 0.533]], [0.270, [0.271, 0.271, 0.541]], [0.272, [0.271, 0.271, 0.541]], [0.274, [0.275, 0.275, 0.549]], [0.276, [0.275, 0.275, 0.549]], [0.278, [0.278, 0.278, 0.557]], [0.280, [0.278, 0.278, 0.557]], [0.282, [0.282, 0.282, 0.565]], [0.284, [0.282, 0.282, 0.565]], [0.286, [0.286, 0.286, 0.573]], [0.288, [0.286, 0.286, 0.573]], [0.290, [0.290, 0.290, 0.580]], [0.292, [0.290, 0.290, 0.580]], [0.294, [0.294, 0.294, 0.588]], [0.295, [0.294, 0.294, 0.588]], [0.297, [0.298, 0.298, 0.596]], [0.299, [0.298, 0.298, 0.596]], [0.301, [0.302, 0.302, 0.604]], [0.303, [0.302, 0.302, 0.604]], [0.305, [0.306, 0.306, 0.612]], [0.307, [0.306, 0.306, 0.612]], [0.309, [0.310, 0.310, 0.620]], [0.311, [0.310, 0.310, 0.620]], [0.313, [0.314, 0.314, 0.627]], [0.315, [0.314, 0.314, 0.627]], [0.317, [0.318, 0.318, 0.635]], [0.319, [0.318, 0.318, 0.635]], [0.321, [0.322, 0.322, 0.643]], [0.323, [0.322, 0.322, 0.643]], [0.325, [0.325, 0.325, 0.651]], [0.327, [0.325, 0.325, 0.651]], [0.329, [0.329, 0.329, 0.659]], [0.331, [0.329, 0.329, 0.659]], [0.333, [0.333, 0.333, 0.667]], [0.335, [0.333, 0.333, 0.667]], [0.337, [0.337, 0.337, 0.675]], [0.339, [0.337, 0.337, 0.675]], [0.341, [0.341, 0.341, 0.682]], [0.342, [0.341, 0.341, 0.682]], [0.344, [0.345, 0.345, 0.690]], [0.346, [0.345, 0.345, 0.690]], [0.348, [0.349, 0.349, 0.698]], [0.350, [0.349, 0.349, 0.698]], [0.352, [0.353, 0.353, 0.706]], [0.354, [0.353, 0.353, 0.706]], [0.356, [0.357, 0.357, 0.714]], [0.358, [0.357, 0.357, 0.714]], [0.360, [0.361, 0.361, 0.722]], [0.362, [0.361, 0.361, 0.722]], [0.364, [0.365, 0.365, 0.729]], [0.366, [0.365, 0.365, 0.729]], [0.368, [0.369, 0.369, 0.737]], [0.370, [0.369, 0.369, 0.737]], [0.372, [0.373, 0.373, 0.745]], [0.374, [0.373, 0.373, 0.745]], [0.376, [0.376, 0.376, 0.753]], [0.378, [0.376, 0.376, 0.753]], [0.380, [0.380, 0.380, 0.761]], [0.382, [0.380, 0.380, 0.761]], [0.384, [0.384, 0.384, 0.769]], [0.386, [0.384, 0.384, 0.769]], [0.387, [0.388, 0.388, 0.776]], [0.389, [0.388, 0.388, 0.776]], [0.391, [0.392, 0.392, 0.784]], [0.393, [0.392, 0.392, 0.784]], [0.395, [0.396, 0.396, 0.792]], [0.397, [0.396, 0.396, 0.792]], [0.399, [0.400, 0.400, 0.800]], [0.401, [0.400, 0.400, 0.800]], [0.403, [0.404, 0.404, 0.808]], [0.405, [0.404, 0.404, 0.808]], [0.407, [0.408, 0.408, 0.816]], [0.409, [0.408, 0.408, 0.816]], [0.411, [0.412, 0.412, 0.824]], [0.413, [0.412, 0.412, 0.824]], [0.415, [0.416, 0.416, 0.831]], [0.417, [0.416, 0.416, 0.831]], [0.419, [0.420, 0.420, 0.839]], [0.421, [0.420, 0.420, 0.839]], [0.423, [0.424, 0.424, 0.847]], [0.425, [0.424, 0.424, 0.847]], [0.427, [0.427, 0.427, 0.855]], [0.429, [0.427, 0.427, 0.855]], [0.431, [0.431, 0.431, 0.863]], [0.432, [0.431, 0.431, 0.863]], [0.434, [0.435, 0.435, 0.871]], [0.436, [0.435, 0.435, 0.871]], [0.438, [0.439, 0.439, 0.878]], [0.440, [0.439, 0.439, 0.878]], [0.442, [0.443, 0.443, 0.886]], [0.444, [0.443, 0.443, 0.886]], [0.446, [0.447, 0.447, 0.894]], [0.448, [0.447, 0.447, 0.894]], [0.450, [0.451, 0.451, 0.902]], [0.452, [0.451, 0.451, 0.902]], [0.454, [0.455, 0.455, 0.910]], [0.456, [0.455, 0.455, 0.910]], [0.458, [0.459, 0.459, 0.918]], [0.460, [0.459, 0.459, 0.918]], [0.462, [0.463, 0.463, 0.925]], [0.464, [0.463, 0.463, 0.925]], [0.466, [0.467, 0.467, 0.933]], [0.468, [0.467, 0.467, 0.933]], [0.470, [0.471, 0.471, 0.941]], [0.472, [0.471, 0.471, 0.941]], [0.474, [0.475, 0.475, 0.949]], [0.476, [0.475, 0.475, 0.949]], [0.477, [0.478, 0.478, 0.957]], [0.479, [0.478, 0.478, 0.957]], [0.481, [0.482, 0.482, 0.965]], [0.483, [0.482, 0.482, 0.965]], [0.485, [0.486, 0.486, 0.973]], [0.487, [0.486, 0.486, 0.973]], [0.489, [0.490, 0.490, 0.980]], [0.491, [0.490, 0.490, 0.980]], [0.493, [0.494, 0.494, 0.988]], [0.495, [0.494, 0.494, 0.988]], [0.497, [0.498, 0.498, 0.996]], [0.499, [0.498, 0.498, 0.996]], [0.501, [0.502, 0.502, 0.992]], [0.503, [0.502, 0.502, 0.992]], [0.505, [0.506, 0.506, 0.975]], [0.507, [0.506, 0.506, 0.975]], [0.509, [0.510, 0.510, 0.958]], [0.511, [0.510, 0.510, 0.958]], [0.513, [0.514, 0.514, 0.942]], [0.515, [0.514, 0.514, 0.942]], [0.517, [0.518, 0.518, 0.925]], [0.519, [0.518, 0.518, 0.925]], [0.521, [0.522, 0.522, 0.908]], [0.523, [0.522, 0.522, 0.908]], [0.524, [0.525, 0.525, 0.892]], [0.526, [0.525, 0.525, 0.892]], [0.528, [0.529, 0.529, 0.875]], [0.530, [0.529, 0.529, 0.875]], [0.532, [0.533, 0.533, 0.858]], [0.534, [0.533, 0.533, 0.858]], [0.536, [0.537, 0.537, 0.841]], [0.538, [0.537, 0.537, 0.841]], [0.540, [0.541, 0.541, 0.825]], [0.542, [0.541, 0.541, 0.825]], [0.544, [0.545, 0.545, 0.808]], [0.546, [0.545, 0.545, 0.808]], [0.548, [0.549, 0.549, 0.791]], [0.550, [0.549, 0.549, 0.791]], [0.552, [0.553, 0.553, 0.775]], [0.554, [0.553, 0.553, 0.775]], [0.556, [0.557, 0.557, 0.758]], [0.558, [0.557, 0.557, 0.758]], [0.560, [0.561, 0.561, 0.741]], [0.562, [0.561, 0.561, 0.741]], [0.564, [0.565, 0.565, 0.725]], [0.566, [0.565, 0.565, 0.725]], [0.568, [0.569, 0.569, 0.708]], [0.569, [0.569, 0.569, 0.708]], [0.571, [0.573, 0.573, 0.691]], [0.573, [0.573, 0.573, 0.691]], [0.575, [0.576, 0.576, 0.675]], [0.577, [0.576, 0.576, 0.675]], [0.579, [0.580, 0.580, 0.658]], [0.581, [0.580, 0.580, 0.658]], [0.583, [0.584, 0.584, 0.641]], [0.585, [0.584, 0.584, 0.641]], [0.587, [0.588, 0.588, 0.625]], [0.589, [0.588, 0.588, 0.625]], [0.591, [0.592, 0.592, 0.608]], [0.593, [0.592, 0.592, 0.608]], [0.595, [0.596, 0.596, 0.591]], [0.597, [0.596, 0.596, 0.591]], [0.599, [0.600, 0.600, 0.574]], [0.601, [0.600, 0.600, 0.574]], [0.603, [0.604, 0.604, 0.558]], [0.605, [0.604, 0.604, 0.558]], [0.607, [0.608, 0.608, 0.541]], [0.609, [0.608, 0.608, 0.541]], [0.611, [0.612, 0.612, 0.524]], [0.613, [0.612, 0.612, 0.524]], [0.614, [0.616, 0.616, 0.508]], [0.616, [0.616, 0.616, 0.508]], [0.618, [0.620, 0.620, 0.491]], [0.620, [0.620, 0.620, 0.491]], [0.622, [0.624, 0.624, 0.474]], [0.624, [0.624, 0.624, 0.474]], [0.626, [0.627, 0.627, 0.458]], [0.628, [0.627, 0.627, 0.458]], [0.630, [0.631, 0.631, 0.441]], [0.632, [0.631, 0.631, 0.441]], [0.634, [0.635, 0.635, 0.424]], [0.636, [0.635, 0.635, 0.424]], [0.638, [0.639, 0.639, 0.408]], [0.640, [0.639, 0.639, 0.408]], [0.642, [0.643, 0.643, 0.391]], [0.644, [0.643, 0.643, 0.391]], [0.646, [0.647, 0.647, 0.374]], [0.648, [0.647, 0.647, 0.374]], [0.650, [0.651, 0.651, 0.358]], [0.652, [0.651, 0.651, 0.358]], [0.654, [0.655, 0.655, 0.341]], [0.656, [0.655, 0.655, 0.341]], [0.658, [0.659, 0.659, 0.324]], [0.659, [0.659, 0.659, 0.324]], [0.661, [0.663, 0.663, 0.307]], [0.663, [0.663, 0.663, 0.307]], [0.665, [0.667, 0.667, 0.291]], [0.667, [0.667, 0.667, 0.291]], [0.669, [0.671, 0.671, 0.274]], [0.671, [0.671, 0.671, 0.274]], [0.673, [0.675, 0.675, 0.257]], [0.675, [0.675, 0.675, 0.257]], [0.677, [0.678, 0.678, 0.241]], [0.679, [0.678, 0.678, 0.241]], [0.681, [0.682, 0.682, 0.224]], [0.683, [0.682, 0.682, 0.224]], [0.685, [0.686, 0.686, 0.207]], [0.687, [0.686, 0.686, 0.207]], [0.689, [0.690, 0.690, 0.191]], [0.691, [0.690, 0.690, 0.191]], [0.693, [0.694, 0.694, 0.174]], [0.695, [0.694, 0.694, 0.174]], [0.697, [0.698, 0.698, 0.157]], [0.699, [0.698, 0.698, 0.157]], [0.701, [0.702, 0.702, 0.141]], [0.703, [0.702, 0.702, 0.141]], [0.705, [0.706, 0.706, 0.124]], [0.706, [0.706, 0.706, 0.124]], [0.708, [0.710, 0.710, 0.107]], [0.710, [0.710, 0.710, 0.107]], [0.712, [0.714, 0.714, 0.091]], [0.714, [0.714, 0.714, 0.091]], [0.716, [0.718, 0.718, 0.074]], [0.718, [0.718, 0.718, 0.074]], [0.720, [0.722, 0.722, 0.057]], [0.722, [0.722, 0.722, 0.057]], [0.724, [0.725, 0.725, 0.040]], [0.726, [0.725, 0.725, 0.040]], [0.728, [0.729, 0.729, 0.024]], [0.730, [0.729, 0.729, 0.024]], [0.732, [0.733, 0.733, 0.007]], [0.734, [0.733, 0.733, 0.007]], [0.736, [0.737, 0.737, 0.009]], [0.738, [0.737, 0.737, 0.009]], [0.740, [0.741, 0.741, 0.023]], [0.742, [0.741, 0.741, 0.023]], [0.744, [0.745, 0.745, 0.038]], [0.746, [0.745, 0.745, 0.038]], [0.748, [0.749, 0.749, 0.053]], [0.750, [0.749, 0.749, 0.053]], [0.751, [0.753, 0.753, 0.068]], [0.753, [0.753, 0.753, 0.068]], [0.755, [0.757, 0.757, 0.083]], [0.757, [0.757, 0.757, 0.083]], [0.759, [0.761, 0.761, 0.097]], [0.761, [0.761, 0.761, 0.097]], [0.763, [0.765, 0.765, 0.112]], [0.765, [0.765, 0.765, 0.112]], [0.767, [0.769, 0.769, 0.127]], [0.769, [0.769, 0.769, 0.127]], [0.771, [0.773, 0.773, 0.142]], [0.773, [0.773, 0.773, 0.142]], [0.775, [0.776, 0.776, 0.156]], [0.777, [0.776, 0.776, 0.156]], [0.779, [0.780, 0.780, 0.171]], [0.781, [0.780, 0.780, 0.171]], [0.783, [0.784, 0.784, 0.186]], [0.785, [0.784, 0.784, 0.186]], [0.787, [0.788, 0.788, 0.201]], [0.789, [0.788, 0.788, 0.201]], [0.791, [0.792, 0.792, 0.216]], [0.793, [0.792, 0.792, 0.216]], [0.795, [0.796, 0.796, 0.230]], [0.796, [0.796, 0.796, 0.230]], [0.798, [0.800, 0.800, 0.245]], [0.800, [0.800, 0.800, 0.245]], [0.802, [0.804, 0.804, 0.260]], [0.804, [0.804, 0.804, 0.260]], [0.806, [0.808, 0.808, 0.275]], [0.808, [0.808, 0.808, 0.275]], [0.810, [0.812, 0.812, 0.290]], [0.812, [0.812, 0.812, 0.290]], [0.814, [0.816, 0.816, 0.304]], [0.816, [0.816, 0.816, 0.304]], [0.818, [0.820, 0.820, 0.319]], [0.820, [0.820, 0.820, 0.319]], [0.822, [0.824, 0.824, 0.334]], [0.824, [0.824, 0.824, 0.334]], [0.826, [0.827, 0.827, 0.349]], [0.828, [0.827, 0.827, 0.349]], [0.830, [0.831, 0.831, 0.364]], [0.832, [0.831, 0.831, 0.364]], [0.834, [0.835, 0.835, 0.378]], [0.836, [0.835, 0.835, 0.378]], [0.838, [0.839, 0.839, 0.393]], [0.840, [0.839, 0.839, 0.393]], [0.841, [0.843, 0.843, 0.408]], [0.843, [0.843, 0.843, 0.408]], [0.845, [0.847, 0.847, 0.423]], [0.847, [0.847, 0.847, 0.423]], [0.849, [0.851, 0.851, 0.438]], [0.851, [0.851, 0.851, 0.438]], [0.853, [0.855, 0.855, 0.452]], [0.855, [0.855, 0.855, 0.452]], [0.857, [0.859, 0.859, 0.467]], [0.859, [0.859, 0.859, 0.467]], [0.861, [0.863, 0.863, 0.482]], [0.863, [0.863, 0.863, 0.482]], [0.865, [0.867, 0.867, 0.497]], [0.867, [0.867, 0.867, 0.497]], [0.869, [0.871, 0.871, 0.512]], [0.871, [0.871, 0.871, 0.512]], [0.873, [0.875, 0.875, 0.526]], [0.875, [0.875, 0.875, 0.526]], [0.877, [0.878, 0.878, 0.541]], [0.879, [0.878, 0.878, 0.541]], [0.881, [0.882, 0.882, 0.556]], [0.883, [0.882, 0.882, 0.556]], [0.885, [0.886, 0.886, 0.571]], [0.886, [0.886, 0.886, 0.571]], [0.888, [0.890, 0.890, 0.586]], [0.890, [0.890, 0.890, 0.586]], [0.892, [0.894, 0.894, 0.600]], [0.894, [0.894, 0.894, 0.600]], [0.896, [0.898, 0.898, 0.615]], [0.898, [0.898, 0.898, 0.615]], [0.900, [0.902, 0.902, 0.630]], [0.902, [0.902, 0.902, 0.630]], [0.904, [0.906, 0.906, 0.645]], [0.906, [0.906, 0.906, 0.645]], [0.908, [0.910, 0.910, 0.660]], [0.910, [0.910, 0.910, 0.660]], [0.912, [0.914, 0.914, 0.674]], [0.914, [0.914, 0.914, 0.674]], [0.916, [0.918, 0.918, 0.689]], [0.918, [0.918, 0.918, 0.689]], [0.920, [0.922, 0.922, 0.704]], [0.922, [0.922, 0.922, 0.704]], [0.924, [0.925, 0.925, 0.719]], [0.926, [0.925, 0.925, 0.719]], [0.928, [0.929, 0.929, 0.734]], [0.930, [0.929, 0.929, 0.734]], [0.932, [0.933, 0.933, 0.748]], [0.933, [0.933, 0.933, 0.748]], [0.935, [0.937, 0.937, 0.763]], [0.937, [0.937, 0.937, 0.763]], [0.939, [0.941, 0.941, 0.778]], [0.941, [0.941, 0.941, 0.778]], [0.943, [0.945, 0.945, 0.793]], [0.945, [0.945, 0.945, 0.793]], [0.947, [0.949, 0.949, 0.808]], [0.949, [0.949, 0.949, 0.808]], [0.951, [0.953, 0.953, 0.822]], [0.953, [0.953, 0.953, 0.822]], [0.955, [0.957, 0.957, 0.837]], [0.957, [0.957, 0.957, 0.837]], [0.959, [0.961, 0.961, 0.852]], [0.961, [0.961, 0.961, 0.852]], [0.963, [0.965, 0.965, 0.867]], [0.965, [0.965, 0.965, 0.867]], [0.967, [0.969, 0.969, 0.882]], [0.969, [0.969, 0.969, 0.882]], [0.971, [0.973, 0.973, 0.896]], [0.973, [0.973, 0.973, 0.896]], [0.975, [0.976, 0.976, 0.911]], [0.977, [0.976, 0.976, 0.911]], [0.978, [0.980, 0.980, 0.926]], [0.980, [0.980, 0.980, 0.926]], [0.982, [0.984, 0.984, 0.941]], [0.984, [0.984, 0.984, 0.941]], [0.986, [0.988, 0.988, 0.956]], [0.988, [0.988, 0.988, 0.956]], [0.990, [0.992, 0.992, 0.970]], [0.992, [0.992, 0.992, 0.970]], [0.994, [0.996, 0.996, 0.985]], [0.996, [0.996, 0.996, 0.985]], [0.998, [1.000, 1.000, 1.000]], [1.000, [1.000, 1.000, 1.000]]]; +var gnuplot = [[0.000, [0.000, 0.000, 0.000]], [0.002, [0.000, 0.000, 0.000]], [0.004, [0.063, 0.000, 0.025]], [0.006, [0.063, 0.000, 0.025]], [0.008, [0.089, 0.000, 0.049]], [0.010, [0.089, 0.000, 0.049]], [0.012, [0.108, 0.000, 0.074]], [0.014, [0.108, 0.000, 0.074]], [0.016, [0.125, 0.000, 0.098]], [0.018, [0.125, 0.000, 0.098]], [0.020, [0.140, 0.000, 0.123]], [0.022, [0.140, 0.000, 0.123]], [0.023, [0.153, 0.000, 0.147]], [0.025, [0.153, 0.000, 0.147]], [0.027, [0.166, 0.000, 0.172]], [0.029, [0.166, 0.000, 0.172]], [0.031, [0.177, 0.000, 0.196]], [0.033, [0.177, 0.000, 0.196]], [0.035, [0.188, 0.000, 0.220]], [0.037, [0.188, 0.000, 0.220]], [0.039, [0.198, 0.000, 0.244]], [0.041, [0.198, 0.000, 0.244]], [0.043, [0.208, 0.000, 0.268]], [0.045, [0.208, 0.000, 0.268]], [0.047, [0.217, 0.000, 0.291]], [0.049, [0.217, 0.000, 0.291]], [0.051, [0.226, 0.000, 0.315]], [0.053, [0.226, 0.000, 0.315]], [0.055, [0.234, 0.000, 0.338]], [0.057, [0.234, 0.000, 0.338]], [0.059, [0.243, 0.000, 0.361]], [0.061, [0.243, 0.000, 0.361]], [0.063, [0.250, 0.000, 0.384]], [0.065, [0.250, 0.000, 0.384]], [0.067, [0.258, 0.000, 0.407]], [0.068, [0.258, 0.000, 0.407]], [0.070, [0.266, 0.000, 0.429]], [0.072, [0.266, 0.000, 0.429]], [0.074, [0.273, 0.000, 0.451]], [0.076, [0.273, 0.000, 0.451]], [0.078, [0.280, 0.000, 0.473]], [0.080, [0.280, 0.000, 0.473]], [0.082, [0.287, 0.001, 0.495]], [0.084, [0.287, 0.001, 0.495]], [0.086, [0.294, 0.001, 0.516]], [0.088, [0.294, 0.001, 0.516]], [0.090, [0.300, 0.001, 0.537]], [0.092, [0.300, 0.001, 0.537]], [0.094, [0.307, 0.001, 0.557]], [0.096, [0.307, 0.001, 0.557]], [0.098, [0.313, 0.001, 0.578]], [0.100, [0.313, 0.001, 0.578]], [0.102, [0.319, 0.001, 0.598]], [0.104, [0.319, 0.001, 0.598]], [0.106, [0.325, 0.001, 0.617]], [0.108, [0.325, 0.001, 0.617]], [0.110, [0.331, 0.001, 0.636]], [0.112, [0.331, 0.001, 0.636]], [0.114, [0.337, 0.001, 0.655]], [0.115, [0.337, 0.001, 0.655]], [0.117, [0.343, 0.002, 0.674]], [0.119, [0.343, 0.002, 0.674]], [0.121, [0.349, 0.002, 0.692]], [0.123, [0.349, 0.002, 0.692]], [0.125, [0.354, 0.002, 0.709]], [0.127, [0.354, 0.002, 0.709]], [0.129, [0.360, 0.002, 0.726]], [0.131, [0.360, 0.002, 0.726]], [0.133, [0.365, 0.002, 0.743]], [0.135, [0.365, 0.002, 0.743]], [0.137, [0.370, 0.003, 0.759]], [0.139, [0.370, 0.003, 0.759]], [0.141, [0.376, 0.003, 0.775]], [0.143, [0.376, 0.003, 0.775]], [0.145, [0.381, 0.003, 0.791]], [0.147, [0.381, 0.003, 0.791]], [0.149, [0.386, 0.003, 0.805]], [0.151, [0.386, 0.003, 0.805]], [0.153, [0.391, 0.004, 0.820]], [0.155, [0.391, 0.004, 0.820]], [0.157, [0.396, 0.004, 0.834]], [0.159, [0.396, 0.004, 0.834]], [0.160, [0.401, 0.004, 0.847]], [0.162, [0.401, 0.004, 0.847]], [0.164, [0.406, 0.004, 0.860]], [0.166, [0.406, 0.004, 0.860]], [0.168, [0.411, 0.005, 0.872]], [0.170, [0.411, 0.005, 0.872]], [0.172, [0.415, 0.005, 0.884]], [0.174, [0.415, 0.005, 0.884]], [0.176, [0.420, 0.005, 0.895]], [0.178, [0.420, 0.005, 0.895]], [0.180, [0.425, 0.006, 0.906]], [0.182, [0.425, 0.006, 0.906]], [0.184, [0.429, 0.006, 0.916]], [0.186, [0.429, 0.006, 0.916]], [0.188, [0.434, 0.007, 0.926]], [0.190, [0.434, 0.007, 0.926]], [0.192, [0.438, 0.007, 0.935]], [0.194, [0.438, 0.007, 0.935]], [0.196, [0.443, 0.008, 0.943]], [0.198, [0.443, 0.008, 0.943]], [0.200, [0.447, 0.008, 0.951]], [0.202, [0.447, 0.008, 0.951]], [0.204, [0.452, 0.008, 0.958]], [0.205, [0.452, 0.008, 0.958]], [0.207, [0.456, 0.009, 0.965]], [0.209, [0.456, 0.009, 0.965]], [0.211, [0.460, 0.009, 0.971]], [0.213, [0.460, 0.009, 0.971]], [0.215, [0.464, 0.010, 0.977]], [0.217, [0.464, 0.010, 0.977]], [0.219, [0.469, 0.011, 0.982]], [0.221, [0.469, 0.011, 0.982]], [0.223, [0.473, 0.011, 0.986]], [0.225, [0.473, 0.011, 0.986]], [0.227, [0.477, 0.012, 0.990]], [0.229, [0.477, 0.012, 0.990]], [0.231, [0.481, 0.012, 0.993]], [0.233, [0.481, 0.012, 0.993]], [0.235, [0.485, 0.013, 0.996]], [0.237, [0.485, 0.013, 0.996]], [0.239, [0.489, 0.014, 0.998]], [0.241, [0.489, 0.014, 0.998]], [0.243, [0.493, 0.014, 0.999]], [0.245, [0.493, 0.014, 0.999]], [0.247, [0.497, 0.015, 1.000]], [0.249, [0.497, 0.015, 1.000]], [0.250, [0.501, 0.016, 1.000]], [0.252, [0.501, 0.016, 1.000]], [0.254, [0.505, 0.017, 1.000]], [0.256, [0.505, 0.017, 1.000]], [0.258, [0.509, 0.017, 0.998]], [0.260, [0.509, 0.017, 0.998]], [0.262, [0.513, 0.018, 0.997]], [0.264, [0.513, 0.018, 0.997]], [0.266, [0.516, 0.019, 0.995]], [0.268, [0.516, 0.019, 0.995]], [0.270, [0.520, 0.020, 0.992]], [0.272, [0.520, 0.020, 0.992]], [0.274, [0.524, 0.021, 0.988]], [0.276, [0.524, 0.021, 0.988]], [0.278, [0.528, 0.022, 0.984]], [0.280, [0.528, 0.022, 0.984]], [0.282, [0.531, 0.023, 0.979]], [0.284, [0.531, 0.023, 0.979]], [0.286, [0.535, 0.023, 0.974]], [0.288, [0.535, 0.023, 0.974]], [0.290, [0.539, 0.024, 0.968]], [0.292, [0.539, 0.024, 0.968]], [0.294, [0.542, 0.025, 0.962]], [0.295, [0.542, 0.025, 0.962]], [0.297, [0.546, 0.026, 0.955]], [0.299, [0.546, 0.026, 0.955]], [0.301, [0.550, 0.028, 0.947]], [0.303, [0.550, 0.028, 0.947]], [0.305, [0.553, 0.029, 0.939]], [0.307, [0.553, 0.029, 0.939]], [0.309, [0.557, 0.030, 0.930]], [0.311, [0.557, 0.030, 0.930]], [0.313, [0.560, 0.031, 0.921]], [0.315, [0.560, 0.031, 0.921]], [0.317, [0.564, 0.032, 0.911]], [0.319, [0.564, 0.032, 0.911]], [0.321, [0.567, 0.033, 0.901]], [0.323, [0.567, 0.033, 0.901]], [0.325, [0.571, 0.034, 0.890]], [0.327, [0.571, 0.034, 0.890]], [0.329, [0.574, 0.036, 0.878]], [0.331, [0.574, 0.036, 0.878]], [0.333, [0.577, 0.037, 0.866]], [0.335, [0.577, 0.037, 0.866]], [0.337, [0.581, 0.038, 0.853]], [0.339, [0.581, 0.038, 0.853]], [0.341, [0.584, 0.040, 0.840]], [0.342, [0.584, 0.040, 0.840]], [0.344, [0.587, 0.041, 0.827]], [0.346, [0.587, 0.041, 0.827]], [0.348, [0.591, 0.043, 0.813]], [0.350, [0.591, 0.043, 0.813]], [0.352, [0.594, 0.044, 0.798]], [0.354, [0.594, 0.044, 0.798]], [0.356, [0.597, 0.045, 0.783]], [0.358, [0.597, 0.045, 0.783]], [0.360, [0.601, 0.047, 0.767]], [0.362, [0.601, 0.047, 0.767]], [0.364, [0.604, 0.049, 0.751]], [0.366, [0.604, 0.049, 0.751]], [0.368, [0.607, 0.050, 0.735]], [0.370, [0.607, 0.050, 0.735]], [0.372, [0.610, 0.052, 0.718]], [0.374, [0.610, 0.052, 0.718]], [0.376, [0.614, 0.053, 0.701]], [0.378, [0.614, 0.053, 0.701]], [0.380, [0.617, 0.055, 0.683]], [0.382, [0.617, 0.055, 0.683]], [0.384, [0.620, 0.057, 0.665]], [0.386, [0.620, 0.057, 0.665]], [0.387, [0.623, 0.059, 0.646]], [0.389, [0.623, 0.059, 0.646]], [0.391, [0.626, 0.060, 0.627]], [0.393, [0.626, 0.060, 0.627]], [0.395, [0.629, 0.062, 0.608]], [0.397, [0.629, 0.062, 0.608]], [0.399, [0.632, 0.064, 0.588]], [0.401, [0.632, 0.064, 0.588]], [0.403, [0.636, 0.066, 0.568]], [0.405, [0.636, 0.066, 0.568]], [0.407, [0.639, 0.068, 0.547]], [0.409, [0.639, 0.068, 0.547]], [0.411, [0.642, 0.070, 0.526]], [0.413, [0.642, 0.070, 0.526]], [0.415, [0.645, 0.072, 0.505]], [0.417, [0.645, 0.072, 0.505]], [0.419, [0.648, 0.074, 0.484]], [0.421, [0.648, 0.074, 0.484]], [0.423, [0.651, 0.076, 0.462]], [0.425, [0.651, 0.076, 0.462]], [0.427, [0.654, 0.078, 0.440]], [0.429, [0.654, 0.078, 0.440]], [0.431, [0.657, 0.080, 0.418]], [0.432, [0.657, 0.080, 0.418]], [0.434, [0.660, 0.082, 0.395]], [0.436, [0.660, 0.082, 0.395]], [0.438, [0.663, 0.085, 0.373]], [0.440, [0.663, 0.085, 0.373]], [0.442, [0.666, 0.087, 0.350]], [0.444, [0.666, 0.087, 0.350]], [0.446, [0.669, 0.089, 0.327]], [0.448, [0.669, 0.089, 0.327]], [0.450, [0.672, 0.092, 0.303]], [0.452, [0.672, 0.092, 0.303]], [0.454, [0.674, 0.094, 0.280]], [0.456, [0.674, 0.094, 0.280]], [0.458, [0.677, 0.097, 0.256]], [0.460, [0.677, 0.097, 0.256]], [0.462, [0.680, 0.099, 0.232]], [0.464, [0.680, 0.099, 0.232]], [0.466, [0.683, 0.102, 0.208]], [0.468, [0.683, 0.102, 0.208]], [0.470, [0.686, 0.104, 0.184]], [0.472, [0.686, 0.104, 0.184]], [0.474, [0.689, 0.107, 0.159]], [0.476, [0.689, 0.107, 0.159]], [0.477, [0.692, 0.110, 0.135]], [0.479, [0.692, 0.110, 0.135]], [0.481, [0.695, 0.112, 0.111]], [0.483, [0.695, 0.112, 0.111]], [0.485, [0.697, 0.115, 0.086]], [0.487, [0.697, 0.115, 0.086]], [0.489, [0.700, 0.118, 0.062]], [0.491, [0.700, 0.118, 0.062]], [0.493, [0.703, 0.121, 0.037]], [0.495, [0.703, 0.121, 0.037]], [0.497, [0.706, 0.124, 0.012]], [0.499, [0.706, 0.124, 0.012]], [0.501, [0.708, 0.126, 0.000]], [0.503, [0.708, 0.126, 0.000]], [0.505, [0.711, 0.129, 0.000]], [0.507, [0.711, 0.129, 0.000]], [0.509, [0.714, 0.132, 0.000]], [0.511, [0.714, 0.132, 0.000]], [0.513, [0.717, 0.136, 0.000]], [0.515, [0.717, 0.136, 0.000]], [0.517, [0.719, 0.139, 0.000]], [0.519, [0.719, 0.139, 0.000]], [0.521, [0.722, 0.142, 0.000]], [0.523, [0.722, 0.142, 0.000]], [0.524, [0.725, 0.145, 0.000]], [0.526, [0.725, 0.145, 0.000]], [0.528, [0.728, 0.148, 0.000]], [0.530, [0.728, 0.148, 0.000]], [0.532, [0.730, 0.152, 0.000]], [0.534, [0.730, 0.152, 0.000]], [0.536, [0.733, 0.155, 0.000]], [0.538, [0.733, 0.155, 0.000]], [0.540, [0.736, 0.158, 0.000]], [0.542, [0.736, 0.158, 0.000]], [0.544, [0.738, 0.162, 0.000]], [0.546, [0.738, 0.162, 0.000]], [0.548, [0.741, 0.165, 0.000]], [0.550, [0.741, 0.165, 0.000]], [0.552, [0.744, 0.169, 0.000]], [0.554, [0.744, 0.169, 0.000]], [0.556, [0.746, 0.173, 0.000]], [0.558, [0.746, 0.173, 0.000]], [0.560, [0.749, 0.176, 0.000]], [0.562, [0.749, 0.176, 0.000]], [0.564, [0.751, 0.180, 0.000]], [0.566, [0.751, 0.180, 0.000]], [0.568, [0.754, 0.184, 0.000]], [0.569, [0.754, 0.184, 0.000]], [0.571, [0.757, 0.188, 0.000]], [0.573, [0.757, 0.188, 0.000]], [0.575, [0.759, 0.192, 0.000]], [0.577, [0.759, 0.192, 0.000]], [0.579, [0.762, 0.196, 0.000]], [0.581, [0.762, 0.196, 0.000]], [0.583, [0.764, 0.199, 0.000]], [0.585, [0.764, 0.199, 0.000]], [0.587, [0.767, 0.204, 0.000]], [0.589, [0.767, 0.204, 0.000]], [0.591, [0.770, 0.208, 0.000]], [0.593, [0.770, 0.208, 0.000]], [0.595, [0.772, 0.212, 0.000]], [0.597, [0.772, 0.212, 0.000]], [0.599, [0.775, 0.216, 0.000]], [0.601, [0.775, 0.216, 0.000]], [0.603, [0.777, 0.220, 0.000]], [0.605, [0.777, 0.220, 0.000]], [0.607, [0.780, 0.225, 0.000]], [0.609, [0.780, 0.225, 0.000]], [0.611, [0.782, 0.229, 0.000]], [0.613, [0.782, 0.229, 0.000]], [0.614, [0.785, 0.233, 0.000]], [0.616, [0.785, 0.233, 0.000]], [0.618, [0.787, 0.238, 0.000]], [0.620, [0.787, 0.238, 0.000]], [0.622, [0.790, 0.242, 0.000]], [0.624, [0.790, 0.242, 0.000]], [0.626, [0.792, 0.247, 0.000]], [0.628, [0.792, 0.247, 0.000]], [0.630, [0.795, 0.252, 0.000]], [0.632, [0.795, 0.252, 0.000]], [0.634, [0.797, 0.256, 0.000]], [0.636, [0.797, 0.256, 0.000]], [0.638, [0.800, 0.261, 0.000]], [0.640, [0.800, 0.261, 0.000]], [0.642, [0.802, 0.266, 0.000]], [0.644, [0.802, 0.266, 0.000]], [0.646, [0.804, 0.271, 0.000]], [0.648, [0.804, 0.271, 0.000]], [0.650, [0.807, 0.276, 0.000]], [0.652, [0.807, 0.276, 0.000]], [0.654, [0.809, 0.281, 0.000]], [0.656, [0.809, 0.281, 0.000]], [0.658, [0.812, 0.286, 0.000]], [0.659, [0.812, 0.286, 0.000]], [0.661, [0.814, 0.291, 0.000]], [0.663, [0.814, 0.291, 0.000]], [0.665, [0.816, 0.296, 0.000]], [0.667, [0.816, 0.296, 0.000]], [0.669, [0.819, 0.302, 0.000]], [0.671, [0.819, 0.302, 0.000]], [0.673, [0.821, 0.307, 0.000]], [0.675, [0.821, 0.307, 0.000]], [0.677, [0.824, 0.312, 0.000]], [0.679, [0.824, 0.312, 0.000]], [0.681, [0.826, 0.318, 0.000]], [0.683, [0.826, 0.318, 0.000]], [0.685, [0.828, 0.323, 0.000]], [0.687, [0.828, 0.323, 0.000]], [0.689, [0.831, 0.329, 0.000]], [0.691, [0.831, 0.329, 0.000]], [0.693, [0.833, 0.334, 0.000]], [0.695, [0.833, 0.334, 0.000]], [0.697, [0.835, 0.340, 0.000]], [0.699, [0.835, 0.340, 0.000]], [0.701, [0.838, 0.346, 0.000]], [0.703, [0.838, 0.346, 0.000]], [0.705, [0.840, 0.352, 0.000]], [0.706, [0.840, 0.352, 0.000]], [0.708, [0.842, 0.358, 0.000]], [0.710, [0.842, 0.358, 0.000]], [0.712, [0.845, 0.364, 0.000]], [0.714, [0.845, 0.364, 0.000]], [0.716, [0.847, 0.370, 0.000]], [0.718, [0.847, 0.370, 0.000]], [0.720, [0.849, 0.376, 0.000]], [0.722, [0.849, 0.376, 0.000]], [0.724, [0.852, 0.382, 0.000]], [0.726, [0.852, 0.382, 0.000]], [0.728, [0.854, 0.388, 0.000]], [0.730, [0.854, 0.388, 0.000]], [0.732, [0.856, 0.394, 0.000]], [0.734, [0.856, 0.394, 0.000]], [0.736, [0.859, 0.401, 0.000]], [0.738, [0.859, 0.401, 0.000]], [0.740, [0.861, 0.407, 0.000]], [0.742, [0.861, 0.407, 0.000]], [0.744, [0.863, 0.414, 0.000]], [0.746, [0.863, 0.414, 0.000]], [0.748, [0.865, 0.420, 0.000]], [0.750, [0.865, 0.420, 0.000]], [0.751, [0.868, 0.427, 0.000]], [0.753, [0.868, 0.427, 0.000]], [0.755, [0.870, 0.434, 0.000]], [0.757, [0.870, 0.434, 0.000]], [0.759, [0.872, 0.440, 0.000]], [0.761, [0.872, 0.440, 0.000]], [0.763, [0.874, 0.447, 0.000]], [0.765, [0.874, 0.447, 0.000]], [0.767, [0.877, 0.454, 0.000]], [0.769, [0.877, 0.454, 0.000]], [0.771, [0.879, 0.461, 0.000]], [0.773, [0.879, 0.461, 0.000]], [0.775, [0.881, 0.468, 0.000]], [0.777, [0.881, 0.468, 0.000]], [0.779, [0.883, 0.475, 0.000]], [0.781, [0.883, 0.475, 0.000]], [0.783, [0.886, 0.482, 0.000]], [0.785, [0.886, 0.482, 0.000]], [0.787, [0.888, 0.490, 0.000]], [0.789, [0.888, 0.490, 0.000]], [0.791, [0.890, 0.497, 0.000]], [0.793, [0.890, 0.497, 0.000]], [0.795, [0.892, 0.505, 0.000]], [0.796, [0.892, 0.505, 0.000]], [0.798, [0.894, 0.512, 0.000]], [0.800, [0.894, 0.512, 0.000]], [0.802, [0.897, 0.520, 0.000]], [0.804, [0.897, 0.520, 0.000]], [0.806, [0.899, 0.527, 0.000]], [0.808, [0.899, 0.527, 0.000]], [0.810, [0.901, 0.535, 0.000]], [0.812, [0.901, 0.535, 0.000]], [0.814, [0.903, 0.543, 0.000]], [0.816, [0.903, 0.543, 0.000]], [0.818, [0.905, 0.551, 0.000]], [0.820, [0.905, 0.551, 0.000]], [0.822, [0.907, 0.559, 0.000]], [0.824, [0.907, 0.559, 0.000]], [0.826, [0.910, 0.567, 0.000]], [0.828, [0.910, 0.567, 0.000]], [0.830, [0.912, 0.575, 0.000]], [0.832, [0.912, 0.575, 0.000]], [0.834, [0.914, 0.583, 0.000]], [0.836, [0.914, 0.583, 0.000]], [0.838, [0.916, 0.591, 0.000]], [0.840, [0.916, 0.591, 0.000]], [0.841, [0.918, 0.599, 0.000]], [0.843, [0.918, 0.599, 0.000]], [0.845, [0.920, 0.608, 0.000]], [0.847, [0.920, 0.608, 0.000]], [0.849, [0.922, 0.616, 0.000]], [0.851, [0.922, 0.616, 0.000]], [0.853, [0.925, 0.625, 0.000]], [0.855, [0.925, 0.625, 0.000]], [0.857, [0.927, 0.633, 0.000]], [0.859, [0.927, 0.633, 0.000]], [0.861, [0.929, 0.642, 0.000]], [0.863, [0.929, 0.642, 0.000]], [0.865, [0.931, 0.651, 0.000]], [0.867, [0.931, 0.651, 0.000]], [0.869, [0.933, 0.660, 0.000]], [0.871, [0.933, 0.660, 0.000]], [0.873, [0.935, 0.669, 0.000]], [0.875, [0.935, 0.669, 0.000]], [0.877, [0.937, 0.678, 0.000]], [0.879, [0.937, 0.678, 0.000]], [0.881, [0.939, 0.687, 0.000]], [0.883, [0.939, 0.687, 0.000]], [0.885, [0.941, 0.696, 0.000]], [0.886, [0.941, 0.696, 0.000]], [0.888, [0.944, 0.705, 0.000]], [0.890, [0.944, 0.705, 0.000]], [0.892, [0.946, 0.715, 0.000]], [0.894, [0.946, 0.715, 0.000]], [0.896, [0.948, 0.724, 0.000]], [0.898, [0.948, 0.724, 0.000]], [0.900, [0.950, 0.734, 0.000]], [0.902, [0.950, 0.734, 0.000]], [0.904, [0.952, 0.743, 0.000]], [0.906, [0.952, 0.743, 0.000]], [0.908, [0.954, 0.753, 0.000]], [0.910, [0.954, 0.753, 0.000]], [0.912, [0.956, 0.763, 0.000]], [0.914, [0.956, 0.763, 0.000]], [0.916, [0.958, 0.773, 0.000]], [0.918, [0.958, 0.773, 0.000]], [0.920, [0.960, 0.783, 0.000]], [0.922, [0.960, 0.783, 0.000]], [0.924, [0.962, 0.793, 0.000]], [0.926, [0.962, 0.793, 0.000]], [0.928, [0.964, 0.803, 0.000]], [0.930, [0.964, 0.803, 0.000]], [0.932, [0.966, 0.813, 0.000]], [0.933, [0.966, 0.813, 0.000]], [0.935, [0.968, 0.823, 0.000]], [0.937, [0.968, 0.823, 0.000]], [0.939, [0.970, 0.834, 0.000]], [0.941, [0.970, 0.834, 0.000]], [0.943, [0.972, 0.844, 0.000]], [0.945, [0.972, 0.844, 0.000]], [0.947, [0.974, 0.855, 0.000]], [0.949, [0.974, 0.855, 0.000]], [0.951, [0.976, 0.865, 0.000]], [0.953, [0.976, 0.865, 0.000]], [0.955, [0.978, 0.876, 0.000]], [0.957, [0.978, 0.876, 0.000]], [0.959, [0.980, 0.887, 0.000]], [0.961, [0.980, 0.887, 0.000]], [0.963, [0.982, 0.898, 0.000]], [0.965, [0.982, 0.898, 0.000]], [0.967, [0.984, 0.909, 0.000]], [0.969, [0.984, 0.909, 0.000]], [0.971, [0.986, 0.920, 0.000]], [0.973, [0.986, 0.920, 0.000]], [0.975, [0.988, 0.931, 0.000]], [0.977, [0.988, 0.931, 0.000]], [0.978, [0.990, 0.942, 0.000]], [0.980, [0.990, 0.942, 0.000]], [0.982, [0.992, 0.954, 0.000]], [0.984, [0.992, 0.954, 0.000]], [0.986, [0.994, 0.965, 0.000]], [0.988, [0.994, 0.965, 0.000]], [0.990, [0.996, 0.977, 0.000]], [0.992, [0.996, 0.977, 0.000]], [0.994, [0.998, 0.988, 0.000]], [0.996, [0.998, 0.988, 0.000]], [0.998, [1.000, 1.000, 0.000]], [1.000, [1.000, 1.000, 0.000]]]; +var gnuplot2 = [[0.000, [0.000, 0.000, 0.000]], [0.002, [0.000, 0.000, 0.000]], [0.004, [0.000, 0.000, 0.016]], [0.006, [0.000, 0.000, 0.016]], [0.008, [0.000, 0.000, 0.031]], [0.010, [0.000, 0.000, 0.031]], [0.012, [0.000, 0.000, 0.047]], [0.014, [0.000, 0.000, 0.047]], [0.016, [0.000, 0.000, 0.063]], [0.018, [0.000, 0.000, 0.063]], [0.020, [0.000, 0.000, 0.078]], [0.022, [0.000, 0.000, 0.078]], [0.023, [0.000, 0.000, 0.094]], [0.025, [0.000, 0.000, 0.094]], [0.027, [0.000, 0.000, 0.110]], [0.029, [0.000, 0.000, 0.110]], [0.031, [0.000, 0.000, 0.125]], [0.033, [0.000, 0.000, 0.125]], [0.035, [0.000, 0.000, 0.141]], [0.037, [0.000, 0.000, 0.141]], [0.039, [0.000, 0.000, 0.157]], [0.041, [0.000, 0.000, 0.157]], [0.043, [0.000, 0.000, 0.173]], [0.045, [0.000, 0.000, 0.173]], [0.047, [0.000, 0.000, 0.188]], [0.049, [0.000, 0.000, 0.188]], [0.051, [0.000, 0.000, 0.204]], [0.053, [0.000, 0.000, 0.204]], [0.055, [0.000, 0.000, 0.220]], [0.057, [0.000, 0.000, 0.220]], [0.059, [0.000, 0.000, 0.235]], [0.061, [0.000, 0.000, 0.235]], [0.063, [0.000, 0.000, 0.251]], [0.065, [0.000, 0.000, 0.251]], [0.067, [0.000, 0.000, 0.267]], [0.068, [0.000, 0.000, 0.267]], [0.070, [0.000, 0.000, 0.282]], [0.072, [0.000, 0.000, 0.282]], [0.074, [0.000, 0.000, 0.298]], [0.076, [0.000, 0.000, 0.298]], [0.078, [0.000, 0.000, 0.314]], [0.080, [0.000, 0.000, 0.314]], [0.082, [0.000, 0.000, 0.329]], [0.084, [0.000, 0.000, 0.329]], [0.086, [0.000, 0.000, 0.345]], [0.088, [0.000, 0.000, 0.345]], [0.090, [0.000, 0.000, 0.361]], [0.092, [0.000, 0.000, 0.361]], [0.094, [0.000, 0.000, 0.376]], [0.096, [0.000, 0.000, 0.376]], [0.098, [0.000, 0.000, 0.392]], [0.100, [0.000, 0.000, 0.392]], [0.102, [0.000, 0.000, 0.408]], [0.104, [0.000, 0.000, 0.408]], [0.106, [0.000, 0.000, 0.424]], [0.108, [0.000, 0.000, 0.424]], [0.110, [0.000, 0.000, 0.439]], [0.112, [0.000, 0.000, 0.439]], [0.114, [0.000, 0.000, 0.455]], [0.115, [0.000, 0.000, 0.455]], [0.117, [0.000, 0.000, 0.471]], [0.119, [0.000, 0.000, 0.471]], [0.121, [0.000, 0.000, 0.486]], [0.123, [0.000, 0.000, 0.486]], [0.125, [0.000, 0.000, 0.502]], [0.127, [0.000, 0.000, 0.502]], [0.129, [0.000, 0.000, 0.518]], [0.131, [0.000, 0.000, 0.518]], [0.133, [0.000, 0.000, 0.533]], [0.135, [0.000, 0.000, 0.533]], [0.137, [0.000, 0.000, 0.549]], [0.139, [0.000, 0.000, 0.549]], [0.141, [0.000, 0.000, 0.565]], [0.143, [0.000, 0.000, 0.565]], [0.145, [0.000, 0.000, 0.580]], [0.147, [0.000, 0.000, 0.580]], [0.149, [0.000, 0.000, 0.596]], [0.151, [0.000, 0.000, 0.596]], [0.153, [0.000, 0.000, 0.612]], [0.155, [0.000, 0.000, 0.612]], [0.157, [0.000, 0.000, 0.627]], [0.159, [0.000, 0.000, 0.627]], [0.160, [0.000, 0.000, 0.643]], [0.162, [0.000, 0.000, 0.643]], [0.164, [0.000, 0.000, 0.659]], [0.166, [0.000, 0.000, 0.659]], [0.168, [0.000, 0.000, 0.675]], [0.170, [0.000, 0.000, 0.675]], [0.172, [0.000, 0.000, 0.690]], [0.174, [0.000, 0.000, 0.690]], [0.176, [0.000, 0.000, 0.706]], [0.178, [0.000, 0.000, 0.706]], [0.180, [0.000, 0.000, 0.722]], [0.182, [0.000, 0.000, 0.722]], [0.184, [0.000, 0.000, 0.737]], [0.186, [0.000, 0.000, 0.737]], [0.188, [0.000, 0.000, 0.753]], [0.190, [0.000, 0.000, 0.753]], [0.192, [0.000, 0.000, 0.769]], [0.194, [0.000, 0.000, 0.769]], [0.196, [0.000, 0.000, 0.784]], [0.198, [0.000, 0.000, 0.784]], [0.200, [0.000, 0.000, 0.800]], [0.202, [0.000, 0.000, 0.800]], [0.204, [0.000, 0.000, 0.816]], [0.205, [0.000, 0.000, 0.816]], [0.207, [0.000, 0.000, 0.831]], [0.209, [0.000, 0.000, 0.831]], [0.211, [0.000, 0.000, 0.847]], [0.213, [0.000, 0.000, 0.847]], [0.215, [0.000, 0.000, 0.863]], [0.217, [0.000, 0.000, 0.863]], [0.219, [0.000, 0.000, 0.878]], [0.221, [0.000, 0.000, 0.878]], [0.223, [0.000, 0.000, 0.894]], [0.225, [0.000, 0.000, 0.894]], [0.227, [0.000, 0.000, 0.910]], [0.229, [0.000, 0.000, 0.910]], [0.231, [0.000, 0.000, 0.925]], [0.233, [0.000, 0.000, 0.925]], [0.235, [0.000, 0.000, 0.941]], [0.237, [0.000, 0.000, 0.941]], [0.239, [0.000, 0.000, 0.957]], [0.241, [0.000, 0.000, 0.957]], [0.243, [0.000, 0.000, 0.973]], [0.245, [0.000, 0.000, 0.973]], [0.247, [0.000, 0.000, 0.988]], [0.249, [0.000, 0.000, 0.988]], [0.250, [0.003, 0.000, 1.000]], [0.252, [0.003, 0.000, 1.000]], [0.254, [0.015, 0.000, 1.000]], [0.256, [0.015, 0.000, 1.000]], [0.258, [0.028, 0.000, 1.000]], [0.260, [0.028, 0.000, 1.000]], [0.262, [0.040, 0.000, 1.000]], [0.264, [0.040, 0.000, 1.000]], [0.266, [0.052, 0.000, 1.000]], [0.268, [0.052, 0.000, 1.000]], [0.270, [0.064, 0.000, 1.000]], [0.272, [0.064, 0.000, 1.000]], [0.274, [0.077, 0.000, 1.000]], [0.276, [0.077, 0.000, 1.000]], [0.278, [0.089, 0.000, 1.000]], [0.280, [0.089, 0.000, 1.000]], [0.282, [0.101, 0.000, 1.000]], [0.284, [0.101, 0.000, 1.000]], [0.286, [0.113, 0.000, 1.000]], [0.288, [0.113, 0.000, 1.000]], [0.290, [0.126, 0.000, 1.000]], [0.292, [0.126, 0.000, 1.000]], [0.294, [0.138, 0.000, 1.000]], [0.295, [0.138, 0.000, 1.000]], [0.297, [0.150, 0.000, 1.000]], [0.299, [0.150, 0.000, 1.000]], [0.301, [0.162, 0.000, 1.000]], [0.303, [0.162, 0.000, 1.000]], [0.305, [0.175, 0.000, 1.000]], [0.307, [0.175, 0.000, 1.000]], [0.309, [0.187, 0.000, 1.000]], [0.311, [0.187, 0.000, 1.000]], [0.313, [0.199, 0.000, 1.000]], [0.315, [0.199, 0.000, 1.000]], [0.317, [0.211, 0.000, 1.000]], [0.319, [0.211, 0.000, 1.000]], [0.321, [0.224, 0.000, 1.000]], [0.323, [0.224, 0.000, 1.000]], [0.325, [0.236, 0.000, 1.000]], [0.327, [0.236, 0.000, 1.000]], [0.329, [0.248, 0.000, 1.000]], [0.331, [0.248, 0.000, 1.000]], [0.333, [0.260, 0.000, 1.000]], [0.335, [0.260, 0.000, 1.000]], [0.337, [0.273, 0.000, 1.000]], [0.339, [0.273, 0.000, 1.000]], [0.341, [0.285, 0.000, 1.000]], [0.342, [0.285, 0.000, 1.000]], [0.344, [0.297, 0.000, 1.000]], [0.346, [0.297, 0.000, 1.000]], [0.348, [0.309, 0.000, 1.000]], [0.350, [0.309, 0.000, 1.000]], [0.352, [0.322, 0.000, 1.000]], [0.354, [0.322, 0.000, 1.000]], [0.356, [0.334, 0.000, 1.000]], [0.358, [0.334, 0.000, 1.000]], [0.360, [0.346, 0.000, 1.000]], [0.362, [0.346, 0.000, 1.000]], [0.364, [0.358, 0.000, 1.000]], [0.366, [0.358, 0.000, 1.000]], [0.368, [0.371, 0.000, 1.000]], [0.370, [0.371, 0.000, 1.000]], [0.372, [0.383, 0.000, 1.000]], [0.374, [0.383, 0.000, 1.000]], [0.376, [0.395, 0.000, 1.000]], [0.378, [0.395, 0.000, 1.000]], [0.380, [0.407, 0.000, 1.000]], [0.382, [0.407, 0.000, 1.000]], [0.384, [0.420, 0.000, 1.000]], [0.386, [0.420, 0.000, 1.000]], [0.387, [0.432, 0.000, 1.000]], [0.389, [0.432, 0.000, 1.000]], [0.391, [0.444, 0.000, 1.000]], [0.393, [0.444, 0.000, 1.000]], [0.395, [0.456, 0.000, 1.000]], [0.397, [0.456, 0.000, 1.000]], [0.399, [0.469, 0.000, 1.000]], [0.401, [0.469, 0.000, 1.000]], [0.403, [0.481, 0.000, 1.000]], [0.405, [0.481, 0.000, 1.000]], [0.407, [0.493, 0.000, 1.000]], [0.409, [0.493, 0.000, 1.000]], [0.411, [0.506, 0.000, 1.000]], [0.413, [0.506, 0.000, 1.000]], [0.415, [0.518, 0.000, 1.000]], [0.417, [0.518, 0.000, 1.000]], [0.419, [0.530, 0.000, 1.000]], [0.421, [0.530, 0.000, 1.000]], [0.423, [0.542, 0.007, 0.993]], [0.425, [0.542, 0.007, 0.993]], [0.427, [0.555, 0.015, 0.985]], [0.429, [0.555, 0.015, 0.985]], [0.431, [0.567, 0.023, 0.977]], [0.432, [0.567, 0.023, 0.977]], [0.434, [0.579, 0.031, 0.969]], [0.436, [0.579, 0.031, 0.969]], [0.438, [0.591, 0.038, 0.962]], [0.440, [0.591, 0.038, 0.962]], [0.442, [0.604, 0.046, 0.954]], [0.444, [0.604, 0.046, 0.954]], [0.446, [0.616, 0.054, 0.946]], [0.448, [0.616, 0.054, 0.946]], [0.450, [0.628, 0.062, 0.938]], [0.452, [0.628, 0.062, 0.938]], [0.454, [0.640, 0.070, 0.930]], [0.456, [0.640, 0.070, 0.930]], [0.458, [0.653, 0.078, 0.922]], [0.460, [0.653, 0.078, 0.922]], [0.462, [0.665, 0.085, 0.915]], [0.464, [0.665, 0.085, 0.915]], [0.466, [0.677, 0.093, 0.907]], [0.468, [0.677, 0.093, 0.907]], [0.470, [0.689, 0.101, 0.899]], [0.472, [0.689, 0.101, 0.899]], [0.474, [0.702, 0.109, 0.891]], [0.476, [0.702, 0.109, 0.891]], [0.477, [0.714, 0.117, 0.883]], [0.479, [0.714, 0.117, 0.883]], [0.481, [0.726, 0.125, 0.875]], [0.483, [0.726, 0.125, 0.875]], [0.485, [0.738, 0.133, 0.867]], [0.487, [0.738, 0.133, 0.867]], [0.489, [0.751, 0.140, 0.860]], [0.491, [0.751, 0.140, 0.860]], [0.493, [0.763, 0.148, 0.852]], [0.495, [0.763, 0.148, 0.852]], [0.497, [0.775, 0.156, 0.844]], [0.499, [0.775, 0.156, 0.844]], [0.501, [0.787, 0.164, 0.836]], [0.503, [0.787, 0.164, 0.836]], [0.505, [0.800, 0.172, 0.828]], [0.507, [0.800, 0.172, 0.828]], [0.509, [0.812, 0.180, 0.820]], [0.511, [0.812, 0.180, 0.820]], [0.513, [0.824, 0.187, 0.813]], [0.515, [0.824, 0.187, 0.813]], [0.517, [0.836, 0.195, 0.805]], [0.519, [0.836, 0.195, 0.805]], [0.521, [0.849, 0.203, 0.797]], [0.523, [0.849, 0.203, 0.797]], [0.524, [0.861, 0.211, 0.789]], [0.526, [0.861, 0.211, 0.789]], [0.528, [0.873, 0.219, 0.781]], [0.530, [0.873, 0.219, 0.781]], [0.532, [0.885, 0.227, 0.773]], [0.534, [0.885, 0.227, 0.773]], [0.536, [0.898, 0.235, 0.765]], [0.538, [0.898, 0.235, 0.765]], [0.540, [0.910, 0.242, 0.758]], [0.542, [0.910, 0.242, 0.758]], [0.544, [0.922, 0.250, 0.750]], [0.546, [0.922, 0.250, 0.750]], [0.548, [0.934, 0.258, 0.742]], [0.550, [0.934, 0.258, 0.742]], [0.552, [0.947, 0.266, 0.734]], [0.554, [0.947, 0.266, 0.734]], [0.556, [0.959, 0.274, 0.726]], [0.558, [0.959, 0.274, 0.726]], [0.560, [0.971, 0.282, 0.718]], [0.562, [0.971, 0.282, 0.718]], [0.564, [0.983, 0.289, 0.711]], [0.566, [0.983, 0.289, 0.711]], [0.568, [0.996, 0.297, 0.703]], [0.569, [0.996, 0.297, 0.703]], [0.571, [1.000, 0.305, 0.695]], [0.573, [1.000, 0.305, 0.695]], [0.575, [1.000, 0.313, 0.687]], [0.577, [1.000, 0.313, 0.687]], [0.579, [1.000, 0.321, 0.679]], [0.581, [1.000, 0.321, 0.679]], [0.583, [1.000, 0.329, 0.671]], [0.585, [1.000, 0.329, 0.671]], [0.587, [1.000, 0.336, 0.664]], [0.589, [1.000, 0.336, 0.664]], [0.591, [1.000, 0.344, 0.656]], [0.593, [1.000, 0.344, 0.656]], [0.595, [1.000, 0.352, 0.648]], [0.597, [1.000, 0.352, 0.648]], [0.599, [1.000, 0.360, 0.640]], [0.601, [1.000, 0.360, 0.640]], [0.603, [1.000, 0.368, 0.632]], [0.605, [1.000, 0.368, 0.632]], [0.607, [1.000, 0.376, 0.624]], [0.609, [1.000, 0.376, 0.624]], [0.611, [1.000, 0.384, 0.616]], [0.613, [1.000, 0.384, 0.616]], [0.614, [1.000, 0.391, 0.609]], [0.616, [1.000, 0.391, 0.609]], [0.618, [1.000, 0.399, 0.601]], [0.620, [1.000, 0.399, 0.601]], [0.622, [1.000, 0.407, 0.593]], [0.624, [1.000, 0.407, 0.593]], [0.626, [1.000, 0.415, 0.585]], [0.628, [1.000, 0.415, 0.585]], [0.630, [1.000, 0.423, 0.577]], [0.632, [1.000, 0.423, 0.577]], [0.634, [1.000, 0.431, 0.569]], [0.636, [1.000, 0.431, 0.569]], [0.638, [1.000, 0.438, 0.562]], [0.640, [1.000, 0.438, 0.562]], [0.642, [1.000, 0.446, 0.554]], [0.644, [1.000, 0.446, 0.554]], [0.646, [1.000, 0.454, 0.546]], [0.648, [1.000, 0.454, 0.546]], [0.650, [1.000, 0.462, 0.538]], [0.652, [1.000, 0.462, 0.538]], [0.654, [1.000, 0.470, 0.530]], [0.656, [1.000, 0.470, 0.530]], [0.658, [1.000, 0.478, 0.522]], [0.659, [1.000, 0.478, 0.522]], [0.661, [1.000, 0.485, 0.515]], [0.663, [1.000, 0.485, 0.515]], [0.665, [1.000, 0.493, 0.507]], [0.667, [1.000, 0.493, 0.507]], [0.669, [1.000, 0.501, 0.499]], [0.671, [1.000, 0.501, 0.499]], [0.673, [1.000, 0.509, 0.491]], [0.675, [1.000, 0.509, 0.491]], [0.677, [1.000, 0.517, 0.483]], [0.679, [1.000, 0.517, 0.483]], [0.681, [1.000, 0.525, 0.475]], [0.683, [1.000, 0.525, 0.475]], [0.685, [1.000, 0.533, 0.467]], [0.687, [1.000, 0.533, 0.467]], [0.689, [1.000, 0.540, 0.460]], [0.691, [1.000, 0.540, 0.460]], [0.693, [1.000, 0.548, 0.452]], [0.695, [1.000, 0.548, 0.452]], [0.697, [1.000, 0.556, 0.444]], [0.699, [1.000, 0.556, 0.444]], [0.701, [1.000, 0.564, 0.436]], [0.703, [1.000, 0.564, 0.436]], [0.705, [1.000, 0.572, 0.428]], [0.706, [1.000, 0.572, 0.428]], [0.708, [1.000, 0.580, 0.420]], [0.710, [1.000, 0.580, 0.420]], [0.712, [1.000, 0.587, 0.413]], [0.714, [1.000, 0.587, 0.413]], [0.716, [1.000, 0.595, 0.405]], [0.718, [1.000, 0.595, 0.405]], [0.720, [1.000, 0.603, 0.397]], [0.722, [1.000, 0.603, 0.397]], [0.724, [1.000, 0.611, 0.389]], [0.726, [1.000, 0.611, 0.389]], [0.728, [1.000, 0.619, 0.381]], [0.730, [1.000, 0.619, 0.381]], [0.732, [1.000, 0.627, 0.373]], [0.734, [1.000, 0.627, 0.373]], [0.736, [1.000, 0.635, 0.365]], [0.738, [1.000, 0.635, 0.365]], [0.740, [1.000, 0.642, 0.358]], [0.742, [1.000, 0.642, 0.358]], [0.744, [1.000, 0.650, 0.350]], [0.746, [1.000, 0.650, 0.350]], [0.748, [1.000, 0.658, 0.342]], [0.750, [1.000, 0.658, 0.342]], [0.751, [1.000, 0.666, 0.334]], [0.753, [1.000, 0.666, 0.334]], [0.755, [1.000, 0.674, 0.326]], [0.757, [1.000, 0.674, 0.326]], [0.759, [1.000, 0.682, 0.318]], [0.761, [1.000, 0.682, 0.318]], [0.763, [1.000, 0.689, 0.311]], [0.765, [1.000, 0.689, 0.311]], [0.767, [1.000, 0.697, 0.303]], [0.769, [1.000, 0.697, 0.303]], [0.771, [1.000, 0.705, 0.295]], [0.773, [1.000, 0.705, 0.295]], [0.775, [1.000, 0.713, 0.287]], [0.777, [1.000, 0.713, 0.287]], [0.779, [1.000, 0.721, 0.279]], [0.781, [1.000, 0.721, 0.279]], [0.783, [1.000, 0.729, 0.271]], [0.785, [1.000, 0.729, 0.271]], [0.787, [1.000, 0.736, 0.264]], [0.789, [1.000, 0.736, 0.264]], [0.791, [1.000, 0.744, 0.256]], [0.793, [1.000, 0.744, 0.256]], [0.795, [1.000, 0.752, 0.248]], [0.796, [1.000, 0.752, 0.248]], [0.798, [1.000, 0.760, 0.240]], [0.800, [1.000, 0.760, 0.240]], [0.802, [1.000, 0.768, 0.232]], [0.804, [1.000, 0.768, 0.232]], [0.806, [1.000, 0.776, 0.224]], [0.808, [1.000, 0.776, 0.224]], [0.810, [1.000, 0.784, 0.216]], [0.812, [1.000, 0.784, 0.216]], [0.814, [1.000, 0.791, 0.209]], [0.816, [1.000, 0.791, 0.209]], [0.818, [1.000, 0.799, 0.201]], [0.820, [1.000, 0.799, 0.201]], [0.822, [1.000, 0.807, 0.193]], [0.824, [1.000, 0.807, 0.193]], [0.826, [1.000, 0.815, 0.185]], [0.828, [1.000, 0.815, 0.185]], [0.830, [1.000, 0.823, 0.177]], [0.832, [1.000, 0.823, 0.177]], [0.834, [1.000, 0.831, 0.169]], [0.836, [1.000, 0.831, 0.169]], [0.838, [1.000, 0.838, 0.162]], [0.840, [1.000, 0.838, 0.162]], [0.841, [1.000, 0.846, 0.154]], [0.843, [1.000, 0.846, 0.154]], [0.845, [1.000, 0.854, 0.146]], [0.847, [1.000, 0.854, 0.146]], [0.849, [1.000, 0.862, 0.138]], [0.851, [1.000, 0.862, 0.138]], [0.853, [1.000, 0.870, 0.130]], [0.855, [1.000, 0.870, 0.130]], [0.857, [1.000, 0.878, 0.122]], [0.859, [1.000, 0.878, 0.122]], [0.861, [1.000, 0.885, 0.115]], [0.863, [1.000, 0.885, 0.115]], [0.865, [1.000, 0.893, 0.107]], [0.867, [1.000, 0.893, 0.107]], [0.869, [1.000, 0.901, 0.099]], [0.871, [1.000, 0.901, 0.099]], [0.873, [1.000, 0.909, 0.091]], [0.875, [1.000, 0.909, 0.091]], [0.877, [1.000, 0.917, 0.083]], [0.879, [1.000, 0.917, 0.083]], [0.881, [1.000, 0.925, 0.075]], [0.883, [1.000, 0.925, 0.075]], [0.885, [1.000, 0.933, 0.067]], [0.886, [1.000, 0.933, 0.067]], [0.888, [1.000, 0.940, 0.060]], [0.890, [1.000, 0.940, 0.060]], [0.892, [1.000, 0.948, 0.052]], [0.894, [1.000, 0.948, 0.052]], [0.896, [1.000, 0.956, 0.044]], [0.898, [1.000, 0.956, 0.044]], [0.900, [1.000, 0.964, 0.036]], [0.902, [1.000, 0.964, 0.036]], [0.904, [1.000, 0.972, 0.028]], [0.906, [1.000, 0.972, 0.028]], [0.908, [1.000, 0.980, 0.020]], [0.910, [1.000, 0.980, 0.020]], [0.912, [1.000, 0.987, 0.013]], [0.914, [1.000, 0.987, 0.013]], [0.916, [1.000, 0.995, 0.005]], [0.918, [1.000, 0.995, 0.005]], [0.920, [1.000, 1.000, 0.020]], [0.922, [1.000, 1.000, 0.020]], [0.924, [1.000, 1.000, 0.069]], [0.926, [1.000, 1.000, 0.069]], [0.928, [1.000, 1.000, 0.118]], [0.930, [1.000, 1.000, 0.118]], [0.932, [1.000, 1.000, 0.167]], [0.933, [1.000, 1.000, 0.167]], [0.935, [1.000, 1.000, 0.216]], [0.937, [1.000, 1.000, 0.216]], [0.939, [1.000, 1.000, 0.265]], [0.941, [1.000, 1.000, 0.265]], [0.943, [1.000, 1.000, 0.314]], [0.945, [1.000, 1.000, 0.314]], [0.947, [1.000, 1.000, 0.363]], [0.949, [1.000, 1.000, 0.363]], [0.951, [1.000, 1.000, 0.412]], [0.953, [1.000, 1.000, 0.412]], [0.955, [1.000, 1.000, 0.461]], [0.957, [1.000, 1.000, 0.461]], [0.959, [1.000, 1.000, 0.510]], [0.961, [1.000, 1.000, 0.510]], [0.963, [1.000, 1.000, 0.559]], [0.965, [1.000, 1.000, 0.559]], [0.967, [1.000, 1.000, 0.608]], [0.969, [1.000, 1.000, 0.608]], [0.971, [1.000, 1.000, 0.657]], [0.973, [1.000, 1.000, 0.657]], [0.975, [1.000, 1.000, 0.706]], [0.977, [1.000, 1.000, 0.706]], [0.978, [1.000, 1.000, 0.755]], [0.980, [1.000, 1.000, 0.755]], [0.982, [1.000, 1.000, 0.804]], [0.984, [1.000, 1.000, 0.804]], [0.986, [1.000, 1.000, 0.853]], [0.988, [1.000, 1.000, 0.853]], [0.990, [1.000, 1.000, 0.902]], [0.992, [1.000, 1.000, 0.902]], [0.994, [1.000, 1.000, 0.951]], [0.996, [1.000, 1.000, 0.951]], [0.998, [1.000, 1.000, 1.000]], [1.000, [1.000, 1.000, 1.000]]]; +var hsv = [[0.000, [1.000, 0.000, 0.000]], [0.002, [1.000, 0.000, 0.000]], [0.004, [1.000, 0.023, 0.000]], [0.006, [1.000, 0.023, 0.000]], [0.008, [1.000, 0.046, 0.000]], [0.010, [1.000, 0.046, 0.000]], [0.012, [1.000, 0.069, 0.000]], [0.014, [1.000, 0.069, 0.000]], [0.016, [1.000, 0.093, 0.000]], [0.018, [1.000, 0.093, 0.000]], [0.020, [1.000, 0.116, 0.000]], [0.022, [1.000, 0.116, 0.000]], [0.023, [1.000, 0.139, 0.000]], [0.025, [1.000, 0.139, 0.000]], [0.027, [1.000, 0.162, 0.000]], [0.029, [1.000, 0.162, 0.000]], [0.031, [1.000, 0.185, 0.000]], [0.033, [1.000, 0.185, 0.000]], [0.035, [1.000, 0.208, 0.000]], [0.037, [1.000, 0.208, 0.000]], [0.039, [1.000, 0.232, 0.000]], [0.041, [1.000, 0.232, 0.000]], [0.043, [1.000, 0.255, 0.000]], [0.045, [1.000, 0.255, 0.000]], [0.047, [1.000, 0.278, 0.000]], [0.049, [1.000, 0.278, 0.000]], [0.051, [1.000, 0.301, 0.000]], [0.053, [1.000, 0.301, 0.000]], [0.055, [1.000, 0.324, 0.000]], [0.057, [1.000, 0.324, 0.000]], [0.059, [1.000, 0.347, 0.000]], [0.061, [1.000, 0.347, 0.000]], [0.063, [1.000, 0.371, 0.000]], [0.065, [1.000, 0.371, 0.000]], [0.067, [1.000, 0.394, 0.000]], [0.068, [1.000, 0.394, 0.000]], [0.070, [1.000, 0.417, 0.000]], [0.072, [1.000, 0.417, 0.000]], [0.074, [1.000, 0.440, 0.000]], [0.076, [1.000, 0.440, 0.000]], [0.078, [1.000, 0.463, 0.000]], [0.080, [1.000, 0.463, 0.000]], [0.082, [1.000, 0.486, 0.000]], [0.084, [1.000, 0.486, 0.000]], [0.086, [1.000, 0.510, 0.000]], [0.088, [1.000, 0.510, 0.000]], [0.090, [1.000, 0.533, 0.000]], [0.092, [1.000, 0.533, 0.000]], [0.094, [1.000, 0.556, 0.000]], [0.096, [1.000, 0.556, 0.000]], [0.098, [1.000, 0.579, 0.000]], [0.100, [1.000, 0.579, 0.000]], [0.102, [1.000, 0.602, 0.000]], [0.104, [1.000, 0.602, 0.000]], [0.106, [1.000, 0.625, 0.000]], [0.108, [1.000, 0.625, 0.000]], [0.110, [1.000, 0.649, 0.000]], [0.112, [1.000, 0.649, 0.000]], [0.114, [1.000, 0.672, 0.000]], [0.115, [1.000, 0.672, 0.000]], [0.117, [1.000, 0.695, 0.000]], [0.119, [1.000, 0.695, 0.000]], [0.121, [1.000, 0.718, 0.000]], [0.123, [1.000, 0.718, 0.000]], [0.125, [1.000, 0.741, 0.000]], [0.127, [1.000, 0.741, 0.000]], [0.129, [1.000, 0.764, 0.000]], [0.131, [1.000, 0.764, 0.000]], [0.133, [1.000, 0.788, 0.000]], [0.135, [1.000, 0.788, 0.000]], [0.137, [1.000, 0.811, 0.000]], [0.139, [1.000, 0.811, 0.000]], [0.141, [1.000, 0.834, 0.000]], [0.143, [1.000, 0.834, 0.000]], [0.145, [1.000, 0.857, 0.000]], [0.147, [1.000, 0.857, 0.000]], [0.149, [1.000, 0.880, 0.000]], [0.151, [1.000, 0.880, 0.000]], [0.153, [1.000, 0.903, 0.000]], [0.155, [1.000, 0.903, 0.000]], [0.157, [1.000, 0.926, 0.000]], [0.159, [1.000, 0.926, 0.000]], [0.160, [0.996, 0.946, 0.000]], [0.162, [0.996, 0.946, 0.000]], [0.164, [0.988, 0.961, 0.000]], [0.166, [0.988, 0.961, 0.000]], [0.168, [0.981, 0.976, 0.000]], [0.170, [0.981, 0.976, 0.000]], [0.172, [0.973, 0.992, 0.000]], [0.174, [0.973, 0.992, 0.000]], [0.176, [0.958, 1.000, 0.000]], [0.178, [0.958, 1.000, 0.000]], [0.180, [0.935, 1.000, 0.000]], [0.182, [0.935, 1.000, 0.000]], [0.184, [0.911, 1.000, 0.000]], [0.186, [0.911, 1.000, 0.000]], [0.188, [0.888, 1.000, 0.000]], [0.190, [0.888, 1.000, 0.000]], [0.192, [0.865, 1.000, 0.000]], [0.194, [0.865, 1.000, 0.000]], [0.196, [0.842, 1.000, 0.000]], [0.198, [0.842, 1.000, 0.000]], [0.200, [0.819, 1.000, 0.000]], [0.202, [0.819, 1.000, 0.000]], [0.204, [0.796, 1.000, 0.000]], [0.205, [0.796, 1.000, 0.000]], [0.207, [0.772, 1.000, 0.000]], [0.209, [0.772, 1.000, 0.000]], [0.211, [0.749, 1.000, 0.000]], [0.213, [0.749, 1.000, 0.000]], [0.215, [0.726, 1.000, 0.000]], [0.217, [0.726, 1.000, 0.000]], [0.219, [0.703, 1.000, 0.000]], [0.221, [0.703, 1.000, 0.000]], [0.223, [0.680, 1.000, 0.000]], [0.225, [0.680, 1.000, 0.000]], [0.227, [0.657, 1.000, 0.000]], [0.229, [0.657, 1.000, 0.000]], [0.231, [0.633, 1.000, 0.000]], [0.233, [0.633, 1.000, 0.000]], [0.235, [0.610, 1.000, 0.000]], [0.237, [0.610, 1.000, 0.000]], [0.239, [0.587, 1.000, 0.000]], [0.241, [0.587, 1.000, 0.000]], [0.243, [0.564, 1.000, 0.000]], [0.245, [0.564, 1.000, 0.000]], [0.247, [0.541, 1.000, 0.000]], [0.249, [0.541, 1.000, 0.000]], [0.250, [0.518, 1.000, 0.000]], [0.252, [0.518, 1.000, 0.000]], [0.254, [0.494, 1.000, 0.000]], [0.256, [0.494, 1.000, 0.000]], [0.258, [0.471, 1.000, 0.000]], [0.260, [0.471, 1.000, 0.000]], [0.262, [0.448, 1.000, 0.000]], [0.264, [0.448, 1.000, 0.000]], [0.266, [0.425, 1.000, 0.000]], [0.268, [0.425, 1.000, 0.000]], [0.270, [0.402, 1.000, 0.000]], [0.272, [0.402, 1.000, 0.000]], [0.274, [0.379, 1.000, 0.000]], [0.276, [0.379, 1.000, 0.000]], [0.278, [0.356, 1.000, 0.000]], [0.280, [0.356, 1.000, 0.000]], [0.282, [0.332, 1.000, 0.000]], [0.284, [0.332, 1.000, 0.000]], [0.286, [0.309, 1.000, 0.000]], [0.288, [0.309, 1.000, 0.000]], [0.290, [0.286, 1.000, 0.000]], [0.292, [0.286, 1.000, 0.000]], [0.294, [0.263, 1.000, 0.000]], [0.295, [0.263, 1.000, 0.000]], [0.297, [0.240, 1.000, 0.000]], [0.299, [0.240, 1.000, 0.000]], [0.301, [0.217, 1.000, 0.000]], [0.303, [0.217, 1.000, 0.000]], [0.305, [0.193, 1.000, 0.000]], [0.307, [0.193, 1.000, 0.000]], [0.309, [0.170, 1.000, 0.000]], [0.311, [0.170, 1.000, 0.000]], [0.313, [0.147, 1.000, 0.000]], [0.315, [0.147, 1.000, 0.000]], [0.317, [0.124, 1.000, 0.000]], [0.319, [0.124, 1.000, 0.000]], [0.321, [0.101, 1.000, 0.000]], [0.323, [0.101, 1.000, 0.000]], [0.325, [0.078, 1.000, 0.000]], [0.327, [0.078, 1.000, 0.000]], [0.329, [0.054, 1.000, 0.000]], [0.331, [0.054, 1.000, 0.000]], [0.333, [0.031, 1.000, 0.000]], [0.335, [0.031, 1.000, 0.000]], [0.337, [0.024, 1.000, 0.015]], [0.339, [0.024, 1.000, 0.015]], [0.341, [0.016, 1.000, 0.031]], [0.342, [0.016, 1.000, 0.031]], [0.344, [0.008, 1.000, 0.046]], [0.346, [0.008, 1.000, 0.046]], [0.348, [0.000, 1.000, 0.062]], [0.350, [0.000, 1.000, 0.062]], [0.352, [0.000, 1.000, 0.085]], [0.354, [0.000, 1.000, 0.085]], [0.356, [0.000, 1.000, 0.108]], [0.358, [0.000, 1.000, 0.108]], [0.360, [0.000, 1.000, 0.131]], [0.362, [0.000, 1.000, 0.131]], [0.364, [0.000, 1.000, 0.154]], [0.366, [0.000, 1.000, 0.154]], [0.368, [0.000, 1.000, 0.177]], [0.370, [0.000, 1.000, 0.177]], [0.372, [0.000, 1.000, 0.200]], [0.374, [0.000, 1.000, 0.200]], [0.376, [0.000, 1.000, 0.224]], [0.378, [0.000, 1.000, 0.224]], [0.380, [0.000, 1.000, 0.247]], [0.382, [0.000, 1.000, 0.247]], [0.384, [0.000, 1.000, 0.270]], [0.386, [0.000, 1.000, 0.270]], [0.387, [0.000, 1.000, 0.293]], [0.389, [0.000, 1.000, 0.293]], [0.391, [0.000, 1.000, 0.316]], [0.393, [0.000, 1.000, 0.316]], [0.395, [0.000, 1.000, 0.339]], [0.397, [0.000, 1.000, 0.339]], [0.399, [0.000, 1.000, 0.363]], [0.401, [0.000, 1.000, 0.363]], [0.403, [0.000, 1.000, 0.386]], [0.405, [0.000, 1.000, 0.386]], [0.407, [0.000, 1.000, 0.409]], [0.409, [0.000, 1.000, 0.409]], [0.411, [0.000, 1.000, 0.432]], [0.413, [0.000, 1.000, 0.432]], [0.415, [0.000, 1.000, 0.455]], [0.417, [0.000, 1.000, 0.455]], [0.419, [0.000, 1.000, 0.478]], [0.421, [0.000, 1.000, 0.478]], [0.423, [0.000, 1.000, 0.501]], [0.425, [0.000, 1.000, 0.501]], [0.427, [0.000, 1.000, 0.525]], [0.429, [0.000, 1.000, 0.525]], [0.431, [0.000, 1.000, 0.548]], [0.432, [0.000, 1.000, 0.548]], [0.434, [0.000, 1.000, 0.571]], [0.436, [0.000, 1.000, 0.571]], [0.438, [0.000, 1.000, 0.594]], [0.440, [0.000, 1.000, 0.594]], [0.442, [0.000, 1.000, 0.617]], [0.444, [0.000, 1.000, 0.617]], [0.446, [0.000, 1.000, 0.640]], [0.448, [0.000, 1.000, 0.640]], [0.450, [0.000, 1.000, 0.664]], [0.452, [0.000, 1.000, 0.664]], [0.454, [0.000, 1.000, 0.687]], [0.456, [0.000, 1.000, 0.687]], [0.458, [0.000, 1.000, 0.710]], [0.460, [0.000, 1.000, 0.710]], [0.462, [0.000, 1.000, 0.733]], [0.464, [0.000, 1.000, 0.733]], [0.466, [0.000, 1.000, 0.756]], [0.468, [0.000, 1.000, 0.756]], [0.470, [0.000, 1.000, 0.779]], [0.472, [0.000, 1.000, 0.779]], [0.474, [0.000, 1.000, 0.803]], [0.476, [0.000, 1.000, 0.803]], [0.477, [0.000, 1.000, 0.826]], [0.479, [0.000, 1.000, 0.826]], [0.481, [0.000, 1.000, 0.849]], [0.483, [0.000, 1.000, 0.849]], [0.485, [0.000, 1.000, 0.872]], [0.487, [0.000, 1.000, 0.872]], [0.489, [0.000, 1.000, 0.895]], [0.491, [0.000, 1.000, 0.895]], [0.493, [0.000, 1.000, 0.918]], [0.495, [0.000, 1.000, 0.918]], [0.497, [0.000, 1.000, 0.942]], [0.499, [0.000, 1.000, 0.942]], [0.501, [0.000, 1.000, 0.965]], [0.503, [0.000, 1.000, 0.965]], [0.505, [0.000, 1.000, 0.988]], [0.507, [0.000, 1.000, 0.988]], [0.509, [0.000, 0.989, 1.000]], [0.511, [0.000, 0.989, 1.000]], [0.513, [0.000, 0.966, 1.000]], [0.515, [0.000, 0.966, 1.000]], [0.517, [0.000, 0.943, 1.000]], [0.519, [0.000, 0.943, 1.000]], [0.521, [0.000, 0.919, 1.000]], [0.523, [0.000, 0.919, 1.000]], [0.524, [0.000, 0.896, 1.000]], [0.526, [0.000, 0.896, 1.000]], [0.528, [0.000, 0.873, 1.000]], [0.530, [0.000, 0.873, 1.000]], [0.532, [0.000, 0.850, 1.000]], [0.534, [0.000, 0.850, 1.000]], [0.536, [0.000, 0.827, 1.000]], [0.538, [0.000, 0.827, 1.000]], [0.540, [0.000, 0.804, 1.000]], [0.542, [0.000, 0.804, 1.000]], [0.544, [0.000, 0.781, 1.000]], [0.546, [0.000, 0.781, 1.000]], [0.548, [0.000, 0.757, 1.000]], [0.550, [0.000, 0.757, 1.000]], [0.552, [0.000, 0.734, 1.000]], [0.554, [0.000, 0.734, 1.000]], [0.556, [0.000, 0.711, 1.000]], [0.558, [0.000, 0.711, 1.000]], [0.560, [0.000, 0.688, 1.000]], [0.562, [0.000, 0.688, 1.000]], [0.564, [0.000, 0.665, 1.000]], [0.566, [0.000, 0.665, 1.000]], [0.568, [0.000, 0.642, 1.000]], [0.569, [0.000, 0.642, 1.000]], [0.571, [0.000, 0.618, 1.000]], [0.573, [0.000, 0.618, 1.000]], [0.575, [0.000, 0.595, 1.000]], [0.577, [0.000, 0.595, 1.000]], [0.579, [0.000, 0.572, 1.000]], [0.581, [0.000, 0.572, 1.000]], [0.583, [0.000, 0.549, 1.000]], [0.585, [0.000, 0.549, 1.000]], [0.587, [0.000, 0.526, 1.000]], [0.589, [0.000, 0.526, 1.000]], [0.591, [0.000, 0.503, 1.000]], [0.593, [0.000, 0.503, 1.000]], [0.595, [0.000, 0.479, 1.000]], [0.597, [0.000, 0.479, 1.000]], [0.599, [0.000, 0.456, 1.000]], [0.601, [0.000, 0.456, 1.000]], [0.603, [0.000, 0.433, 1.000]], [0.605, [0.000, 0.433, 1.000]], [0.607, [0.000, 0.410, 1.000]], [0.609, [0.000, 0.410, 1.000]], [0.611, [0.000, 0.387, 1.000]], [0.613, [0.000, 0.387, 1.000]], [0.614, [0.000, 0.364, 1.000]], [0.616, [0.000, 0.364, 1.000]], [0.618, [0.000, 0.340, 1.000]], [0.620, [0.000, 0.340, 1.000]], [0.622, [0.000, 0.317, 1.000]], [0.624, [0.000, 0.317, 1.000]], [0.626, [0.000, 0.294, 1.000]], [0.628, [0.000, 0.294, 1.000]], [0.630, [0.000, 0.271, 1.000]], [0.632, [0.000, 0.271, 1.000]], [0.634, [0.000, 0.248, 1.000]], [0.636, [0.000, 0.248, 1.000]], [0.638, [0.000, 0.225, 1.000]], [0.640, [0.000, 0.225, 1.000]], [0.642, [0.000, 0.201, 1.000]], [0.644, [0.000, 0.201, 1.000]], [0.646, [0.000, 0.178, 1.000]], [0.648, [0.000, 0.178, 1.000]], [0.650, [0.000, 0.155, 1.000]], [0.652, [0.000, 0.155, 1.000]], [0.654, [0.000, 0.132, 1.000]], [0.656, [0.000, 0.132, 1.000]], [0.658, [0.000, 0.109, 1.000]], [0.659, [0.000, 0.109, 1.000]], [0.661, [0.000, 0.086, 1.000]], [0.663, [0.000, 0.086, 1.000]], [0.665, [0.000, 0.063, 1.000]], [0.667, [0.000, 0.063, 1.000]], [0.669, [0.008, 0.047, 1.000]], [0.671, [0.008, 0.047, 1.000]], [0.673, [0.015, 0.032, 1.000]], [0.675, [0.015, 0.032, 1.000]], [0.677, [0.023, 0.016, 1.000]], [0.679, [0.023, 0.016, 1.000]], [0.681, [0.031, 0.001, 1.000]], [0.683, [0.031, 0.001, 1.000]], [0.685, [0.053, 0.000, 1.000]], [0.687, [0.053, 0.000, 1.000]], [0.689, [0.076, 0.000, 1.000]], [0.691, [0.076, 0.000, 1.000]], [0.693, [0.100, 0.000, 1.000]], [0.695, [0.100, 0.000, 1.000]], [0.697, [0.123, 0.000, 1.000]], [0.699, [0.123, 0.000, 1.000]], [0.701, [0.146, 0.000, 1.000]], [0.703, [0.146, 0.000, 1.000]], [0.705, [0.169, 0.000, 1.000]], [0.706, [0.169, 0.000, 1.000]], [0.708, [0.192, 0.000, 1.000]], [0.710, [0.192, 0.000, 1.000]], [0.712, [0.215, 0.000, 1.000]], [0.714, [0.215, 0.000, 1.000]], [0.716, [0.239, 0.000, 1.000]], [0.718, [0.239, 0.000, 1.000]], [0.720, [0.262, 0.000, 1.000]], [0.722, [0.262, 0.000, 1.000]], [0.724, [0.285, 0.000, 1.000]], [0.726, [0.285, 0.000, 1.000]], [0.728, [0.308, 0.000, 1.000]], [0.730, [0.308, 0.000, 1.000]], [0.732, [0.331, 0.000, 1.000]], [0.734, [0.331, 0.000, 1.000]], [0.736, [0.354, 0.000, 1.000]], [0.738, [0.354, 0.000, 1.000]], [0.740, [0.378, 0.000, 1.000]], [0.742, [0.378, 0.000, 1.000]], [0.744, [0.401, 0.000, 1.000]], [0.746, [0.401, 0.000, 1.000]], [0.748, [0.424, 0.000, 1.000]], [0.750, [0.424, 0.000, 1.000]], [0.751, [0.447, 0.000, 1.000]], [0.753, [0.447, 0.000, 1.000]], [0.755, [0.470, 0.000, 1.000]], [0.757, [0.470, 0.000, 1.000]], [0.759, [0.493, 0.000, 1.000]], [0.761, [0.493, 0.000, 1.000]], [0.763, [0.517, 0.000, 1.000]], [0.765, [0.517, 0.000, 1.000]], [0.767, [0.540, 0.000, 1.000]], [0.769, [0.540, 0.000, 1.000]], [0.771, [0.563, 0.000, 1.000]], [0.773, [0.563, 0.000, 1.000]], [0.775, [0.586, 0.000, 1.000]], [0.777, [0.586, 0.000, 1.000]], [0.779, [0.609, 0.000, 1.000]], [0.781, [0.609, 0.000, 1.000]], [0.783, [0.632, 0.000, 1.000]], [0.785, [0.632, 0.000, 1.000]], [0.787, [0.656, 0.000, 1.000]], [0.789, [0.656, 0.000, 1.000]], [0.791, [0.679, 0.000, 1.000]], [0.793, [0.679, 0.000, 1.000]], [0.795, [0.702, 0.000, 1.000]], [0.796, [0.702, 0.000, 1.000]], [0.798, [0.725, 0.000, 1.000]], [0.800, [0.725, 0.000, 1.000]], [0.802, [0.748, 0.000, 1.000]], [0.804, [0.748, 0.000, 1.000]], [0.806, [0.771, 0.000, 1.000]], [0.808, [0.771, 0.000, 1.000]], [0.810, [0.794, 0.000, 1.000]], [0.812, [0.794, 0.000, 1.000]], [0.814, [0.818, 0.000, 1.000]], [0.816, [0.818, 0.000, 1.000]], [0.818, [0.841, 0.000, 1.000]], [0.820, [0.841, 0.000, 1.000]], [0.822, [0.864, 0.000, 1.000]], [0.824, [0.864, 0.000, 1.000]], [0.826, [0.887, 0.000, 1.000]], [0.828, [0.887, 0.000, 1.000]], [0.830, [0.910, 0.000, 1.000]], [0.832, [0.910, 0.000, 1.000]], [0.834, [0.933, 0.000, 1.000]], [0.836, [0.933, 0.000, 1.000]], [0.838, [0.957, 0.000, 1.000]], [0.840, [0.957, 0.000, 1.000]], [0.841, [0.972, 0.000, 0.993]], [0.843, [0.972, 0.000, 0.993]], [0.845, [0.980, 0.000, 0.977]], [0.847, [0.980, 0.000, 0.977]], [0.849, [0.988, 0.000, 0.962]], [0.851, [0.988, 0.000, 0.962]], [0.853, [0.996, 0.000, 0.946]], [0.855, [0.996, 0.000, 0.946]], [0.857, [1.000, 0.000, 0.928]], [0.859, [1.000, 0.000, 0.928]], [0.861, [1.000, 0.000, 0.904]], [0.863, [1.000, 0.000, 0.904]], [0.865, [1.000, 0.000, 0.881]], [0.867, [1.000, 0.000, 0.881]], [0.869, [1.000, 0.000, 0.858]], [0.871, [1.000, 0.000, 0.858]], [0.873, [1.000, 0.000, 0.835]], [0.875, [1.000, 0.000, 0.835]], [0.877, [1.000, 0.000, 0.812]], [0.879, [1.000, 0.000, 0.812]], [0.881, [1.000, 0.000, 0.789]], [0.883, [1.000, 0.000, 0.789]], [0.885, [1.000, 0.000, 0.765]], [0.886, [1.000, 0.000, 0.765]], [0.888, [1.000, 0.000, 0.742]], [0.890, [1.000, 0.000, 0.742]], [0.892, [1.000, 0.000, 0.719]], [0.894, [1.000, 0.000, 0.719]], [0.896, [1.000, 0.000, 0.696]], [0.898, [1.000, 0.000, 0.696]], [0.900, [1.000, 0.000, 0.673]], [0.902, [1.000, 0.000, 0.673]], [0.904, [1.000, 0.000, 0.650]], [0.906, [1.000, 0.000, 0.650]], [0.908, [1.000, 0.000, 0.626]], [0.910, [1.000, 0.000, 0.626]], [0.912, [1.000, 0.000, 0.603]], [0.914, [1.000, 0.000, 0.603]], [0.916, [1.000, 0.000, 0.580]], [0.918, [1.000, 0.000, 0.580]], [0.920, [1.000, 0.000, 0.557]], [0.922, [1.000, 0.000, 0.557]], [0.924, [1.000, 0.000, 0.534]], [0.926, [1.000, 0.000, 0.534]], [0.928, [1.000, 0.000, 0.511]], [0.930, [1.000, 0.000, 0.511]], [0.932, [1.000, 0.000, 0.488]], [0.933, [1.000, 0.000, 0.488]], [0.935, [1.000, 0.000, 0.464]], [0.937, [1.000, 0.000, 0.464]], [0.939, [1.000, 0.000, 0.441]], [0.941, [1.000, 0.000, 0.441]], [0.943, [1.000, 0.000, 0.418]], [0.945, [1.000, 0.000, 0.418]], [0.947, [1.000, 0.000, 0.395]], [0.949, [1.000, 0.000, 0.395]], [0.951, [1.000, 0.000, 0.372]], [0.953, [1.000, 0.000, 0.372]], [0.955, [1.000, 0.000, 0.349]], [0.957, [1.000, 0.000, 0.349]], [0.959, [1.000, 0.000, 0.325]], [0.961, [1.000, 0.000, 0.325]], [0.963, [1.000, 0.000, 0.302]], [0.965, [1.000, 0.000, 0.302]], [0.967, [1.000, 0.000, 0.279]], [0.969, [1.000, 0.000, 0.279]], [0.971, [1.000, 0.000, 0.256]], [0.973, [1.000, 0.000, 0.256]], [0.975, [1.000, 0.000, 0.233]], [0.977, [1.000, 0.000, 0.233]], [0.978, [1.000, 0.000, 0.210]], [0.980, [1.000, 0.000, 0.210]], [0.982, [1.000, 0.000, 0.186]], [0.984, [1.000, 0.000, 0.186]], [0.986, [1.000, 0.000, 0.163]], [0.988, [1.000, 0.000, 0.163]], [0.990, [1.000, 0.000, 0.140]], [0.992, [1.000, 0.000, 0.140]], [0.994, [1.000, 0.000, 0.117]], [0.996, [1.000, 0.000, 0.117]], [0.998, [1.000, 0.000, 0.094]], [1.000, [1.000, 0.000, 0.094]]]; +var jet = [[0.000, [0.000, 0.000, 0.500]], [0.002, [0.000, 0.000, 0.500]], [0.004, [0.000, 0.000, 0.518]], [0.006, [0.000, 0.000, 0.518]], [0.008, [0.000, 0.000, 0.536]], [0.010, [0.000, 0.000, 0.536]], [0.012, [0.000, 0.000, 0.553]], [0.014, [0.000, 0.000, 0.553]], [0.016, [0.000, 0.000, 0.571]], [0.018, [0.000, 0.000, 0.571]], [0.020, [0.000, 0.000, 0.589]], [0.022, [0.000, 0.000, 0.589]], [0.023, [0.000, 0.000, 0.607]], [0.025, [0.000, 0.000, 0.607]], [0.027, [0.000, 0.000, 0.625]], [0.029, [0.000, 0.000, 0.625]], [0.031, [0.000, 0.000, 0.643]], [0.033, [0.000, 0.000, 0.643]], [0.035, [0.000, 0.000, 0.660]], [0.037, [0.000, 0.000, 0.660]], [0.039, [0.000, 0.000, 0.678]], [0.041, [0.000, 0.000, 0.678]], [0.043, [0.000, 0.000, 0.696]], [0.045, [0.000, 0.000, 0.696]], [0.047, [0.000, 0.000, 0.714]], [0.049, [0.000, 0.000, 0.714]], [0.051, [0.000, 0.000, 0.732]], [0.053, [0.000, 0.000, 0.732]], [0.055, [0.000, 0.000, 0.750]], [0.057, [0.000, 0.000, 0.750]], [0.059, [0.000, 0.000, 0.767]], [0.061, [0.000, 0.000, 0.767]], [0.063, [0.000, 0.000, 0.785]], [0.065, [0.000, 0.000, 0.785]], [0.067, [0.000, 0.000, 0.803]], [0.068, [0.000, 0.000, 0.803]], [0.070, [0.000, 0.000, 0.821]], [0.072, [0.000, 0.000, 0.821]], [0.074, [0.000, 0.000, 0.839]], [0.076, [0.000, 0.000, 0.839]], [0.078, [0.000, 0.000, 0.857]], [0.080, [0.000, 0.000, 0.857]], [0.082, [0.000, 0.000, 0.874]], [0.084, [0.000, 0.000, 0.874]], [0.086, [0.000, 0.000, 0.892]], [0.088, [0.000, 0.000, 0.892]], [0.090, [0.000, 0.000, 0.910]], [0.092, [0.000, 0.000, 0.910]], [0.094, [0.000, 0.000, 0.928]], [0.096, [0.000, 0.000, 0.928]], [0.098, [0.000, 0.000, 0.946]], [0.100, [0.000, 0.000, 0.946]], [0.102, [0.000, 0.000, 0.963]], [0.104, [0.000, 0.000, 0.963]], [0.106, [0.000, 0.000, 0.981]], [0.108, [0.000, 0.000, 0.981]], [0.110, [0.000, 0.000, 0.999]], [0.112, [0.000, 0.000, 0.999]], [0.114, [0.000, 0.000, 1.000]], [0.115, [0.000, 0.000, 1.000]], [0.117, [0.000, 0.000, 1.000]], [0.119, [0.000, 0.000, 1.000]], [0.121, [0.000, 0.000, 1.000]], [0.123, [0.000, 0.000, 1.000]], [0.125, [0.000, 0.002, 1.000]], [0.127, [0.000, 0.002, 1.000]], [0.129, [0.000, 0.018, 1.000]], [0.131, [0.000, 0.018, 1.000]], [0.133, [0.000, 0.033, 1.000]], [0.135, [0.000, 0.033, 1.000]], [0.137, [0.000, 0.049, 1.000]], [0.139, [0.000, 0.049, 1.000]], [0.141, [0.000, 0.065, 1.000]], [0.143, [0.000, 0.065, 1.000]], [0.145, [0.000, 0.080, 1.000]], [0.147, [0.000, 0.080, 1.000]], [0.149, [0.000, 0.096, 1.000]], [0.151, [0.000, 0.096, 1.000]], [0.153, [0.000, 0.112, 1.000]], [0.155, [0.000, 0.112, 1.000]], [0.157, [0.000, 0.127, 1.000]], [0.159, [0.000, 0.127, 1.000]], [0.160, [0.000, 0.143, 1.000]], [0.162, [0.000, 0.143, 1.000]], [0.164, [0.000, 0.159, 1.000]], [0.166, [0.000, 0.159, 1.000]], [0.168, [0.000, 0.175, 1.000]], [0.170, [0.000, 0.175, 1.000]], [0.172, [0.000, 0.190, 1.000]], [0.174, [0.000, 0.190, 1.000]], [0.176, [0.000, 0.206, 1.000]], [0.178, [0.000, 0.206, 1.000]], [0.180, [0.000, 0.222, 1.000]], [0.182, [0.000, 0.222, 1.000]], [0.184, [0.000, 0.237, 1.000]], [0.186, [0.000, 0.237, 1.000]], [0.188, [0.000, 0.253, 1.000]], [0.190, [0.000, 0.253, 1.000]], [0.192, [0.000, 0.269, 1.000]], [0.194, [0.000, 0.269, 1.000]], [0.196, [0.000, 0.284, 1.000]], [0.198, [0.000, 0.284, 1.000]], [0.200, [0.000, 0.300, 1.000]], [0.202, [0.000, 0.300, 1.000]], [0.204, [0.000, 0.316, 1.000]], [0.205, [0.000, 0.316, 1.000]], [0.207, [0.000, 0.331, 1.000]], [0.209, [0.000, 0.331, 1.000]], [0.211, [0.000, 0.347, 1.000]], [0.213, [0.000, 0.347, 1.000]], [0.215, [0.000, 0.363, 1.000]], [0.217, [0.000, 0.363, 1.000]], [0.219, [0.000, 0.378, 1.000]], [0.221, [0.000, 0.378, 1.000]], [0.223, [0.000, 0.394, 1.000]], [0.225, [0.000, 0.394, 1.000]], [0.227, [0.000, 0.410, 1.000]], [0.229, [0.000, 0.410, 1.000]], [0.231, [0.000, 0.425, 1.000]], [0.233, [0.000, 0.425, 1.000]], [0.235, [0.000, 0.441, 1.000]], [0.237, [0.000, 0.441, 1.000]], [0.239, [0.000, 0.457, 1.000]], [0.241, [0.000, 0.457, 1.000]], [0.243, [0.000, 0.473, 1.000]], [0.245, [0.000, 0.473, 1.000]], [0.247, [0.000, 0.488, 1.000]], [0.249, [0.000, 0.488, 1.000]], [0.250, [0.000, 0.504, 1.000]], [0.252, [0.000, 0.504, 1.000]], [0.254, [0.000, 0.520, 1.000]], [0.256, [0.000, 0.520, 1.000]], [0.258, [0.000, 0.535, 1.000]], [0.260, [0.000, 0.535, 1.000]], [0.262, [0.000, 0.551, 1.000]], [0.264, [0.000, 0.551, 1.000]], [0.266, [0.000, 0.567, 1.000]], [0.268, [0.000, 0.567, 1.000]], [0.270, [0.000, 0.582, 1.000]], [0.272, [0.000, 0.582, 1.000]], [0.274, [0.000, 0.598, 1.000]], [0.276, [0.000, 0.598, 1.000]], [0.278, [0.000, 0.614, 1.000]], [0.280, [0.000, 0.614, 1.000]], [0.282, [0.000, 0.629, 1.000]], [0.284, [0.000, 0.629, 1.000]], [0.286, [0.000, 0.645, 1.000]], [0.288, [0.000, 0.645, 1.000]], [0.290, [0.000, 0.661, 1.000]], [0.292, [0.000, 0.661, 1.000]], [0.294, [0.000, 0.676, 1.000]], [0.295, [0.000, 0.676, 1.000]], [0.297, [0.000, 0.692, 1.000]], [0.299, [0.000, 0.692, 1.000]], [0.301, [0.000, 0.708, 1.000]], [0.303, [0.000, 0.708, 1.000]], [0.305, [0.000, 0.724, 1.000]], [0.307, [0.000, 0.724, 1.000]], [0.309, [0.000, 0.739, 1.000]], [0.311, [0.000, 0.739, 1.000]], [0.313, [0.000, 0.755, 1.000]], [0.315, [0.000, 0.755, 1.000]], [0.317, [0.000, 0.771, 1.000]], [0.319, [0.000, 0.771, 1.000]], [0.321, [0.000, 0.786, 1.000]], [0.323, [0.000, 0.786, 1.000]], [0.325, [0.000, 0.802, 1.000]], [0.327, [0.000, 0.802, 1.000]], [0.329, [0.000, 0.818, 1.000]], [0.331, [0.000, 0.818, 1.000]], [0.333, [0.000, 0.833, 1.000]], [0.335, [0.000, 0.833, 1.000]], [0.337, [0.000, 0.849, 1.000]], [0.339, [0.000, 0.849, 1.000]], [0.341, [0.000, 0.865, 0.996]], [0.342, [0.000, 0.865, 0.996]], [0.344, [0.000, 0.880, 0.984]], [0.346, [0.000, 0.880, 0.984]], [0.348, [0.000, 0.896, 0.971]], [0.350, [0.000, 0.896, 0.971]], [0.352, [0.009, 0.912, 0.958]], [0.354, [0.009, 0.912, 0.958]], [0.356, [0.022, 0.927, 0.946]], [0.358, [0.022, 0.927, 0.946]], [0.360, [0.035, 0.943, 0.933]], [0.362, [0.035, 0.943, 0.933]], [0.364, [0.047, 0.959, 0.920]], [0.366, [0.047, 0.959, 0.920]], [0.368, [0.060, 0.975, 0.908]], [0.370, [0.060, 0.975, 0.908]], [0.372, [0.073, 0.990, 0.895]], [0.374, [0.073, 0.990, 0.895]], [0.376, [0.085, 1.000, 0.882]], [0.378, [0.085, 1.000, 0.882]], [0.380, [0.098, 1.000, 0.870]], [0.382, [0.098, 1.000, 0.870]], [0.384, [0.111, 1.000, 0.857]], [0.386, [0.111, 1.000, 0.857]], [0.387, [0.123, 1.000, 0.844]], [0.389, [0.123, 1.000, 0.844]], [0.391, [0.136, 1.000, 0.832]], [0.393, [0.136, 1.000, 0.832]], [0.395, [0.149, 1.000, 0.819]], [0.397, [0.149, 1.000, 0.819]], [0.399, [0.161, 1.000, 0.806]], [0.401, [0.161, 1.000, 0.806]], [0.403, [0.174, 1.000, 0.794]], [0.405, [0.174, 1.000, 0.794]], [0.407, [0.187, 1.000, 0.781]], [0.409, [0.187, 1.000, 0.781]], [0.411, [0.199, 1.000, 0.769]], [0.413, [0.199, 1.000, 0.769]], [0.415, [0.212, 1.000, 0.756]], [0.417, [0.212, 1.000, 0.756]], [0.419, [0.225, 1.000, 0.743]], [0.421, [0.225, 1.000, 0.743]], [0.423, [0.237, 1.000, 0.731]], [0.425, [0.237, 1.000, 0.731]], [0.427, [0.250, 1.000, 0.718]], [0.429, [0.250, 1.000, 0.718]], [0.431, [0.262, 1.000, 0.705]], [0.432, [0.262, 1.000, 0.705]], [0.434, [0.275, 1.000, 0.693]], [0.436, [0.275, 1.000, 0.693]], [0.438, [0.288, 1.000, 0.680]], [0.440, [0.288, 1.000, 0.680]], [0.442, [0.300, 1.000, 0.667]], [0.444, [0.300, 1.000, 0.667]], [0.446, [0.313, 1.000, 0.655]], [0.448, [0.313, 1.000, 0.655]], [0.450, [0.326, 1.000, 0.642]], [0.452, [0.326, 1.000, 0.642]], [0.454, [0.338, 1.000, 0.629]], [0.456, [0.338, 1.000, 0.629]], [0.458, [0.351, 1.000, 0.617]], [0.460, [0.351, 1.000, 0.617]], [0.462, [0.364, 1.000, 0.604]], [0.464, [0.364, 1.000, 0.604]], [0.466, [0.376, 1.000, 0.591]], [0.468, [0.376, 1.000, 0.591]], [0.470, [0.389, 1.000, 0.579]], [0.472, [0.389, 1.000, 0.579]], [0.474, [0.402, 1.000, 0.566]], [0.476, [0.402, 1.000, 0.566]], [0.477, [0.414, 1.000, 0.553]], [0.479, [0.414, 1.000, 0.553]], [0.481, [0.427, 1.000, 0.541]], [0.483, [0.427, 1.000, 0.541]], [0.485, [0.440, 1.000, 0.528]], [0.487, [0.440, 1.000, 0.528]], [0.489, [0.452, 1.000, 0.515]], [0.491, [0.452, 1.000, 0.515]], [0.493, [0.465, 1.000, 0.503]], [0.495, [0.465, 1.000, 0.503]], [0.497, [0.478, 1.000, 0.490]], [0.499, [0.478, 1.000, 0.490]], [0.501, [0.490, 1.000, 0.478]], [0.503, [0.490, 1.000, 0.478]], [0.505, [0.503, 1.000, 0.465]], [0.507, [0.503, 1.000, 0.465]], [0.509, [0.515, 1.000, 0.452]], [0.511, [0.515, 1.000, 0.452]], [0.513, [0.528, 1.000, 0.440]], [0.515, [0.528, 1.000, 0.440]], [0.517, [0.541, 1.000, 0.427]], [0.519, [0.541, 1.000, 0.427]], [0.521, [0.553, 1.000, 0.414]], [0.523, [0.553, 1.000, 0.414]], [0.524, [0.566, 1.000, 0.402]], [0.526, [0.566, 1.000, 0.402]], [0.528, [0.579, 1.000, 0.389]], [0.530, [0.579, 1.000, 0.389]], [0.532, [0.591, 1.000, 0.376]], [0.534, [0.591, 1.000, 0.376]], [0.536, [0.604, 1.000, 0.364]], [0.538, [0.604, 1.000, 0.364]], [0.540, [0.617, 1.000, 0.351]], [0.542, [0.617, 1.000, 0.351]], [0.544, [0.629, 1.000, 0.338]], [0.546, [0.629, 1.000, 0.338]], [0.548, [0.642, 1.000, 0.326]], [0.550, [0.642, 1.000, 0.326]], [0.552, [0.655, 1.000, 0.313]], [0.554, [0.655, 1.000, 0.313]], [0.556, [0.667, 1.000, 0.300]], [0.558, [0.667, 1.000, 0.300]], [0.560, [0.680, 1.000, 0.288]], [0.562, [0.680, 1.000, 0.288]], [0.564, [0.693, 1.000, 0.275]], [0.566, [0.693, 1.000, 0.275]], [0.568, [0.705, 1.000, 0.262]], [0.569, [0.705, 1.000, 0.262]], [0.571, [0.718, 1.000, 0.250]], [0.573, [0.718, 1.000, 0.250]], [0.575, [0.731, 1.000, 0.237]], [0.577, [0.731, 1.000, 0.237]], [0.579, [0.743, 1.000, 0.225]], [0.581, [0.743, 1.000, 0.225]], [0.583, [0.756, 1.000, 0.212]], [0.585, [0.756, 1.000, 0.212]], [0.587, [0.769, 1.000, 0.199]], [0.589, [0.769, 1.000, 0.199]], [0.591, [0.781, 1.000, 0.187]], [0.593, [0.781, 1.000, 0.187]], [0.595, [0.794, 1.000, 0.174]], [0.597, [0.794, 1.000, 0.174]], [0.599, [0.806, 1.000, 0.161]], [0.601, [0.806, 1.000, 0.161]], [0.603, [0.819, 1.000, 0.149]], [0.605, [0.819, 1.000, 0.149]], [0.607, [0.832, 1.000, 0.136]], [0.609, [0.832, 1.000, 0.136]], [0.611, [0.844, 1.000, 0.123]], [0.613, [0.844, 1.000, 0.123]], [0.614, [0.857, 1.000, 0.111]], [0.616, [0.857, 1.000, 0.111]], [0.618, [0.870, 1.000, 0.098]], [0.620, [0.870, 1.000, 0.098]], [0.622, [0.882, 1.000, 0.085]], [0.624, [0.882, 1.000, 0.085]], [0.626, [0.895, 1.000, 0.073]], [0.628, [0.895, 1.000, 0.073]], [0.630, [0.908, 1.000, 0.060]], [0.632, [0.908, 1.000, 0.060]], [0.634, [0.920, 1.000, 0.047]], [0.636, [0.920, 1.000, 0.047]], [0.638, [0.933, 1.000, 0.035]], [0.640, [0.933, 1.000, 0.035]], [0.642, [0.946, 0.988, 0.022]], [0.644, [0.946, 0.988, 0.022]], [0.646, [0.958, 0.974, 0.009]], [0.648, [0.958, 0.974, 0.009]], [0.650, [0.971, 0.959, 0.000]], [0.652, [0.971, 0.959, 0.000]], [0.654, [0.984, 0.945, 0.000]], [0.656, [0.984, 0.945, 0.000]], [0.658, [0.996, 0.930, 0.000]], [0.659, [0.996, 0.930, 0.000]], [0.661, [1.000, 0.916, 0.000]], [0.663, [1.000, 0.916, 0.000]], [0.665, [1.000, 0.901, 0.000]], [0.667, [1.000, 0.901, 0.000]], [0.669, [1.000, 0.887, 0.000]], [0.671, [1.000, 0.887, 0.000]], [0.673, [1.000, 0.872, 0.000]], [0.675, [1.000, 0.872, 0.000]], [0.677, [1.000, 0.858, 0.000]], [0.679, [1.000, 0.858, 0.000]], [0.681, [1.000, 0.843, 0.000]], [0.683, [1.000, 0.843, 0.000]], [0.685, [1.000, 0.829, 0.000]], [0.687, [1.000, 0.829, 0.000]], [0.689, [1.000, 0.814, 0.000]], [0.691, [1.000, 0.814, 0.000]], [0.693, [1.000, 0.800, 0.000]], [0.695, [1.000, 0.800, 0.000]], [0.697, [1.000, 0.785, 0.000]], [0.699, [1.000, 0.785, 0.000]], [0.701, [1.000, 0.771, 0.000]], [0.703, [1.000, 0.771, 0.000]], [0.705, [1.000, 0.756, 0.000]], [0.706, [1.000, 0.756, 0.000]], [0.708, [1.000, 0.741, 0.000]], [0.710, [1.000, 0.741, 0.000]], [0.712, [1.000, 0.727, 0.000]], [0.714, [1.000, 0.727, 0.000]], [0.716, [1.000, 0.712, 0.000]], [0.718, [1.000, 0.712, 0.000]], [0.720, [1.000, 0.698, 0.000]], [0.722, [1.000, 0.698, 0.000]], [0.724, [1.000, 0.683, 0.000]], [0.726, [1.000, 0.683, 0.000]], [0.728, [1.000, 0.669, 0.000]], [0.730, [1.000, 0.669, 0.000]], [0.732, [1.000, 0.654, 0.000]], [0.734, [1.000, 0.654, 0.000]], [0.736, [1.000, 0.640, 0.000]], [0.738, [1.000, 0.640, 0.000]], [0.740, [1.000, 0.625, 0.000]], [0.742, [1.000, 0.625, 0.000]], [0.744, [1.000, 0.611, 0.000]], [0.746, [1.000, 0.611, 0.000]], [0.748, [1.000, 0.596, 0.000]], [0.750, [1.000, 0.596, 0.000]], [0.751, [1.000, 0.582, 0.000]], [0.753, [1.000, 0.582, 0.000]], [0.755, [1.000, 0.567, 0.000]], [0.757, [1.000, 0.567, 0.000]], [0.759, [1.000, 0.553, 0.000]], [0.761, [1.000, 0.553, 0.000]], [0.763, [1.000, 0.538, 0.000]], [0.765, [1.000, 0.538, 0.000]], [0.767, [1.000, 0.524, 0.000]], [0.769, [1.000, 0.524, 0.000]], [0.771, [1.000, 0.509, 0.000]], [0.773, [1.000, 0.509, 0.000]], [0.775, [1.000, 0.495, 0.000]], [0.777, [1.000, 0.495, 0.000]], [0.779, [1.000, 0.480, 0.000]], [0.781, [1.000, 0.480, 0.000]], [0.783, [1.000, 0.466, 0.000]], [0.785, [1.000, 0.466, 0.000]], [0.787, [1.000, 0.451, 0.000]], [0.789, [1.000, 0.451, 0.000]], [0.791, [1.000, 0.436, 0.000]], [0.793, [1.000, 0.436, 0.000]], [0.795, [1.000, 0.422, 0.000]], [0.796, [1.000, 0.422, 0.000]], [0.798, [1.000, 0.407, 0.000]], [0.800, [1.000, 0.407, 0.000]], [0.802, [1.000, 0.393, 0.000]], [0.804, [1.000, 0.393, 0.000]], [0.806, [1.000, 0.378, 0.000]], [0.808, [1.000, 0.378, 0.000]], [0.810, [1.000, 0.364, 0.000]], [0.812, [1.000, 0.364, 0.000]], [0.814, [1.000, 0.349, 0.000]], [0.816, [1.000, 0.349, 0.000]], [0.818, [1.000, 0.335, 0.000]], [0.820, [1.000, 0.335, 0.000]], [0.822, [1.000, 0.320, 0.000]], [0.824, [1.000, 0.320, 0.000]], [0.826, [1.000, 0.306, 0.000]], [0.828, [1.000, 0.306, 0.000]], [0.830, [1.000, 0.291, 0.000]], [0.832, [1.000, 0.291, 0.000]], [0.834, [1.000, 0.277, 0.000]], [0.836, [1.000, 0.277, 0.000]], [0.838, [1.000, 0.262, 0.000]], [0.840, [1.000, 0.262, 0.000]], [0.841, [1.000, 0.248, 0.000]], [0.843, [1.000, 0.248, 0.000]], [0.845, [1.000, 0.233, 0.000]], [0.847, [1.000, 0.233, 0.000]], [0.849, [1.000, 0.219, 0.000]], [0.851, [1.000, 0.219, 0.000]], [0.853, [1.000, 0.204, 0.000]], [0.855, [1.000, 0.204, 0.000]], [0.857, [1.000, 0.190, 0.000]], [0.859, [1.000, 0.190, 0.000]], [0.861, [1.000, 0.175, 0.000]], [0.863, [1.000, 0.175, 0.000]], [0.865, [1.000, 0.160, 0.000]], [0.867, [1.000, 0.160, 0.000]], [0.869, [1.000, 0.146, 0.000]], [0.871, [1.000, 0.146, 0.000]], [0.873, [1.000, 0.131, 0.000]], [0.875, [1.000, 0.131, 0.000]], [0.877, [1.000, 0.117, 0.000]], [0.879, [1.000, 0.117, 0.000]], [0.881, [1.000, 0.102, 0.000]], [0.883, [1.000, 0.102, 0.000]], [0.885, [1.000, 0.088, 0.000]], [0.886, [1.000, 0.088, 0.000]], [0.888, [0.999, 0.073, 0.000]], [0.890, [0.999, 0.073, 0.000]], [0.892, [0.981, 0.059, 0.000]], [0.894, [0.981, 0.059, 0.000]], [0.896, [0.963, 0.044, 0.000]], [0.898, [0.963, 0.044, 0.000]], [0.900, [0.946, 0.030, 0.000]], [0.902, [0.946, 0.030, 0.000]], [0.904, [0.928, 0.015, 0.000]], [0.906, [0.928, 0.015, 0.000]], [0.908, [0.910, 0.001, 0.000]], [0.910, [0.910, 0.001, 0.000]], [0.912, [0.892, 0.000, 0.000]], [0.914, [0.892, 0.000, 0.000]], [0.916, [0.874, 0.000, 0.000]], [0.918, [0.874, 0.000, 0.000]], [0.920, [0.857, 0.000, 0.000]], [0.922, [0.857, 0.000, 0.000]], [0.924, [0.839, 0.000, 0.000]], [0.926, [0.839, 0.000, 0.000]], [0.928, [0.821, 0.000, 0.000]], [0.930, [0.821, 0.000, 0.000]], [0.932, [0.803, 0.000, 0.000]], [0.933, [0.803, 0.000, 0.000]], [0.935, [0.785, 0.000, 0.000]], [0.937, [0.785, 0.000, 0.000]], [0.939, [0.767, 0.000, 0.000]], [0.941, [0.767, 0.000, 0.000]], [0.943, [0.750, 0.000, 0.000]], [0.945, [0.750, 0.000, 0.000]], [0.947, [0.732, 0.000, 0.000]], [0.949, [0.732, 0.000, 0.000]], [0.951, [0.714, 0.000, 0.000]], [0.953, [0.714, 0.000, 0.000]], [0.955, [0.696, 0.000, 0.000]], [0.957, [0.696, 0.000, 0.000]], [0.959, [0.678, 0.000, 0.000]], [0.961, [0.678, 0.000, 0.000]], [0.963, [0.660, 0.000, 0.000]], [0.965, [0.660, 0.000, 0.000]], [0.967, [0.643, 0.000, 0.000]], [0.969, [0.643, 0.000, 0.000]], [0.971, [0.625, 0.000, 0.000]], [0.973, [0.625, 0.000, 0.000]], [0.975, [0.607, 0.000, 0.000]], [0.977, [0.607, 0.000, 0.000]], [0.978, [0.589, 0.000, 0.000]], [0.980, [0.589, 0.000, 0.000]], [0.982, [0.571, 0.000, 0.000]], [0.984, [0.571, 0.000, 0.000]], [0.986, [0.553, 0.000, 0.000]], [0.988, [0.553, 0.000, 0.000]], [0.990, [0.536, 0.000, 0.000]], [0.992, [0.536, 0.000, 0.000]], [0.994, [0.518, 0.000, 0.000]], [0.996, [0.518, 0.000, 0.000]], [0.998, [0.500, 0.000, 0.000]], [1.000, [0.500, 0.000, 0.000]]]; +var nipy_spectral = [[0.000, [0.000, 0.000, 0.000]], [0.002, [0.000, 0.000, 0.000]], [0.004, [0.037, 0.000, 0.042]], [0.006, [0.037, 0.000, 0.042]], [0.008, [0.073, 0.000, 0.084]], [0.010, [0.073, 0.000, 0.084]], [0.012, [0.110, 0.000, 0.125]], [0.014, [0.110, 0.000, 0.125]], [0.016, [0.146, 0.000, 0.167]], [0.018, [0.146, 0.000, 0.167]], [0.020, [0.183, 0.000, 0.209]], [0.022, [0.183, 0.000, 0.209]], [0.023, [0.220, 0.000, 0.251]], [0.025, [0.220, 0.000, 0.251]], [0.027, [0.256, 0.000, 0.293]], [0.029, [0.256, 0.000, 0.293]], [0.031, [0.293, 0.000, 0.335]], [0.033, [0.293, 0.000, 0.335]], [0.035, [0.329, 0.000, 0.376]], [0.037, [0.329, 0.000, 0.376]], [0.039, [0.366, 0.000, 0.418]], [0.041, [0.366, 0.000, 0.418]], [0.043, [0.403, 0.000, 0.460]], [0.045, [0.403, 0.000, 0.460]], [0.047, [0.439, 0.000, 0.502]], [0.049, [0.439, 0.000, 0.502]], [0.051, [0.468, 0.000, 0.535]], [0.053, [0.468, 0.000, 0.535]], [0.055, [0.473, 0.000, 0.540]], [0.057, [0.473, 0.000, 0.540]], [0.059, [0.478, 0.000, 0.545]], [0.061, [0.478, 0.000, 0.545]], [0.063, [0.484, 0.000, 0.550]], [0.065, [0.484, 0.000, 0.550]], [0.067, [0.489, 0.000, 0.556]], [0.068, [0.489, 0.000, 0.556]], [0.070, [0.494, 0.000, 0.561]], [0.072, [0.494, 0.000, 0.561]], [0.074, [0.499, 0.000, 0.566]], [0.076, [0.499, 0.000, 0.566]], [0.078, [0.505, 0.000, 0.571]], [0.080, [0.505, 0.000, 0.571]], [0.082, [0.510, 0.000, 0.576]], [0.084, [0.510, 0.000, 0.576]], [0.086, [0.515, 0.000, 0.582]], [0.088, [0.515, 0.000, 0.582]], [0.090, [0.520, 0.000, 0.587]], [0.092, [0.520, 0.000, 0.587]], [0.094, [0.525, 0.000, 0.592]], [0.096, [0.525, 0.000, 0.592]], [0.098, [0.531, 0.000, 0.597]], [0.100, [0.531, 0.000, 0.597]], [0.102, [0.512, 0.000, 0.603]], [0.104, [0.512, 0.000, 0.603]], [0.106, [0.471, 0.000, 0.608]], [0.108, [0.471, 0.000, 0.608]], [0.110, [0.429, 0.000, 0.613]], [0.112, [0.429, 0.000, 0.613]], [0.114, [0.387, 0.000, 0.618]], [0.115, [0.387, 0.000, 0.618]], [0.117, [0.345, 0.000, 0.624]], [0.119, [0.345, 0.000, 0.624]], [0.121, [0.303, 0.000, 0.629]], [0.123, [0.303, 0.000, 0.629]], [0.125, [0.261, 0.000, 0.634]], [0.127, [0.261, 0.000, 0.634]], [0.129, [0.220, 0.000, 0.639]], [0.131, [0.220, 0.000, 0.639]], [0.133, [0.178, 0.000, 0.644]], [0.135, [0.178, 0.000, 0.644]], [0.137, [0.136, 0.000, 0.650]], [0.139, [0.136, 0.000, 0.650]], [0.141, [0.094, 0.000, 0.655]], [0.143, [0.094, 0.000, 0.655]], [0.145, [0.052, 0.000, 0.660]], [0.147, [0.052, 0.000, 0.660]], [0.149, [0.010, 0.000, 0.665]], [0.151, [0.010, 0.000, 0.665]], [0.153, [0.000, 0.000, 0.678]], [0.155, [0.000, 0.000, 0.678]], [0.157, [0.000, 0.000, 0.694]], [0.159, [0.000, 0.000, 0.694]], [0.160, [0.000, 0.000, 0.710]], [0.162, [0.000, 0.000, 0.710]], [0.164, [0.000, 0.000, 0.726]], [0.166, [0.000, 0.000, 0.726]], [0.168, [0.000, 0.000, 0.741]], [0.170, [0.000, 0.000, 0.741]], [0.172, [0.000, 0.000, 0.757]], [0.174, [0.000, 0.000, 0.757]], [0.176, [0.000, 0.000, 0.773]], [0.178, [0.000, 0.000, 0.773]], [0.180, [0.000, 0.000, 0.788]], [0.182, [0.000, 0.000, 0.788]], [0.184, [0.000, 0.000, 0.804]], [0.186, [0.000, 0.000, 0.804]], [0.188, [0.000, 0.000, 0.820]], [0.190, [0.000, 0.000, 0.820]], [0.192, [0.000, 0.000, 0.835]], [0.194, [0.000, 0.000, 0.835]], [0.196, [0.000, 0.000, 0.851]], [0.198, [0.000, 0.000, 0.851]], [0.200, [0.000, 0.000, 0.867]], [0.202, [0.000, 0.000, 0.867]], [0.204, [0.000, 0.037, 0.867]], [0.205, [0.000, 0.037, 0.867]], [0.207, [0.000, 0.073, 0.867]], [0.209, [0.000, 0.073, 0.867]], [0.211, [0.000, 0.110, 0.867]], [0.213, [0.000, 0.110, 0.867]], [0.215, [0.000, 0.146, 0.867]], [0.217, [0.000, 0.146, 0.867]], [0.219, [0.000, 0.183, 0.867]], [0.221, [0.000, 0.183, 0.867]], [0.223, [0.000, 0.220, 0.867]], [0.225, [0.000, 0.220, 0.867]], [0.227, [0.000, 0.256, 0.867]], [0.229, [0.000, 0.256, 0.867]], [0.231, [0.000, 0.293, 0.867]], [0.233, [0.000, 0.293, 0.867]], [0.235, [0.000, 0.329, 0.867]], [0.237, [0.000, 0.329, 0.867]], [0.239, [0.000, 0.366, 0.867]], [0.241, [0.000, 0.366, 0.867]], [0.243, [0.000, 0.403, 0.867]], [0.245, [0.000, 0.403, 0.867]], [0.247, [0.000, 0.439, 0.867]], [0.249, [0.000, 0.439, 0.867]], [0.250, [0.000, 0.469, 0.867]], [0.252, [0.000, 0.469, 0.867]], [0.254, [0.000, 0.480, 0.867]], [0.256, [0.000, 0.480, 0.867]], [0.258, [0.000, 0.490, 0.867]], [0.260, [0.000, 0.490, 0.867]], [0.262, [0.000, 0.501, 0.867]], [0.264, [0.000, 0.501, 0.867]], [0.266, [0.000, 0.511, 0.867]], [0.268, [0.000, 0.511, 0.867]], [0.270, [0.000, 0.522, 0.867]], [0.272, [0.000, 0.522, 0.867]], [0.274, [0.000, 0.532, 0.867]], [0.276, [0.000, 0.532, 0.867]], [0.278, [0.000, 0.542, 0.867]], [0.280, [0.000, 0.542, 0.867]], [0.282, [0.000, 0.553, 0.867]], [0.284, [0.000, 0.553, 0.867]], [0.286, [0.000, 0.563, 0.867]], [0.288, [0.000, 0.563, 0.867]], [0.290, [0.000, 0.574, 0.867]], [0.292, [0.000, 0.574, 0.867]], [0.294, [0.000, 0.584, 0.867]], [0.295, [0.000, 0.584, 0.867]], [0.297, [0.000, 0.595, 0.867]], [0.299, [0.000, 0.595, 0.867]], [0.301, [0.000, 0.603, 0.859]], [0.303, [0.000, 0.603, 0.859]], [0.305, [0.000, 0.608, 0.843]], [0.307, [0.000, 0.608, 0.843]], [0.309, [0.000, 0.613, 0.827]], [0.311, [0.000, 0.613, 0.827]], [0.313, [0.000, 0.618, 0.812]], [0.315, [0.000, 0.618, 0.812]], [0.317, [0.000, 0.624, 0.796]], [0.319, [0.000, 0.624, 0.796]], [0.321, [0.000, 0.629, 0.780]], [0.323, [0.000, 0.629, 0.780]], [0.325, [0.000, 0.634, 0.765]], [0.327, [0.000, 0.634, 0.765]], [0.329, [0.000, 0.639, 0.749]], [0.331, [0.000, 0.639, 0.749]], [0.333, [0.000, 0.644, 0.733]], [0.335, [0.000, 0.644, 0.733]], [0.337, [0.000, 0.650, 0.718]], [0.339, [0.000, 0.650, 0.718]], [0.341, [0.000, 0.655, 0.702]], [0.342, [0.000, 0.655, 0.702]], [0.344, [0.000, 0.660, 0.686]], [0.346, [0.000, 0.660, 0.686]], [0.348, [0.000, 0.665, 0.671]], [0.350, [0.000, 0.665, 0.671]], [0.352, [0.000, 0.667, 0.659]], [0.354, [0.000, 0.667, 0.659]], [0.356, [0.000, 0.667, 0.648]], [0.358, [0.000, 0.667, 0.648]], [0.360, [0.000, 0.667, 0.638]], [0.362, [0.000, 0.667, 0.638]], [0.364, [0.000, 0.667, 0.627]], [0.366, [0.000, 0.667, 0.627]], [0.368, [0.000, 0.667, 0.617]], [0.370, [0.000, 0.667, 0.617]], [0.372, [0.000, 0.667, 0.607]], [0.374, [0.000, 0.667, 0.607]], [0.376, [0.000, 0.667, 0.596]], [0.378, [0.000, 0.667, 0.596]], [0.380, [0.000, 0.667, 0.586]], [0.382, [0.000, 0.667, 0.586]], [0.384, [0.000, 0.667, 0.575]], [0.386, [0.000, 0.667, 0.575]], [0.387, [0.000, 0.667, 0.565]], [0.389, [0.000, 0.667, 0.565]], [0.391, [0.000, 0.667, 0.554]], [0.393, [0.000, 0.667, 0.554]], [0.395, [0.000, 0.667, 0.544]], [0.397, [0.000, 0.667, 0.544]], [0.399, [0.000, 0.667, 0.533]], [0.401, [0.000, 0.667, 0.533]], [0.403, [0.000, 0.661, 0.491]], [0.405, [0.000, 0.661, 0.491]], [0.407, [0.000, 0.656, 0.450]], [0.409, [0.000, 0.656, 0.450]], [0.411, [0.000, 0.651, 0.408]], [0.413, [0.000, 0.651, 0.408]], [0.415, [0.000, 0.646, 0.366]], [0.417, [0.000, 0.646, 0.366]], [0.419, [0.000, 0.641, 0.324]], [0.421, [0.000, 0.641, 0.324]], [0.423, [0.000, 0.635, 0.282]], [0.425, [0.000, 0.635, 0.282]], [0.427, [0.000, 0.630, 0.241]], [0.429, [0.000, 0.630, 0.241]], [0.431, [0.000, 0.625, 0.199]], [0.432, [0.000, 0.625, 0.199]], [0.434, [0.000, 0.620, 0.157]], [0.436, [0.000, 0.620, 0.157]], [0.438, [0.000, 0.614, 0.115]], [0.440, [0.000, 0.614, 0.115]], [0.442, [0.000, 0.609, 0.073]], [0.444, [0.000, 0.609, 0.073]], [0.446, [0.000, 0.604, 0.031]], [0.448, [0.000, 0.604, 0.031]], [0.450, [0.000, 0.603, 0.000]], [0.452, [0.000, 0.603, 0.000]], [0.454, [0.000, 0.613, 0.000]], [0.456, [0.000, 0.613, 0.000]], [0.458, [0.000, 0.624, 0.000]], [0.460, [0.000, 0.624, 0.000]], [0.462, [0.000, 0.634, 0.000]], [0.464, [0.000, 0.634, 0.000]], [0.466, [0.000, 0.644, 0.000]], [0.468, [0.000, 0.644, 0.000]], [0.470, [0.000, 0.655, 0.000]], [0.472, [0.000, 0.655, 0.000]], [0.474, [0.000, 0.665, 0.000]], [0.476, [0.000, 0.665, 0.000]], [0.477, [0.000, 0.676, 0.000]], [0.479, [0.000, 0.676, 0.000]], [0.481, [0.000, 0.686, 0.000]], [0.483, [0.000, 0.686, 0.000]], [0.485, [0.000, 0.697, 0.000]], [0.487, [0.000, 0.697, 0.000]], [0.489, [0.000, 0.707, 0.000]], [0.491, [0.000, 0.707, 0.000]], [0.493, [0.000, 0.718, 0.000]], [0.495, [0.000, 0.718, 0.000]], [0.497, [0.000, 0.728, 0.000]], [0.499, [0.000, 0.728, 0.000]], [0.501, [0.000, 0.739, 0.000]], [0.503, [0.000, 0.739, 0.000]], [0.505, [0.000, 0.749, 0.000]], [0.507, [0.000, 0.749, 0.000]], [0.509, [0.000, 0.759, 0.000]], [0.511, [0.000, 0.759, 0.000]], [0.513, [0.000, 0.770, 0.000]], [0.515, [0.000, 0.770, 0.000]], [0.517, [0.000, 0.780, 0.000]], [0.519, [0.000, 0.780, 0.000]], [0.521, [0.000, 0.791, 0.000]], [0.523, [0.000, 0.791, 0.000]], [0.524, [0.000, 0.801, 0.000]], [0.526, [0.000, 0.801, 0.000]], [0.528, [0.000, 0.812, 0.000]], [0.530, [0.000, 0.812, 0.000]], [0.532, [0.000, 0.822, 0.000]], [0.534, [0.000, 0.822, 0.000]], [0.536, [0.000, 0.833, 0.000]], [0.538, [0.000, 0.833, 0.000]], [0.540, [0.000, 0.843, 0.000]], [0.542, [0.000, 0.843, 0.000]], [0.544, [0.000, 0.854, 0.000]], [0.546, [0.000, 0.854, 0.000]], [0.548, [0.000, 0.864, 0.000]], [0.550, [0.000, 0.864, 0.000]], [0.552, [0.000, 0.875, 0.000]], [0.554, [0.000, 0.875, 0.000]], [0.556, [0.000, 0.885, 0.000]], [0.558, [0.000, 0.885, 0.000]], [0.560, [0.000, 0.895, 0.000]], [0.562, [0.000, 0.895, 0.000]], [0.564, [0.000, 0.906, 0.000]], [0.566, [0.000, 0.906, 0.000]], [0.568, [0.000, 0.916, 0.000]], [0.569, [0.000, 0.916, 0.000]], [0.571, [0.000, 0.927, 0.000]], [0.573, [0.000, 0.927, 0.000]], [0.575, [0.000, 0.937, 0.000]], [0.577, [0.000, 0.937, 0.000]], [0.579, [0.000, 0.948, 0.000]], [0.581, [0.000, 0.948, 0.000]], [0.583, [0.000, 0.958, 0.000]], [0.585, [0.000, 0.958, 0.000]], [0.587, [0.000, 0.969, 0.000]], [0.589, [0.000, 0.969, 0.000]], [0.591, [0.000, 0.979, 0.000]], [0.593, [0.000, 0.979, 0.000]], [0.595, [0.000, 0.990, 0.000]], [0.597, [0.000, 0.990, 0.000]], [0.599, [0.000, 1.000, 0.000]], [0.601, [0.000, 1.000, 0.000]], [0.603, [0.058, 1.000, 0.000]], [0.605, [0.058, 1.000, 0.000]], [0.607, [0.115, 1.000, 0.000]], [0.609, [0.115, 1.000, 0.000]], [0.611, [0.173, 1.000, 0.000]], [0.613, [0.173, 1.000, 0.000]], [0.614, [0.230, 1.000, 0.000]], [0.616, [0.230, 1.000, 0.000]], [0.618, [0.288, 1.000, 0.000]], [0.620, [0.288, 1.000, 0.000]], [0.622, [0.345, 1.000, 0.000]], [0.624, [0.345, 1.000, 0.000]], [0.626, [0.403, 1.000, 0.000]], [0.628, [0.403, 1.000, 0.000]], [0.630, [0.460, 1.000, 0.000]], [0.632, [0.460, 1.000, 0.000]], [0.634, [0.518, 1.000, 0.000]], [0.636, [0.518, 1.000, 0.000]], [0.638, [0.575, 1.000, 0.000]], [0.640, [0.575, 1.000, 0.000]], [0.642, [0.633, 1.000, 0.000]], [0.644, [0.633, 1.000, 0.000]], [0.646, [0.690, 1.000, 0.000]], [0.648, [0.690, 1.000, 0.000]], [0.650, [0.737, 0.999, 0.000]], [0.652, [0.737, 0.999, 0.000]], [0.654, [0.753, 0.993, 0.000]], [0.656, [0.753, 0.993, 0.000]], [0.658, [0.769, 0.988, 0.000]], [0.659, [0.769, 0.988, 0.000]], [0.661, [0.784, 0.983, 0.000]], [0.663, [0.784, 0.983, 0.000]], [0.665, [0.800, 0.978, 0.000]], [0.667, [0.800, 0.978, 0.000]], [0.669, [0.816, 0.973, 0.000]], [0.671, [0.816, 0.973, 0.000]], [0.673, [0.831, 0.967, 0.000]], [0.675, [0.831, 0.967, 0.000]], [0.677, [0.847, 0.962, 0.000]], [0.679, [0.847, 0.962, 0.000]], [0.681, [0.863, 0.957, 0.000]], [0.683, [0.863, 0.957, 0.000]], [0.685, [0.878, 0.952, 0.000]], [0.687, [0.878, 0.952, 0.000]], [0.689, [0.894, 0.946, 0.000]], [0.691, [0.894, 0.946, 0.000]], [0.693, [0.910, 0.941, 0.000]], [0.695, [0.910, 0.941, 0.000]], [0.697, [0.925, 0.936, 0.000]], [0.699, [0.925, 0.936, 0.000]], [0.701, [0.936, 0.928, 0.000]], [0.703, [0.936, 0.928, 0.000]], [0.705, [0.941, 0.918, 0.000]], [0.706, [0.941, 0.918, 0.000]], [0.708, [0.946, 0.907, 0.000]], [0.710, [0.946, 0.907, 0.000]], [0.712, [0.952, 0.897, 0.000]], [0.714, [0.952, 0.897, 0.000]], [0.716, [0.957, 0.886, 0.000]], [0.718, [0.957, 0.886, 0.000]], [0.720, [0.962, 0.876, 0.000]], [0.722, [0.962, 0.876, 0.000]], [0.724, [0.967, 0.865, 0.000]], [0.726, [0.967, 0.865, 0.000]], [0.728, [0.973, 0.855, 0.000]], [0.730, [0.973, 0.855, 0.000]], [0.732, [0.978, 0.844, 0.000]], [0.734, [0.978, 0.844, 0.000]], [0.736, [0.983, 0.834, 0.000]], [0.738, [0.983, 0.834, 0.000]], [0.740, [0.988, 0.824, 0.000]], [0.742, [0.988, 0.824, 0.000]], [0.744, [0.993, 0.813, 0.000]], [0.746, [0.993, 0.813, 0.000]], [0.748, [0.999, 0.803, 0.000]], [0.750, [0.999, 0.803, 0.000]], [0.751, [1.000, 0.788, 0.000]], [0.753, [1.000, 0.788, 0.000]], [0.755, [1.000, 0.773, 0.000]], [0.757, [1.000, 0.773, 0.000]], [0.759, [1.000, 0.757, 0.000]], [0.761, [1.000, 0.757, 0.000]], [0.763, [1.000, 0.741, 0.000]], [0.765, [1.000, 0.741, 0.000]], [0.767, [1.000, 0.725, 0.000]], [0.769, [1.000, 0.725, 0.000]], [0.771, [1.000, 0.710, 0.000]], [0.773, [1.000, 0.710, 0.000]], [0.775, [1.000, 0.694, 0.000]], [0.777, [1.000, 0.694, 0.000]], [0.779, [1.000, 0.678, 0.000]], [0.781, [1.000, 0.678, 0.000]], [0.783, [1.000, 0.663, 0.000]], [0.785, [1.000, 0.663, 0.000]], [0.787, [1.000, 0.647, 0.000]], [0.789, [1.000, 0.647, 0.000]], [0.791, [1.000, 0.631, 0.000]], [0.793, [1.000, 0.631, 0.000]], [0.795, [1.000, 0.616, 0.000]], [0.796, [1.000, 0.616, 0.000]], [0.798, [1.000, 0.600, 0.000]], [0.800, [1.000, 0.600, 0.000]], [0.802, [1.000, 0.553, 0.000]], [0.804, [1.000, 0.553, 0.000]], [0.806, [1.000, 0.506, 0.000]], [0.808, [1.000, 0.506, 0.000]], [0.810, [1.000, 0.459, 0.000]], [0.812, [1.000, 0.459, 0.000]], [0.814, [1.000, 0.412, 0.000]], [0.816, [1.000, 0.412, 0.000]], [0.818, [1.000, 0.365, 0.000]], [0.820, [1.000, 0.365, 0.000]], [0.822, [1.000, 0.318, 0.000]], [0.824, [1.000, 0.318, 0.000]], [0.826, [1.000, 0.271, 0.000]], [0.828, [1.000, 0.271, 0.000]], [0.830, [1.000, 0.224, 0.000]], [0.832, [1.000, 0.224, 0.000]], [0.834, [1.000, 0.176, 0.000]], [0.836, [1.000, 0.176, 0.000]], [0.838, [1.000, 0.129, 0.000]], [0.840, [1.000, 0.129, 0.000]], [0.841, [1.000, 0.082, 0.000]], [0.843, [1.000, 0.082, 0.000]], [0.845, [1.000, 0.035, 0.000]], [0.847, [1.000, 0.035, 0.000]], [0.849, [0.997, 0.000, 0.000]], [0.851, [0.997, 0.000, 0.000]], [0.853, [0.987, 0.000, 0.000]], [0.855, [0.987, 0.000, 0.000]], [0.857, [0.976, 0.000, 0.000]], [0.859, [0.976, 0.000, 0.000]], [0.861, [0.966, 0.000, 0.000]], [0.863, [0.966, 0.000, 0.000]], [0.865, [0.956, 0.000, 0.000]], [0.867, [0.956, 0.000, 0.000]], [0.869, [0.945, 0.000, 0.000]], [0.871, [0.945, 0.000, 0.000]], [0.873, [0.935, 0.000, 0.000]], [0.875, [0.935, 0.000, 0.000]], [0.877, [0.924, 0.000, 0.000]], [0.879, [0.924, 0.000, 0.000]], [0.881, [0.914, 0.000, 0.000]], [0.883, [0.914, 0.000, 0.000]], [0.885, [0.903, 0.000, 0.000]], [0.886, [0.903, 0.000, 0.000]], [0.888, [0.893, 0.000, 0.000]], [0.890, [0.893, 0.000, 0.000]], [0.892, [0.882, 0.000, 0.000]], [0.894, [0.882, 0.000, 0.000]], [0.896, [0.872, 0.000, 0.000]], [0.898, [0.872, 0.000, 0.000]], [0.900, [0.864, 0.000, 0.000]], [0.902, [0.864, 0.000, 0.000]], [0.904, [0.859, 0.000, 0.000]], [0.906, [0.859, 0.000, 0.000]], [0.908, [0.854, 0.000, 0.000]], [0.910, [0.854, 0.000, 0.000]], [0.912, [0.848, 0.000, 0.000]], [0.914, [0.848, 0.000, 0.000]], [0.916, [0.843, 0.000, 0.000]], [0.918, [0.843, 0.000, 0.000]], [0.920, [0.838, 0.000, 0.000]], [0.922, [0.838, 0.000, 0.000]], [0.924, [0.833, 0.000, 0.000]], [0.926, [0.833, 0.000, 0.000]], [0.928, [0.827, 0.000, 0.000]], [0.930, [0.827, 0.000, 0.000]], [0.932, [0.822, 0.000, 0.000]], [0.933, [0.822, 0.000, 0.000]], [0.935, [0.817, 0.000, 0.000]], [0.937, [0.817, 0.000, 0.000]], [0.939, [0.812, 0.000, 0.000]], [0.941, [0.812, 0.000, 0.000]], [0.943, [0.807, 0.000, 0.000]], [0.945, [0.807, 0.000, 0.000]], [0.947, [0.801, 0.000, 0.000]], [0.949, [0.801, 0.000, 0.000]], [0.951, [0.800, 0.047, 0.047]], [0.953, [0.800, 0.047, 0.047]], [0.955, [0.800, 0.110, 0.110]], [0.957, [0.800, 0.110, 0.110]], [0.959, [0.800, 0.173, 0.173]], [0.961, [0.800, 0.173, 0.173]], [0.963, [0.800, 0.235, 0.235]], [0.965, [0.800, 0.235, 0.235]], [0.967, [0.800, 0.298, 0.298]], [0.969, [0.800, 0.298, 0.298]], [0.971, [0.800, 0.361, 0.361]], [0.973, [0.800, 0.361, 0.361]], [0.975, [0.800, 0.424, 0.424]], [0.977, [0.800, 0.424, 0.424]], [0.978, [0.800, 0.486, 0.486]], [0.980, [0.800, 0.486, 0.486]], [0.982, [0.800, 0.549, 0.549]], [0.984, [0.800, 0.549, 0.549]], [0.986, [0.800, 0.612, 0.612]], [0.988, [0.800, 0.612, 0.612]], [0.990, [0.800, 0.675, 0.675]], [0.992, [0.800, 0.675, 0.675]], [0.994, [0.800, 0.737, 0.737]], [0.996, [0.800, 0.737, 0.737]], [0.998, [0.800, 0.800, 0.800]], [1.000, [0.800, 0.800, 0.800]]]; +var ocean = [[0.000, [0.000, 0.500, 0.000]], [0.002, [0.000, 0.500, 0.000]], [0.004, [0.000, 0.494, 0.004]], [0.006, [0.000, 0.494, 0.004]], [0.008, [0.000, 0.488, 0.008]], [0.010, [0.000, 0.488, 0.008]], [0.012, [0.000, 0.482, 0.012]], [0.014, [0.000, 0.482, 0.012]], [0.016, [0.000, 0.476, 0.016]], [0.018, [0.000, 0.476, 0.016]], [0.020, [0.000, 0.471, 0.020]], [0.022, [0.000, 0.471, 0.020]], [0.023, [0.000, 0.465, 0.024]], [0.025, [0.000, 0.465, 0.024]], [0.027, [0.000, 0.459, 0.027]], [0.029, [0.000, 0.459, 0.027]], [0.031, [0.000, 0.453, 0.031]], [0.033, [0.000, 0.453, 0.031]], [0.035, [0.000, 0.447, 0.035]], [0.037, [0.000, 0.447, 0.035]], [0.039, [0.000, 0.441, 0.039]], [0.041, [0.000, 0.441, 0.039]], [0.043, [0.000, 0.435, 0.043]], [0.045, [0.000, 0.435, 0.043]], [0.047, [0.000, 0.429, 0.047]], [0.049, [0.000, 0.429, 0.047]], [0.051, [0.000, 0.424, 0.051]], [0.053, [0.000, 0.424, 0.051]], [0.055, [0.000, 0.418, 0.055]], [0.057, [0.000, 0.418, 0.055]], [0.059, [0.000, 0.412, 0.059]], [0.061, [0.000, 0.412, 0.059]], [0.063, [0.000, 0.406, 0.063]], [0.065, [0.000, 0.406, 0.063]], [0.067, [0.000, 0.400, 0.067]], [0.068, [0.000, 0.400, 0.067]], [0.070, [0.000, 0.394, 0.071]], [0.072, [0.000, 0.394, 0.071]], [0.074, [0.000, 0.388, 0.075]], [0.076, [0.000, 0.388, 0.075]], [0.078, [0.000, 0.382, 0.078]], [0.080, [0.000, 0.382, 0.078]], [0.082, [0.000, 0.376, 0.082]], [0.084, [0.000, 0.376, 0.082]], [0.086, [0.000, 0.371, 0.086]], [0.088, [0.000, 0.371, 0.086]], [0.090, [0.000, 0.365, 0.090]], [0.092, [0.000, 0.365, 0.090]], [0.094, [0.000, 0.359, 0.094]], [0.096, [0.000, 0.359, 0.094]], [0.098, [0.000, 0.353, 0.098]], [0.100, [0.000, 0.353, 0.098]], [0.102, [0.000, 0.347, 0.102]], [0.104, [0.000, 0.347, 0.102]], [0.106, [0.000, 0.341, 0.106]], [0.108, [0.000, 0.341, 0.106]], [0.110, [0.000, 0.335, 0.110]], [0.112, [0.000, 0.335, 0.110]], [0.114, [0.000, 0.329, 0.114]], [0.115, [0.000, 0.329, 0.114]], [0.117, [0.000, 0.324, 0.118]], [0.119, [0.000, 0.324, 0.118]], [0.121, [0.000, 0.318, 0.122]], [0.123, [0.000, 0.318, 0.122]], [0.125, [0.000, 0.312, 0.125]], [0.127, [0.000, 0.312, 0.125]], [0.129, [0.000, 0.306, 0.129]], [0.131, [0.000, 0.306, 0.129]], [0.133, [0.000, 0.300, 0.133]], [0.135, [0.000, 0.300, 0.133]], [0.137, [0.000, 0.294, 0.137]], [0.139, [0.000, 0.294, 0.137]], [0.141, [0.000, 0.288, 0.141]], [0.143, [0.000, 0.288, 0.141]], [0.145, [0.000, 0.282, 0.145]], [0.147, [0.000, 0.282, 0.145]], [0.149, [0.000, 0.276, 0.149]], [0.151, [0.000, 0.276, 0.149]], [0.153, [0.000, 0.271, 0.153]], [0.155, [0.000, 0.271, 0.153]], [0.157, [0.000, 0.265, 0.157]], [0.159, [0.000, 0.265, 0.157]], [0.160, [0.000, 0.259, 0.161]], [0.162, [0.000, 0.259, 0.161]], [0.164, [0.000, 0.253, 0.165]], [0.166, [0.000, 0.253, 0.165]], [0.168, [0.000, 0.247, 0.169]], [0.170, [0.000, 0.247, 0.169]], [0.172, [0.000, 0.241, 0.173]], [0.174, [0.000, 0.241, 0.173]], [0.176, [0.000, 0.235, 0.176]], [0.178, [0.000, 0.235, 0.176]], [0.180, [0.000, 0.229, 0.180]], [0.182, [0.000, 0.229, 0.180]], [0.184, [0.000, 0.224, 0.184]], [0.186, [0.000, 0.224, 0.184]], [0.188, [0.000, 0.218, 0.188]], [0.190, [0.000, 0.218, 0.188]], [0.192, [0.000, 0.212, 0.192]], [0.194, [0.000, 0.212, 0.192]], [0.196, [0.000, 0.206, 0.196]], [0.198, [0.000, 0.206, 0.196]], [0.200, [0.000, 0.200, 0.200]], [0.202, [0.000, 0.200, 0.200]], [0.204, [0.000, 0.194, 0.204]], [0.205, [0.000, 0.194, 0.204]], [0.207, [0.000, 0.188, 0.208]], [0.209, [0.000, 0.188, 0.208]], [0.211, [0.000, 0.182, 0.212]], [0.213, [0.000, 0.182, 0.212]], [0.215, [0.000, 0.176, 0.216]], [0.217, [0.000, 0.176, 0.216]], [0.219, [0.000, 0.171, 0.220]], [0.221, [0.000, 0.171, 0.220]], [0.223, [0.000, 0.165, 0.224]], [0.225, [0.000, 0.165, 0.224]], [0.227, [0.000, 0.159, 0.227]], [0.229, [0.000, 0.159, 0.227]], [0.231, [0.000, 0.153, 0.231]], [0.233, [0.000, 0.153, 0.231]], [0.235, [0.000, 0.147, 0.235]], [0.237, [0.000, 0.147, 0.235]], [0.239, [0.000, 0.141, 0.239]], [0.241, [0.000, 0.141, 0.239]], [0.243, [0.000, 0.135, 0.243]], [0.245, [0.000, 0.135, 0.243]], [0.247, [0.000, 0.129, 0.247]], [0.249, [0.000, 0.129, 0.247]], [0.250, [0.000, 0.124, 0.251]], [0.252, [0.000, 0.124, 0.251]], [0.254, [0.000, 0.118, 0.255]], [0.256, [0.000, 0.118, 0.255]], [0.258, [0.000, 0.112, 0.259]], [0.260, [0.000, 0.112, 0.259]], [0.262, [0.000, 0.106, 0.263]], [0.264, [0.000, 0.106, 0.263]], [0.266, [0.000, 0.100, 0.267]], [0.268, [0.000, 0.100, 0.267]], [0.270, [0.000, 0.094, 0.271]], [0.272, [0.000, 0.094, 0.271]], [0.274, [0.000, 0.088, 0.275]], [0.276, [0.000, 0.088, 0.275]], [0.278, [0.000, 0.082, 0.278]], [0.280, [0.000, 0.082, 0.278]], [0.282, [0.000, 0.076, 0.282]], [0.284, [0.000, 0.076, 0.282]], [0.286, [0.000, 0.071, 0.286]], [0.288, [0.000, 0.071, 0.286]], [0.290, [0.000, 0.065, 0.290]], [0.292, [0.000, 0.065, 0.290]], [0.294, [0.000, 0.059, 0.294]], [0.295, [0.000, 0.059, 0.294]], [0.297, [0.000, 0.053, 0.298]], [0.299, [0.000, 0.053, 0.298]], [0.301, [0.000, 0.047, 0.302]], [0.303, [0.000, 0.047, 0.302]], [0.305, [0.000, 0.041, 0.306]], [0.307, [0.000, 0.041, 0.306]], [0.309, [0.000, 0.035, 0.310]], [0.311, [0.000, 0.035, 0.310]], [0.313, [0.000, 0.029, 0.314]], [0.315, [0.000, 0.029, 0.314]], [0.317, [0.000, 0.024, 0.318]], [0.319, [0.000, 0.024, 0.318]], [0.321, [0.000, 0.018, 0.322]], [0.323, [0.000, 0.018, 0.322]], [0.325, [0.000, 0.012, 0.325]], [0.327, [0.000, 0.012, 0.325]], [0.329, [0.000, 0.006, 0.329]], [0.331, [0.000, 0.006, 0.329]], [0.333, [0.000, 0.000, 0.333]], [0.335, [0.000, 0.000, 0.333]], [0.337, [0.000, 0.006, 0.337]], [0.339, [0.000, 0.006, 0.337]], [0.341, [0.000, 0.012, 0.341]], [0.342, [0.000, 0.012, 0.341]], [0.344, [0.000, 0.018, 0.345]], [0.346, [0.000, 0.018, 0.345]], [0.348, [0.000, 0.024, 0.349]], [0.350, [0.000, 0.024, 0.349]], [0.352, [0.000, 0.029, 0.353]], [0.354, [0.000, 0.029, 0.353]], [0.356, [0.000, 0.035, 0.357]], [0.358, [0.000, 0.035, 0.357]], [0.360, [0.000, 0.041, 0.361]], [0.362, [0.000, 0.041, 0.361]], [0.364, [0.000, 0.047, 0.365]], [0.366, [0.000, 0.047, 0.365]], [0.368, [0.000, 0.053, 0.369]], [0.370, [0.000, 0.053, 0.369]], [0.372, [0.000, 0.059, 0.373]], [0.374, [0.000, 0.059, 0.373]], [0.376, [0.000, 0.065, 0.376]], [0.378, [0.000, 0.065, 0.376]], [0.380, [0.000, 0.071, 0.380]], [0.382, [0.000, 0.071, 0.380]], [0.384, [0.000, 0.076, 0.384]], [0.386, [0.000, 0.076, 0.384]], [0.387, [0.000, 0.082, 0.388]], [0.389, [0.000, 0.082, 0.388]], [0.391, [0.000, 0.088, 0.392]], [0.393, [0.000, 0.088, 0.392]], [0.395, [0.000, 0.094, 0.396]], [0.397, [0.000, 0.094, 0.396]], [0.399, [0.000, 0.100, 0.400]], [0.401, [0.000, 0.100, 0.400]], [0.403, [0.000, 0.106, 0.404]], [0.405, [0.000, 0.106, 0.404]], [0.407, [0.000, 0.112, 0.408]], [0.409, [0.000, 0.112, 0.408]], [0.411, [0.000, 0.118, 0.412]], [0.413, [0.000, 0.118, 0.412]], [0.415, [0.000, 0.124, 0.416]], [0.417, [0.000, 0.124, 0.416]], [0.419, [0.000, 0.129, 0.420]], [0.421, [0.000, 0.129, 0.420]], [0.423, [0.000, 0.135, 0.424]], [0.425, [0.000, 0.135, 0.424]], [0.427, [0.000, 0.141, 0.427]], [0.429, [0.000, 0.141, 0.427]], [0.431, [0.000, 0.147, 0.431]], [0.432, [0.000, 0.147, 0.431]], [0.434, [0.000, 0.153, 0.435]], [0.436, [0.000, 0.153, 0.435]], [0.438, [0.000, 0.159, 0.439]], [0.440, [0.000, 0.159, 0.439]], [0.442, [0.000, 0.165, 0.443]], [0.444, [0.000, 0.165, 0.443]], [0.446, [0.000, 0.171, 0.447]], [0.448, [0.000, 0.171, 0.447]], [0.450, [0.000, 0.176, 0.451]], [0.452, [0.000, 0.176, 0.451]], [0.454, [0.000, 0.182, 0.455]], [0.456, [0.000, 0.182, 0.455]], [0.458, [0.000, 0.188, 0.459]], [0.460, [0.000, 0.188, 0.459]], [0.462, [0.000, 0.194, 0.463]], [0.464, [0.000, 0.194, 0.463]], [0.466, [0.000, 0.200, 0.467]], [0.468, [0.000, 0.200, 0.467]], [0.470, [0.000, 0.206, 0.471]], [0.472, [0.000, 0.206, 0.471]], [0.474, [0.000, 0.212, 0.475]], [0.476, [0.000, 0.212, 0.475]], [0.477, [0.000, 0.218, 0.478]], [0.479, [0.000, 0.218, 0.478]], [0.481, [0.000, 0.224, 0.482]], [0.483, [0.000, 0.224, 0.482]], [0.485, [0.000, 0.229, 0.486]], [0.487, [0.000, 0.229, 0.486]], [0.489, [0.000, 0.235, 0.490]], [0.491, [0.000, 0.235, 0.490]], [0.493, [0.000, 0.241, 0.494]], [0.495, [0.000, 0.241, 0.494]], [0.497, [0.000, 0.247, 0.498]], [0.499, [0.000, 0.247, 0.498]], [0.501, [0.000, 0.253, 0.502]], [0.503, [0.000, 0.253, 0.502]], [0.505, [0.000, 0.259, 0.506]], [0.507, [0.000, 0.259, 0.506]], [0.509, [0.000, 0.265, 0.510]], [0.511, [0.000, 0.265, 0.510]], [0.513, [0.000, 0.271, 0.514]], [0.515, [0.000, 0.271, 0.514]], [0.517, [0.000, 0.276, 0.518]], [0.519, [0.000, 0.276, 0.518]], [0.521, [0.000, 0.282, 0.522]], [0.523, [0.000, 0.282, 0.522]], [0.524, [0.000, 0.288, 0.525]], [0.526, [0.000, 0.288, 0.525]], [0.528, [0.000, 0.294, 0.529]], [0.530, [0.000, 0.294, 0.529]], [0.532, [0.000, 0.300, 0.533]], [0.534, [0.000, 0.300, 0.533]], [0.536, [0.000, 0.306, 0.537]], [0.538, [0.000, 0.306, 0.537]], [0.540, [0.000, 0.312, 0.541]], [0.542, [0.000, 0.312, 0.541]], [0.544, [0.000, 0.318, 0.545]], [0.546, [0.000, 0.318, 0.545]], [0.548, [0.000, 0.324, 0.549]], [0.550, [0.000, 0.324, 0.549]], [0.552, [0.000, 0.329, 0.553]], [0.554, [0.000, 0.329, 0.553]], [0.556, [0.000, 0.335, 0.557]], [0.558, [0.000, 0.335, 0.557]], [0.560, [0.000, 0.341, 0.561]], [0.562, [0.000, 0.341, 0.561]], [0.564, [0.000, 0.347, 0.565]], [0.566, [0.000, 0.347, 0.565]], [0.568, [0.000, 0.353, 0.569]], [0.569, [0.000, 0.353, 0.569]], [0.571, [0.000, 0.359, 0.573]], [0.573, [0.000, 0.359, 0.573]], [0.575, [0.000, 0.365, 0.576]], [0.577, [0.000, 0.365, 0.576]], [0.579, [0.000, 0.371, 0.580]], [0.581, [0.000, 0.371, 0.580]], [0.583, [0.000, 0.376, 0.584]], [0.585, [0.000, 0.376, 0.584]], [0.587, [0.000, 0.382, 0.588]], [0.589, [0.000, 0.382, 0.588]], [0.591, [0.000, 0.388, 0.592]], [0.593, [0.000, 0.388, 0.592]], [0.595, [0.000, 0.394, 0.596]], [0.597, [0.000, 0.394, 0.596]], [0.599, [0.000, 0.400, 0.600]], [0.601, [0.000, 0.400, 0.600]], [0.603, [0.000, 0.406, 0.604]], [0.605, [0.000, 0.406, 0.604]], [0.607, [0.000, 0.412, 0.608]], [0.609, [0.000, 0.412, 0.608]], [0.611, [0.000, 0.418, 0.612]], [0.613, [0.000, 0.418, 0.612]], [0.614, [0.000, 0.424, 0.616]], [0.616, [0.000, 0.424, 0.616]], [0.618, [0.000, 0.429, 0.620]], [0.620, [0.000, 0.429, 0.620]], [0.622, [0.000, 0.435, 0.624]], [0.624, [0.000, 0.435, 0.624]], [0.626, [0.000, 0.441, 0.627]], [0.628, [0.000, 0.441, 0.627]], [0.630, [0.000, 0.447, 0.631]], [0.632, [0.000, 0.447, 0.631]], [0.634, [0.000, 0.453, 0.635]], [0.636, [0.000, 0.453, 0.635]], [0.638, [0.000, 0.459, 0.639]], [0.640, [0.000, 0.459, 0.639]], [0.642, [0.000, 0.465, 0.643]], [0.644, [0.000, 0.465, 0.643]], [0.646, [0.000, 0.471, 0.647]], [0.648, [0.000, 0.471, 0.647]], [0.650, [0.000, 0.476, 0.651]], [0.652, [0.000, 0.476, 0.651]], [0.654, [0.000, 0.482, 0.655]], [0.656, [0.000, 0.482, 0.655]], [0.658, [0.000, 0.488, 0.659]], [0.659, [0.000, 0.488, 0.659]], [0.661, [0.000, 0.494, 0.663]], [0.663, [0.000, 0.494, 0.663]], [0.665, [0.000, 0.500, 0.667]], [0.667, [0.000, 0.500, 0.667]], [0.669, [0.012, 0.506, 0.671]], [0.671, [0.012, 0.506, 0.671]], [0.673, [0.024, 0.512, 0.675]], [0.675, [0.024, 0.512, 0.675]], [0.677, [0.035, 0.518, 0.678]], [0.679, [0.035, 0.518, 0.678]], [0.681, [0.047, 0.524, 0.682]], [0.683, [0.047, 0.524, 0.682]], [0.685, [0.059, 0.529, 0.686]], [0.687, [0.059, 0.529, 0.686]], [0.689, [0.071, 0.535, 0.690]], [0.691, [0.071, 0.535, 0.690]], [0.693, [0.082, 0.541, 0.694]], [0.695, [0.082, 0.541, 0.694]], [0.697, [0.094, 0.547, 0.698]], [0.699, [0.094, 0.547, 0.698]], [0.701, [0.106, 0.553, 0.702]], [0.703, [0.106, 0.553, 0.702]], [0.705, [0.118, 0.559, 0.706]], [0.706, [0.118, 0.559, 0.706]], [0.708, [0.129, 0.565, 0.710]], [0.710, [0.129, 0.565, 0.710]], [0.712, [0.141, 0.571, 0.714]], [0.714, [0.141, 0.571, 0.714]], [0.716, [0.153, 0.576, 0.718]], [0.718, [0.153, 0.576, 0.718]], [0.720, [0.165, 0.582, 0.722]], [0.722, [0.165, 0.582, 0.722]], [0.724, [0.176, 0.588, 0.725]], [0.726, [0.176, 0.588, 0.725]], [0.728, [0.188, 0.594, 0.729]], [0.730, [0.188, 0.594, 0.729]], [0.732, [0.200, 0.600, 0.733]], [0.734, [0.200, 0.600, 0.733]], [0.736, [0.212, 0.606, 0.737]], [0.738, [0.212, 0.606, 0.737]], [0.740, [0.224, 0.612, 0.741]], [0.742, [0.224, 0.612, 0.741]], [0.744, [0.235, 0.618, 0.745]], [0.746, [0.235, 0.618, 0.745]], [0.748, [0.247, 0.624, 0.749]], [0.750, [0.247, 0.624, 0.749]], [0.751, [0.259, 0.629, 0.753]], [0.753, [0.259, 0.629, 0.753]], [0.755, [0.271, 0.635, 0.757]], [0.757, [0.271, 0.635, 0.757]], [0.759, [0.282, 0.641, 0.761]], [0.761, [0.282, 0.641, 0.761]], [0.763, [0.294, 0.647, 0.765]], [0.765, [0.294, 0.647, 0.765]], [0.767, [0.306, 0.653, 0.769]], [0.769, [0.306, 0.653, 0.769]], [0.771, [0.318, 0.659, 0.773]], [0.773, [0.318, 0.659, 0.773]], [0.775, [0.329, 0.665, 0.776]], [0.777, [0.329, 0.665, 0.776]], [0.779, [0.341, 0.671, 0.780]], [0.781, [0.341, 0.671, 0.780]], [0.783, [0.353, 0.676, 0.784]], [0.785, [0.353, 0.676, 0.784]], [0.787, [0.365, 0.682, 0.788]], [0.789, [0.365, 0.682, 0.788]], [0.791, [0.376, 0.688, 0.792]], [0.793, [0.376, 0.688, 0.792]], [0.795, [0.388, 0.694, 0.796]], [0.796, [0.388, 0.694, 0.796]], [0.798, [0.400, 0.700, 0.800]], [0.800, [0.400, 0.700, 0.800]], [0.802, [0.412, 0.706, 0.804]], [0.804, [0.412, 0.706, 0.804]], [0.806, [0.424, 0.712, 0.808]], [0.808, [0.424, 0.712, 0.808]], [0.810, [0.435, 0.718, 0.812]], [0.812, [0.435, 0.718, 0.812]], [0.814, [0.447, 0.724, 0.816]], [0.816, [0.447, 0.724, 0.816]], [0.818, [0.459, 0.729, 0.820]], [0.820, [0.459, 0.729, 0.820]], [0.822, [0.471, 0.735, 0.824]], [0.824, [0.471, 0.735, 0.824]], [0.826, [0.482, 0.741, 0.827]], [0.828, [0.482, 0.741, 0.827]], [0.830, [0.494, 0.747, 0.831]], [0.832, [0.494, 0.747, 0.831]], [0.834, [0.506, 0.753, 0.835]], [0.836, [0.506, 0.753, 0.835]], [0.838, [0.518, 0.759, 0.839]], [0.840, [0.518, 0.759, 0.839]], [0.841, [0.529, 0.765, 0.843]], [0.843, [0.529, 0.765, 0.843]], [0.845, [0.541, 0.771, 0.847]], [0.847, [0.541, 0.771, 0.847]], [0.849, [0.553, 0.776, 0.851]], [0.851, [0.553, 0.776, 0.851]], [0.853, [0.565, 0.782, 0.855]], [0.855, [0.565, 0.782, 0.855]], [0.857, [0.576, 0.788, 0.859]], [0.859, [0.576, 0.788, 0.859]], [0.861, [0.588, 0.794, 0.863]], [0.863, [0.588, 0.794, 0.863]], [0.865, [0.600, 0.800, 0.867]], [0.867, [0.600, 0.800, 0.867]], [0.869, [0.612, 0.806, 0.871]], [0.871, [0.612, 0.806, 0.871]], [0.873, [0.624, 0.812, 0.875]], [0.875, [0.624, 0.812, 0.875]], [0.877, [0.635, 0.818, 0.878]], [0.879, [0.635, 0.818, 0.878]], [0.881, [0.647, 0.824, 0.882]], [0.883, [0.647, 0.824, 0.882]], [0.885, [0.659, 0.829, 0.886]], [0.886, [0.659, 0.829, 0.886]], [0.888, [0.671, 0.835, 0.890]], [0.890, [0.671, 0.835, 0.890]], [0.892, [0.682, 0.841, 0.894]], [0.894, [0.682, 0.841, 0.894]], [0.896, [0.694, 0.847, 0.898]], [0.898, [0.694, 0.847, 0.898]], [0.900, [0.706, 0.853, 0.902]], [0.902, [0.706, 0.853, 0.902]], [0.904, [0.718, 0.859, 0.906]], [0.906, [0.718, 0.859, 0.906]], [0.908, [0.729, 0.865, 0.910]], [0.910, [0.729, 0.865, 0.910]], [0.912, [0.741, 0.871, 0.914]], [0.914, [0.741, 0.871, 0.914]], [0.916, [0.753, 0.876, 0.918]], [0.918, [0.753, 0.876, 0.918]], [0.920, [0.765, 0.882, 0.922]], [0.922, [0.765, 0.882, 0.922]], [0.924, [0.776, 0.888, 0.925]], [0.926, [0.776, 0.888, 0.925]], [0.928, [0.788, 0.894, 0.929]], [0.930, [0.788, 0.894, 0.929]], [0.932, [0.800, 0.900, 0.933]], [0.933, [0.800, 0.900, 0.933]], [0.935, [0.812, 0.906, 0.937]], [0.937, [0.812, 0.906, 0.937]], [0.939, [0.824, 0.912, 0.941]], [0.941, [0.824, 0.912, 0.941]], [0.943, [0.835, 0.918, 0.945]], [0.945, [0.835, 0.918, 0.945]], [0.947, [0.847, 0.924, 0.949]], [0.949, [0.847, 0.924, 0.949]], [0.951, [0.859, 0.929, 0.953]], [0.953, [0.859, 0.929, 0.953]], [0.955, [0.871, 0.935, 0.957]], [0.957, [0.871, 0.935, 0.957]], [0.959, [0.882, 0.941, 0.961]], [0.961, [0.882, 0.941, 0.961]], [0.963, [0.894, 0.947, 0.965]], [0.965, [0.894, 0.947, 0.965]], [0.967, [0.906, 0.953, 0.969]], [0.969, [0.906, 0.953, 0.969]], [0.971, [0.918, 0.959, 0.973]], [0.973, [0.918, 0.959, 0.973]], [0.975, [0.929, 0.965, 0.976]], [0.977, [0.929, 0.965, 0.976]], [0.978, [0.941, 0.971, 0.980]], [0.980, [0.941, 0.971, 0.980]], [0.982, [0.953, 0.976, 0.984]], [0.984, [0.953, 0.976, 0.984]], [0.986, [0.965, 0.982, 0.988]], [0.988, [0.965, 0.982, 0.988]], [0.990, [0.976, 0.988, 0.992]], [0.992, [0.976, 0.988, 0.992]], [0.994, [0.988, 0.994, 0.996]], [0.996, [0.988, 0.994, 0.996]], [0.998, [1.000, 1.000, 1.000]], [1.000, [1.000, 1.000, 1.000]]]; +var prism = [[0.000, [1.000, 0.000, -0.000]], [0.002, [1.000, 0.000, -0.000]], [0.004, [1.000, 0.000, 0.000]], [0.006, [1.000, 0.000, 0.000]], [0.008, [1.000, 0.130, 0.000]], [0.010, [1.000, 0.130, 0.000]], [0.012, [1.000, 0.320, 0.000]], [0.014, [1.000, 0.320, 0.000]], [0.016, [1.000, 0.512, 0.000]], [0.018, [1.000, 0.512, 0.000]], [0.020, [1.000, 0.691, 0.000]], [0.022, [1.000, 0.691, 0.000]], [0.023, [1.000, 0.846, 0.000]], [0.025, [1.000, 0.846, 0.000]], [0.027, [1.000, 0.968, 0.000]], [0.029, [1.000, 0.968, 0.000]], [0.031, [0.889, 1.000, 0.000]], [0.033, [0.889, 1.000, 0.000]], [0.035, [0.699, 1.000, 0.000]], [0.037, [0.699, 1.000, 0.000]], [0.039, [0.507, 1.000, 0.000]], [0.041, [0.507, 1.000, 0.000]], [0.043, [0.326, 0.997, 0.000]], [0.045, [0.326, 0.997, 0.000]], [0.047, [0.168, 0.887, 0.000]], [0.049, [0.168, 0.887, 0.000]], [0.051, [0.043, 0.741, 0.225]], [0.053, [0.043, 0.741, 0.225]], [0.055, [0.000, 0.567, 0.492]], [0.057, [0.000, 0.567, 0.492]], [0.059, [0.000, 0.378, 0.726]], [0.061, [0.000, 0.378, 0.726]], [0.063, [0.000, 0.186, 0.912]], [0.065, [0.000, 0.186, 0.912]], [0.067, [0.000, 0.004, 1.000]], [0.068, [0.000, 0.004, 1.000]], [0.070, [0.100, 0.000, 1.000]], [0.072, [0.100, 0.000, 1.000]], [0.074, [0.243, 0.000, 1.000]], [0.076, [0.243, 0.000, 1.000]], [0.078, [0.414, 0.000, 0.996]], [0.080, [0.414, 0.000, 0.996]], [0.082, [0.602, 0.000, 0.845]], [0.084, [0.602, 0.000, 0.845]], [0.086, [0.795, 0.000, 0.638]], [0.088, [0.795, 0.000, 0.638]], [0.090, [0.979, 0.000, 0.389]], [0.092, [0.979, 0.000, 0.389]], [0.094, [1.000, 0.000, 0.114]], [0.096, [1.000, 0.000, 0.114]], [0.098, [1.000, 0.000, 0.000]], [0.100, [1.000, 0.000, 0.000]], [0.102, [1.000, 0.056, 0.000]], [0.104, [1.000, 0.056, 0.000]], [0.106, [1.000, 0.243, 0.000]], [0.108, [1.000, 0.243, 0.000]], [0.110, [1.000, 0.435, 0.000]], [0.112, [1.000, 0.435, 0.000]], [0.114, [1.000, 0.621, 0.000]], [0.115, [1.000, 0.621, 0.000]], [0.117, [1.000, 0.787, 0.000]], [0.119, [1.000, 0.787, 0.000]], [0.121, [1.000, 0.924, 0.000]], [0.123, [1.000, 0.924, 0.000]], [0.125, [0.962, 1.000, 0.000]], [0.127, [0.962, 1.000, 0.000]], [0.129, [0.776, 1.000, 0.000]], [0.131, [0.776, 1.000, 0.000]], [0.133, [0.584, 1.000, 0.000]], [0.135, [0.584, 1.000, 0.000]], [0.137, [0.397, 1.000, 0.000]], [0.139, [0.397, 1.000, 0.000]], [0.141, [0.228, 0.936, 0.000]], [0.143, [0.228, 0.936, 0.000]], [0.145, [0.088, 0.803, 0.112]], [0.147, [0.088, 0.803, 0.112]], [0.149, [0.000, 0.640, 0.387]], [0.151, [0.000, 0.640, 0.387]], [0.153, [0.000, 0.456, 0.637]], [0.155, [0.000, 0.456, 0.637]], [0.157, [0.000, 0.263, 0.844]], [0.159, [0.000, 0.263, 0.844]], [0.160, [0.000, 0.075, 0.996]], [0.162, [0.000, 0.075, 0.996]], [0.164, [0.053, 0.000, 1.000]], [0.166, [0.053, 0.000, 1.000]], [0.168, [0.182, 0.000, 1.000]], [0.170, [0.182, 0.000, 1.000]], [0.172, [0.343, 0.000, 1.000]], [0.174, [0.343, 0.000, 1.000]], [0.176, [0.525, 0.000, 0.913]], [0.178, [0.525, 0.000, 0.913]], [0.180, [0.718, 0.000, 0.727]], [0.182, [0.718, 0.000, 0.727]], [0.184, [0.907, 0.000, 0.493]], [0.186, [0.907, 0.000, 0.493]], [0.188, [1.000, 0.000, 0.226]], [0.190, [1.000, 0.000, 0.226]], [0.192, [1.000, 0.000, 0.000]], [0.194, [1.000, 0.000, 0.000]], [0.196, [1.000, 0.000, 0.000]], [0.198, [1.000, 0.000, 0.000]], [0.200, [1.000, 0.166, 0.000]], [0.202, [1.000, 0.166, 0.000]], [0.204, [1.000, 0.358, 0.000]], [0.205, [1.000, 0.358, 0.000]], [0.207, [1.000, 0.548, 0.000]], [0.209, [1.000, 0.548, 0.000]], [0.211, [1.000, 0.724, 0.000]], [0.213, [1.000, 0.724, 0.000]], [0.215, [1.000, 0.873, 0.000]], [0.217, [1.000, 0.873, 0.000]], [0.219, [1.000, 0.987, 0.000]], [0.221, [1.000, 0.987, 0.000]], [0.223, [0.852, 1.000, 0.000]], [0.225, [0.852, 1.000, 0.000]], [0.227, [0.661, 1.000, 0.000]], [0.229, [0.661, 1.000, 0.000]], [0.231, [0.471, 1.000, 0.000]], [0.233, [0.471, 1.000, 0.000]], [0.235, [0.293, 0.978, 0.000]], [0.237, [0.293, 0.978, 0.000]], [0.239, [0.140, 0.861, 0.000]], [0.241, [0.140, 0.861, 0.000]], [0.243, [0.023, 0.709, 0.279]], [0.245, [0.023, 0.709, 0.279]], [0.247, [0.000, 0.531, 0.541]], [0.249, [0.000, 0.531, 0.541]], [0.250, [0.000, 0.341, 0.767]], [0.252, [0.000, 0.341, 0.767]], [0.254, [0.000, 0.149, 0.942]], [0.256, [0.000, 0.149, 0.942]], [0.258, [0.012, 0.000, 1.000]], [0.260, [0.012, 0.000, 1.000]], [0.262, [0.125, 0.000, 1.000]], [0.264, [0.125, 0.000, 1.000]], [0.266, [0.275, 0.000, 1.000]], [0.268, [0.275, 0.000, 1.000]], [0.270, [0.450, 0.000, 0.972]], [0.272, [0.450, 0.000, 0.972]], [0.274, [0.640, 0.000, 0.808]], [0.276, [0.640, 0.000, 0.808]], [0.278, [0.832, 0.000, 0.592]], [0.280, [0.832, 0.000, 0.592]], [0.282, [1.000, 0.000, 0.336]], [0.284, [1.000, 0.000, 0.336]], [0.286, [1.000, 0.000, 0.058]], [0.288, [1.000, 0.000, 0.058]], [0.290, [1.000, 0.000, 0.000]], [0.292, [1.000, 0.000, 0.000]], [0.294, [1.000, 0.092, 0.000]], [0.295, [1.000, 0.092, 0.000]], [0.297, [1.000, 0.281, 0.000]], [0.299, [1.000, 0.281, 0.000]], [0.301, [1.000, 0.473, 0.000]], [0.303, [1.000, 0.473, 0.000]], [0.305, [1.000, 0.656, 0.000]], [0.307, [1.000, 0.656, 0.000]], [0.309, [1.000, 0.817, 0.000]], [0.311, [1.000, 0.817, 0.000]], [0.313, [1.000, 0.946, 0.000]], [0.315, [1.000, 0.946, 0.000]], [0.317, [0.927, 1.000, 0.000]], [0.319, [0.927, 1.000, 0.000]], [0.321, [0.739, 1.000, 0.000]], [0.323, [0.739, 1.000, 0.000]], [0.325, [0.546, 1.000, 0.000]], [0.327, [0.546, 1.000, 0.000]], [0.329, [0.362, 1.000, 0.000]], [0.331, [0.362, 1.000, 0.000]], [0.333, [0.198, 0.913, 0.000]], [0.335, [0.198, 0.913, 0.000]], [0.337, [0.065, 0.773, 0.167]], [0.339, [0.065, 0.773, 0.167]], [0.341, [0.000, 0.605, 0.439]], [0.342, [0.000, 0.605, 0.439]], [0.344, [0.000, 0.418, 0.681]], [0.346, [0.000, 0.418, 0.681]], [0.348, [0.000, 0.225, 0.879]], [0.350, [0.000, 0.225, 0.879]], [0.352, [0.000, 0.040, 1.000]], [0.354, [0.000, 0.040, 1.000]], [0.356, [0.075, 0.000, 1.000]], [0.358, [0.075, 0.000, 1.000]], [0.360, [0.211, 0.000, 1.000]], [0.362, [0.211, 0.000, 1.000]], [0.364, [0.377, 0.000, 1.000]], [0.366, [0.377, 0.000, 1.000]], [0.368, [0.563, 0.000, 0.881]], [0.370, [0.563, 0.000, 0.881]], [0.372, [0.755, 0.000, 0.684]], [0.374, [0.755, 0.000, 0.684]], [0.376, [0.942, 0.000, 0.442]], [0.378, [0.942, 0.000, 0.442]], [0.380, [1.000, 0.000, 0.171]], [0.382, [1.000, 0.000, 0.171]], [0.384, [1.000, 0.000, 0.000]], [0.386, [1.000, 0.000, 0.000]], [0.387, [1.000, 0.019, 0.000]], [0.389, [1.000, 0.019, 0.000]], [0.391, [1.000, 0.204, 0.000]], [0.393, [1.000, 0.204, 0.000]], [0.395, [1.000, 0.396, 0.000]], [0.397, [1.000, 0.396, 0.000]], [0.399, [1.000, 0.584, 0.000]], [0.401, [1.000, 0.584, 0.000]], [0.403, [1.000, 0.755, 0.000]], [0.405, [1.000, 0.755, 0.000]], [0.407, [1.000, 0.899, 0.000]], [0.409, [1.000, 0.899, 0.000]], [0.411, [0.998, 1.000, 0.000]], [0.413, [0.998, 1.000, 0.000]], [0.415, [0.816, 1.000, 0.000]], [0.417, [0.816, 1.000, 0.000]], [0.419, [0.623, 1.000, 0.000]], [0.421, [0.623, 1.000, 0.000]], [0.423, [0.434, 1.000, 0.000]], [0.425, [0.434, 1.000, 0.000]], [0.427, [0.261, 0.958, 0.000]], [0.429, [0.261, 0.958, 0.000]], [0.431, [0.114, 0.834, 0.054]], [0.432, [0.114, 0.834, 0.054]], [0.434, [0.004, 0.675, 0.332]], [0.436, [0.004, 0.675, 0.332]], [0.438, [0.000, 0.495, 0.588]], [0.440, [0.000, 0.495, 0.588]], [0.442, [0.000, 0.303, 0.806]], [0.444, [0.000, 0.303, 0.806]], [0.446, [0.000, 0.113, 0.970]], [0.448, [0.000, 0.113, 0.970]], [0.450, [0.031, 0.000, 1.000]], [0.452, [0.031, 0.000, 1.000]], [0.454, [0.152, 0.000, 1.000]], [0.456, [0.152, 0.000, 1.000]], [0.458, [0.307, 0.000, 1.000]], [0.460, [0.307, 0.000, 1.000]], [0.462, [0.487, 0.000, 0.944]], [0.464, [0.487, 0.000, 0.944]], [0.466, [0.678, 0.000, 0.770]], [0.468, [0.678, 0.000, 0.770]], [0.470, [0.869, 0.000, 0.544]], [0.472, [0.869, 0.000, 0.544]], [0.474, [1.000, 0.000, 0.283]], [0.476, [1.000, 0.000, 0.283]], [0.477, [1.000, 0.000, 0.003]], [0.479, [1.000, 0.000, 0.003]], [0.481, [1.000, 0.000, 0.000]], [0.483, [1.000, 0.000, 0.000]], [0.485, [1.000, 0.128, 0.000]], [0.487, [1.000, 0.128, 0.000]], [0.489, [1.000, 0.318, 0.000]], [0.491, [1.000, 0.318, 0.000]], [0.493, [1.000, 0.510, 0.000]], [0.495, [1.000, 0.510, 0.000]], [0.497, [1.000, 0.689, 0.000]], [0.499, [1.000, 0.689, 0.000]], [0.501, [1.000, 0.845, 0.000]], [0.503, [1.000, 0.845, 0.000]], [0.505, [1.000, 0.967, 0.000]], [0.507, [1.000, 0.967, 0.000]], [0.509, [0.891, 1.000, 0.000]], [0.511, [0.891, 1.000, 0.000]], [0.513, [0.701, 1.000, 0.000]], [0.515, [0.701, 1.000, 0.000]], [0.517, [0.509, 1.000, 0.000]], [0.519, [0.509, 1.000, 0.000]], [0.521, [0.328, 0.997, 0.000]], [0.523, [0.328, 0.997, 0.000]], [0.524, [0.169, 0.888, 0.000]], [0.526, [0.169, 0.888, 0.000]], [0.528, [0.044, 0.742, 0.222]], [0.530, [0.044, 0.742, 0.222]], [0.532, [0.000, 0.569, 0.489]], [0.534, [0.000, 0.569, 0.489]], [0.536, [0.000, 0.380, 0.724]], [0.538, [0.000, 0.380, 0.724]], [0.540, [0.000, 0.188, 0.911]], [0.542, [0.000, 0.188, 0.911]], [0.544, [0.000, 0.005, 1.000]], [0.546, [0.000, 0.005, 1.000]], [0.548, [0.099, 0.000, 1.000]], [0.550, [0.099, 0.000, 1.000]], [0.552, [0.242, 0.000, 1.000]], [0.554, [0.242, 0.000, 1.000]], [0.556, [0.412, 0.000, 0.998]], [0.558, [0.412, 0.000, 0.998]], [0.560, [0.600, 0.000, 0.847]], [0.562, [0.600, 0.000, 0.847]], [0.564, [0.793, 0.000, 0.640]], [0.566, [0.793, 0.000, 0.640]], [0.568, [0.977, 0.000, 0.391]], [0.569, [0.977, 0.000, 0.391]], [0.571, [1.000, 0.000, 0.116]], [0.573, [1.000, 0.000, 0.116]], [0.575, [1.000, 0.000, 0.000]], [0.577, [1.000, 0.000, 0.000]], [0.579, [1.000, 0.054, 0.000]], [0.581, [1.000, 0.054, 0.000]], [0.583, [1.000, 0.241, 0.000]], [0.585, [1.000, 0.241, 0.000]], [0.587, [1.000, 0.434, 0.000]], [0.589, [1.000, 0.434, 0.000]], [0.591, [1.000, 0.619, 0.000]], [0.593, [1.000, 0.619, 0.000]], [0.595, [1.000, 0.786, 0.000]], [0.597, [1.000, 0.786, 0.000]], [0.599, [1.000, 0.923, 0.000]], [0.601, [1.000, 0.923, 0.000]], [0.603, [0.964, 1.000, 0.000]], [0.605, [0.964, 1.000, 0.000]], [0.607, [0.778, 1.000, 0.000]], [0.609, [0.778, 1.000, 0.000]], [0.611, [0.586, 1.000, 0.000]], [0.613, [0.586, 1.000, 0.000]], [0.614, [0.399, 1.000, 0.000]], [0.616, [0.399, 1.000, 0.000]], [0.618, [0.230, 0.937, 0.000]], [0.620, [0.230, 0.937, 0.000]], [0.622, [0.089, 0.805, 0.110]], [0.624, [0.089, 0.805, 0.110]], [0.626, [0.000, 0.641, 0.385]], [0.628, [0.000, 0.641, 0.385]], [0.630, [0.000, 0.457, 0.634]], [0.632, [0.000, 0.457, 0.634]], [0.634, [0.000, 0.265, 0.842]], [0.636, [0.000, 0.265, 0.842]], [0.638, [0.000, 0.077, 0.995]], [0.640, [0.000, 0.077, 0.995]], [0.642, [0.052, 0.000, 1.000]], [0.644, [0.052, 0.000, 1.000]], [0.646, [0.180, 0.000, 1.000]], [0.648, [0.180, 0.000, 1.000]], [0.650, [0.341, 0.000, 1.000]], [0.652, [0.341, 0.000, 1.000]], [0.654, [0.524, 0.000, 0.915]], [0.656, [0.524, 0.000, 0.915]], [0.658, [0.716, 0.000, 0.729]], [0.659, [0.716, 0.000, 0.729]], [0.661, [0.905, 0.000, 0.495]], [0.663, [0.905, 0.000, 0.495]], [0.665, [1.000, 0.000, 0.229]], [0.667, [1.000, 0.000, 0.229]], [0.669, [1.000, 0.000, 0.000]], [0.671, [1.000, 0.000, 0.000]], [0.673, [1.000, 0.000, 0.000]], [0.675, [1.000, 0.000, 0.000]], [0.677, [1.000, 0.165, 0.000]], [0.679, [1.000, 0.165, 0.000]], [0.681, [1.000, 0.356, 0.000]], [0.683, [1.000, 0.356, 0.000]], [0.685, [1.000, 0.546, 0.000]], [0.687, [1.000, 0.546, 0.000]], [0.689, [1.000, 0.722, 0.000]], [0.691, [1.000, 0.722, 0.000]], [0.693, [1.000, 0.872, 0.000]], [0.695, [1.000, 0.872, 0.000]], [0.697, [1.000, 0.986, 0.000]], [0.699, [1.000, 0.986, 0.000]], [0.701, [0.854, 1.000, 0.000]], [0.703, [0.854, 1.000, 0.000]], [0.705, [0.663, 1.000, 0.000]], [0.706, [0.663, 1.000, 0.000]], [0.708, [0.472, 1.000, 0.000]], [0.710, [0.472, 1.000, 0.000]], [0.712, [0.295, 0.979, 0.000]], [0.714, [0.295, 0.979, 0.000]], [0.716, [0.142, 0.862, 0.000]], [0.718, [0.142, 0.862, 0.000]], [0.720, [0.024, 0.710, 0.276]], [0.722, [0.024, 0.710, 0.276]], [0.724, [0.000, 0.533, 0.538]], [0.726, [0.000, 0.533, 0.538]], [0.728, [0.000, 0.342, 0.765]], [0.730, [0.000, 0.342, 0.765]], [0.732, [0.000, 0.151, 0.941]], [0.734, [0.000, 0.151, 0.941]], [0.736, [0.011, 0.000, 1.000]], [0.738, [0.011, 0.000, 1.000]], [0.740, [0.124, 0.000, 1.000]], [0.742, [0.124, 0.000, 1.000]], [0.744, [0.273, 0.000, 1.000]], [0.746, [0.273, 0.000, 1.000]], [0.748, [0.448, 0.000, 0.973]], [0.750, [0.448, 0.000, 0.973]], [0.751, [0.638, 0.000, 0.810]], [0.753, [0.638, 0.000, 0.810]], [0.755, [0.830, 0.000, 0.594]], [0.757, [0.830, 0.000, 0.594]], [0.759, [1.000, 0.000, 0.339]], [0.761, [1.000, 0.000, 0.339]], [0.763, [1.000, 0.000, 0.061]], [0.765, [1.000, 0.000, 0.061]], [0.767, [1.000, 0.000, 0.000]], [0.769, [1.000, 0.000, 0.000]], [0.771, [1.000, 0.090, 0.000]], [0.773, [1.000, 0.090, 0.000]], [0.775, [1.000, 0.279, 0.000]], [0.777, [1.000, 0.279, 0.000]], [0.779, [1.000, 0.471, 0.000]], [0.781, [1.000, 0.471, 0.000]], [0.783, [1.000, 0.654, 0.000]], [0.785, [1.000, 0.654, 0.000]], [0.787, [1.000, 0.816, 0.000]], [0.789, [1.000, 0.816, 0.000]], [0.791, [1.000, 0.945, 0.000]], [0.793, [1.000, 0.945, 0.000]], [0.795, [0.928, 1.000, 0.000]], [0.796, [0.928, 1.000, 0.000]], [0.798, [0.741, 1.000, 0.000]], [0.800, [0.741, 1.000, 0.000]], [0.802, [0.548, 1.000, 0.000]], [0.804, [0.548, 1.000, 0.000]], [0.806, [0.364, 1.000, 0.000]], [0.808, [0.364, 1.000, 0.000]], [0.810, [0.199, 0.914, 0.000]], [0.812, [0.199, 0.914, 0.000]], [0.814, [0.066, 0.775, 0.165]], [0.816, [0.066, 0.775, 0.165]], [0.818, [0.000, 0.607, 0.436]], [0.820, [0.000, 0.607, 0.436]], [0.822, [0.000, 0.420, 0.679]], [0.824, [0.000, 0.420, 0.679]], [0.826, [0.000, 0.227, 0.877]], [0.828, [0.000, 0.227, 0.877]], [0.830, [0.000, 0.041, 1.000]], [0.832, [0.000, 0.041, 1.000]], [0.834, [0.074, 0.000, 1.000]], [0.836, [0.074, 0.000, 1.000]], [0.838, [0.210, 0.000, 1.000]], [0.840, [0.210, 0.000, 1.000]], [0.841, [0.376, 0.000, 1.000]], [0.843, [0.376, 0.000, 1.000]], [0.845, [0.561, 0.000, 0.883]], [0.847, [0.561, 0.000, 0.883]], [0.849, [0.753, 0.000, 0.686]], [0.851, [0.753, 0.000, 0.686]], [0.853, [0.941, 0.000, 0.445]], [0.855, [0.941, 0.000, 0.445]], [0.857, [1.000, 0.000, 0.174]], [0.859, [1.000, 0.000, 0.174]], [0.861, [1.000, 0.000, 0.000]], [0.863, [1.000, 0.000, 0.000]], [0.865, [1.000, 0.018, 0.000]], [0.867, [1.000, 0.018, 0.000]], [0.869, [1.000, 0.202, 0.000]], [0.871, [1.000, 0.202, 0.000]], [0.873, [1.000, 0.394, 0.000]], [0.875, [1.000, 0.394, 0.000]], [0.877, [1.000, 0.582, 0.000]], [0.879, [1.000, 0.582, 0.000]], [0.881, [1.000, 0.754, 0.000]], [0.883, [1.000, 0.754, 0.000]], [0.885, [1.000, 0.897, 0.000]], [0.886, [1.000, 0.897, 0.000]], [0.888, [1.000, 1.000, 0.000]], [0.890, [1.000, 1.000, 0.000]], [0.892, [0.817, 1.000, 0.000]], [0.894, [0.817, 1.000, 0.000]], [0.896, [0.625, 1.000, 0.000]], [0.898, [0.625, 1.000, 0.000]], [0.900, [0.436, 1.000, 0.000]], [0.902, [0.436, 1.000, 0.000]], [0.904, [0.262, 0.960, 0.000]], [0.906, [0.262, 0.960, 0.000]], [0.908, [0.115, 0.835, 0.051]], [0.910, [0.115, 0.835, 0.051]], [0.912, [0.005, 0.677, 0.330]], [0.914, [0.005, 0.677, 0.330]], [0.916, [0.000, 0.496, 0.586]], [0.918, [0.000, 0.496, 0.586]], [0.920, [0.000, 0.305, 0.804]], [0.922, [0.000, 0.305, 0.804]], [0.924, [0.000, 0.115, 0.968]], [0.926, [0.000, 0.115, 0.968]], [0.928, [0.030, 0.000, 1.000]], [0.930, [0.030, 0.000, 1.000]], [0.932, [0.151, 0.000, 1.000]], [0.933, [0.151, 0.000, 1.000]], [0.935, [0.306, 0.000, 1.000]], [0.937, [0.306, 0.000, 1.000]], [0.939, [0.485, 0.000, 0.946]], [0.941, [0.485, 0.000, 0.946]], [0.943, [0.676, 0.000, 0.772]], [0.945, [0.676, 0.000, 0.772]], [0.947, [0.867, 0.000, 0.546]], [0.949, [0.867, 0.000, 0.546]], [0.951, [1.000, 0.000, 0.285]], [0.953, [1.000, 0.000, 0.285]], [0.955, [1.000, 0.000, 0.005]], [0.957, [1.000, 0.000, 0.005]], [0.959, [1.000, 0.000, 0.000]], [0.961, [1.000, 0.000, 0.000]], [0.963, [1.000, 0.126, 0.000]], [0.965, [1.000, 0.126, 0.000]], [0.967, [1.000, 0.317, 0.000]], [0.969, [1.000, 0.317, 0.000]], [0.971, [1.000, 0.508, 0.000]], [0.973, [1.000, 0.508, 0.000]], [0.975, [1.000, 0.688, 0.000]], [0.977, [1.000, 0.688, 0.000]], [0.978, [1.000, 0.844, 0.000]], [0.980, [1.000, 0.844, 0.000]], [0.982, [1.000, 0.966, 0.000]], [0.984, [1.000, 0.966, 0.000]], [0.986, [0.893, 1.000, 0.000]], [0.988, [0.893, 1.000, 0.000]], [0.990, [0.703, 1.000, 0.000]], [0.992, [0.703, 1.000, 0.000]], [0.994, [0.511, 1.000, 0.000]], [0.996, [0.511, 1.000, 0.000]], [0.998, [0.330, 0.998, 0.000]], [1.000, [0.330, 0.998, 0.000]]]; +var rainbow = [[0.000, [0.500, 0.000, 1.000]], [0.002, [0.500, 0.000, 1.000]], [0.004, [0.492, 0.012, 1.000]], [0.006, [0.492, 0.012, 1.000]], [0.008, [0.484, 0.025, 1.000]], [0.010, [0.484, 0.025, 1.000]], [0.012, [0.476, 0.037, 1.000]], [0.014, [0.476, 0.037, 1.000]], [0.016, [0.469, 0.049, 1.000]], [0.018, [0.469, 0.049, 1.000]], [0.020, [0.461, 0.062, 1.000]], [0.022, [0.461, 0.062, 1.000]], [0.023, [0.453, 0.074, 0.999]], [0.025, [0.453, 0.074, 0.999]], [0.027, [0.445, 0.086, 0.999]], [0.029, [0.445, 0.086, 0.999]], [0.031, [0.437, 0.098, 0.999]], [0.033, [0.437, 0.098, 0.999]], [0.035, [0.429, 0.111, 0.998]], [0.037, [0.429, 0.111, 0.998]], [0.039, [0.422, 0.123, 0.998]], [0.041, [0.422, 0.123, 0.998]], [0.043, [0.414, 0.135, 0.998]], [0.045, [0.414, 0.135, 0.998]], [0.047, [0.406, 0.147, 0.997]], [0.049, [0.406, 0.147, 0.997]], [0.051, [0.398, 0.159, 0.997]], [0.053, [0.398, 0.159, 0.997]], [0.055, [0.390, 0.172, 0.996]], [0.057, [0.390, 0.172, 0.996]], [0.059, [0.382, 0.184, 0.996]], [0.061, [0.382, 0.184, 0.996]], [0.063, [0.375, 0.196, 0.995]], [0.065, [0.375, 0.196, 0.995]], [0.067, [0.367, 0.208, 0.995]], [0.068, [0.367, 0.208, 0.995]], [0.070, [0.359, 0.220, 0.994]], [0.072, [0.359, 0.220, 0.994]], [0.074, [0.351, 0.232, 0.993]], [0.076, [0.351, 0.232, 0.993]], [0.078, [0.343, 0.244, 0.992]], [0.080, [0.343, 0.244, 0.992]], [0.082, [0.335, 0.256, 0.992]], [0.084, [0.335, 0.256, 0.992]], [0.086, [0.327, 0.268, 0.991]], [0.088, [0.327, 0.268, 0.991]], [0.090, [0.320, 0.280, 0.990]], [0.092, [0.320, 0.280, 0.990]], [0.094, [0.312, 0.291, 0.989]], [0.096, [0.312, 0.291, 0.989]], [0.098, [0.304, 0.303, 0.988]], [0.100, [0.304, 0.303, 0.988]], [0.102, [0.296, 0.315, 0.987]], [0.104, [0.296, 0.315, 0.987]], [0.106, [0.288, 0.327, 0.986]], [0.108, [0.288, 0.327, 0.986]], [0.110, [0.280, 0.338, 0.985]], [0.112, [0.280, 0.338, 0.985]], [0.114, [0.273, 0.350, 0.984]], [0.115, [0.273, 0.350, 0.984]], [0.117, [0.265, 0.361, 0.983]], [0.119, [0.265, 0.361, 0.983]], [0.121, [0.257, 0.373, 0.982]], [0.123, [0.257, 0.373, 0.982]], [0.125, [0.249, 0.384, 0.981]], [0.127, [0.249, 0.384, 0.981]], [0.129, [0.241, 0.395, 0.979]], [0.131, [0.241, 0.395, 0.979]], [0.133, [0.233, 0.407, 0.978]], [0.135, [0.233, 0.407, 0.978]], [0.137, [0.225, 0.418, 0.977]], [0.139, [0.225, 0.418, 0.977]], [0.141, [0.218, 0.429, 0.976]], [0.143, [0.218, 0.429, 0.976]], [0.145, [0.210, 0.440, 0.974]], [0.147, [0.210, 0.440, 0.974]], [0.149, [0.202, 0.451, 0.973]], [0.151, [0.202, 0.451, 0.973]], [0.153, [0.194, 0.462, 0.971]], [0.155, [0.194, 0.462, 0.971]], [0.157, [0.186, 0.473, 0.970]], [0.159, [0.186, 0.473, 0.970]], [0.160, [0.178, 0.484, 0.968]], [0.162, [0.178, 0.484, 0.968]], [0.164, [0.171, 0.495, 0.967]], [0.166, [0.171, 0.495, 0.967]], [0.168, [0.163, 0.505, 0.965]], [0.170, [0.163, 0.505, 0.965]], [0.172, [0.155, 0.516, 0.963]], [0.174, [0.155, 0.516, 0.963]], [0.176, [0.147, 0.526, 0.962]], [0.178, [0.147, 0.526, 0.962]], [0.180, [0.139, 0.537, 0.960]], [0.182, [0.139, 0.537, 0.960]], [0.184, [0.131, 0.547, 0.958]], [0.186, [0.131, 0.547, 0.958]], [0.188, [0.124, 0.557, 0.957]], [0.190, [0.124, 0.557, 0.957]], [0.192, [0.116, 0.568, 0.955]], [0.194, [0.116, 0.568, 0.955]], [0.196, [0.108, 0.578, 0.953]], [0.198, [0.108, 0.578, 0.953]], [0.200, [0.100, 0.588, 0.951]], [0.202, [0.100, 0.588, 0.951]], [0.204, [0.092, 0.598, 0.949]], [0.205, [0.092, 0.598, 0.949]], [0.207, [0.084, 0.608, 0.947]], [0.209, [0.084, 0.608, 0.947]], [0.211, [0.076, 0.617, 0.945]], [0.213, [0.076, 0.617, 0.945]], [0.215, [0.069, 0.627, 0.943]], [0.217, [0.069, 0.627, 0.943]], [0.219, [0.061, 0.636, 0.941]], [0.221, [0.061, 0.636, 0.941]], [0.223, [0.053, 0.646, 0.939]], [0.225, [0.053, 0.646, 0.939]], [0.227, [0.045, 0.655, 0.937]], [0.229, [0.045, 0.655, 0.937]], [0.231, [0.037, 0.665, 0.935]], [0.233, [0.037, 0.665, 0.935]], [0.235, [0.029, 0.674, 0.932]], [0.237, [0.029, 0.674, 0.932]], [0.239, [0.022, 0.683, 0.930]], [0.241, [0.022, 0.683, 0.930]], [0.243, [0.014, 0.692, 0.928]], [0.245, [0.014, 0.692, 0.928]], [0.247, [0.006, 0.701, 0.926]], [0.249, [0.006, 0.701, 0.926]], [0.250, [0.002, 0.709, 0.923]], [0.252, [0.002, 0.709, 0.923]], [0.254, [0.010, 0.718, 0.921]], [0.256, [0.010, 0.718, 0.921]], [0.258, [0.018, 0.726, 0.918]], [0.260, [0.018, 0.726, 0.918]], [0.262, [0.025, 0.735, 0.916]], [0.264, [0.025, 0.735, 0.916]], [0.266, [0.033, 0.743, 0.914]], [0.268, [0.033, 0.743, 0.914]], [0.270, [0.041, 0.751, 0.911]], [0.272, [0.041, 0.751, 0.911]], [0.274, [0.049, 0.759, 0.908]], [0.276, [0.049, 0.759, 0.908]], [0.278, [0.057, 0.767, 0.906]], [0.280, [0.057, 0.767, 0.906]], [0.282, [0.065, 0.775, 0.903]], [0.284, [0.065, 0.775, 0.903]], [0.286, [0.073, 0.783, 0.901]], [0.288, [0.073, 0.783, 0.901]], [0.290, [0.080, 0.791, 0.898]], [0.292, [0.080, 0.791, 0.898]], [0.294, [0.088, 0.798, 0.895]], [0.295, [0.088, 0.798, 0.895]], [0.297, [0.096, 0.805, 0.892]], [0.299, [0.096, 0.805, 0.892]], [0.301, [0.104, 0.813, 0.890]], [0.303, [0.104, 0.813, 0.890]], [0.305, [0.112, 0.820, 0.887]], [0.307, [0.112, 0.820, 0.887]], [0.309, [0.120, 0.827, 0.884]], [0.311, [0.120, 0.827, 0.884]], [0.313, [0.127, 0.834, 0.881]], [0.315, [0.127, 0.834, 0.881]], [0.317, [0.135, 0.840, 0.878]], [0.319, [0.135, 0.840, 0.878]], [0.321, [0.143, 0.847, 0.875]], [0.323, [0.143, 0.847, 0.875]], [0.325, [0.151, 0.853, 0.872]], [0.327, [0.151, 0.853, 0.872]], [0.329, [0.159, 0.860, 0.869]], [0.331, [0.159, 0.860, 0.869]], [0.333, [0.167, 0.866, 0.866]], [0.335, [0.167, 0.866, 0.866]], [0.337, [0.175, 0.872, 0.863]], [0.339, [0.175, 0.872, 0.863]], [0.341, [0.182, 0.878, 0.860]], [0.342, [0.182, 0.878, 0.860]], [0.344, [0.190, 0.884, 0.857]], [0.346, [0.190, 0.884, 0.857]], [0.348, [0.198, 0.890, 0.853]], [0.350, [0.198, 0.890, 0.853]], [0.352, [0.206, 0.895, 0.850]], [0.354, [0.206, 0.895, 0.850]], [0.356, [0.214, 0.901, 0.847]], [0.358, [0.214, 0.901, 0.847]], [0.360, [0.222, 0.906, 0.844]], [0.362, [0.222, 0.906, 0.844]], [0.364, [0.229, 0.911, 0.840]], [0.366, [0.229, 0.911, 0.840]], [0.368, [0.237, 0.916, 0.837]], [0.370, [0.237, 0.916, 0.837]], [0.372, [0.245, 0.921, 0.834]], [0.374, [0.245, 0.921, 0.834]], [0.376, [0.253, 0.926, 0.830]], [0.378, [0.253, 0.926, 0.830]], [0.380, [0.261, 0.930, 0.827]], [0.382, [0.261, 0.930, 0.827]], [0.384, [0.269, 0.935, 0.823]], [0.386, [0.269, 0.935, 0.823]], [0.387, [0.276, 0.939, 0.820]], [0.389, [0.276, 0.939, 0.820]], [0.391, [0.284, 0.943, 0.816]], [0.393, [0.284, 0.943, 0.816]], [0.395, [0.292, 0.947, 0.813]], [0.397, [0.292, 0.947, 0.813]], [0.399, [0.300, 0.951, 0.809]], [0.401, [0.300, 0.951, 0.809]], [0.403, [0.308, 0.955, 0.805]], [0.405, [0.308, 0.955, 0.805]], [0.407, [0.316, 0.958, 0.802]], [0.409, [0.316, 0.958, 0.802]], [0.411, [0.324, 0.962, 0.798]], [0.413, [0.324, 0.962, 0.798]], [0.415, [0.331, 0.965, 0.794]], [0.417, [0.331, 0.965, 0.794]], [0.419, [0.339, 0.968, 0.791]], [0.421, [0.339, 0.968, 0.791]], [0.423, [0.347, 0.971, 0.787]], [0.425, [0.347, 0.971, 0.787]], [0.427, [0.355, 0.974, 0.783]], [0.429, [0.355, 0.974, 0.783]], [0.431, [0.363, 0.977, 0.779]], [0.432, [0.363, 0.977, 0.779]], [0.434, [0.371, 0.979, 0.775]], [0.436, [0.371, 0.979, 0.775]], [0.438, [0.378, 0.982, 0.771]], [0.440, [0.378, 0.982, 0.771]], [0.442, [0.386, 0.984, 0.767]], [0.444, [0.386, 0.984, 0.767]], [0.446, [0.394, 0.986, 0.763]], [0.448, [0.394, 0.986, 0.763]], [0.450, [0.402, 0.988, 0.759]], [0.452, [0.402, 0.988, 0.759]], [0.454, [0.410, 0.990, 0.755]], [0.456, [0.410, 0.990, 0.755]], [0.458, [0.418, 0.992, 0.751]], [0.460, [0.418, 0.992, 0.751]], [0.462, [0.425, 0.993, 0.747]], [0.464, [0.425, 0.993, 0.747]], [0.466, [0.433, 0.995, 0.743]], [0.468, [0.433, 0.995, 0.743]], [0.470, [0.441, 0.996, 0.739]], [0.472, [0.441, 0.996, 0.739]], [0.474, [0.449, 0.997, 0.735]], [0.476, [0.449, 0.997, 0.735]], [0.477, [0.457, 0.998, 0.731]], [0.479, [0.457, 0.998, 0.731]], [0.481, [0.465, 0.998, 0.726]], [0.483, [0.465, 0.998, 0.726]], [0.485, [0.473, 0.999, 0.722]], [0.487, [0.473, 0.999, 0.722]], [0.489, [0.480, 1.000, 0.718]], [0.491, [0.480, 1.000, 0.718]], [0.493, [0.488, 1.000, 0.714]], [0.495, [0.488, 1.000, 0.714]], [0.497, [0.496, 1.000, 0.709]], [0.499, [0.496, 1.000, 0.709]], [0.501, [0.504, 1.000, 0.705]], [0.503, [0.504, 1.000, 0.705]], [0.505, [0.512, 1.000, 0.701]], [0.507, [0.512, 1.000, 0.701]], [0.509, [0.520, 1.000, 0.696]], [0.511, [0.520, 1.000, 0.696]], [0.513, [0.527, 0.999, 0.692]], [0.515, [0.527, 0.999, 0.692]], [0.517, [0.535, 0.998, 0.687]], [0.519, [0.535, 0.998, 0.687]], [0.521, [0.543, 0.998, 0.683]], [0.523, [0.543, 0.998, 0.683]], [0.524, [0.551, 0.997, 0.678]], [0.526, [0.551, 0.997, 0.678]], [0.528, [0.559, 0.996, 0.674]], [0.530, [0.559, 0.996, 0.674]], [0.532, [0.567, 0.995, 0.669]], [0.534, [0.567, 0.995, 0.669]], [0.536, [0.575, 0.993, 0.665]], [0.538, [0.575, 0.993, 0.665]], [0.540, [0.582, 0.992, 0.660]], [0.542, [0.582, 0.992, 0.660]], [0.544, [0.590, 0.990, 0.655]], [0.546, [0.590, 0.990, 0.655]], [0.548, [0.598, 0.988, 0.651]], [0.550, [0.598, 0.988, 0.651]], [0.552, [0.606, 0.986, 0.646]], [0.554, [0.606, 0.986, 0.646]], [0.556, [0.614, 0.984, 0.641]], [0.558, [0.614, 0.984, 0.641]], [0.560, [0.622, 0.982, 0.636]], [0.562, [0.622, 0.982, 0.636]], [0.564, [0.629, 0.979, 0.632]], [0.566, [0.629, 0.979, 0.632]], [0.568, [0.637, 0.977, 0.627]], [0.569, [0.637, 0.977, 0.627]], [0.571, [0.645, 0.974, 0.622]], [0.573, [0.645, 0.974, 0.622]], [0.575, [0.653, 0.971, 0.617]], [0.577, [0.653, 0.971, 0.617]], [0.579, [0.661, 0.968, 0.612]], [0.581, [0.661, 0.968, 0.612]], [0.583, [0.669, 0.965, 0.608]], [0.585, [0.669, 0.965, 0.608]], [0.587, [0.676, 0.962, 0.603]], [0.589, [0.676, 0.962, 0.603]], [0.591, [0.684, 0.958, 0.598]], [0.593, [0.684, 0.958, 0.598]], [0.595, [0.692, 0.955, 0.593]], [0.597, [0.692, 0.955, 0.593]], [0.599, [0.700, 0.951, 0.588]], [0.601, [0.700, 0.951, 0.588]], [0.603, [0.708, 0.947, 0.583]], [0.605, [0.708, 0.947, 0.583]], [0.607, [0.716, 0.943, 0.578]], [0.609, [0.716, 0.943, 0.578]], [0.611, [0.724, 0.939, 0.573]], [0.613, [0.724, 0.939, 0.573]], [0.614, [0.731, 0.935, 0.568]], [0.616, [0.731, 0.935, 0.568]], [0.618, [0.739, 0.930, 0.563]], [0.620, [0.739, 0.930, 0.563]], [0.622, [0.747, 0.926, 0.557]], [0.624, [0.747, 0.926, 0.557]], [0.626, [0.755, 0.921, 0.552]], [0.628, [0.755, 0.921, 0.552]], [0.630, [0.763, 0.916, 0.547]], [0.632, [0.763, 0.916, 0.547]], [0.634, [0.771, 0.911, 0.542]], [0.636, [0.771, 0.911, 0.542]], [0.638, [0.778, 0.906, 0.537]], [0.640, [0.778, 0.906, 0.537]], [0.642, [0.786, 0.901, 0.532]], [0.644, [0.786, 0.901, 0.532]], [0.646, [0.794, 0.895, 0.526]], [0.648, [0.794, 0.895, 0.526]], [0.650, [0.802, 0.890, 0.521]], [0.652, [0.802, 0.890, 0.521]], [0.654, [0.810, 0.884, 0.516]], [0.656, [0.810, 0.884, 0.516]], [0.658, [0.818, 0.878, 0.511]], [0.659, [0.818, 0.878, 0.511]], [0.661, [0.825, 0.872, 0.505]], [0.663, [0.825, 0.872, 0.505]], [0.665, [0.833, 0.866, 0.500]], [0.667, [0.833, 0.866, 0.500]], [0.669, [0.841, 0.860, 0.495]], [0.671, [0.841, 0.860, 0.495]], [0.673, [0.849, 0.853, 0.489]], [0.675, [0.849, 0.853, 0.489]], [0.677, [0.857, 0.847, 0.484]], [0.679, [0.857, 0.847, 0.484]], [0.681, [0.865, 0.840, 0.479]], [0.683, [0.865, 0.840, 0.479]], [0.685, [0.873, 0.834, 0.473]], [0.687, [0.873, 0.834, 0.473]], [0.689, [0.880, 0.827, 0.468]], [0.691, [0.880, 0.827, 0.468]], [0.693, [0.888, 0.820, 0.462]], [0.695, [0.888, 0.820, 0.462]], [0.697, [0.896, 0.813, 0.457]], [0.699, [0.896, 0.813, 0.457]], [0.701, [0.904, 0.805, 0.451]], [0.703, [0.904, 0.805, 0.451]], [0.705, [0.912, 0.798, 0.446]], [0.706, [0.912, 0.798, 0.446]], [0.708, [0.920, 0.791, 0.440]], [0.710, [0.920, 0.791, 0.440]], [0.712, [0.927, 0.783, 0.435]], [0.714, [0.927, 0.783, 0.435]], [0.716, [0.935, 0.775, 0.429]], [0.718, [0.935, 0.775, 0.429]], [0.720, [0.943, 0.767, 0.424]], [0.722, [0.943, 0.767, 0.424]], [0.724, [0.951, 0.759, 0.418]], [0.726, [0.951, 0.759, 0.418]], [0.728, [0.959, 0.751, 0.412]], [0.730, [0.959, 0.751, 0.412]], [0.732, [0.967, 0.743, 0.407]], [0.734, [0.967, 0.743, 0.407]], [0.736, [0.975, 0.735, 0.401]], [0.738, [0.975, 0.735, 0.401]], [0.740, [0.982, 0.726, 0.395]], [0.742, [0.982, 0.726, 0.395]], [0.744, [0.990, 0.718, 0.390]], [0.746, [0.990, 0.718, 0.390]], [0.748, [0.998, 0.709, 0.384]], [0.750, [0.998, 0.709, 0.384]], [0.751, [1.000, 0.701, 0.378]], [0.753, [1.000, 0.701, 0.378]], [0.755, [1.000, 0.692, 0.373]], [0.757, [1.000, 0.692, 0.373]], [0.759, [1.000, 0.683, 0.367]], [0.761, [1.000, 0.683, 0.367]], [0.763, [1.000, 0.674, 0.361]], [0.765, [1.000, 0.674, 0.361]], [0.767, [1.000, 0.665, 0.355]], [0.769, [1.000, 0.665, 0.355]], [0.771, [1.000, 0.655, 0.350]], [0.773, [1.000, 0.655, 0.350]], [0.775, [1.000, 0.646, 0.344]], [0.777, [1.000, 0.646, 0.344]], [0.779, [1.000, 0.636, 0.338]], [0.781, [1.000, 0.636, 0.338]], [0.783, [1.000, 0.627, 0.332]], [0.785, [1.000, 0.627, 0.332]], [0.787, [1.000, 0.617, 0.327]], [0.789, [1.000, 0.617, 0.327]], [0.791, [1.000, 0.608, 0.321]], [0.793, [1.000, 0.608, 0.321]], [0.795, [1.000, 0.598, 0.315]], [0.796, [1.000, 0.598, 0.315]], [0.798, [1.000, 0.588, 0.309]], [0.800, [1.000, 0.588, 0.309]], [0.802, [1.000, 0.578, 0.303]], [0.804, [1.000, 0.578, 0.303]], [0.806, [1.000, 0.568, 0.297]], [0.808, [1.000, 0.568, 0.297]], [0.810, [1.000, 0.557, 0.291]], [0.812, [1.000, 0.557, 0.291]], [0.814, [1.000, 0.547, 0.285]], [0.816, [1.000, 0.547, 0.285]], [0.818, [1.000, 0.537, 0.280]], [0.820, [1.000, 0.537, 0.280]], [0.822, [1.000, 0.526, 0.274]], [0.824, [1.000, 0.526, 0.274]], [0.826, [1.000, 0.516, 0.268]], [0.828, [1.000, 0.516, 0.268]], [0.830, [1.000, 0.505, 0.262]], [0.832, [1.000, 0.505, 0.262]], [0.834, [1.000, 0.495, 0.256]], [0.836, [1.000, 0.495, 0.256]], [0.838, [1.000, 0.484, 0.250]], [0.840, [1.000, 0.484, 0.250]], [0.841, [1.000, 0.473, 0.244]], [0.843, [1.000, 0.473, 0.244]], [0.845, [1.000, 0.462, 0.238]], [0.847, [1.000, 0.462, 0.238]], [0.849, [1.000, 0.451, 0.232]], [0.851, [1.000, 0.451, 0.232]], [0.853, [1.000, 0.440, 0.226]], [0.855, [1.000, 0.440, 0.226]], [0.857, [1.000, 0.429, 0.220]], [0.859, [1.000, 0.429, 0.220]], [0.861, [1.000, 0.418, 0.214]], [0.863, [1.000, 0.418, 0.214]], [0.865, [1.000, 0.407, 0.208]], [0.867, [1.000, 0.407, 0.208]], [0.869, [1.000, 0.395, 0.202]], [0.871, [1.000, 0.395, 0.202]], [0.873, [1.000, 0.384, 0.196]], [0.875, [1.000, 0.384, 0.196]], [0.877, [1.000, 0.373, 0.190]], [0.879, [1.000, 0.373, 0.190]], [0.881, [1.000, 0.361, 0.184]], [0.883, [1.000, 0.361, 0.184]], [0.885, [1.000, 0.350, 0.178]], [0.886, [1.000, 0.350, 0.178]], [0.888, [1.000, 0.338, 0.172]], [0.890, [1.000, 0.338, 0.172]], [0.892, [1.000, 0.327, 0.166]], [0.894, [1.000, 0.327, 0.166]], [0.896, [1.000, 0.315, 0.159]], [0.898, [1.000, 0.315, 0.159]], [0.900, [1.000, 0.303, 0.153]], [0.902, [1.000, 0.303, 0.153]], [0.904, [1.000, 0.291, 0.147]], [0.906, [1.000, 0.291, 0.147]], [0.908, [1.000, 0.280, 0.141]], [0.910, [1.000, 0.280, 0.141]], [0.912, [1.000, 0.268, 0.135]], [0.914, [1.000, 0.268, 0.135]], [0.916, [1.000, 0.256, 0.129]], [0.918, [1.000, 0.256, 0.129]], [0.920, [1.000, 0.244, 0.123]], [0.922, [1.000, 0.244, 0.123]], [0.924, [1.000, 0.232, 0.117]], [0.926, [1.000, 0.232, 0.117]], [0.928, [1.000, 0.220, 0.111]], [0.930, [1.000, 0.220, 0.111]], [0.932, [1.000, 0.208, 0.105]], [0.933, [1.000, 0.208, 0.105]], [0.935, [1.000, 0.196, 0.098]], [0.937, [1.000, 0.196, 0.098]], [0.939, [1.000, 0.184, 0.092]], [0.941, [1.000, 0.184, 0.092]], [0.943, [1.000, 0.172, 0.086]], [0.945, [1.000, 0.172, 0.086]], [0.947, [1.000, 0.159, 0.080]], [0.949, [1.000, 0.159, 0.080]], [0.951, [1.000, 0.147, 0.074]], [0.953, [1.000, 0.147, 0.074]], [0.955, [1.000, 0.135, 0.068]], [0.957, [1.000, 0.135, 0.068]], [0.959, [1.000, 0.123, 0.062]], [0.961, [1.000, 0.123, 0.062]], [0.963, [1.000, 0.111, 0.055]], [0.965, [1.000, 0.111, 0.055]], [0.967, [1.000, 0.098, 0.049]], [0.969, [1.000, 0.098, 0.049]], [0.971, [1.000, 0.086, 0.043]], [0.973, [1.000, 0.086, 0.043]], [0.975, [1.000, 0.074, 0.037]], [0.977, [1.000, 0.074, 0.037]], [0.978, [1.000, 0.062, 0.031]], [0.980, [1.000, 0.062, 0.031]], [0.982, [1.000, 0.049, 0.025]], [0.984, [1.000, 0.049, 0.025]], [0.986, [1.000, 0.037, 0.018]], [0.988, [1.000, 0.037, 0.018]], [0.990, [1.000, 0.025, 0.012]], [0.992, [1.000, 0.025, 0.012]], [0.994, [1.000, 0.012, 0.006]], [0.996, [1.000, 0.012, 0.006]], [0.998, [1.000, 0.000, 0.000]], [1.000, [1.000, 0.000, 0.000]]]; +var terrain = [[0.000, [0.200, 0.200, 0.600]], [0.002, [0.200, 0.200, 0.600]], [0.004, [0.195, 0.210, 0.610]], [0.006, [0.195, 0.210, 0.610]], [0.008, [0.190, 0.221, 0.621]], [0.010, [0.190, 0.221, 0.621]], [0.012, [0.184, 0.231, 0.631]], [0.014, [0.184, 0.231, 0.631]], [0.016, [0.179, 0.242, 0.642]], [0.018, [0.179, 0.242, 0.642]], [0.020, [0.174, 0.252, 0.652]], [0.022, [0.174, 0.252, 0.652]], [0.023, [0.169, 0.263, 0.663]], [0.025, [0.169, 0.263, 0.663]], [0.027, [0.163, 0.273, 0.673]], [0.029, [0.163, 0.273, 0.673]], [0.031, [0.158, 0.284, 0.684]], [0.033, [0.158, 0.284, 0.684]], [0.035, [0.153, 0.294, 0.694]], [0.037, [0.153, 0.294, 0.694]], [0.039, [0.148, 0.305, 0.705]], [0.041, [0.148, 0.305, 0.705]], [0.043, [0.142, 0.315, 0.715]], [0.045, [0.142, 0.315, 0.715]], [0.047, [0.137, 0.325, 0.725]], [0.049, [0.137, 0.325, 0.725]], [0.051, [0.132, 0.336, 0.736]], [0.053, [0.132, 0.336, 0.736]], [0.055, [0.127, 0.346, 0.746]], [0.057, [0.127, 0.346, 0.746]], [0.059, [0.122, 0.357, 0.757]], [0.061, [0.122, 0.357, 0.757]], [0.063, [0.116, 0.367, 0.767]], [0.065, [0.116, 0.367, 0.767]], [0.067, [0.111, 0.378, 0.778]], [0.068, [0.111, 0.378, 0.778]], [0.070, [0.106, 0.388, 0.788]], [0.072, [0.106, 0.388, 0.788]], [0.074, [0.101, 0.399, 0.799]], [0.076, [0.101, 0.399, 0.799]], [0.078, [0.095, 0.409, 0.809]], [0.080, [0.095, 0.409, 0.809]], [0.082, [0.090, 0.420, 0.820]], [0.084, [0.090, 0.420, 0.820]], [0.086, [0.085, 0.430, 0.830]], [0.088, [0.085, 0.430, 0.830]], [0.090, [0.080, 0.441, 0.841]], [0.092, [0.080, 0.441, 0.841]], [0.094, [0.075, 0.451, 0.851]], [0.096, [0.075, 0.451, 0.851]], [0.098, [0.069, 0.461, 0.861]], [0.100, [0.069, 0.461, 0.861]], [0.102, [0.064, 0.472, 0.872]], [0.104, [0.064, 0.472, 0.872]], [0.106, [0.059, 0.482, 0.882]], [0.108, [0.059, 0.482, 0.882]], [0.110, [0.054, 0.493, 0.893]], [0.112, [0.054, 0.493, 0.893]], [0.114, [0.048, 0.503, 0.903]], [0.115, [0.048, 0.503, 0.903]], [0.117, [0.043, 0.514, 0.914]], [0.119, [0.043, 0.514, 0.914]], [0.121, [0.038, 0.524, 0.924]], [0.123, [0.038, 0.524, 0.924]], [0.125, [0.033, 0.535, 0.935]], [0.127, [0.033, 0.535, 0.935]], [0.129, [0.027, 0.545, 0.945]], [0.131, [0.027, 0.545, 0.945]], [0.133, [0.022, 0.556, 0.956]], [0.135, [0.022, 0.556, 0.956]], [0.137, [0.017, 0.566, 0.966]], [0.139, [0.017, 0.566, 0.966]], [0.141, [0.012, 0.576, 0.976]], [0.143, [0.012, 0.576, 0.976]], [0.145, [0.007, 0.587, 0.987]], [0.147, [0.007, 0.587, 0.987]], [0.149, [0.001, 0.597, 0.997]], [0.151, [0.001, 0.597, 0.997]], [0.153, [0.000, 0.606, 0.982]], [0.155, [0.000, 0.606, 0.982]], [0.157, [0.000, 0.614, 0.959]], [0.159, [0.000, 0.614, 0.959]], [0.160, [0.000, 0.622, 0.935]], [0.162, [0.000, 0.622, 0.935]], [0.164, [0.000, 0.629, 0.912]], [0.166, [0.000, 0.629, 0.912]], [0.168, [0.000, 0.637, 0.888]], [0.170, [0.000, 0.637, 0.888]], [0.172, [0.000, 0.645, 0.865]], [0.174, [0.000, 0.645, 0.865]], [0.176, [0.000, 0.653, 0.841]], [0.178, [0.000, 0.653, 0.841]], [0.180, [0.000, 0.661, 0.818]], [0.182, [0.000, 0.661, 0.818]], [0.184, [0.000, 0.669, 0.794]], [0.186, [0.000, 0.669, 0.794]], [0.188, [0.000, 0.676, 0.771]], [0.190, [0.000, 0.676, 0.771]], [0.192, [0.000, 0.684, 0.747]], [0.194, [0.000, 0.684, 0.747]], [0.196, [0.000, 0.692, 0.724]], [0.198, [0.000, 0.692, 0.724]], [0.200, [0.000, 0.700, 0.700]], [0.202, [0.000, 0.700, 0.700]], [0.204, [0.000, 0.708, 0.676]], [0.205, [0.000, 0.708, 0.676]], [0.207, [0.000, 0.716, 0.653]], [0.209, [0.000, 0.716, 0.653]], [0.211, [0.000, 0.724, 0.629]], [0.213, [0.000, 0.724, 0.629]], [0.215, [0.000, 0.731, 0.606]], [0.217, [0.000, 0.731, 0.606]], [0.219, [0.000, 0.739, 0.582]], [0.221, [0.000, 0.739, 0.582]], [0.223, [0.000, 0.747, 0.559]], [0.225, [0.000, 0.747, 0.559]], [0.227, [0.000, 0.755, 0.535]], [0.229, [0.000, 0.755, 0.535]], [0.231, [0.000, 0.763, 0.512]], [0.233, [0.000, 0.763, 0.512]], [0.235, [0.000, 0.771, 0.488]], [0.237, [0.000, 0.771, 0.488]], [0.239, [0.000, 0.778, 0.465]], [0.241, [0.000, 0.778, 0.465]], [0.243, [0.000, 0.786, 0.441]], [0.245, [0.000, 0.786, 0.441]], [0.247, [0.000, 0.794, 0.418]], [0.249, [0.000, 0.794, 0.418]], [0.250, [0.004, 0.801, 0.401]], [0.252, [0.004, 0.801, 0.401]], [0.254, [0.020, 0.804, 0.404]], [0.256, [0.020, 0.804, 0.404]], [0.258, [0.035, 0.807, 0.407]], [0.260, [0.035, 0.807, 0.407]], [0.262, [0.051, 0.810, 0.410]], [0.264, [0.051, 0.810, 0.410]], [0.266, [0.067, 0.813, 0.413]], [0.268, [0.067, 0.813, 0.413]], [0.270, [0.082, 0.816, 0.416]], [0.272, [0.082, 0.816, 0.416]], [0.274, [0.098, 0.820, 0.420]], [0.276, [0.098, 0.820, 0.420]], [0.278, [0.114, 0.823, 0.423]], [0.280, [0.114, 0.823, 0.423]], [0.282, [0.129, 0.826, 0.426]], [0.284, [0.129, 0.826, 0.426]], [0.286, [0.145, 0.829, 0.429]], [0.288, [0.145, 0.829, 0.429]], [0.290, [0.161, 0.832, 0.432]], [0.292, [0.161, 0.832, 0.432]], [0.294, [0.176, 0.835, 0.435]], [0.295, [0.176, 0.835, 0.435]], [0.297, [0.192, 0.838, 0.438]], [0.299, [0.192, 0.838, 0.438]], [0.301, [0.208, 0.842, 0.442]], [0.303, [0.208, 0.842, 0.442]], [0.305, [0.224, 0.845, 0.445]], [0.307, [0.224, 0.845, 0.445]], [0.309, [0.239, 0.848, 0.448]], [0.311, [0.239, 0.848, 0.448]], [0.313, [0.255, 0.851, 0.451]], [0.315, [0.255, 0.851, 0.451]], [0.317, [0.271, 0.854, 0.454]], [0.319, [0.271, 0.854, 0.454]], [0.321, [0.286, 0.857, 0.457]], [0.323, [0.286, 0.857, 0.457]], [0.325, [0.302, 0.860, 0.460]], [0.327, [0.302, 0.860, 0.460]], [0.329, [0.318, 0.864, 0.464]], [0.331, [0.318, 0.864, 0.464]], [0.333, [0.333, 0.867, 0.467]], [0.335, [0.333, 0.867, 0.467]], [0.337, [0.349, 0.870, 0.470]], [0.339, [0.349, 0.870, 0.470]], [0.341, [0.365, 0.873, 0.473]], [0.342, [0.365, 0.873, 0.473]], [0.344, [0.380, 0.876, 0.476]], [0.346, [0.380, 0.876, 0.476]], [0.348, [0.396, 0.879, 0.479]], [0.350, [0.396, 0.879, 0.479]], [0.352, [0.412, 0.882, 0.482]], [0.354, [0.412, 0.882, 0.482]], [0.356, [0.427, 0.885, 0.485]], [0.358, [0.427, 0.885, 0.485]], [0.360, [0.443, 0.889, 0.489]], [0.362, [0.443, 0.889, 0.489]], [0.364, [0.459, 0.892, 0.492]], [0.366, [0.459, 0.892, 0.492]], [0.368, [0.475, 0.895, 0.495]], [0.370, [0.475, 0.895, 0.495]], [0.372, [0.490, 0.898, 0.498]], [0.374, [0.490, 0.898, 0.498]], [0.376, [0.506, 0.901, 0.501]], [0.378, [0.506, 0.901, 0.501]], [0.380, [0.522, 0.904, 0.504]], [0.382, [0.522, 0.904, 0.504]], [0.384, [0.537, 0.907, 0.507]], [0.386, [0.537, 0.907, 0.507]], [0.387, [0.553, 0.911, 0.511]], [0.389, [0.553, 0.911, 0.511]], [0.391, [0.569, 0.914, 0.514]], [0.393, [0.569, 0.914, 0.514]], [0.395, [0.584, 0.917, 0.517]], [0.397, [0.584, 0.917, 0.517]], [0.399, [0.600, 0.920, 0.520]], [0.401, [0.600, 0.920, 0.520]], [0.403, [0.616, 0.923, 0.523]], [0.405, [0.616, 0.923, 0.523]], [0.407, [0.631, 0.926, 0.526]], [0.409, [0.631, 0.926, 0.526]], [0.411, [0.647, 0.929, 0.529]], [0.413, [0.647, 0.929, 0.529]], [0.415, [0.663, 0.933, 0.533]], [0.417, [0.663, 0.933, 0.533]], [0.419, [0.678, 0.936, 0.536]], [0.421, [0.678, 0.936, 0.536]], [0.423, [0.694, 0.939, 0.539]], [0.425, [0.694, 0.939, 0.539]], [0.427, [0.710, 0.942, 0.542]], [0.429, [0.710, 0.942, 0.542]], [0.431, [0.725, 0.945, 0.545]], [0.432, [0.725, 0.945, 0.545]], [0.434, [0.741, 0.948, 0.548]], [0.436, [0.741, 0.948, 0.548]], [0.438, [0.757, 0.951, 0.551]], [0.440, [0.757, 0.951, 0.551]], [0.442, [0.773, 0.955, 0.555]], [0.444, [0.773, 0.955, 0.555]], [0.446, [0.788, 0.958, 0.558]], [0.448, [0.788, 0.958, 0.558]], [0.450, [0.804, 0.961, 0.561]], [0.452, [0.804, 0.961, 0.561]], [0.454, [0.820, 0.964, 0.564]], [0.456, [0.820, 0.964, 0.564]], [0.458, [0.835, 0.967, 0.567]], [0.460, [0.835, 0.967, 0.567]], [0.462, [0.851, 0.970, 0.570]], [0.464, [0.851, 0.970, 0.570]], [0.466, [0.867, 0.973, 0.573]], [0.468, [0.867, 0.973, 0.573]], [0.470, [0.882, 0.976, 0.576]], [0.472, [0.882, 0.976, 0.576]], [0.474, [0.898, 0.980, 0.580]], [0.476, [0.898, 0.980, 0.580]], [0.477, [0.914, 0.983, 0.583]], [0.479, [0.914, 0.983, 0.583]], [0.481, [0.929, 0.986, 0.586]], [0.483, [0.929, 0.986, 0.586]], [0.485, [0.945, 0.989, 0.589]], [0.487, [0.945, 0.989, 0.589]], [0.489, [0.961, 0.992, 0.592]], [0.491, [0.961, 0.992, 0.592]], [0.493, [0.976, 0.995, 0.595]], [0.495, [0.976, 0.995, 0.595]], [0.497, [0.992, 0.998, 0.598]], [0.499, [0.992, 0.998, 0.598]], [0.501, [0.996, 0.995, 0.598]], [0.503, [0.996, 0.995, 0.598]], [0.505, [0.988, 0.985, 0.594]], [0.507, [0.988, 0.985, 0.594]], [0.509, [0.980, 0.975, 0.589]], [0.511, [0.980, 0.975, 0.589]], [0.513, [0.973, 0.965, 0.585]], [0.515, [0.973, 0.965, 0.585]], [0.517, [0.965, 0.955, 0.581]], [0.519, [0.965, 0.955, 0.581]], [0.521, [0.957, 0.945, 0.577]], [0.523, [0.957, 0.945, 0.577]], [0.524, [0.949, 0.935, 0.572]], [0.526, [0.949, 0.935, 0.572]], [0.528, [0.941, 0.925, 0.568]], [0.530, [0.941, 0.925, 0.568]], [0.532, [0.933, 0.915, 0.564]], [0.534, [0.933, 0.915, 0.564]], [0.536, [0.925, 0.905, 0.560]], [0.538, [0.925, 0.905, 0.560]], [0.540, [0.918, 0.895, 0.556]], [0.542, [0.918, 0.895, 0.556]], [0.544, [0.910, 0.885, 0.551]], [0.546, [0.910, 0.885, 0.551]], [0.548, [0.902, 0.875, 0.547]], [0.550, [0.902, 0.875, 0.547]], [0.552, [0.894, 0.864, 0.543]], [0.554, [0.894, 0.864, 0.543]], [0.556, [0.886, 0.854, 0.539]], [0.558, [0.886, 0.854, 0.539]], [0.560, [0.878, 0.844, 0.534]], [0.562, [0.878, 0.844, 0.534]], [0.564, [0.871, 0.834, 0.530]], [0.566, [0.871, 0.834, 0.530]], [0.568, [0.863, 0.824, 0.526]], [0.569, [0.863, 0.824, 0.526]], [0.571, [0.855, 0.814, 0.522]], [0.573, [0.855, 0.814, 0.522]], [0.575, [0.847, 0.804, 0.517]], [0.577, [0.847, 0.804, 0.517]], [0.579, [0.839, 0.794, 0.513]], [0.581, [0.839, 0.794, 0.513]], [0.583, [0.831, 0.784, 0.509]], [0.585, [0.831, 0.784, 0.509]], [0.587, [0.824, 0.774, 0.505]], [0.589, [0.824, 0.774, 0.505]], [0.591, [0.816, 0.764, 0.500]], [0.593, [0.816, 0.764, 0.500]], [0.595, [0.808, 0.754, 0.496]], [0.597, [0.808, 0.754, 0.496]], [0.599, [0.800, 0.744, 0.492]], [0.601, [0.800, 0.744, 0.492]], [0.603, [0.792, 0.734, 0.488]], [0.605, [0.792, 0.734, 0.488]], [0.607, [0.784, 0.724, 0.484]], [0.609, [0.784, 0.724, 0.484]], [0.611, [0.776, 0.714, 0.479]], [0.613, [0.776, 0.714, 0.479]], [0.614, [0.769, 0.704, 0.475]], [0.616, [0.769, 0.704, 0.475]], [0.618, [0.761, 0.694, 0.471]], [0.620, [0.761, 0.694, 0.471]], [0.622, [0.753, 0.684, 0.467]], [0.624, [0.753, 0.684, 0.467]], [0.626, [0.745, 0.674, 0.462]], [0.628, [0.745, 0.674, 0.462]], [0.630, [0.737, 0.664, 0.458]], [0.632, [0.737, 0.664, 0.458]], [0.634, [0.729, 0.654, 0.454]], [0.636, [0.729, 0.654, 0.454]], [0.638, [0.722, 0.644, 0.450]], [0.640, [0.722, 0.644, 0.450]], [0.642, [0.714, 0.634, 0.445]], [0.644, [0.714, 0.634, 0.445]], [0.646, [0.706, 0.624, 0.441]], [0.648, [0.706, 0.624, 0.441]], [0.650, [0.698, 0.613, 0.437]], [0.652, [0.698, 0.613, 0.437]], [0.654, [0.690, 0.603, 0.433]], [0.656, [0.690, 0.603, 0.433]], [0.658, [0.682, 0.593, 0.428]], [0.659, [0.682, 0.593, 0.428]], [0.661, [0.675, 0.583, 0.424]], [0.663, [0.675, 0.583, 0.424]], [0.665, [0.667, 0.573, 0.420]], [0.667, [0.667, 0.573, 0.420]], [0.669, [0.659, 0.563, 0.416]], [0.671, [0.659, 0.563, 0.416]], [0.673, [0.651, 0.553, 0.412]], [0.675, [0.651, 0.553, 0.412]], [0.677, [0.643, 0.543, 0.407]], [0.679, [0.643, 0.543, 0.407]], [0.681, [0.635, 0.533, 0.403]], [0.683, [0.635, 0.533, 0.403]], [0.685, [0.627, 0.523, 0.399]], [0.687, [0.627, 0.523, 0.399]], [0.689, [0.620, 0.513, 0.395]], [0.691, [0.620, 0.513, 0.395]], [0.693, [0.612, 0.503, 0.390]], [0.695, [0.612, 0.503, 0.390]], [0.697, [0.604, 0.493, 0.386]], [0.699, [0.604, 0.493, 0.386]], [0.701, [0.596, 0.483, 0.382]], [0.703, [0.596, 0.483, 0.382]], [0.705, [0.588, 0.473, 0.378]], [0.706, [0.588, 0.473, 0.378]], [0.708, [0.580, 0.463, 0.373]], [0.710, [0.580, 0.463, 0.373]], [0.712, [0.573, 0.453, 0.369]], [0.714, [0.573, 0.453, 0.369]], [0.716, [0.565, 0.443, 0.365]], [0.718, [0.565, 0.443, 0.365]], [0.720, [0.557, 0.433, 0.361]], [0.722, [0.557, 0.433, 0.361]], [0.724, [0.549, 0.423, 0.356]], [0.726, [0.549, 0.423, 0.356]], [0.728, [0.541, 0.413, 0.352]], [0.730, [0.541, 0.413, 0.352]], [0.732, [0.533, 0.403, 0.348]], [0.734, [0.533, 0.403, 0.348]], [0.736, [0.525, 0.393, 0.344]], [0.738, [0.525, 0.393, 0.344]], [0.740, [0.518, 0.383, 0.340]], [0.742, [0.518, 0.383, 0.340]], [0.744, [0.510, 0.373, 0.335]], [0.746, [0.510, 0.373, 0.335]], [0.748, [0.502, 0.363, 0.331]], [0.750, [0.502, 0.363, 0.331]], [0.751, [0.506, 0.368, 0.338]], [0.753, [0.506, 0.368, 0.338]], [0.755, [0.514, 0.378, 0.348]], [0.757, [0.514, 0.378, 0.348]], [0.759, [0.522, 0.388, 0.359]], [0.761, [0.522, 0.388, 0.359]], [0.763, [0.529, 0.398, 0.369]], [0.765, [0.529, 0.398, 0.369]], [0.767, [0.537, 0.408, 0.380]], [0.769, [0.537, 0.408, 0.380]], [0.771, [0.545, 0.418, 0.390]], [0.773, [0.545, 0.418, 0.390]], [0.775, [0.553, 0.428, 0.401]], [0.777, [0.553, 0.428, 0.401]], [0.779, [0.561, 0.438, 0.411]], [0.781, [0.561, 0.438, 0.411]], [0.783, [0.569, 0.448, 0.422]], [0.785, [0.569, 0.448, 0.422]], [0.787, [0.576, 0.458, 0.432]], [0.789, [0.576, 0.458, 0.432]], [0.791, [0.584, 0.468, 0.443]], [0.793, [0.584, 0.468, 0.443]], [0.795, [0.592, 0.478, 0.453]], [0.796, [0.592, 0.478, 0.453]], [0.798, [0.600, 0.488, 0.464]], [0.800, [0.600, 0.488, 0.464]], [0.802, [0.608, 0.498, 0.475]], [0.804, [0.608, 0.498, 0.475]], [0.806, [0.616, 0.508, 0.485]], [0.808, [0.616, 0.508, 0.485]], [0.810, [0.624, 0.518, 0.496]], [0.812, [0.624, 0.518, 0.496]], [0.814, [0.631, 0.528, 0.506]], [0.816, [0.631, 0.528, 0.506]], [0.818, [0.639, 0.538, 0.517]], [0.820, [0.639, 0.538, 0.517]], [0.822, [0.647, 0.548, 0.527]], [0.824, [0.647, 0.548, 0.527]], [0.826, [0.655, 0.558, 0.538]], [0.828, [0.655, 0.558, 0.538]], [0.830, [0.663, 0.568, 0.548]], [0.832, [0.663, 0.568, 0.548]], [0.834, [0.671, 0.578, 0.559]], [0.836, [0.671, 0.578, 0.559]], [0.838, [0.678, 0.588, 0.569]], [0.840, [0.678, 0.588, 0.569]], [0.841, [0.686, 0.598, 0.580]], [0.843, [0.686, 0.598, 0.580]], [0.845, [0.694, 0.608, 0.590]], [0.847, [0.694, 0.608, 0.590]], [0.849, [0.702, 0.619, 0.601]], [0.851, [0.702, 0.619, 0.601]], [0.853, [0.710, 0.629, 0.611]], [0.855, [0.710, 0.629, 0.611]], [0.857, [0.718, 0.639, 0.622]], [0.859, [0.718, 0.639, 0.622]], [0.861, [0.725, 0.649, 0.632]], [0.863, [0.725, 0.649, 0.632]], [0.865, [0.733, 0.659, 0.643]], [0.867, [0.733, 0.659, 0.643]], [0.869, [0.741, 0.669, 0.653]], [0.871, [0.741, 0.669, 0.653]], [0.873, [0.749, 0.679, 0.664]], [0.875, [0.749, 0.679, 0.664]], [0.877, [0.757, 0.689, 0.674]], [0.879, [0.757, 0.689, 0.674]], [0.881, [0.765, 0.699, 0.685]], [0.883, [0.765, 0.699, 0.685]], [0.885, [0.773, 0.709, 0.695]], [0.886, [0.773, 0.709, 0.695]], [0.888, [0.780, 0.719, 0.706]], [0.890, [0.780, 0.719, 0.706]], [0.892, [0.788, 0.729, 0.716]], [0.894, [0.788, 0.729, 0.716]], [0.896, [0.796, 0.739, 0.727]], [0.898, [0.796, 0.739, 0.727]], [0.900, [0.804, 0.749, 0.737]], [0.902, [0.804, 0.749, 0.737]], [0.904, [0.812, 0.759, 0.748]], [0.906, [0.812, 0.759, 0.748]], [0.908, [0.820, 0.769, 0.758]], [0.910, [0.820, 0.769, 0.758]], [0.912, [0.827, 0.779, 0.769]], [0.914, [0.827, 0.779, 0.769]], [0.916, [0.835, 0.789, 0.779]], [0.918, [0.835, 0.789, 0.779]], [0.920, [0.843, 0.799, 0.790]], [0.922, [0.843, 0.799, 0.790]], [0.924, [0.851, 0.809, 0.800]], [0.926, [0.851, 0.809, 0.800]], [0.928, [0.859, 0.819, 0.811]], [0.930, [0.859, 0.819, 0.811]], [0.932, [0.867, 0.829, 0.821]], [0.933, [0.867, 0.829, 0.821]], [0.935, [0.875, 0.839, 0.832]], [0.937, [0.875, 0.839, 0.832]], [0.939, [0.882, 0.849, 0.842]], [0.941, [0.882, 0.849, 0.842]], [0.943, [0.890, 0.859, 0.853]], [0.945, [0.890, 0.859, 0.853]], [0.947, [0.898, 0.869, 0.863]], [0.949, [0.898, 0.869, 0.863]], [0.951, [0.906, 0.880, 0.874]], [0.953, [0.906, 0.880, 0.874]], [0.955, [0.914, 0.890, 0.884]], [0.957, [0.914, 0.890, 0.884]], [0.959, [0.922, 0.900, 0.895]], [0.961, [0.922, 0.900, 0.895]], [0.963, [0.929, 0.910, 0.905]], [0.965, [0.929, 0.910, 0.905]], [0.967, [0.937, 0.920, 0.916]], [0.969, [0.937, 0.920, 0.916]], [0.971, [0.945, 0.930, 0.926]], [0.973, [0.945, 0.930, 0.926]], [0.975, [0.953, 0.940, 0.937]], [0.977, [0.953, 0.940, 0.937]], [0.978, [0.961, 0.950, 0.947]], [0.980, [0.961, 0.950, 0.947]], [0.982, [0.969, 0.960, 0.958]], [0.984, [0.969, 0.960, 0.958]], [0.986, [0.976, 0.970, 0.968]], [0.988, [0.976, 0.970, 0.968]], [0.990, [0.984, 0.980, 0.979]], [0.992, [0.984, 0.980, 0.979]], [0.994, [0.992, 0.990, 0.989]], [0.996, [0.992, 0.990, 0.989]], [0.998, [1.000, 1.000, 1.000]], [1.000, [1.000, 1.000, 1.000]]]; + diff --git a/01_Code/physical_computing_interface/simulation/lib/overview.html b/01_Code/physical_computing_interface/simulation/lib/overview.html new file mode 100644 index 0000000000000000000000000000000000000000..086e977569e637fd81099bcbde4f12ae2b5ee624 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/overview.html @@ -0,0 +1,150 @@ +<!DOCTYPE html> +<html> + +<head> + <title>js-colormaps: Overview</title> + + <link rel="stylesheet" type="text/css" href="styles.css"> + + <script type="text/javascript" src="js-colormaps.js"></script> + + <script> + function appendHTMLbyID(id, text) { + old_html = document.getElementById(id).innerHTML; + document.getElementById(id).innerHTML = old_html+text; + } + + function enforceBounds(x) { + if (x < 0) { + return 0; + } else if (x > 1){ + return 1; + } else { + return x; + } + } + + function interpolateLinearly(x, values) { + + // Split values into four lists + var x_values = []; + var r_values = []; + var g_values = []; + var b_values = []; + for (i in values) { + x_values.push(values[i][0]); + r_values.push(values[i][1][0]); + g_values.push(values[i][1][1]); + b_values.push(values[i][1][2]); + } + + var i = 1; + while (x_values[i] < x) { + i = i+1; + } + i = i-1; + + var width = Math.abs(x_values[i] - x_values[i+1]); + var scaling_factor = (x - x_values[i]) / width; + + // Get the new color values though interpolation + var r = r_values[i] + scaling_factor * (r_values[i+1] - r_values[i]) + var g = g_values[i] + scaling_factor * (g_values[i+1] - g_values[i]) + var b = b_values[i] + scaling_factor * (b_values[i+1] - b_values[i]) + + return [enforceBounds(r), enforceBounds(g), enforceBounds(b)]; + + } + + function drawColormap(CanvasID, colormap) { + + var c = document.getElementById(CanvasID); + var ctx = c.getContext("2d"); + + for (i = 0; i <= 1024; i++) { + var color = interpolateLinearly(i/1024, colormap); + r = Math.round(255*color[0]); + g = Math.round(255*color[1]); + b = Math.round(255*color[2]); + ctx.fillStyle = 'rgb('+r+', '+g+', '+b+')'; + ctx.fillRect(i, 0, 1, 50); + } + } + + function drawColormapTable(TableID) { + + var Sequential = ['Blues', 'BuGn', 'BuPu', + 'GnBu', 'Greens', 'Greys', 'Oranges', 'OrRd', + 'PuBu', 'PuBuGn', 'PuRd', 'Purples', 'RdPu', + 'Reds', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd']; + var Sequential2 = ['afmhot', 'autumn', 'bone', 'cool', 'copper', + 'gist_heat', 'gray', 'hot', 'pink', + 'spring', 'summer', 'winter']; + var Diverging = ['BrBG', 'bwr', 'coolwarm', 'PiYG', 'PRGn', 'PuOr', + 'RdBu', 'RdGy', 'RdYlBu', 'RdYlGn', 'Spectral', + 'seismic']; + var Qualitative = ['Accent', 'Dark2', 'Paired', 'Pastel1', + 'Pastel2', 'Set1', 'Set2', 'Set3']; + var Miscellaneous = ['gist_earth', 'terrain', 'ocean', 'gist_stern', + 'brg', 'CMRmap', 'cubehelix', 'gnuplot', + 'gnuplot2', 'gist_ncar', 'nipy_spectral', + 'jet', 'rainbow', 'gist_rainbow', 'hsv', + 'flag', 'prism'] + + if (TableID == 'Sequential') { + var cm_type = Sequential; + } else if (TableID == 'Sequential2') { + var cm_type = Sequential2; + } else if (TableID == 'Diverging') { + var cm_type = Diverging; + } else if (TableID == 'Qualitative') { + var cm_type = Qualitative; + } else { + var cm_type = Miscellaneous; + } + + for (i in cm_type) { + var cmap = cm_type[i]; + appendHTMLbyID(TableID, '<tr><td>'+cmap+'</td><td><canvas id="'+cmap+'" width="1024" height="50"></canvas></td></tr>'); + } + for (i in cm_type) { + var cmap = cm_type[i]; + drawColormap(cmap, window[cmap]); + } + } + </script> +</head> + +<body> + +<h2>Sequential</h2> +<table id='Sequential'> +</table> + +<h2>Sequential (2)</h2> +<table id='Sequential2'> +</table> + +<h2>Diverging</h2> +<table id='Diverging'> +</table> + +<h2>Qualitative</h2> +<table id='Qualitative'> +</table> + +<h2>Miscellaneous</h2> +<table id='Miscellaneous'> +</table> + + +<script> + drawColormapTable('Sequential'); + drawColormapTable('Sequential2'); + drawColormapTable('Diverging'); + drawColormapTable('Qualitative'); + drawColormapTable('Miscellaneous'); +</script> + +</body> +</html> diff --git a/01_Code/physical_computing_interface/simulation/lib/require.js b/01_Code/physical_computing_interface/simulation/lib/require.js new file mode 100644 index 0000000000000000000000000000000000000000..a4203f0d06ccc719923cd24b5b20b8076c1b494d --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/require.js @@ -0,0 +1,5 @@ +/** vim: et:ts=4:sw=4:sts=4 + * @license RequireJS 2.3.6 Copyright jQuery Foundation and other contributors. + * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE + */ +var requirejs,require,define;!function(global,setTimeout){var req,s,head,baseElement,dataMain,src,interactiveScript,currentlyAddingScript,mainScript,subPath,version="2.3.6",commentRegExp=/\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/gm,cjsRequireRegExp=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,jsSuffixRegExp=/\.js$/,currDirRegExp=/^\.\//,op=Object.prototype,ostring=op.toString,hasOwn=op.hasOwnProperty,isBrowser=!("undefined"==typeof window||"undefined"==typeof navigator||!window.document),isWebWorker=!isBrowser&&"undefined"!=typeof importScripts,readyRegExp=isBrowser&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,defContextName="_",isOpera="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),contexts={},cfg={},globalDefQueue=[],useInteractive=!1;function commentReplace(e,t){return t||""}function isFunction(e){return"[object Function]"===ostring.call(e)}function isArray(e){return"[object Array]"===ostring.call(e)}function each(e,t){var i;if(e)for(i=0;i<e.length&&(!e[i]||!t(e[i],i,e));i+=1);}function eachReverse(e,t){var i;if(e)for(i=e.length-1;-1<i&&(!e[i]||!t(e[i],i,e));i-=1);}function hasProp(e,t){return hasOwn.call(e,t)}function getOwn(e,t){return hasProp(e,t)&&e[t]}function eachProp(e,t){var i;for(i in e)if(hasProp(e,i)&&t(e[i],i))break}function mixin(i,e,r,n){return e&&eachProp(e,function(e,t){!r&&hasProp(i,t)||(!n||"object"!=typeof e||!e||isArray(e)||isFunction(e)||e instanceof RegExp?i[t]=e:(i[t]||(i[t]={}),mixin(i[t],e,r,n)))}),i}function bind(e,t){return function(){return t.apply(e,arguments)}}function scripts(){return document.getElementsByTagName("script")}function defaultOnError(e){throw e}function getGlobal(e){if(!e)return e;var t=global;return each(e.split("."),function(e){t=t[e]}),t}function makeError(e,t,i,r){var n=new Error(t+"\nhttps://requirejs.org/docs/errors.html#"+e);return n.requireType=e,n.requireModules=r,i&&(n.originalError=i),n}if(void 0===define){if(void 0!==requirejs){if(isFunction(requirejs))return;cfg=requirejs,requirejs=void 0}void 0===require||isFunction(require)||(cfg=require,require=void 0),req=requirejs=function(e,t,i,r){var n,o,a=defContextName;return isArray(e)||"string"==typeof e||(o=e,isArray(t)?(e=t,t=i,i=r):e=[]),o&&o.context&&(a=o.context),(n=getOwn(contexts,a))||(n=contexts[a]=req.s.newContext(a)),o&&n.configure(o),n.require(e,t,i)},req.config=function(e){return req(e)},req.nextTick=void 0!==setTimeout?function(e){setTimeout(e,4)}:function(e){e()},require||(require=req),req.version=version,req.jsExtRegExp=/^\/|:|\?|\.js$/,req.isBrowser=isBrowser,s=req.s={contexts:contexts,newContext:newContext},req({}),each(["toUrl","undef","defined","specified"],function(t){req[t]=function(){var e=contexts[defContextName];return e.require[t].apply(e,arguments)}}),isBrowser&&(head=s.head=document.getElementsByTagName("head")[0],baseElement=document.getElementsByTagName("base")[0],baseElement&&(head=s.head=baseElement.parentNode)),req.onError=defaultOnError,req.createNode=function(e,t,i){var r=e.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");return r.type=e.scriptType||"text/javascript",r.charset="utf-8",r.async=!0,r},req.load=function(t,i,r){var e,n=t&&t.config||{};if(isBrowser)return(e=req.createNode(n,i,r)).setAttribute("data-requirecontext",t.contextName),e.setAttribute("data-requiremodule",i),!e.attachEvent||e.attachEvent.toString&&e.attachEvent.toString().indexOf("[native code")<0||isOpera?(e.addEventListener("load",t.onScriptLoad,!1),e.addEventListener("error",t.onScriptError,!1)):(useInteractive=!0,e.attachEvent("onreadystatechange",t.onScriptLoad)),e.src=r,n.onNodeCreated&&n.onNodeCreated(e,n,i,r),currentlyAddingScript=e,baseElement?head.insertBefore(e,baseElement):head.appendChild(e),currentlyAddingScript=null,e;if(isWebWorker)try{setTimeout(function(){},0),importScripts(r),t.completeLoad(i)}catch(e){t.onError(makeError("importscripts","importScripts failed for "+i+" at "+r,e,[i]))}},isBrowser&&!cfg.skipDataMain&&eachReverse(scripts(),function(e){if(head||(head=e.parentNode),dataMain=e.getAttribute("data-main"))return mainScript=dataMain,cfg.baseUrl||-1!==mainScript.indexOf("!")||(mainScript=(src=mainScript.split("/")).pop(),subPath=src.length?src.join("/")+"/":"./",cfg.baseUrl=subPath),mainScript=mainScript.replace(jsSuffixRegExp,""),req.jsExtRegExp.test(mainScript)&&(mainScript=dataMain),cfg.deps=cfg.deps?cfg.deps.concat(mainScript):[mainScript],!0}),define=function(e,i,t){var r,n;"string"!=typeof e&&(t=i,i=e,e=null),isArray(i)||(t=i,i=null),!i&&isFunction(t)&&(i=[],t.length&&(t.toString().replace(commentRegExp,commentReplace).replace(cjsRequireRegExp,function(e,t){i.push(t)}),i=(1===t.length?["require"]:["require","exports","module"]).concat(i))),useInteractive&&(r=currentlyAddingScript||getInteractiveScript())&&(e||(e=r.getAttribute("data-requiremodule")),n=contexts[r.getAttribute("data-requirecontext")]),n?(n.defQueue.push([e,i,t]),n.defQueueMap[e]=!0):globalDefQueue.push([e,i,t])},define.amd={jQuery:!0},req.exec=function(text){return eval(text)},req(cfg)}function newContext(u){var i,e,l,c,d,g={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},p={},f={},r={},h=[],m={},n={},v={},x=1,b=1;function q(e,t,i){var r,n,o,a,s,u,c,d,p,f,l=t&&t.split("/"),h=g.map,m=h&&h["*"];if(e&&(u=(e=e.split("/")).length-1,g.nodeIdCompat&&jsSuffixRegExp.test(e[u])&&(e[u]=e[u].replace(jsSuffixRegExp,"")),"."===e[0].charAt(0)&&l&&(e=l.slice(0,l.length-1).concat(e)),function(e){var t,i;for(t=0;t<e.length;t++)if("."===(i=e[t]))e.splice(t,1),t-=1;else if(".."===i){if(0===t||1===t&&".."===e[2]||".."===e[t-1])continue;0<t&&(e.splice(t-1,2),t-=2)}}(e),e=e.join("/")),i&&h&&(l||m)){e:for(o=(n=e.split("/")).length;0<o;o-=1){if(s=n.slice(0,o).join("/"),l)for(a=l.length;0<a;a-=1)if((r=getOwn(h,l.slice(0,a).join("/")))&&(r=getOwn(r,s))){c=r,d=o;break e}!p&&m&&getOwn(m,s)&&(p=getOwn(m,s),f=o)}!c&&p&&(c=p,d=f),c&&(n.splice(0,d,c),e=n.join("/"))}return getOwn(g.pkgs,e)||e}function E(t){isBrowser&&each(scripts(),function(e){if(e.getAttribute("data-requiremodule")===t&&e.getAttribute("data-requirecontext")===l.contextName)return e.parentNode.removeChild(e),!0})}function w(e){var t=getOwn(g.paths,e);if(t&&isArray(t)&&1<t.length)return t.shift(),l.require.undef(e),l.makeRequire(null,{skipMap:!0})([e]),!0}function y(e){var t,i=e?e.indexOf("!"):-1;return-1<i&&(t=e.substring(0,i),e=e.substring(i+1,e.length)),[t,e]}function S(e,t,i,r){var n,o,a,s,u=null,c=t?t.name:null,d=e,p=!0,f="";return e||(p=!1,e="_@r"+(x+=1)),u=(s=y(e))[0],e=s[1],u&&(u=q(u,c,r),o=getOwn(m,u)),e&&(u?f=i?e:o&&o.normalize?o.normalize(e,function(e){return q(e,c,r)}):-1===e.indexOf("!")?q(e,c,r):e:(u=(s=y(f=q(e,c,r)))[0],f=s[1],i=!0,n=l.nameToUrl(f))),{prefix:u,name:f,parentMap:t,unnormalized:!!(a=!u||o||i?"":"_unnormalized"+(b+=1)),url:n,originalName:d,isDefine:p,id:(u?u+"!"+f:f)+a}}function k(e){var t=e.id,i=getOwn(p,t);return i||(i=p[t]=new l.Module(e)),i}function M(e,t,i){var r=e.id,n=getOwn(p,r);!hasProp(m,r)||n&&!n.defineEmitComplete?(n=k(e)).error&&"error"===t?i(n.error):n.on(t,i):"defined"===t&&i(m[r])}function O(i,e){var t=i.requireModules,r=!1;e?e(i):(each(t,function(e){var t=getOwn(p,e);t&&(t.error=i,t.events.error&&(r=!0,t.emit("error",i)))}),r||req.onError(i))}function j(){globalDefQueue.length&&(each(globalDefQueue,function(e){var t=e[0];"string"==typeof t&&(l.defQueueMap[t]=!0),h.push(e)}),globalDefQueue=[])}function P(e){delete p[e],delete f[e]}function R(){var e,r,t=1e3*g.waitSeconds,n=t&&l.startTime+t<(new Date).getTime(),o=[],a=[],s=!1,u=!0;if(!i){if(i=!0,eachProp(f,function(e){var t=e.map,i=t.id;if(e.enabled&&(t.isDefine||a.push(e),!e.error))if(!e.inited&&n)w(i)?s=r=!0:(o.push(i),E(i));else if(!e.inited&&e.fetched&&t.isDefine&&(s=!0,!t.prefix))return u=!1}),n&&o.length)return(e=makeError("timeout","Load timeout for modules: "+o,null,o)).contextName=l.contextName,O(e);u&&each(a,function(e){!function n(o,a,s){var e=o.map.id;o.error?o.emit("error",o.error):(a[e]=!0,each(o.depMaps,function(e,t){var i=e.id,r=getOwn(p,i);!r||o.depMatched[t]||s[i]||(getOwn(a,i)?(o.defineDep(t,m[i]),o.check()):n(r,a,s))}),s[e]=!0)}(e,{},{})}),n&&!r||!s||!isBrowser&&!isWebWorker||d||(d=setTimeout(function(){d=0,R()},50)),i=!1}}function a(e){hasProp(m,e[0])||k(S(e[0],null,!0)).init(e[1],e[2])}function o(e,t,i,r){e.detachEvent&&!isOpera?r&&e.detachEvent(r,t):e.removeEventListener(i,t,!1)}function s(e){var t=e.currentTarget||e.srcElement;return o(t,l.onScriptLoad,"load","onreadystatechange"),o(t,l.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function T(){var e;for(j();h.length;){if(null===(e=h.shift())[0])return O(makeError("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));a(e)}l.defQueueMap={}}return c={require:function(e){return e.require?e.require:e.require=l.makeRequire(e.map)},exports:function(e){if(e.usingExports=!0,e.map.isDefine)return e.exports?m[e.map.id]=e.exports:e.exports=m[e.map.id]={}},module:function(e){return e.module?e.module:e.module={id:e.map.id,uri:e.map.url,config:function(){return getOwn(g.config,e.map.id)||{}},exports:e.exports||(e.exports={})}}},(e=function(e){this.events=getOwn(r,e.id)||{},this.map=e,this.shim=getOwn(g.shim,e.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0}).prototype={init:function(e,t,i,r){r=r||{},this.inited||(this.factory=t,i?this.on("error",i):this.events.error&&(i=bind(this,function(e){this.emit("error",e)})),this.depMaps=e&&e.slice(0),this.errback=i,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check())},defineDep:function(e,t){this.depMatched[e]||(this.depMatched[e]=!0,this.depCount-=1,this.depExports[e]=t)},fetch:function(){if(!this.fetched){this.fetched=!0,l.startTime=(new Date).getTime();var e=this.map;if(!this.shim)return e.prefix?this.callPlugin():this.load();l.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],bind(this,function(){return e.prefix?this.callPlugin():this.load()}))}},load:function(){var e=this.map.url;n[e]||(n[e]=!0,l.load(this.map.id,e))},check:function(){if(this.enabled&&!this.enabling){var t,e,i=this.map.id,r=this.depExports,n=this.exports,o=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(isFunction(o)){if(this.events.error&&this.map.isDefine||req.onError!==defaultOnError)try{n=l.execCb(i,o,r,n)}catch(e){t=e}else n=l.execCb(i,o,r,n);if(this.map.isDefine&&void 0===n&&((e=this.module)?n=e.exports:this.usingExports&&(n=this.exports)),t)return t.requireMap=this.map,t.requireModules=this.map.isDefine?[this.map.id]:null,t.requireType=this.map.isDefine?"define":"require",O(this.error=t)}else n=o;if(this.exports=n,this.map.isDefine&&!this.ignore&&(m[i]=n,req.onResourceLoad)){var a=[];each(this.depMaps,function(e){a.push(e.normalizedMap||e)}),req.onResourceLoad(l,this.map,a)}P(i),this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else hasProp(l.defQueueMap,i)||this.fetch()}},callPlugin:function(){var u=this.map,c=u.id,e=S(u.prefix);this.depMaps.push(e),M(e,"defined",bind(this,function(e){var o,t,i,r=getOwn(v,this.map.id),n=this.map.name,a=this.map.parentMap?this.map.parentMap.name:null,s=l.makeRequire(u.parentMap,{enableBuildCallback:!0});return this.map.unnormalized?(e.normalize&&(n=e.normalize(n,function(e){return q(e,a,!0)})||""),M(t=S(u.prefix+"!"+n,this.map.parentMap,!0),"defined",bind(this,function(e){this.map.normalizedMap=t,this.init([],function(){return e},null,{enabled:!0,ignore:!0})})),void((i=getOwn(p,t.id))&&(this.depMaps.push(t),this.events.error&&i.on("error",bind(this,function(e){this.emit("error",e)})),i.enable()))):r?(this.map.url=l.nameToUrl(r),void this.load()):((o=bind(this,function(e){this.init([],function(){return e},null,{enabled:!0})})).error=bind(this,function(e){this.inited=!0,(this.error=e).requireModules=[c],eachProp(p,function(e){0===e.map.id.indexOf(c+"_unnormalized")&&P(e.map.id)}),O(e)}),o.fromText=bind(this,function(e,t){var i=u.name,r=S(i),n=useInteractive;t&&(e=t),n&&(useInteractive=!1),k(r),hasProp(g.config,c)&&(g.config[i]=g.config[c]);try{req.exec(e)}catch(e){return O(makeError("fromtexteval","fromText eval for "+c+" failed: "+e,e,[c]))}n&&(useInteractive=!0),this.depMaps.push(r),l.completeLoad(i),s([i],o)}),void e.load(u.name,s,o,g))})),l.enable(e,this),this.pluginMaps[e.id]=e},enable:function(){(f[this.map.id]=this).enabled=!0,this.enabling=!0,each(this.depMaps,bind(this,function(e,t){var i,r,n;if("string"==typeof e){if(e=S(e,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[t]=e,n=getOwn(c,e.id))return void(this.depExports[t]=n(this));this.depCount+=1,M(e,"defined",bind(this,function(e){this.undefed||(this.defineDep(t,e),this.check())})),this.errback?M(e,"error",bind(this,this.errback)):this.events.error&&M(e,"error",bind(this,function(e){this.emit("error",e)}))}i=e.id,r=p[i],hasProp(c,i)||!r||r.enabled||l.enable(e,this)})),eachProp(this.pluginMaps,bind(this,function(e){var t=getOwn(p,e.id);t&&!t.enabled&&l.enable(e,this)})),this.enabling=!1,this.check()},on:function(e,t){var i=this.events[e];i||(i=this.events[e]=[]),i.push(t)},emit:function(e,t){each(this.events[e],function(e){e(t)}),"error"===e&&delete this.events[e]}},(l={config:g,contextName:u,registry:p,defined:m,urlFetched:n,defQueue:h,defQueueMap:{},Module:e,makeModuleMap:S,nextTick:req.nextTick,onError:O,configure:function(e){if(e.baseUrl&&"/"!==e.baseUrl.charAt(e.baseUrl.length-1)&&(e.baseUrl+="/"),"string"==typeof e.urlArgs){var i=e.urlArgs;e.urlArgs=function(e,t){return(-1===t.indexOf("?")?"?":"&")+i}}var r=g.shim,n={paths:!0,bundles:!0,config:!0,map:!0};eachProp(e,function(e,t){n[t]?(g[t]||(g[t]={}),mixin(g[t],e,!0,!0)):g[t]=e}),e.bundles&&eachProp(e.bundles,function(e,t){each(e,function(e){e!==t&&(v[e]=t)})}),e.shim&&(eachProp(e.shim,function(e,t){isArray(e)&&(e={deps:e}),!e.exports&&!e.init||e.exportsFn||(e.exportsFn=l.makeShimExports(e)),r[t]=e}),g.shim=r),e.packages&&each(e.packages,function(e){var t;t=(e="string"==typeof e?{name:e}:e).name,e.location&&(g.paths[t]=e.location),g.pkgs[t]=e.name+"/"+(e.main||"main").replace(currDirRegExp,"").replace(jsSuffixRegExp,"")}),eachProp(p,function(e,t){e.inited||e.map.unnormalized||(e.map=S(t,null,!0))}),(e.deps||e.callback)&&l.require(e.deps||[],e.callback)},makeShimExports:function(t){return function(){var e;return t.init&&(e=t.init.apply(global,arguments)),e||t.exports&&getGlobal(t.exports)}},makeRequire:function(o,a){function s(e,t,i){var r,n;return a.enableBuildCallback&&t&&isFunction(t)&&(t.__requireJsBuild=!0),"string"==typeof e?isFunction(t)?O(makeError("requireargs","Invalid require call"),i):o&&hasProp(c,e)?c[e](p[o.id]):req.get?req.get(l,e,o,s):(r=S(e,o,!1,!0).id,hasProp(m,r)?m[r]:O(makeError("notloaded",'Module name "'+r+'" has not been loaded yet for context: '+u+(o?"":". Use require([])")))):(T(),l.nextTick(function(){T(),(n=k(S(null,o))).skipMap=a.skipMap,n.init(e,t,i,{enabled:!0}),R()}),s)}return a=a||{},mixin(s,{isBrowser:isBrowser,toUrl:function(e){var t,i=e.lastIndexOf("."),r=e.split("/")[0];return-1!==i&&(!("."===r||".."===r)||1<i)&&(t=e.substring(i,e.length),e=e.substring(0,i)),l.nameToUrl(q(e,o&&o.id,!0),t,!0)},defined:function(e){return hasProp(m,S(e,o,!1,!0).id)},specified:function(e){return e=S(e,o,!1,!0).id,hasProp(m,e)||hasProp(p,e)}}),o||(s.undef=function(i){j();var e=S(i,o,!0),t=getOwn(p,i);t.undefed=!0,E(i),delete m[i],delete n[e.url],delete r[i],eachReverse(h,function(e,t){e[0]===i&&h.splice(t,1)}),delete l.defQueueMap[i],t&&(t.events.defined&&(r[i]=t.events),P(i))}),s},enable:function(e){getOwn(p,e.id)&&k(e).enable()},completeLoad:function(e){var t,i,r,n=getOwn(g.shim,e)||{},o=n.exports;for(j();h.length;){if(null===(i=h.shift())[0]){if(i[0]=e,t)break;t=!0}else i[0]===e&&(t=!0);a(i)}if(l.defQueueMap={},r=getOwn(p,e),!t&&!hasProp(m,e)&&r&&!r.inited){if(!(!g.enforceDefine||o&&getGlobal(o)))return w(e)?void 0:O(makeError("nodefine","No define call for "+e,null,[e]));a([e,n.deps||[],n.exportsFn])}R()},nameToUrl:function(e,t,i){var r,n,o,a,s,u,c=getOwn(g.pkgs,e);if(c&&(e=c),u=getOwn(v,e))return l.nameToUrl(u,t,i);if(req.jsExtRegExp.test(e))a=e+(t||"");else{for(r=g.paths,o=(n=e.split("/")).length;0<o;o-=1)if(s=getOwn(r,n.slice(0,o).join("/"))){isArray(s)&&(s=s[0]),n.splice(0,o,s);break}a=n.join("/"),a=("/"===(a+=t||(/^data\:|^blob\:|\?/.test(a)||i?"":".js")).charAt(0)||a.match(/^[\w\+\.\-]+:/)?"":g.baseUrl)+a}return g.urlArgs&&!/^blob\:/.test(a)?a+g.urlArgs(e,a):a},load:function(e,t){req.load(l,e,t)},execCb:function(e,t,i,r){return t.apply(r,i)},onScriptLoad:function(e){if("load"===e.type||readyRegExp.test((e.currentTarget||e.srcElement).readyState)){interactiveScript=null;var t=s(e);l.completeLoad(t.id)}},onScriptError:function(e){var i=s(e);if(!w(i.id)){var r=[];return eachProp(p,function(e,t){0!==t.indexOf("_@r")&&each(e.depMaps,function(e){if(e.id===i.id)return r.push(t),!0})}),O(makeError("scripterror",'Script error for "'+i.id+(r.length?'", needed by: '+r.join(", "):'"'),e,[i.id]))}}}).require=l.makeRequire(),l}function getInteractiveScript(){return interactiveScript&&"interactive"===interactiveScript.readyState||eachReverse(scripts(),function(e){if("interactive"===e.readyState)return interactiveScript=e}),interactiveScript}}(this,"undefined"==typeof setTimeout?void 0:setTimeout); \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/lib/rhino3dm.js b/01_Code/physical_computing_interface/simulation/lib/rhino3dm.js new file mode 100644 index 0000000000000000000000000000000000000000..6d756919b6c37fcffe6e1d5f7350d83b51f02e92 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/rhino3dm.js @@ -0,0 +1,8704 @@ + +var rhino3dm = (function() { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + return ( +function(rhino3dm) { + rhino3dm = rhino3dm || {}; + +// Copyright 2010 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +// The Module object: Our interface to the outside world. We import +// and export values on it. There are various ways Module can be used: +// 1. Not defined. We create it here +// 2. A function parameter, function(Module) { ..generated code.. } +// 3. pre-run appended it, var Module = {}; ..generated code.. +// 4. External script tag defines var Module. +// We need to check if Module already exists (e.g. case 3 above). +// Substitution will be replaced with actual code on later stage of the build, +// this way Closure Compiler will not mangle it (e.g. case 4. above). +// Note that if you want to run closure, and also to use Module +// after the generated code, you will need to define var Module = {}; +// before the code. Then that object will be used in the code, and you +// can continue to use Module afterwards as well. +var Module = typeof rhino3dm !== 'undefined' ? rhino3dm : {}; + +// --pre-jses are emitted after the Module integration code, so that they can +// refer to Module (if they choose; they can also define Module) +// {{PRE_JSES}} + +// Sometimes an existing Module object exists with properties +// meant to overwrite the default module functionality. Here +// we collect those properties and reapply _after_ we configure +// the current environment's defaults to avoid having to be so +// defensive during initialization. +var moduleOverrides = {}; +var key; +for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } +} + +var arguments_ = []; +var thisProgram = './this.program'; +var quit_ = function(status, toThrow) { + throw toThrow; +}; + +// Determine the runtime environment we are in. You can customize this by +// setting the ENVIRONMENT setting at compile time (see settings.js). + +var ENVIRONMENT_IS_WEB = false; +var ENVIRONMENT_IS_WORKER = false; +var ENVIRONMENT_IS_NODE = false; +var ENVIRONMENT_HAS_NODE = false; +var ENVIRONMENT_IS_SHELL = false; +ENVIRONMENT_IS_WEB = typeof window === 'object'; +ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; +// A web environment like Electron.js can have Node enabled, so we must +// distinguish between Node-enabled environments and Node environments per se. +// This will allow the former to do things like mount NODEFS. +// Extended check using process.versions fixes issue #8816. +// (Also makes redundant the original check that 'require' is a function.) +ENVIRONMENT_HAS_NODE = typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node === 'string'; +ENVIRONMENT_IS_NODE = ENVIRONMENT_HAS_NODE && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER; +ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + +if (Module['ENVIRONMENT']) { + throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)'); +} + + + +// `/` should be present at the end if `scriptDirectory` is not empty +var scriptDirectory = ''; +function locateFile(path) { + if (Module['locateFile']) { + return Module['locateFile'](path, scriptDirectory); + } + return scriptDirectory + path; +} + +// Hooks that are implemented differently in different runtime environments. +var read_, + readAsync, + readBinary, + setWindowTitle; + +if (ENVIRONMENT_IS_NODE) { + scriptDirectory = __dirname + '/'; + + // Expose functionality in the same simple way that the shells work + // Note that we pollute the global namespace here, otherwise we break in node + var nodeFS; + var nodePath; + + read_ = function shell_read(filename, binary) { + var ret; + if (!nodeFS) nodeFS = require('fs'); + if (!nodePath) nodePath = require('path'); + filename = nodePath['normalize'](filename); + ret = nodeFS['readFileSync'](filename); + return binary ? ret : ret.toString(); + }; + + readBinary = function readBinary(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; + }; + + if (process['argv'].length > 1) { + thisProgram = process['argv'][1].replace(/\\/g, '/'); + } + + arguments_ = process['argv'].slice(2); + + // MODULARIZE will export the module in the proper place outside, we don't need to export here + + process['on']('uncaughtException', function(ex) { + // suppress ExitStatus exceptions from showing an error + if (!(ex instanceof ExitStatus)) { + throw ex; + } + }); + + process['on']('unhandledRejection', abort); + + quit_ = function(status) { + process['exit'](status); + }; + + Module['inspect'] = function () { return '[Emscripten Module object]'; }; +} else +if (ENVIRONMENT_IS_SHELL) { + + + if (typeof read != 'undefined') { + read_ = function shell_read(f) { + return read(f); + }; + } + + readBinary = function readBinary(f) { + var data; + if (typeof readbuffer === 'function') { + return new Uint8Array(readbuffer(f)); + } + data = read(f, 'binary'); + assert(typeof data === 'object'); + return data; + }; + + if (typeof scriptArgs != 'undefined') { + arguments_ = scriptArgs; + } else if (typeof arguments != 'undefined') { + arguments_ = arguments; + } + + if (typeof quit === 'function') { + quit_ = function(status) { + quit(status); + }; + } + + if (typeof print !== 'undefined') { + // Prefer to use print/printErr where they exist, as they usually work better. + if (typeof console === 'undefined') console = {}; + console.log = print; + console.warn = console.error = typeof printErr !== 'undefined' ? printErr : print; + } +} else +if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled + scriptDirectory = self.location.href; + } else if (document.currentScript) { // web + scriptDirectory = document.currentScript.src; + } + // When MODULARIZE (and not _INSTANCE), this JS may be executed later, after document.currentScript + // is gone, so we saved it, and we use it here instead of any other info. + if (_scriptDir) { + scriptDirectory = _scriptDir; + } + // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. + // otherwise, slice off the final part of the url to find the script directory. + // if scriptDirectory does not contain a slash, lastIndexOf will return -1, + // and scriptDirectory will correctly be replaced with an empty string. + if (scriptDirectory.indexOf('blob:') !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf('/')+1); + } else { + scriptDirectory = ''; + } + + + read_ = function shell_read(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + return xhr.responseText; + }; + + if (ENVIRONMENT_IS_WORKER) { + readBinary = function readBinary(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.responseType = 'arraybuffer'; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + + readAsync = function readAsync(url, onload, onerror) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + xhr.onload = function xhr_onload() { + if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + + setWindowTitle = function(title) { document.title = title }; +} else +{ + throw new Error('environment detection error'); +} + +// Set up the out() and err() hooks, which are how we can print to stdout or +// stderr, respectively. +var out = Module['print'] || console.log.bind(console); +var err = Module['printErr'] || console.warn.bind(console); + +// Merge back in the overrides +for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } +} +// Free the object hierarchy contained in the overrides, this lets the GC +// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array. +moduleOverrides = null; + +// Emit code to handle expected values on the Module object. This applies Module.x +// to the proper local x. This has two benefits: first, we only emit it if it is +// expected to arrive, and second, by using a local everywhere else that can be +// minified. +if (Module['arguments']) arguments_ = Module['arguments'];if (!Object.getOwnPropertyDescriptor(Module, 'arguments')) Object.defineProperty(Module, 'arguments', { configurable: true, get: function() { abort('Module.arguments has been replaced with plain arguments_') } }); +if (Module['thisProgram']) thisProgram = Module['thisProgram'];if (!Object.getOwnPropertyDescriptor(Module, 'thisProgram')) Object.defineProperty(Module, 'thisProgram', { configurable: true, get: function() { abort('Module.thisProgram has been replaced with plain thisProgram') } }); +if (Module['quit']) quit_ = Module['quit'];if (!Object.getOwnPropertyDescriptor(Module, 'quit')) Object.defineProperty(Module, 'quit', { configurable: true, get: function() { abort('Module.quit has been replaced with plain quit_') } }); + +// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message +// Assertions on removed incoming Module JS APIs. +assert(typeof Module['memoryInitializerPrefixURL'] === 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['pthreadMainPrefixURL'] === 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['cdInitializerPrefixURL'] === 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['filePackagePrefixURL'] === 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['read'] === 'undefined', 'Module.read option was removed (modify read_ in JS)'); +assert(typeof Module['readAsync'] === 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)'); +assert(typeof Module['readBinary'] === 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)'); +assert(typeof Module['setWindowTitle'] === 'undefined', 'Module.setWindowTitle option was removed (modify setWindowTitle in JS)'); +if (!Object.getOwnPropertyDescriptor(Module, 'read')) Object.defineProperty(Module, 'read', { configurable: true, get: function() { abort('Module.read has been replaced with plain read_') } }); +if (!Object.getOwnPropertyDescriptor(Module, 'readAsync')) Object.defineProperty(Module, 'readAsync', { configurable: true, get: function() { abort('Module.readAsync has been replaced with plain readAsync') } }); +if (!Object.getOwnPropertyDescriptor(Module, 'readBinary')) Object.defineProperty(Module, 'readBinary', { configurable: true, get: function() { abort('Module.readBinary has been replaced with plain readBinary') } }); +// TODO: add when SDL2 is fixed if (!Object.getOwnPropertyDescriptor(Module, 'setWindowTitle')) Object.defineProperty(Module, 'setWindowTitle', { configurable: true, get: function() { abort('Module.setWindowTitle has been replaced with plain setWindowTitle') } }); + + +// TODO remove when SDL2 is fixed (also see above) + + + +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +// {{PREAMBLE_ADDITIONS}} + +var STACK_ALIGN = 16; + +// stack management, and other functionality that is provided by the compiled code, +// should not be used before it is ready +stackSave = stackRestore = stackAlloc = function() { + abort('cannot use the stack before compiled code is ready to run, and has provided stack access'); +}; + +function staticAlloc(size) { + abort('staticAlloc is no longer available at runtime; instead, perform static allocations at compile time (using makeStaticAlloc)'); +} + +function dynamicAlloc(size) { + assert(DYNAMICTOP_PTR); + var ret = HEAP32[DYNAMICTOP_PTR>>2]; + var end = (ret + size + 15) & -16; + if (end > _emscripten_get_heap_size()) { + abort('failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly'); + } + HEAP32[DYNAMICTOP_PTR>>2] = end; + return ret; +} + +function alignMemory(size, factor) { + if (!factor) factor = STACK_ALIGN; // stack alignment (16-byte) by default + return Math.ceil(size / factor) * factor; +} + +function getNativeTypeSize(type) { + switch (type) { + case 'i1': case 'i8': return 1; + case 'i16': return 2; + case 'i32': return 4; + case 'i64': return 8; + case 'float': return 4; + case 'double': return 8; + default: { + if (type[type.length-1] === '*') { + return 4; // A pointer + } else if (type[0] === 'i') { + var bits = parseInt(type.substr(1)); + assert(bits % 8 === 0, 'getNativeTypeSize invalid bits ' + bits + ', type ' + type); + return bits / 8; + } else { + return 0; + } + } + } +} + +function warnOnce(text) { + if (!warnOnce.shown) warnOnce.shown = {}; + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + err(text); + } +} + +var asm2wasmImports = { // special asm2wasm imports + "f64-rem": function(x, y) { + return x % y; + }, + "debugger": function() { + debugger; + } +}; + + + +var jsCallStartIndex = 1; +var functionPointers = new Array(0); + +// Wraps a JS function as a wasm function with a given signature. +// In the future, we may get a WebAssembly.Function constructor. Until then, +// we create a wasm module that takes the JS function as an import with a given +// signature, and re-exports that as a wasm function. +function convertJsFunctionToWasm(func, sig) { + + // The module is static, with the exception of the type section, which is + // generated based on the signature passed in. + var typeSection = [ + 0x01, // id: section, + 0x00, // length: 0 (placeholder) + 0x01, // count: 1 + 0x60, // form: func + ]; + var sigRet = sig.slice(0, 1); + var sigParam = sig.slice(1); + var typeCodes = { + 'i': 0x7f, // i32 + 'j': 0x7e, // i64 + 'f': 0x7d, // f32 + 'd': 0x7c, // f64 + }; + + // Parameters, length + signatures + typeSection.push(sigParam.length); + for (var i = 0; i < sigParam.length; ++i) { + typeSection.push(typeCodes[sigParam[i]]); + } + + // Return values, length + signatures + // With no multi-return in MVP, either 0 (void) or 1 (anything else) + if (sigRet == 'v') { + typeSection.push(0x00); + } else { + typeSection = typeSection.concat([0x01, typeCodes[sigRet]]); + } + + // Write the overall length of the type section back into the section header + // (excepting the 2 bytes for the section id and length) + typeSection[1] = typeSection.length - 2; + + // Rest of the module is static + var bytes = new Uint8Array([ + 0x00, 0x61, 0x73, 0x6d, // magic ("\0asm") + 0x01, 0x00, 0x00, 0x00, // version: 1 + ].concat(typeSection, [ + 0x02, 0x07, // import section + // (import "e" "f" (func 0 (type 0))) + 0x01, 0x01, 0x65, 0x01, 0x66, 0x00, 0x00, + 0x07, 0x05, // export section + // (export "f" (func 0 (type 0))) + 0x01, 0x01, 0x66, 0x00, 0x00, + ])); + + // We can compile this wasm module synchronously because it is very small. + // This accepts an import (at "e.f"), that it reroutes to an export (at "f") + var module = new WebAssembly.Module(bytes); + var instance = new WebAssembly.Instance(module, { + e: { + f: func + } + }); + var wrappedFunc = instance.exports.f; + return wrappedFunc; +} + +// Add a wasm function to the table. +function addFunctionWasm(func, sig) { + var table = wasmTable; + var ret = table.length; + + // Grow the table + try { + table.grow(1); + } catch (err) { + if (!err instanceof RangeError) { + throw err; + } + throw 'Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH.'; + } + + // Insert new element + try { + // Attempting to call this with JS function will cause of table.set() to fail + table.set(ret, func); + } catch (err) { + if (!err instanceof TypeError) { + throw err; + } + assert(typeof sig !== 'undefined', 'Missing signature argument to addFunction'); + var wrapped = convertJsFunctionToWasm(func, sig); + table.set(ret, wrapped); + } + + return ret; +} + +function removeFunctionWasm(index) { + // TODO(sbc): Look into implementing this to allow re-using of table slots +} + +// 'sig' parameter is required for the llvm backend but only when func is not +// already a WebAssembly function. +function addFunction(func, sig) { + assert(typeof func !== 'undefined'); + + + var base = 0; + for (var i = base; i < base + 0; i++) { + if (!functionPointers[i]) { + functionPointers[i] = func; + return jsCallStartIndex + i; + } + } + throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; + +} + +function removeFunction(index) { + + functionPointers[index-jsCallStartIndex] = null; +} + +var funcWrappers = {}; + +function getFuncWrapper(func, sig) { + if (!func) return; // on null pointer, return undefined + assert(sig); + if (!funcWrappers[sig]) { + funcWrappers[sig] = {}; + } + var sigCache = funcWrappers[sig]; + if (!sigCache[func]) { + // optimize away arguments usage in common cases + if (sig.length === 1) { + sigCache[func] = function dynCall_wrapper() { + return dynCall(sig, func); + }; + } else if (sig.length === 2) { + sigCache[func] = function dynCall_wrapper(arg) { + return dynCall(sig, func, [arg]); + }; + } else { + // general case + sigCache[func] = function dynCall_wrapper() { + return dynCall(sig, func, Array.prototype.slice.call(arguments)); + }; + } + } + return sigCache[func]; +} + + +function makeBigInt(low, high, unsigned) { + return unsigned ? ((+((low>>>0)))+((+((high>>>0)))*4294967296.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0)); +} + +function dynCall(sig, ptr, args) { + if (args && args.length) { + assert(args.length == sig.length-1); + assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); + return Module['dynCall_' + sig].apply(null, [ptr].concat(args)); + } else { + assert(sig.length == 1); + assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); + return Module['dynCall_' + sig].call(null, ptr); + } +} + +var tempRet0 = 0; + +var setTempRet0 = function(value) { + tempRet0 = value; +}; + +var getTempRet0 = function() { + return tempRet0; +}; + +function getCompilerSetting(name) { + throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for getCompilerSetting or emscripten_get_compiler_setting to work'; +} + +var Runtime = { + // helpful errors + getTempRet0: function() { abort('getTempRet0() is now a top-level function, after removing the Runtime object. Remove "Runtime."') }, + staticAlloc: function() { abort('staticAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."') }, + stackAlloc: function() { abort('stackAlloc() is now a top-level function, after removing the Runtime object. Remove "Runtime."') }, +}; + +// The address globals begin at. Very low in memory, for code size and optimization opportunities. +// Above 0 is static memory, starting with globals. +// Then the stack. +// Then 'dynamic' memory for sbrk. +var GLOBAL_BASE = 1024; + + + + +// === Preamble library stuff === + +// Documentation for the public APIs defined in this file must be updated in: +// site/source/docs/api_reference/preamble.js.rst +// A prebuilt local version of the documentation is available at: +// site/build/text/docs/api_reference/preamble.js.txt +// You can also build docs locally as HTML or other formats in site/ +// An online HTML version (which may be of a different version of Emscripten) +// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html + + +var wasmBinary;if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];if (!Object.getOwnPropertyDescriptor(Module, 'wasmBinary')) Object.defineProperty(Module, 'wasmBinary', { configurable: true, get: function() { abort('Module.wasmBinary has been replaced with plain wasmBinary') } }); +var noExitRuntime;if (Module['noExitRuntime']) noExitRuntime = Module['noExitRuntime'];if (!Object.getOwnPropertyDescriptor(Module, 'noExitRuntime')) Object.defineProperty(Module, 'noExitRuntime', { configurable: true, get: function() { abort('Module.noExitRuntime has been replaced with plain noExitRuntime') } }); + + +if (typeof WebAssembly !== 'object') { + abort('No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.'); +} + + +// In MINIMAL_RUNTIME, setValue() and getValue() are only available when building with safe heap enabled, for heap safety checking. +// In traditional runtime, setValue() and getValue() are always available (although their use is highly discouraged due to perf penalties) + +/** @type {function(number, number, string, boolean=)} */ +function setValue(ptr, value, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + switch(type) { + case 'i1': HEAP8[((ptr)>>0)]=value; break; + case 'i8': HEAP8[((ptr)>>0)]=value; break; + case 'i16': HEAP16[((ptr)>>1)]=value; break; + case 'i32': HEAP32[((ptr)>>2)]=value; break; + case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break; + case 'float': HEAPF32[((ptr)>>2)]=value; break; + case 'double': HEAPF64[((ptr)>>3)]=value; break; + default: abort('invalid type for setValue: ' + type); + } +} + +/** @type {function(number, string, boolean=)} */ +function getValue(ptr, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + switch(type) { + case 'i1': return HEAP8[((ptr)>>0)]; + case 'i8': return HEAP8[((ptr)>>0)]; + case 'i16': return HEAP16[((ptr)>>1)]; + case 'i32': return HEAP32[((ptr)>>2)]; + case 'i64': return HEAP32[((ptr)>>2)]; + case 'float': return HEAPF32[((ptr)>>2)]; + case 'double': return HEAPF64[((ptr)>>3)]; + default: abort('invalid type for getValue: ' + type); + } + return null; +} + + + + + +// Wasm globals + +var wasmMemory; + +// In fastcomp asm.js, we don't need a wasm Table at all. +// In the wasm backend, we polyfill the WebAssembly object, +// so this creates a (non-native-wasm) table for us. +var wasmTable = new WebAssembly.Table({ + 'initial': 464128, + 'maximum': 464128, + 'element': 'anyfunc' +}); + + +//======================================== +// Runtime essentials +//======================================== + +// whether we are quitting the application. no code should run after this. +// set in exit() and abort() +var ABORT = false; + +// set by exit() and abort(). Passed to 'onExit' handler. +// NOTE: This is also used as the process return code code in shell environments +// but only when noExitRuntime is false. +var EXITSTATUS = 0; + +/** @type {function(*, string=)} */ +function assert(condition, text) { + if (!condition) { + abort('Assertion failed: ' + text); + } +} + +// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) +function getCFunc(ident) { + var func = Module['_' + ident]; // closure exported function + assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported'); + return func; +} + +// C calling interface. +function ccall(ident, returnType, argTypes, args, opts) { + // For fast lookup of conversion functions + var toC = { + 'string': function(str) { + var ret = 0; + if (str !== null && str !== undefined && str !== 0) { // null string + // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0' + var len = (str.length << 2) + 1; + ret = stackAlloc(len); + stringToUTF8(str, ret, len); + } + return ret; + }, + 'array': function(arr) { + var ret = stackAlloc(arr.length); + writeArrayToMemory(arr, ret); + return ret; + } + }; + + function convertReturnValue(ret) { + if (returnType === 'string') return UTF8ToString(ret); + if (returnType === 'boolean') return Boolean(ret); + return ret; + } + + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + assert(returnType !== 'array', 'Return type should not be "array".'); + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + + ret = convertReturnValue(ret); + if (stack !== 0) stackRestore(stack); + return ret; +} + +function cwrap(ident, returnType, argTypes, opts) { + return function() { + return ccall(ident, returnType, argTypes, arguments, opts); + } +} + +var ALLOC_NORMAL = 0; // Tries to use _malloc() +var ALLOC_STACK = 1; // Lives for the duration of the current function call +var ALLOC_DYNAMIC = 2; // Cannot be freed except through sbrk +var ALLOC_NONE = 3; // Do not allocate + +// allocate(): This is for internal use. You can use it yourself as well, but the interface +// is a little tricky (see docs right below). The reason is that it is optimized +// for multiple syntaxes to save space in generated code. So you should +// normally not use allocate(), and instead allocate memory using _malloc(), +// initialize it with setValue(), and so forth. +// @slab: An array of data, or a number. If a number, then the size of the block to allocate, +// in *bytes* (note that this is sometimes confusing: the next parameter does not +// affect this!) +// @types: Either an array of types, one for each byte (or 0 if no type at that position), +// or a single type which is used for the entire block. This only matters if there +// is initial data - if @slab is a number, then this does not matter at all and is +// ignored. +// @allocator: How to allocate memory, see ALLOC_* +/** @type {function((TypedArray|Array<number>|number), string, number, number=)} */ +function allocate(slab, types, allocator, ptr) { + var zeroinit, size; + if (typeof slab === 'number') { + zeroinit = true; + size = slab; + } else { + zeroinit = false; + size = slab.length; + } + + var singleType = typeof types === 'string' ? types : null; + + var ret; + if (allocator == ALLOC_NONE) { + ret = ptr; + } else { + ret = [_malloc, + stackAlloc, + dynamicAlloc][allocator](Math.max(size, singleType ? 1 : types.length)); + } + + if (zeroinit) { + var stop; + ptr = ret; + assert((ret & 3) == 0); + stop = ret + (size & ~3); + for (; ptr < stop; ptr += 4) { + HEAP32[((ptr)>>2)]=0; + } + stop = ret + size; + while (ptr < stop) { + HEAP8[((ptr++)>>0)]=0; + } + return ret; + } + + if (singleType === 'i8') { + if (slab.subarray || slab.slice) { + HEAPU8.set(/** @type {!Uint8Array} */ (slab), ret); + } else { + HEAPU8.set(new Uint8Array(slab), ret); + } + return ret; + } + + var i = 0, type, typeSize, previousType; + while (i < size) { + var curr = slab[i]; + + type = singleType || types[i]; + if (type === 0) { + i++; + continue; + } + assert(type, 'Must know what type to store in allocate!'); + + if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later + + setValue(ret+i, curr, type); + + // no need to look up size unless type changes, so cache it + if (previousType !== type) { + typeSize = getNativeTypeSize(type); + previousType = type; + } + i += typeSize; + } + + return ret; +} + +// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready +function getMemory(size) { + if (!runtimeInitialized) return dynamicAlloc(size); + return _malloc(size); +} + + + + +/** @type {function(number, number=)} */ +function Pointer_stringify(ptr, length) { + abort("this function has been removed - you should use UTF8ToString(ptr, maxBytesToRead) instead!"); +} + +// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +function AsciiToString(ptr) { + var str = ''; + while (1) { + var ch = HEAPU8[((ptr++)>>0)]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP. + +function stringToAscii(str, outPtr) { + return writeAsciiToMemory(str, outPtr, false); +} + + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns +// a copy of that string as a Javascript String object. + +var UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined; + +/** + * @param {number} idx + * @param {number=} maxBytesToRead + * @return {string} + */ +function UTF8ArrayToString(u8Array, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. + // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. + // (As a tiny code save trick, compare endPtr against endIdx using a negation, so that undefined means Infinity) + while (u8Array[endPtr] && !(endPtr >= endIdx)) ++endPtr; + + if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) { + return UTF8Decoder.decode(u8Array.subarray(idx, endPtr)); + } else { + var str = ''; + // If building with TextDecoder, we have already computed the string length above, so test loop end condition against that + while (idx < endPtr) { + // For UTF8 byte structure, see: + // http://en.wikipedia.org/wiki/UTF-8#Description + // https://www.ietf.org/rfc/rfc2279.txt + // https://tools.ietf.org/html/rfc3629 + var u0 = u8Array[idx++]; + if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } + var u1 = u8Array[idx++] & 63; + if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } + var u2 = u8Array[idx++] & 63; + if ((u0 & 0xF0) == 0xE0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } else { + if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte 0x' + u0.toString(16) + ' encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!'); + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (u8Array[idx++] & 63); + } + + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } + } + } + return str; +} + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns a +// copy of that string as a Javascript String object. +// maxBytesToRead: an optional length that specifies the maximum number of bytes to read. You can omit +// this parameter to scan the string until the first \0 byte. If maxBytesToRead is +// passed, and the string at [ptr, ptr+maxBytesToReadr[ contains a null byte in the +// middle, then the string will cut short at that byte index (i.e. maxBytesToRead will +// not produce a string of exact length [ptr, ptr+maxBytesToRead[) +// N.B. mixing frequent uses of UTF8ToString() with and without maxBytesToRead may +// throw JS JIT optimizations off, so it is worth to consider consistently using one +// style or the other. +/** + * @param {number} ptr + * @param {number=} maxBytesToRead + * @return {string} + */ +function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; +} + +// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx', +// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outU8Array: the array to copy to. Each index in this array is assumed to be one 8-byte element. +// outIdx: The starting offset in the array to begin the copying. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. +// This count should include the null terminator, +// i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else. +// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes. + return 0; + + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) { + var u1 = str.charCodeAt(++i); + u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); + } + if (u <= 0x7F) { + if (outIdx >= endIdx) break; + outU8Array[outIdx++] = u; + } else if (u <= 0x7FF) { + if (outIdx + 1 >= endIdx) break; + outU8Array[outIdx++] = 0xC0 | (u >> 6); + outU8Array[outIdx++] = 0x80 | (u & 63); + } else if (u <= 0xFFFF) { + if (outIdx + 2 >= endIdx) break; + outU8Array[outIdx++] = 0xE0 | (u >> 12); + outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); + outU8Array[outIdx++] = 0x80 | (u & 63); + } else { + if (outIdx + 3 >= endIdx) break; + if (u >= 0x200000) warnOnce('Invalid Unicode code point 0x' + u.toString(16) + ' encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF).'); + outU8Array[outIdx++] = 0xF0 | (u >> 18); + outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); + outU8Array[outIdx++] = 0x80 | (u & 63); + } + } + // Null-terminate the pointer to the buffer. + outU8Array[outIdx] = 0; + return outIdx - startIdx; +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite); +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte. +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); + if (u <= 0x7F) ++len; + else if (u <= 0x7FF) len += 2; + else if (u <= 0xFFFF) len += 3; + else len += 4; + } + return len; +} + + +// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +var UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined; +function UTF16ToString(ptr) { + assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!'); + var endPtr = ptr; + // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. + // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. + var idx = endPtr >> 1; + while (HEAP16[idx]) ++idx; + endPtr = idx << 1; + + if (endPtr - ptr > 32 && UTF16Decoder) { + return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); + } else { + var i = 0; + + var str = ''; + while (1) { + var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; + if (codeUnit == 0) return str; + ++i; + // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. + str += String.fromCharCode(codeUnit); + } + } +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP. +// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else. +// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF16(str, outPtr, maxBytesToWrite) { + assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'); + assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 2) return 0; + maxBytesToWrite -= 2; // Null terminator. + var startPtr = outPtr; + var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + HEAP16[((outPtr)>>1)]=codeUnit; + outPtr += 2; + } + // Null-terminate the pointer to the HEAP. + HEAP16[((outPtr)>>1)]=0; + return outPtr - startPtr; +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF16(str) { + return str.length*2; +} + +function UTF32ToString(ptr) { + assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!'); + var i = 0; + + var str = ''; + while (1) { + var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; + if (utf32 == 0) + return str; + ++i; + // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + if (utf32 >= 0x10000) { + var ch = utf32 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } else { + str += String.fromCharCode(utf32); + } + } +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP. +// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else. +// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF32(str, outPtr, maxBytesToWrite) { + assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'); + assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 4) return 0; + var startPtr = outPtr; + var endPtr = startPtr + maxBytesToWrite - 4; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { + var trailSurrogate = str.charCodeAt(++i); + codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); + } + HEAP32[((outPtr)>>2)]=codeUnit; + outPtr += 4; + if (outPtr + 4 > endPtr) break; + } + // Null-terminate the pointer to the HEAP. + HEAP32[((outPtr)>>2)]=0; + return outPtr - startPtr; +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF32(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. + len += 4; + } + + return len; +} + +// Allocate heap space for a JS string, and write it there. +// It is the responsibility of the caller to free() that memory. +function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +// Allocate stack space for a JS string, and write it there. +function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +// Deprecated: This function should not be called because it is unsafe and does not provide +// a maximum length limit of how many bytes it is allowed to write. Prefer calling the +// function stringToUTF8Array() instead, which takes in a maximum length that can be used +// to be secure from out of bounds writes. +/** @deprecated */ +function writeStringToMemory(string, buffer, dontAddNull) { + warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!'); + + var /** @type {number} */ lastChar, /** @type {number} */ end; + if (dontAddNull) { + // stringToUTF8Array always appends null. If we don't want to do that, remember the + // character that existed at the location where the null will be placed, and restore + // that after the write (below). + end = buffer + lengthBytesUTF8(string); + lastChar = HEAP8[end]; + } + stringToUTF8(string, buffer, Infinity); + if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character. +} + +function writeArrayToMemory(array, buffer) { + assert(array.length >= 0, 'writeArrayToMemory array must have a length (should be an array or typed array)') + HEAP8.set(array, buffer); +} + +function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + assert(str.charCodeAt(i) === str.charCodeAt(i)&0xff); + HEAP8[((buffer++)>>0)]=str.charCodeAt(i); + } + // Null-terminate the pointer to the HEAP. + if (!dontAddNull) HEAP8[((buffer)>>0)]=0; +} + + + + +// Memory management + +var PAGE_SIZE = 16384; +var WASM_PAGE_SIZE = 65536; +var ASMJS_PAGE_SIZE = 16777216; + +function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - (x % multiple); + } + return x; +} + +var HEAP, +/** @type {ArrayBuffer} */ + buffer, +/** @type {Int8Array} */ + HEAP8, +/** @type {Uint8Array} */ + HEAPU8, +/** @type {Int16Array} */ + HEAP16, +/** @type {Uint16Array} */ + HEAPU16, +/** @type {Int32Array} */ + HEAP32, +/** @type {Uint32Array} */ + HEAPU32, +/** @type {Float32Array} */ + HEAPF32, +/** @type {Float64Array} */ + HEAPF64; + +function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module['HEAP8'] = HEAP8 = new Int8Array(buf); + Module['HEAP16'] = HEAP16 = new Int16Array(buf); + Module['HEAP32'] = HEAP32 = new Int32Array(buf); + Module['HEAPU8'] = HEAPU8 = new Uint8Array(buf); + Module['HEAPU16'] = HEAPU16 = new Uint16Array(buf); + Module['HEAPU32'] = HEAPU32 = new Uint32Array(buf); + Module['HEAPF32'] = HEAPF32 = new Float32Array(buf); + Module['HEAPF64'] = HEAPF64 = new Float64Array(buf); +} + +var STATIC_BASE = 1024, + STACK_BASE = 306704, + STACKTOP = STACK_BASE, + STACK_MAX = 5549584, + DYNAMIC_BASE = 5549584, + DYNAMICTOP_PTR = 306512; + +assert(STACK_BASE % 16 === 0, 'stack must start aligned'); +assert(DYNAMIC_BASE % 16 === 0, 'heap must start aligned'); + + + +var TOTAL_STACK = 5242880; +if (Module['TOTAL_STACK']) assert(TOTAL_STACK === Module['TOTAL_STACK'], 'the stack size can no longer be determined at runtime') + +var INITIAL_TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 16777216;if (!Object.getOwnPropertyDescriptor(Module, 'TOTAL_MEMORY')) Object.defineProperty(Module, 'TOTAL_MEMORY', { configurable: true, get: function() { abort('Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY') } }); + +assert(INITIAL_TOTAL_MEMORY >= TOTAL_STACK, 'TOTAL_MEMORY should be larger than TOTAL_STACK, was ' + INITIAL_TOTAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')'); + +// check for full engine support (use string 'subarray' to avoid closure compiler confusion) +assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, + 'JS engine does not provide full typed array support'); + + + + + + +// In standalone mode, the wasm creates the memory, and the user can't provide it. +// In non-standalone/normal mode, we create the memory here. + +// Create the main memory. (Note: this isn't used in STANDALONE_WASM mode since the wasm +// memory is created in the wasm, not in JS.) + + if (Module['wasmMemory']) { + wasmMemory = Module['wasmMemory']; + } else + { + wasmMemory = new WebAssembly.Memory({ + 'initial': INITIAL_TOTAL_MEMORY / WASM_PAGE_SIZE + }); + } + + +if (wasmMemory) { + buffer = wasmMemory.buffer; +} + +// If the user provides an incorrect length, just use that length instead rather than providing the user to +// specifically provide the memory length with Module['TOTAL_MEMORY']. +INITIAL_TOTAL_MEMORY = buffer.byteLength; +assert(INITIAL_TOTAL_MEMORY % WASM_PAGE_SIZE === 0); +updateGlobalBufferAndViews(buffer); + +HEAP32[DYNAMICTOP_PTR>>2] = DYNAMIC_BASE; + + + + +// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. +function writeStackCookie() { + assert((STACK_MAX & 3) == 0); + HEAPU32[(STACK_MAX >> 2)-1] = 0x02135467; + HEAPU32[(STACK_MAX >> 2)-2] = 0x89BACDFE; + // Also test the global address 0 for integrity. + // We don't do this with ASan because ASan does its own checks for this. + HEAP32[0] = 0x63736d65; /* 'emsc' */ +} + +function checkStackCookie() { + var cookie1 = HEAPU32[(STACK_MAX >> 2)-1]; + var cookie2 = HEAPU32[(STACK_MAX >> 2)-2]; + if (cookie1 != 0x02135467 || cookie2 != 0x89BACDFE) { + abort('Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x' + cookie2.toString(16) + ' ' + cookie1.toString(16)); + } + // Also test the global address 0 for integrity. + // We don't do this with ASan because ASan does its own checks for this. + if (HEAP32[0] !== 0x63736d65 /* 'emsc' */) abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); +} + +function abortStackOverflow(allocSize) { + abort('Stack overflow! Attempted to allocate ' + allocSize + ' bytes on the stack, but stack has only ' + (STACK_MAX - stackSave() + allocSize) + ' bytes available!'); +} + + + + +// Endianness check (note: assumes compiler arch was little-endian) +(function() { + var h16 = new Int16Array(1); + var h8 = new Int8Array(h16.buffer); + h16[0] = 0x6373; + if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian!'; +})(); + +function abortFnPtrError(ptr, sig) { + abort("Invalid function pointer " + ptr + " called with signature '" + sig + "'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). Build with ASSERTIONS=2 for more info."); +} + + + +function callRuntimeCallbacks(callbacks) { + while(callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == 'function') { + callback(); + continue; + } + var func = callback.func; + if (typeof func === 'number') { + if (callback.arg === undefined) { + Module['dynCall_v'](func); + } else { + Module['dynCall_vi'](func, callback.arg); + } + } else { + func(callback.arg === undefined ? null : callback.arg); + } + } +} + +var __ATPRERUN__ = []; // functions called before the runtime is initialized +var __ATINIT__ = []; // functions called during startup +var __ATMAIN__ = []; // functions called when main() is to be run +var __ATEXIT__ = []; // functions called during shutdown +var __ATPOSTRUN__ = []; // functions called after the main() is called + +var runtimeInitialized = false; +var runtimeExited = false; + + +function preRun() { + + if (Module['preRun']) { + if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']]; + while (Module['preRun'].length) { + addOnPreRun(Module['preRun'].shift()); + } + } + + callRuntimeCallbacks(__ATPRERUN__); +} + +function initRuntime() { + checkStackCookie(); + assert(!runtimeInitialized); + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); +TTY.init(); + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + checkStackCookie(); + FS.ignorePermissions = false; + callRuntimeCallbacks(__ATMAIN__); +} + +function exitRuntime() { + checkStackCookie(); + runtimeExited = true; +} + +function postRun() { + checkStackCookie(); + + if (Module['postRun']) { + if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']]; + while (Module['postRun'].length) { + addOnPostRun(Module['postRun'].shift()); + } + } + + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} + +function addOnPreMain(cb) { + __ATMAIN__.unshift(cb); +} + +function addOnExit(cb) { +} + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} + +function unSign(value, bits, ignore) { + if (value >= 0) { + return value; + } + return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts + : Math.pow(2, bits) + value; +} +function reSign(value, bits, ignore) { + if (value <= 0) { + return value; + } + var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 + : Math.pow(2, bits-1); + if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that + // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors + // TODO: In i64 mode 1, resign the two parts separately and safely + value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts + } + return value; +} + + +assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); + +var Math_abs = Math.abs; +var Math_cos = Math.cos; +var Math_sin = Math.sin; +var Math_tan = Math.tan; +var Math_acos = Math.acos; +var Math_asin = Math.asin; +var Math_atan = Math.atan; +var Math_atan2 = Math.atan2; +var Math_exp = Math.exp; +var Math_log = Math.log; +var Math_sqrt = Math.sqrt; +var Math_ceil = Math.ceil; +var Math_floor = Math.floor; +var Math_pow = Math.pow; +var Math_imul = Math.imul; +var Math_fround = Math.fround; +var Math_round = Math.round; +var Math_min = Math.min; +var Math_max = Math.max; +var Math_clz32 = Math.clz32; +var Math_trunc = Math.trunc; + + + +// A counter of dependencies for calling run(). If we need to +// do asynchronous work before running, increment this and +// decrement it. Incrementing must happen in a place like +// Module.preRun (used by emcc to add file preloading). +// Note that you can add dependencies in preRun, even though +// it happens right before run - run will be postponed until +// the dependencies are met. +var runDependencies = 0; +var runDependencyWatcher = null; +var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled +var runDependencyTracking = {}; + +function getUniqueRunDependency(id) { + var orig = id; + while (1) { + if (!runDependencyTracking[id]) return id; + id = orig + Math.random(); + } + return id; +} + +function addRunDependency(id) { + runDependencies++; + + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + + if (id) { + assert(!runDependencyTracking[id]); + runDependencyTracking[id] = 1; + if (runDependencyWatcher === null && typeof setInterval !== 'undefined') { + // Check for missing dependencies every few seconds + runDependencyWatcher = setInterval(function() { + if (ABORT) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + return; + } + var shown = false; + for (var dep in runDependencyTracking) { + if (!shown) { + shown = true; + err('still waiting on run dependencies:'); + } + err('dependency: ' + dep); + } + if (shown) { + err('(end of list)'); + } + }, 10000); + } + } else { + err('warning: run dependency added without ID'); + } +} + +function removeRunDependency(id) { + runDependencies--; + + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + + if (id) { + assert(runDependencyTracking[id]); + delete runDependencyTracking[id]; + } else { + err('warning: run dependency removed without ID'); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); // can add another dependenciesFulfilled + } + } +} + +Module["preloadedImages"] = {}; // maps url to image data +Module["preloadedAudios"] = {}; // maps url to audio data + + +function abort(what) { + if (Module['onAbort']) { + Module['onAbort'](what); + } + + what += ''; + out(what); + err(what); + + ABORT = true; + EXITSTATUS = 1; + + var extra = ''; + var output = 'abort(' + what + ') at ' + stackTrace() + extra; + throw output; +} + + +var memoryInitializer = null; + + + + + + + +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +// Prefix of data URIs emitted by SINGLE_FILE and related options. +var dataURIPrefix = 'data:application/octet-stream;base64,'; + +// Indicates whether filename is a base64 data URI. +function isDataURI(filename) { + return String.prototype.startsWith ? + filename.startsWith(dataURIPrefix) : + filename.indexOf(dataURIPrefix) === 0; +} + + + + +var wasmBinaryFile = 'rhino3dm.wasm'; +if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); +} + +function getBinary() { + try { + if (wasmBinary) { + return new Uint8Array(wasmBinary); + } + + if (readBinary) { + return readBinary(wasmBinaryFile); + } else { + throw "both async and sync fetching of the wasm failed"; + } + } + catch (err) { + abort(err); + } +} + +function getBinaryPromise() { + // if we don't have the binary yet, and have the Fetch api, use that + // in some environments, like Electron's render process, Fetch api may be present, but have a different context than expected, let's only use it on the Web + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === 'function') { + return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) { + if (!response['ok']) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response['arrayBuffer'](); + }).catch(function () { + return getBinary(); + }); + } + // Otherwise, getBinary should be able to get it synchronously + return new Promise(function(resolve, reject) { + resolve(getBinary()); + }); +} + + + +// Create the wasm instance. +// Receives the wasm imports, returns the exports. +function createWasm() { + // prepare imports + var info = { + 'env': asmLibraryArg, + 'wasi_unstable': asmLibraryArg + , + 'global': { + 'NaN': NaN, + 'Infinity': Infinity + }, + 'global.Math': Math, + 'asm2wasm': asm2wasmImports + }; + // Load the wasm module and create an instance of using native support in the JS engine. + // handle a generated wasm instance, receiving its exports and + // performing other necessary setup + function receiveInstance(instance, module) { + var exports = instance.exports; + Module['asm'] = exports; + removeRunDependency('wasm-instantiate'); + } + // we can't run yet (except in a pthread, where we have a custom sync instantiator) + addRunDependency('wasm-instantiate'); + + + // Async compilation can be confusing when an error on the page overwrites Module + // (for example, if the order of elements is wrong, and the one defining Module is + // later), so we save Module and check it later. + var trueModule = Module; + function receiveInstantiatedSource(output) { + // 'output' is a WebAssemblyInstantiatedSource object which has both the module and instance. + // receiveInstance() will swap in the exports (to Module.asm) so they can be called + assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); + trueModule = null; + // TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line. + // When the regression is fixed, can restore the above USE_PTHREADS-enabled path. + receiveInstance(output['instance']); + } + + + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then(function(binary) { + return WebAssembly.instantiate(binary, info); + }).then(receiver, function(reason) { + err('failed to asynchronously prepare wasm: ' + reason); + abort(reason); + }); + } + + // Prefer streaming instantiation if available. + function instantiateAsync() { + if (!wasmBinary && + typeof WebAssembly.instantiateStreaming === 'function' && + !isDataURI(wasmBinaryFile) && + typeof fetch === 'function') { + fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function (response) { + var result = WebAssembly.instantiateStreaming(response, info); + return result.then(receiveInstantiatedSource, function(reason) { + // We expect the most common failure cause to be a bad MIME type for the binary, + // in which case falling back to ArrayBuffer instantiation should work. + err('wasm streaming compile failed: ' + reason); + err('falling back to ArrayBuffer instantiation'); + instantiateArrayBuffer(receiveInstantiatedSource); + }); + }); + } else { + return instantiateArrayBuffer(receiveInstantiatedSource); + } + } + // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback + // to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel + // to any other async startup actions they are performing. + if (Module['instantiateWasm']) { + try { + var exports = Module['instantiateWasm'](info, receiveInstance); + return exports; + } catch(e) { + err('Module.instantiateWasm callback failed with error: ' + e); + return false; + } + } + + instantiateAsync(); + return {}; // no exports yet; we'll fill them in later +} + +Module['asm'] = createWasm; + +// Globals used by JS i64 conversions +var tempDouble; +var tempI64; + +// === Body === + +var ASM_CONSTS = []; + + + + + +// STATICTOP = STATIC_BASE + 305680; +/* global initializers */ __ATINIT__.push({ func: function() { globalCtors() } }); + + + + + + + + +/* no memory initializer */ +var tempDoublePtr = 306688 +assert(tempDoublePtr % 8 == 0); + +function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much + HEAP8[tempDoublePtr] = HEAP8[ptr]; + HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; + HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; + HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; +} + +function copyTempDouble(ptr) { + HEAP8[tempDoublePtr] = HEAP8[ptr]; + HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; + HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; + HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; + HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; + HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; + HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; + HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; +} + +// {{PRE_LIBRARY}} + + + function demangle(func) { + warnOnce('warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling'); + return func; + } + + function demangleAll(text) { + var regex = + /\b__Z[\w\d_]+/g; + return text.replace(regex, + function(x) { + var y = demangle(x); + return x === y ? x : (y + ' [' + x + ']'); + }); + } + + function jsStackTrace() { + var err = new Error(); + if (!err.stack) { + // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown, + // so try that as a special-case. + try { + throw new Error(0); + } catch(e) { + err = e; + } + if (!err.stack) { + return '(no stack trace available)'; + } + } + return err.stack.toString(); + } + + function stackTrace() { + var js = jsStackTrace(); + if (Module['extraStackTrace']) js += '\n' + Module['extraStackTrace'](); + return demangleAll(js); + } + + + function ___atomic_fetch_add_8(ptr, vall, valh, memmodel) { + var l = HEAP32[((ptr)>>2)]; + var h = HEAP32[(((ptr)+(4))>>2)]; + HEAP32[((ptr)>>2)]=_i64Add(l, h, vall, valh); + HEAP32[(((ptr)+(4))>>2)]=getTempRet0(); + return ((setTempRet0(h),l)|0); + } + + + var ENV={};function ___buildEnvironment(environ) { + // WARNING: Arbitrary limit! + var MAX_ENV_VALUES = 64; + var TOTAL_ENV_SIZE = 1024; + + // Statically allocate memory for the environment. + var poolPtr; + var envPtr; + if (!___buildEnvironment.called) { + ___buildEnvironment.called = true; + // Set default values. Use string keys for Closure Compiler compatibility. + ENV['USER'] = 'web_user'; + ENV['LOGNAME'] = 'web_user'; + ENV['PATH'] = '/'; + ENV['PWD'] = '/'; + ENV['HOME'] = '/home/web_user'; + // Browser language detection #8751 + ENV['LANG'] = ((typeof navigator === 'object' && navigator.languages && navigator.languages[0]) || 'C').replace('-', '_') + '.UTF-8'; + ENV['_'] = thisProgram; + // Allocate memory. + poolPtr = getMemory(TOTAL_ENV_SIZE); + envPtr = getMemory(MAX_ENV_VALUES * 4); + HEAP32[((envPtr)>>2)]=poolPtr; + HEAP32[((environ)>>2)]=envPtr; + } else { + envPtr = HEAP32[((environ)>>2)]; + poolPtr = HEAP32[((envPtr)>>2)]; + } + + // Collect key=value lines. + var strings = []; + var totalSize = 0; + for (var key in ENV) { + if (typeof ENV[key] === 'string') { + var line = key + '=' + ENV[key]; + strings.push(line); + totalSize += line.length; + } + } + if (totalSize > TOTAL_ENV_SIZE) { + throw new Error('Environment size exceeded TOTAL_ENV_SIZE!'); + } + + // Make new. + var ptrSize = 4; + for (var i = 0; i < strings.length; i++) { + var line = strings[i]; + writeAsciiToMemory(line, poolPtr); + HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr; + poolPtr += line.length + 1; + } + HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0; + } + + function ___cxa_allocate_exception(size) { + return _malloc(size); + } + + + var ___exception_infos={}; + + var ___exception_caught= []; + + function ___exception_addRef(ptr) { + if (!ptr) return; + var info = ___exception_infos[ptr]; + info.refcount++; + } + + function ___exception_deAdjust(adjusted) { + if (!adjusted || ___exception_infos[adjusted]) return adjusted; + for (var key in ___exception_infos) { + var ptr = +key; // the iteration key is a string, and if we throw this, it must be an integer as that is what we look for + var adj = ___exception_infos[ptr].adjusted; + var len = adj.length; + for (var i = 0; i < len; i++) { + if (adj[i] === adjusted) { + return ptr; + } + } + } + return adjusted; + }function ___cxa_begin_catch(ptr) { + var info = ___exception_infos[ptr]; + if (info && !info.caught) { + info.caught = true; + __ZSt18uncaught_exceptionv.uncaught_exceptions--; + } + if (info) info.rethrown = false; + ___exception_caught.push(ptr); + ___exception_addRef(___exception_deAdjust(ptr)); + return ptr; + } + + + var ___exception_last=0;function ___cxa_throw(ptr, type, destructor) { + ___exception_infos[ptr] = { + ptr: ptr, + adjusted: [ptr], + type: type, + destructor: destructor, + refcount: 0, + caught: false, + rethrown: false + }; + ___exception_last = ptr; + if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) { + __ZSt18uncaught_exceptionv.uncaught_exceptions = 1; + } else { + __ZSt18uncaught_exceptionv.uncaught_exceptions++; + } + throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."; + } + + function ___gxx_personality_v0() { + } + + function ___lock() {} + + + + var PATH={splitPath:function(filename) { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + },normalizeArray:function(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up; up--) { + parts.unshift('..'); + } + } + return parts; + },normalize:function(path) { + var isAbsolute = path.charAt(0) === '/', + trailingSlash = path.substr(-1) === '/'; + // Normalize the path + path = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), !isAbsolute).join('/'); + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + return (isAbsolute ? '/' : '') + path; + },dirname:function(path) { + var result = PATH.splitPath(path), + root = result[0], + dir = result[1]; + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + },basename:function(path) { + // EMSCRIPTEN return '/'' for '/', not an empty string + if (path === '/') return '/'; + var lastSlash = path.lastIndexOf('/'); + if (lastSlash === -1) return path; + return path.substr(lastSlash+1); + },extname:function(path) { + return PATH.splitPath(path)[3]; + },join:function() { + var paths = Array.prototype.slice.call(arguments, 0); + return PATH.normalize(paths.join('/')); + },join2:function(l, r) { + return PATH.normalize(l + '/' + r); + }}; + + + function ___setErrNo(value) { + if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value; + else err('failed to set errno from JS'); + return value; + } + + var PATH_FS={resolve:function() { + var resolvedPath = '', + resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : FS.cwd(); + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + return ''; // an invalid portion invalidates the whole thing + } + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; + },relative:function(from, to) { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join('/'); + }}; + + var TTY={ttys:[],init:function () { + // https://github.com/emscripten-core/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // currently, FS.init does not distinguish if process.stdin is a file or TTY + // // device, it always assumes it's a TTY device. because of this, we're forcing + // // process.stdin to UTF8 encoding to at least make stdin reading compatible + // // with text files until FS.init can be refactored. + // process['stdin']['setEncoding']('utf8'); + // } + },shutdown:function() { + // https://github.com/emscripten-core/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? + // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation + // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? + // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle + // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call + // process['stdin']['pause'](); + // } + },register:function(dev, ops) { + TTY.ttys[dev] = { input: [], output: [], ops: ops }; + FS.registerDevice(dev, TTY.stream_ops); + },stream_ops:{open:function(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43); + } + stream.tty = tty; + stream.seekable = false; + },close:function(stream) { + // flush any pending line data + stream.tty.ops.flush(stream.tty); + },flush:function(stream) { + stream.tty.ops.flush(stream.tty); + },read:function(stream, buffer, offset, length, pos /* ignored */) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + },write:function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset+i]); + } + } catch (e) { + throw new FS.ErrnoError(29); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + }},default_tty_ops:{get_char:function(tty) { + if (!tty.input.length) { + var result = null; + if (ENVIRONMENT_IS_NODE) { + // we will read data by chunks of BUFSIZE + var BUFSIZE = 256; + var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE); + var bytesRead = 0; + + try { + bytesRead = fs.readSync(process.stdin.fd, buf, 0, BUFSIZE, null); + } catch(e) { + // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes, + // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0. + if (e.toString().indexOf('EOF') != -1) bytesRead = 0; + else throw e; + } + + if (bytesRead > 0) { + result = buf.slice(0, bytesRead).toString('utf-8'); + } else { + result = null; + } + } else + if (typeof window != 'undefined' && + typeof window.prompt == 'function') { + // Browser. + result = window.prompt('Input: '); // returns null on cancel + if (result !== null) { + result += '\n'; + } + } else if (typeof readline == 'function') { + // Command line. + result = readline(); + if (result !== null) { + result += '\n'; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + },put_char:function(tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle. + } + },flush:function(tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }},default_tty1_ops:{put_char:function(tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + },flush:function(tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }}}; + + var MEMFS={ops_table:null,mount:function(mount) { + return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); + },createNode:function(parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + // no supported + throw new FS.ErrnoError(63); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, + stream: { + llseek: MEMFS.stream_ops.llseek + } + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity. + // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred + // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size + // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme. + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + // add the new node to the parent + if (parent) { + parent.contents[name] = node; + } + return node; + },getFileDataAsRegularArray:function(node) { + if (node.contents && node.contents.subarray) { + var arr = []; + for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]); + return arr; // Returns a copy of the original data. + } + return node.contents; // No-op, the file contents are already in a JS array. Return as-is. + },getFileDataAsTypedArray:function(node) { + if (!node.contents) return new Uint8Array; + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes. + return new Uint8Array(node.contents); + },expandFileStorage:function(node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough. + // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity. + // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to + // avoid overshooting the allocation cap by a very large margin. + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding. + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); // Allocate new storage. + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage. + return; + },resizeFileStorage:function(node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; // Fully decommit when requesting a resize to zero. + node.usedBytes = 0; + return; + } + if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store. + var oldContents = node.contents; + node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage. + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage. + } + node.usedBytes = newSize; + return; + } + // Backing with a JS array. + if (!node.contents) node.contents = []; + if (node.contents.length > newSize) node.contents.length = newSize; + else while (node.contents.length < newSize) node.contents.push(0); + node.usedBytes = newSize; + },node_ops:{getattr:function(node) { + var attr = {}; + // device numbers reuse inode numbers. + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), + // but this is not required by the standard. + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + },setattr:function(node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + },lookup:function(parent, name) { + throw FS.genericErrors[44]; + },mknod:function(parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + },rename:function(old_node, new_dir, new_name) { + // if we're overwriting a directory at new_name, make sure it's empty. + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + } + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(55); + } + } + } + // do the internal rewiring + delete old_node.parent.contents[old_node.name]; + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + old_node.parent = new_dir; + },unlink:function(parent, name) { + delete parent.contents[name]; + },rmdir:function(parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(55); + } + delete parent.contents[name]; + },readdir:function(node) { + var entries = ['.', '..']; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + },symlink:function(parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); + node.link = oldpath; + return node; + },readlink:function(node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28); + } + return node.link; + }},stream_ops:{read:function(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + assert(size >= 0); + if (size > 8 && contents.subarray) { // non-trivial, and typed array + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + },write:function(stream, buffer, offset, length, position, canOwn) { + // If memory can grow, we don't want to hold on to references of + // the memory Buffer, as they may get invalidated. That means + // we need to do a copy here. + // FIXME: this is inefficient as the file packager may have + // copied the data into memory already - we may want to + // integrate more there and let the file packager loading + // code be able to query if memory growth is on or off. + if (canOwn) { + warnOnce('file packager has copied file data into memory, but in memory growth we are forced to copy it again (see --no-heap-copy)'); + } + canOwn = false; + + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + + if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array? + if (canOwn) { + assert(position === 0, 'canOwn must imply no weird position inside the file'); + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data. + node.contents = new Uint8Array(buffer.subarray(offset, offset + length)); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file? + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + + // Appending to an existing file and we need to reallocate, or source data did not come as a typed array. + MEMFS.expandFileStorage(node, position+length); + if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available. + else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not. + } + } + node.usedBytes = Math.max(node.usedBytes, position+length); + return length; + },llseek:function(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + },allocate:function(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + },mmap:function(stream, buffer, offset, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + var ptr; + var allocated; + var contents = stream.node.contents; + // Only make a new copy when MAP_PRIVATE is specified. + if ( !(flags & 2) && + (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { + // We can't emulate MAP_SHARED when the file is not backed by the buffer + // we're mapping to (e.g. the HEAP buffer). + allocated = false; + ptr = contents.byteOffset; + } else { + // Try to avoid unnecessary slices. + if (position > 0 || position + length < stream.node.usedBytes) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + // malloc() can lead to growing the heap. If targeting the heap, we need to + // re-acquire the heap buffer object in case growth had occurred. + var fromHeap = (buffer.buffer == HEAP8.buffer); + ptr = _malloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + (fromHeap ? HEAP8 : buffer).set(contents, ptr); + } + return { ptr: ptr, allocated: allocated }; + },msync:function(stream, buffer, offset, length, mmapFlags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (mmapFlags & 2) { + // MAP_PRIVATE calls need not to be synced back to underlying fs + return 0; + } + + var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + // should we check if bytesWritten and length are the same? + return 0; + }}}; + + var IDBFS={dbs:{},indexedDB:function() { + if (typeof indexedDB !== 'undefined') return indexedDB; + var ret = null; + if (typeof window === 'object') ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + assert(ret, 'IDBFS used, but indexedDB not supported'); + return ret; + },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function(mount) { + // reuse all of the core MEMFS functionality + return MEMFS.mount.apply(null, arguments); + },syncfs:function(mount, populate, callback) { + IDBFS.getLocalSet(mount, function(err, local) { + if (err) return callback(err); + + IDBFS.getRemoteSet(mount, function(err, remote) { + if (err) return callback(err); + + var src = populate ? remote : local; + var dst = populate ? local : remote; + + IDBFS.reconcile(src, dst, callback); + }); + }); + },getDB:function(name, callback) { + // check the cache first + var db = IDBFS.dbs[name]; + if (db) { + return callback(null, db); + } + + var req; + try { + req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION); + } catch (e) { + return callback(e); + } + if (!req) { + return callback("Unable to connect to IndexedDB"); + } + req.onupgradeneeded = function(e) { + var db = e.target.result; + var transaction = e.target.transaction; + + var fileStore; + + if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) { + fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME); + } else { + fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME); + } + + if (!fileStore.indexNames.contains('timestamp')) { + fileStore.createIndex('timestamp', 'timestamp', { unique: false }); + } + }; + req.onsuccess = function() { + db = req.result; + + // add to the cache + IDBFS.dbs[name] = db; + callback(null, db); + }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },getLocalSet:function(mount, callback) { + var entries = {}; + + function isRealDir(p) { + return p !== '.' && p !== '..'; + }; + function toAbsolute(root) { + return function(p) { + return PATH.join2(root, p); + } + }; + + var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); + + while (check.length) { + var path = check.pop(); + var stat; + + try { + stat = FS.stat(path); + } catch (e) { + return callback(e); + } + + if (FS.isDir(stat.mode)) { + check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); + } + + entries[path] = { timestamp: stat.mtime }; + } + + return callback(null, { type: 'local', entries: entries }); + },getRemoteSet:function(mount, callback) { + var entries = {}; + + IDBFS.getDB(mount.mountpoint, function(err, db) { + if (err) return callback(err); + + try { + var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); + transaction.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + + var store = transaction.objectStore(IDBFS.DB_STORE_NAME); + var index = store.index('timestamp'); + + index.openKeyCursor().onsuccess = function(event) { + var cursor = event.target.result; + + if (!cursor) { + return callback(null, { type: 'remote', db: db, entries: entries }); + } + + entries[cursor.primaryKey] = { timestamp: cursor.key }; + + cursor.continue(); + }; + } catch (e) { + return callback(e); + } + }); + },loadLocalEntry:function(path, callback) { + var stat, node; + + try { + var lookup = FS.lookupPath(path); + node = lookup.node; + stat = FS.stat(path); + } catch (e) { + return callback(e); + } + + if (FS.isDir(stat.mode)) { + return callback(null, { timestamp: stat.mtime, mode: stat.mode }); + } else if (FS.isFile(stat.mode)) { + // Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array. + // Therefore always convert the file contents to a typed array first before writing the data to IndexedDB. + node.contents = MEMFS.getFileDataAsTypedArray(node); + return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); + } else { + return callback(new Error('node type not supported')); + } + },storeLocalEntry:function(path, entry, callback) { + try { + if (FS.isDir(entry.mode)) { + FS.mkdir(path, entry.mode); + } else if (FS.isFile(entry.mode)) { + FS.writeFile(path, entry.contents, { canOwn: true }); + } else { + return callback(new Error('node type not supported')); + } + + FS.chmod(path, entry.mode); + FS.utime(path, entry.timestamp, entry.timestamp); + } catch (e) { + return callback(e); + } + + callback(null); + },removeLocalEntry:function(path, callback) { + try { + var lookup = FS.lookupPath(path); + var stat = FS.stat(path); + + if (FS.isDir(stat.mode)) { + FS.rmdir(path); + } else if (FS.isFile(stat.mode)) { + FS.unlink(path); + } + } catch (e) { + return callback(e); + } + + callback(null); + },loadRemoteEntry:function(store, path, callback) { + var req = store.get(path); + req.onsuccess = function(event) { callback(null, event.target.result); }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },storeRemoteEntry:function(store, path, entry, callback) { + var req = store.put(entry, path); + req.onsuccess = function() { callback(null); }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },removeRemoteEntry:function(store, path, callback) { + var req = store.delete(path); + req.onsuccess = function() { callback(null); }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },reconcile:function(src, dst, callback) { + var total = 0; + + var create = []; + Object.keys(src.entries).forEach(function (key) { + var e = src.entries[key]; + var e2 = dst.entries[key]; + if (!e2 || e.timestamp > e2.timestamp) { + create.push(key); + total++; + } + }); + + var remove = []; + Object.keys(dst.entries).forEach(function (key) { + var e = dst.entries[key]; + var e2 = src.entries[key]; + if (!e2) { + remove.push(key); + total++; + } + }); + + if (!total) { + return callback(null); + } + + var errored = false; + var db = src.type === 'remote' ? src.db : dst.db; + var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); + var store = transaction.objectStore(IDBFS.DB_STORE_NAME); + + function done(err) { + if (err && !errored) { + errored = true; + return callback(err); + } + }; + + transaction.onerror = function(e) { + done(this.error); + e.preventDefault(); + }; + + transaction.oncomplete = function(e) { + if (!errored) { + callback(null); + } + }; + + // sort paths in ascending order so directory entries are created + // before the files inside them + create.sort().forEach(function (path) { + if (dst.type === 'local') { + IDBFS.loadRemoteEntry(store, path, function (err, entry) { + if (err) return done(err); + IDBFS.storeLocalEntry(path, entry, done); + }); + } else { + IDBFS.loadLocalEntry(path, function (err, entry) { + if (err) return done(err); + IDBFS.storeRemoteEntry(store, path, entry, done); + }); + } + }); + + // sort paths in descending order so files are deleted before their + // parent directories + remove.sort().reverse().forEach(function(path) { + if (dst.type === 'local') { + IDBFS.removeLocalEntry(path, done); + } else { + IDBFS.removeRemoteEntry(store, path, done); + } + }); + }}; + + + var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var NODEFS={isWindows:false,staticInit:function() { + NODEFS.isWindows = !!process.platform.match(/^win/); + var flags = process["binding"]("constants"); + // Node.js 4 compatibility: it has no namespaces for constants + if (flags["fs"]) { + flags = flags["fs"]; + } + NODEFS.flagsForNodeMap = { + "1024": flags["O_APPEND"], + "64": flags["O_CREAT"], + "128": flags["O_EXCL"], + "0": flags["O_RDONLY"], + "2": flags["O_RDWR"], + "4096": flags["O_SYNC"], + "512": flags["O_TRUNC"], + "1": flags["O_WRONLY"] + }; + },bufferFrom:function (arrayBuffer) { + // Node.js < 4.5 compatibility: Buffer.from does not support ArrayBuffer + // Buffer.from before 4.5 was just a method inherited from Uint8Array + // Buffer.alloc has been added with Buffer.from together, so check it instead + return Buffer["alloc"] ? Buffer.from(arrayBuffer) : new Buffer(arrayBuffer); + },convertNodeCode:function(e) { + var code = e.code; + assert(code in ERRNO_CODES); + return ERRNO_CODES[code]; + },mount:function (mount) { + assert(ENVIRONMENT_HAS_NODE); + return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); + },createNode:function (parent, name, mode, dev) { + if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { + throw new FS.ErrnoError(28); + } + var node = FS.createNode(parent, name, mode); + node.node_ops = NODEFS.node_ops; + node.stream_ops = NODEFS.stream_ops; + return node; + },getMode:function (path) { + var stat; + try { + stat = fs.lstatSync(path); + if (NODEFS.isWindows) { + // Node.js on Windows never represents permission bit 'x', so + // propagate read bits to execute bits + stat.mode = stat.mode | ((stat.mode & 292) >> 2); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + return stat.mode; + },realPath:function (node) { + var parts = []; + while (node.parent !== node) { + parts.push(node.name); + node = node.parent; + } + parts.push(node.mount.opts.root); + parts.reverse(); + return PATH.join.apply(null, parts); + },flagsForNode:function(flags) { + flags &= ~0x200000 /*O_PATH*/; // Ignore this flag from musl, otherwise node.js fails to open the file. + flags &= ~0x800 /*O_NONBLOCK*/; // Ignore this flag from musl, otherwise node.js fails to open the file. + flags &= ~0x8000 /*O_LARGEFILE*/; // Ignore this flag from musl, otherwise node.js fails to open the file. + flags &= ~0x80000 /*O_CLOEXEC*/; // Some applications may pass it; it makes no sense for a single process. + var newFlags = 0; + for (var k in NODEFS.flagsForNodeMap) { + if (flags & k) { + newFlags |= NODEFS.flagsForNodeMap[k]; + flags ^= k; + } + } + + if (!flags) { + return newFlags; + } else { + throw new FS.ErrnoError(28); + } + },node_ops:{getattr:function(node) { + var path = NODEFS.realPath(node); + var stat; + try { + stat = fs.lstatSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. + // See http://support.microsoft.com/kb/140365 + if (NODEFS.isWindows && !stat.blksize) { + stat.blksize = 4096; + } + if (NODEFS.isWindows && !stat.blocks) { + stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; + } + return { + dev: stat.dev, + ino: stat.ino, + mode: stat.mode, + nlink: stat.nlink, + uid: stat.uid, + gid: stat.gid, + rdev: stat.rdev, + size: stat.size, + atime: stat.atime, + mtime: stat.mtime, + ctime: stat.ctime, + blksize: stat.blksize, + blocks: stat.blocks + }; + },setattr:function(node, attr) { + var path = NODEFS.realPath(node); + try { + if (attr.mode !== undefined) { + fs.chmodSync(path, attr.mode); + // update the common node structure mode as well + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + var date = new Date(attr.timestamp); + fs.utimesSync(path, date, date); + } + if (attr.size !== undefined) { + fs.truncateSync(path, attr.size); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + },lookup:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + var mode = NODEFS.getMode(path); + return NODEFS.createNode(parent, name, mode); + },mknod:function (parent, name, mode, dev) { + var node = NODEFS.createNode(parent, name, mode, dev); + // create the backing node for this in the fs root as well + var path = NODEFS.realPath(node); + try { + if (FS.isDir(node.mode)) { + fs.mkdirSync(path, node.mode); + } else { + fs.writeFileSync(path, '', { mode: node.mode }); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + return node; + },rename:function (oldNode, newDir, newName) { + var oldPath = NODEFS.realPath(oldNode); + var newPath = PATH.join2(NODEFS.realPath(newDir), newName); + try { + fs.renameSync(oldPath, newPath); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + },unlink:function(parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + try { + fs.unlinkSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + },rmdir:function(parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + try { + fs.rmdirSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + },readdir:function(node) { + var path = NODEFS.realPath(node); + try { + return fs.readdirSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + },symlink:function(parent, newName, oldPath) { + var newPath = PATH.join2(NODEFS.realPath(parent), newName); + try { + fs.symlinkSync(oldPath, newPath); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + },readlink:function(node) { + var path = NODEFS.realPath(node); + try { + path = fs.readlinkSync(path); + path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path); + return path; + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + }},stream_ops:{open:function (stream) { + var path = NODEFS.realPath(stream.node); + try { + if (FS.isFile(stream.node.mode)) { + stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags)); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + },close:function (stream) { + try { + if (FS.isFile(stream.node.mode) && stream.nfd) { + fs.closeSync(stream.nfd); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + },read:function (stream, buffer, offset, length, position) { + // Node.js < 6 compatibility: node errors on 0 length reads + if (length === 0) return 0; + try { + return fs.readSync(stream.nfd, NODEFS.bufferFrom(buffer.buffer), offset, length, position); + } catch (e) { + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + },write:function (stream, buffer, offset, length, position) { + try { + return fs.writeSync(stream.nfd, NODEFS.bufferFrom(buffer.buffer), offset, length, position); + } catch (e) { + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + try { + var stat = fs.fstatSync(stream.nfd); + position += stat.size; + } catch (e) { + throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); + } + } + } + + if (position < 0) { + throw new FS.ErrnoError(28); + } + + return position; + }}}; + + var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function (mount) { + assert(ENVIRONMENT_IS_WORKER); + if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync(); + var root = WORKERFS.createNode(null, '/', WORKERFS.DIR_MODE, 0); + var createdParents = {}; + function ensureParent(path) { + // return the parent node, creating subdirs as necessary + var parts = path.split('/'); + var parent = root; + for (var i = 0; i < parts.length-1; i++) { + var curr = parts.slice(0, i+1).join('/'); + // Issue 4254: Using curr as a node name will prevent the node + // from being found in FS.nameTable when FS.open is called on + // a path which holds a child of this node, + // given that all FS functions assume node names + // are just their corresponding parts within their given path, + // rather than incremental aggregates which include their parent's + // directories. + if (!createdParents[curr]) { + createdParents[curr] = WORKERFS.createNode(parent, parts[i], WORKERFS.DIR_MODE, 0); + } + parent = createdParents[curr]; + } + return parent; + } + function base(path) { + var parts = path.split('/'); + return parts[parts.length-1]; + } + // We also accept FileList here, by using Array.prototype + Array.prototype.forEach.call(mount.opts["files"] || [], function(file) { + WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate); + }); + (mount.opts["blobs"] || []).forEach(function(obj) { + WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]); + }); + (mount.opts["packages"] || []).forEach(function(pack) { + pack['metadata'].files.forEach(function(file) { + var name = file.filename.substr(1); // remove initial slash + WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack['blob'].slice(file.start, file.end)); + }); + }); + return root; + },createNode:function (parent, name, mode, dev, contents, mtime) { + var node = FS.createNode(parent, name, mode); + node.mode = mode; + node.node_ops = WORKERFS.node_ops; + node.stream_ops = WORKERFS.stream_ops; + node.timestamp = (mtime || new Date).getTime(); + assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE); + if (mode === WORKERFS.FILE_MODE) { + node.size = contents.size; + node.contents = contents; + } else { + node.size = 4096; + node.contents = {}; + } + if (parent) { + parent.contents[name] = node; + } + return node; + },node_ops:{getattr:function(node) { + return { + dev: 1, + ino: undefined, + mode: node.mode, + nlink: 1, + uid: 0, + gid: 0, + rdev: undefined, + size: node.size, + atime: new Date(node.timestamp), + mtime: new Date(node.timestamp), + ctime: new Date(node.timestamp), + blksize: 4096, + blocks: Math.ceil(node.size / 4096), + }; + },setattr:function(node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + },lookup:function(parent, name) { + throw new FS.ErrnoError(44); + },mknod:function (parent, name, mode, dev) { + throw new FS.ErrnoError(63); + },rename:function (oldNode, newDir, newName) { + throw new FS.ErrnoError(63); + },unlink:function(parent, name) { + throw new FS.ErrnoError(63); + },rmdir:function(parent, name) { + throw new FS.ErrnoError(63); + },readdir:function(node) { + var entries = ['.', '..']; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + },symlink:function(parent, newName, oldPath) { + throw new FS.ErrnoError(63); + },readlink:function(node) { + throw new FS.ErrnoError(63); + }},stream_ops:{read:function (stream, buffer, offset, length, position) { + if (position >= stream.node.size) return 0; + var chunk = stream.node.contents.slice(position, position + length); + var ab = WORKERFS.reader.readAsArrayBuffer(chunk); + buffer.set(new Uint8Array(ab), offset); + return chunk.size; + },write:function (stream, buffer, offset, length, position) { + throw new FS.ErrnoError(29); + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.size; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + }}}; + + var ERRNO_MESSAGES={0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function(e) { + if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); + return ___setErrNo(e.errno); + },lookupPath:function(path, opts) { + path = PATH_FS.resolve(FS.cwd(), path); + opts = opts || {}; + + if (!path) return { path: '', node: null }; + + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + for (var key in defaults) { + if (opts[key] === undefined) { + opts[key] = defaults[key]; + } + } + + if (opts.recurse_count > 8) { // max recursive lookup of 8 + throw new FS.ErrnoError(32); + } + + // split the path + var parts = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), false); + + // start at the root + var current = FS.root; + var current_path = '/'; + + for (var i = 0; i < parts.length; i++) { + var islast = (i === parts.length-1); + if (islast && opts.parent) { + // stop resolving + break; + } + + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + + // jump to the mount's root node if this is a mountpoint + if (FS.isMountpoint(current)) { + if (!islast || (islast && opts.follow_mount)) { + current = current.mounted.root; + } + } + + // by default, lookupPath will not follow a symlink if it is the final path component. + // setting opts.follow = true will override this behavior. + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + + var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); + current = lookup.node; + + if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). + throw new FS.ErrnoError(32); + } + } + } + } + + return { path: current_path, node: current }; + },getPath:function(node) { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; + } + path = path ? node.name + '/' + path : node.name; + node = node.parent; + } + },hashName:function(parentid, name) { + var hash = 0; + + + for (var i = 0; i < name.length; i++) { + hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; + } + return ((parentid + hash) >>> 0) % FS.nameTable.length; + },hashAddNode:function(node) { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + },hashRemoveNode:function(node) { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + },lookupNode:function(parent, name) { + var err = FS.mayLookup(parent); + if (err) { + throw new FS.ErrnoError(err, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + // if we failed to find it in the cache, call into the VFS + return FS.lookup(parent, name); + },createNode:function(parent, name, mode, rdev) { + if (!FS.FSNode) { + FS.FSNode = function(parent, name, mode, rdev) { + if (!parent) { + parent = this; // root node sets parent to itself + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; + }; + + FS.FSNode.prototype = {}; + + // compatibility + var readMode = 292 | 73; + var writeMode = 146; + + // NOTE we must use Object.defineProperties instead of individual calls to + // Object.defineProperty in order to make closure compiler happy + Object.defineProperties(FS.FSNode.prototype, { + read: { + get: function() { return (this.mode & readMode) === readMode; }, + set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } + }, + write: { + get: function() { return (this.mode & writeMode) === writeMode; }, + set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } + }, + isFolder: { + get: function() { return FS.isDir(this.mode); } + }, + isDevice: { + get: function() { return FS.isChrdev(this.mode); } + } + }); + } + + var node = new FS.FSNode(parent, name, mode, rdev); + + FS.hashAddNode(node); + + return node; + },destroyNode:function(node) { + FS.hashRemoveNode(node); + },isRoot:function(node) { + return node === node.parent; + },isMountpoint:function(node) { + return !!node.mounted; + },isFile:function(mode) { + return (mode & 61440) === 32768; + },isDir:function(mode) { + return (mode & 61440) === 16384; + },isLink:function(mode) { + return (mode & 61440) === 40960; + },isChrdev:function(mode) { + return (mode & 61440) === 8192; + },isBlkdev:function(mode) { + return (mode & 61440) === 24576; + },isFIFO:function(mode) { + return (mode & 61440) === 4096; + },isSocket:function(mode) { + return (mode & 49152) === 49152; + },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str) { + var flags = FS.flagModes[str]; + if (typeof flags === 'undefined') { + throw new Error('Unknown file open mode: ' + str); + } + return flags; + },flagsToPermissionString:function(flag) { + var perms = ['r', 'w', 'rw'][flag & 3]; + if ((flag & 512)) { + perms += 'w'; + } + return perms; + },nodePermissions:function(node, perms) { + if (FS.ignorePermissions) { + return 0; + } + // return 0 if any user, group or owner bits are set. + if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { + return 2; + } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { + return 2; + } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { + return 2; + } + return 0; + },mayLookup:function(dir) { + var err = FS.nodePermissions(dir, 'x'); + if (err) return err; + if (!dir.node_ops.lookup) return 2; + return 0; + },mayCreate:function(dir, name) { + try { + var node = FS.lookupNode(dir, name); + return 20; + } catch (e) { + } + return FS.nodePermissions(dir, 'wx'); + },mayDelete:function(dir, name, isdir) { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var err = FS.nodePermissions(dir, 'wx'); + if (err) { + return err; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10; + } + } else { + if (FS.isDir(node.mode)) { + return 31; + } + } + return 0; + },mayOpen:function(node, flags) { + if (!node) { + return 44; + } + if (FS.isLink(node.mode)) { + return 32; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== 'r' || // opening for write + (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only) + return 31; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + },MAX_OPEN_FDS:4096,nextfd:function(fd_start, fd_end) { + fd_start = fd_start || 0; + fd_end = fd_end || FS.MAX_OPEN_FDS; + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(33); + },getStream:function(fd) { + return FS.streams[fd]; + },createStream:function(stream, fd_start, fd_end) { + if (!FS.FSStream) { + FS.FSStream = function(){}; + FS.FSStream.prototype = {}; + // compatibility + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function() { return this.node; }, + set: function(val) { this.node = val; } + }, + isRead: { + get: function() { return (this.flags & 2097155) !== 1; } + }, + isWrite: { + get: function() { return (this.flags & 2097155) !== 0; } + }, + isAppend: { + get: function() { return (this.flags & 1024); } + } + }); + } + // clone it, so we can return an instance of FSStream + var newStream = new FS.FSStream(); + for (var p in stream) { + newStream[p] = stream[p]; + } + stream = newStream; + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + },closeStream:function(fd) { + FS.streams[fd] = null; + },chrdev_stream_ops:{open:function(stream) { + var device = FS.getDevice(stream.node.rdev); + // override node's stream ops with the device's + stream.stream_ops = device.stream_ops; + // forward the open call + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + },llseek:function() { + throw new FS.ErrnoError(70); + }},major:function(dev) { + return ((dev) >> 8); + },minor:function(dev) { + return ((dev) & 0xff); + },makedev:function(ma, mi) { + return ((ma) << 8 | (mi)); + },registerDevice:function(dev, ops) { + FS.devices[dev] = { stream_ops: ops }; + },getDevice:function(dev) { + return FS.devices[dev]; + },getMounts:function(mount) { + var mounts = []; + var check = [mount]; + + while (check.length) { + var m = check.pop(); + + mounts.push(m); + + check.push.apply(check, m.mounts); + } + + return mounts; + },syncfs:function(populate, callback) { + if (typeof(populate) === 'function') { + callback = populate; + populate = false; + } + + FS.syncFSRequests++; + + if (FS.syncFSRequests > 1) { + console.log('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work'); + } + + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + + function doCallback(err) { + assert(FS.syncFSRequests > 0); + FS.syncFSRequests--; + return callback(err); + } + + function done(err) { + if (err) { + if (!done.errored) { + done.errored = true; + return doCallback(err); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + }; + + // sync all mounts + mounts.forEach(function (mount) { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + },mount:function(type, opts, mountpoint) { + var root = mountpoint === '/'; + var pseudo = !mountpoint; + var node; + + if (root && FS.root) { + throw new FS.ErrnoError(10); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + mountpoint = lookup.path; // use the absolute path + node = lookup.node; + + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + } + + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + + // create a root node for the fs + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + + if (root) { + FS.root = mountRoot; + } else if (node) { + // set as a mountpoint + node.mounted = mount; + + // add the new mount to the current mount's children + if (node.mount) { + node.mount.mounts.push(mount); + } + } + + return mountRoot; + },unmount:function (mountpoint) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28); + } + + // destroy the nodes for this mount, and all its child mounts + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + + Object.keys(FS.nameTable).forEach(function (hash) { + var current = FS.nameTable[hash]; + + while (current) { + var next = current.name_next; + + if (mounts.indexOf(current.mount) !== -1) { + FS.destroyNode(current); + } + + current = next; + } + }); + + // no longer a mountpoint + node.mounted = null; + + // remove this mount from the child mounts + var idx = node.mount.mounts.indexOf(mount); + assert(idx !== -1); + node.mount.mounts.splice(idx, 1); + },lookup:function(parent, name) { + return parent.node_ops.lookup(parent, name); + },mknod:function(path, mode, dev) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === '.' || name === '..') { + throw new FS.ErrnoError(28); + } + var err = FS.mayCreate(parent, name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.mknod(parent, name, mode, dev); + },create:function(path, mode) { + mode = mode !== undefined ? mode : 438 /* 0666 */; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + },mkdir:function(path, mode) { + mode = mode !== undefined ? mode : 511 /* 0777 */; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + },mkdirTree:function(path, mode) { + var dirs = path.split('/'); + var d = ''; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += '/' + dirs[i]; + try { + FS.mkdir(d, mode); + } catch(e) { + if (e.errno != 20) throw e; + } + } + },mkdev:function(path, mode, dev) { + if (typeof(dev) === 'undefined') { + dev = mode; + mode = 438 /* 0666 */; + } + mode |= 8192; + return FS.mknod(path, mode, dev); + },symlink:function(oldpath, newpath) { + if (!PATH_FS.resolve(oldpath)) { + throw new FS.ErrnoError(44); + } + var lookup = FS.lookupPath(newpath, { parent: true }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var newname = PATH.basename(newpath); + var err = FS.mayCreate(parent, newname); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.symlink) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.symlink(parent, newname, oldpath); + },rename:function(old_path, new_path) { + var old_dirname = PATH.dirname(old_path); + var new_dirname = PATH.dirname(new_path); + var old_name = PATH.basename(old_path); + var new_name = PATH.basename(new_path); + // parents must exist + var lookup, old_dir, new_dir; + try { + lookup = FS.lookupPath(old_path, { parent: true }); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, { parent: true }); + new_dir = lookup.node; + } catch (e) { + throw new FS.ErrnoError(10); + } + if (!old_dir || !new_dir) throw new FS.ErrnoError(44); + // need to be part of the same mount + if (old_dir.mount !== new_dir.mount) { + throw new FS.ErrnoError(75); + } + // source must exist + var old_node = FS.lookupNode(old_dir, old_name); + // old path should not be an ancestor of the new path + var relative = PATH_FS.relative(old_path, new_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(28); + } + // new path should not be an ancestor of the old path + relative = PATH_FS.relative(new_path, old_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(55); + } + // see if the new path already exists + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + // not fatal + } + // early out if nothing needs to change + if (old_node === new_node) { + return; + } + // we'll need to delete the old entry + var isdir = FS.isDir(old_node.mode); + var err = FS.mayDelete(old_dir, old_name, isdir); + if (err) { + throw new FS.ErrnoError(err); + } + // need delete permissions if we'll be overwriting. + // need create permissions if new doesn't already exist. + err = new_node ? + FS.mayDelete(new_dir, new_name, isdir) : + FS.mayCreate(new_dir, new_name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!old_dir.node_ops.rename) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { + throw new FS.ErrnoError(10); + } + // if we are going to change the parent, check write permissions + if (new_dir !== old_dir) { + err = FS.nodePermissions(old_dir, 'w'); + if (err) { + throw new FS.ErrnoError(err); + } + } + try { + if (FS.trackingDelegate['willMovePath']) { + FS.trackingDelegate['willMovePath'](old_path, new_path); + } + } catch(e) { + console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message); + } + // remove the node from the lookup hash + FS.hashRemoveNode(old_node); + // do the underlying fs rename + try { + old_dir.node_ops.rename(old_node, new_dir, new_name); + } catch (e) { + throw e; + } finally { + // add the node back to the hash (in case node_ops.rename + // changed its name) + FS.hashAddNode(old_node); + } + try { + if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path); + } catch(e) { + console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message); + } + },rmdir:function(path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, true); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + try { + if (FS.trackingDelegate['willDeletePath']) { + FS.trackingDelegate['willDeletePath'](path); + } + } catch(e) { + console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path); + } catch(e) { + console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message); + } + },readdir:function(path) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54); + } + return node.node_ops.readdir(node); + },unlink:function(path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, false); + if (err) { + // According to POSIX, we should map EISDIR to EPERM, but + // we instead do what Linux does (and we must, as we use + // the musl linux libc). + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + try { + if (FS.trackingDelegate['willDeletePath']) { + FS.trackingDelegate['willDeletePath'](path); + } + } catch(e) { + console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path); + } catch(e) { + console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message); + } + },readlink:function(path) { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + },stat:function(path, dontFollow) { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63); + } + return node.node_ops.getattr(node); + },lstat:function(path) { + return FS.stat(path, true); + },chmod:function(path, mode, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + mode: (mode & 4095) | (node.mode & ~4095), + timestamp: Date.now() + }); + },lchmod:function(path, mode) { + FS.chmod(path, mode, true); + },fchmod:function(fd, mode) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chmod(stream.node, mode); + },chown:function(path, uid, gid, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + // we ignore the uid / gid for now + }); + },lchown:function(path, uid, gid) { + FS.chown(path, uid, gid, true); + },fchown:function(fd, uid, gid) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chown(stream.node, uid, gid); + },truncate:function(path, len) { + if (len < 0) { + throw new FS.ErrnoError(28); + } + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28); + } + var err = FS.nodePermissions(node, 'w'); + if (err) { + throw new FS.ErrnoError(err); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + },ftruncate:function(fd, len) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28); + } + FS.truncate(stream.node, len); + },utime:function(path, atime, mtime) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + },open:function(path, flags, mode, fd_start, fd_end) { + if (path === "") { + throw new FS.ErrnoError(44); + } + flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; + if ((flags & 64)) { + mode = (mode & 4095) | 32768; + } else { + mode = 0; + } + var node; + if (typeof path === 'object') { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) { + // ignore + } + } + // perhaps we need to create the node + var created = false; + if ((flags & 64)) { + if (node) { + // if O_CREAT and O_EXCL are set, error out if the node already exists + if ((flags & 128)) { + throw new FS.ErrnoError(20); + } + } else { + // node doesn't exist, try to create it + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(44); + } + // can't truncate a device + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + // if asked only for a directory, then this must be one + if ((flags & 65536) && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + // check permissions, if this is not a file we just created now (it is ok to + // create and write to a file with read-only permissions; it is read-only + // for later use) + if (!created) { + var err = FS.mayOpen(node, flags); + if (err) { + throw new FS.ErrnoError(err); + } + } + // do truncation if necessary + if ((flags & 512)) { + FS.truncate(node, 0); + } + // we've already handled these, don't pass down to the underlying vfs + flags &= ~(128 | 512); + + // register the stream with the filesystem + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), // we want the absolute path to the node + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + // used by the file family libc calls (fopen, fwrite, ferror, etc.) + ungotten: [], + error: false + }, fd_start, fd_end); + // call the new stream's open function + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module['logReadFiles'] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + console.log("FS.trackingDelegate error on read file: " + path); + } + } + try { + if (FS.trackingDelegate['onOpenFile']) { + var trackingFlags = 0; + if ((flags & 2097155) !== 1) { + trackingFlags |= FS.tracking.openFlags.READ; + } + if ((flags & 2097155) !== 0) { + trackingFlags |= FS.tracking.openFlags.WRITE; + } + FS.trackingDelegate['onOpenFile'](path, trackingFlags); + } + } catch(e) { + console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: " + e.message); + } + return stream; + },close:function(stream) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (stream.getdents) stream.getdents = null; // free readdir state + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + },isClosed:function(stream) { + return stream.fd === null; + },llseek:function(stream, offset, whence) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70); + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + },read:function(stream, buffer, offset, length, position) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28); + } + var seeking = typeof position !== 'undefined'; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + },write:function(stream, buffer, offset, length, position, canOwn) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28); + } + if (stream.flags & 1024) { + // seek to the end before writing in append mode + FS.llseek(stream, 0, 2); + } + var seeking = typeof position !== 'undefined'; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + try { + if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path); + } catch(e) { + console.log("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: " + e.message); + } + return bytesWritten; + },allocate:function(stream, offset, length) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138); + } + stream.stream_ops.allocate(stream, offset, length); + },mmap:function(stream, buffer, offset, length, position, prot, flags) { + // User requests writing to file (prot & PROT_WRITE != 0). + // Checking if we have permissions to write to the file unless + // MAP_PRIVATE flag is set. According to POSIX spec it is possible + // to write to file opened in read-only mode with MAP_PRIVATE flag, + // as all modifications will be visible only in the memory of + // the current process. + if ((prot & 2) !== 0 + && (flags & 2) === 0 + && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(2); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43); + } + return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); + },msync:function(stream, buffer, offset, length, mmapFlags) { + if (!stream || !stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + },munmap:function(stream) { + return 0; + },ioctl:function(stream, cmd, arg) { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + },readFile:function(path, opts) { + opts = opts || {}; + opts.flags = opts.flags || 'r'; + opts.encoding = opts.encoding || 'binary'; + if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === 'utf8') { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === 'binary') { + ret = buf; + } + FS.close(stream); + return ret; + },writeFile:function(path, data, opts) { + opts = opts || {}; + opts.flags = opts.flags || 'w'; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data === 'string') { + var buf = new Uint8Array(lengthBytesUTF8(data)+1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error('Unsupported data type'); + } + FS.close(stream); + },cwd:function() { + return FS.currentPath; + },chdir:function(path) { + var lookup = FS.lookupPath(path, { follow: true }); + if (lookup.node === null) { + throw new FS.ErrnoError(44); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54); + } + var err = FS.nodePermissions(lookup.node, 'x'); + if (err) { + throw new FS.ErrnoError(err); + } + FS.currentPath = lookup.path; + },createDefaultDirectories:function() { + FS.mkdir('/tmp'); + FS.mkdir('/home'); + FS.mkdir('/home/web_user'); + },createDefaultDevices:function() { + // create /dev + FS.mkdir('/dev'); + // setup /dev/null + FS.registerDevice(FS.makedev(1, 3), { + read: function() { return 0; }, + write: function(stream, buffer, offset, length, pos) { return length; } + }); + FS.mkdev('/dev/null', FS.makedev(1, 3)); + // setup /dev/tty and /dev/tty1 + // stderr needs to print output using Module['printErr'] + // so we register a second tty just for it. + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev('/dev/tty', FS.makedev(5, 0)); + FS.mkdev('/dev/tty1', FS.makedev(6, 0)); + // setup /dev/[u]random + var random_device; + if (typeof crypto === 'object' && typeof crypto['getRandomValues'] === 'function') { + // for modern web browsers + var randomBuffer = new Uint8Array(1); + random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; }; + } else + if (ENVIRONMENT_IS_NODE) { + // for nodejs with or without crypto support included + try { + var crypto_module = require('crypto'); + // nodejs has crypto support + random_device = function() { return crypto_module['randomBytes'](1)[0]; }; + } catch (e) { + // nodejs doesn't have crypto support + } + } else + {} + if (!random_device) { + // we couldn't find a proper implementation, as Math.random() is not suitable for /dev/random, see emscripten-core/emscripten/pull/7096 + random_device = function() { abort("no cryptographic support found for random_device. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };"); }; + } + FS.createDevice('/dev', 'random', random_device); + FS.createDevice('/dev', 'urandom', random_device); + // we're not going to emulate the actual shm device, + // just create the tmp dirs that reside in it commonly + FS.mkdir('/dev/shm'); + FS.mkdir('/dev/shm/tmp'); + },createSpecialDirectories:function() { + // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the name of the stream for fd 6 (see test_unistd_ttyname) + FS.mkdir('/proc'); + FS.mkdir('/proc/self'); + FS.mkdir('/proc/self/fd'); + FS.mount({ + mount: function() { + var node = FS.createNode('/proc/self', 'fd', 16384 | 511 /* 0777 */, 73); + node.node_ops = { + lookup: function(parent, name) { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { + parent: null, + mount: { mountpoint: 'fake' }, + node_ops: { readlink: function() { return stream.path } } + }; + ret.parent = ret; // make it look like a simple root node + return ret; + } + }; + return node; + } + }, {}, '/proc/self/fd'); + },createStandardStreams:function() { + // TODO deprecate the old functionality of a single + // input / output callback and that utilizes FS.createDevice + // and instead require a unique set of stream ops + + // by default, we symlink the standard streams to the + // default tty devices. however, if the standard streams + // have been overwritten we create a unique device for + // them instead. + if (Module['stdin']) { + FS.createDevice('/dev', 'stdin', Module['stdin']); + } else { + FS.symlink('/dev/tty', '/dev/stdin'); + } + if (Module['stdout']) { + FS.createDevice('/dev', 'stdout', null, Module['stdout']); + } else { + FS.symlink('/dev/tty', '/dev/stdout'); + } + if (Module['stderr']) { + FS.createDevice('/dev', 'stderr', null, Module['stderr']); + } else { + FS.symlink('/dev/tty1', '/dev/stderr'); + } + + // open default streams for the stdin, stdout and stderr devices + var stdin = FS.open('/dev/stdin', 'r'); + var stdout = FS.open('/dev/stdout', 'w'); + var stderr = FS.open('/dev/stderr', 'w'); + assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); + assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); + assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); + },ensureErrnoError:function() { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.node = node; + this.setErrno = function(errno) { + this.errno = errno; + for (var key in ERRNO_CODES) { + if (ERRNO_CODES[key] === errno) { + this.code = key; + break; + } + } + }; + this.setErrno(errno); + this.message = ERRNO_MESSAGES[errno]; + + // Try to get a maximally helpful stack trace. On Node.js, getting Error.stack + // now ensures it shows what we want. + if (this.stack) { + // Define the stack property for Node.js 4, which otherwise errors on the next line. + Object.defineProperty(this, "stack", { value: (new Error).stack, writable: true }); + this.stack = demangleAll(this.stack); + } + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) + [44].forEach(function(code) { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = '<generic error, no stack>'; + }); + },staticInit:function() { + FS.ensureErrnoError(); + + FS.nameTable = new Array(4096); + + FS.mount(MEMFS, {}, '/'); + + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + + FS.filesystems = { + 'MEMFS': MEMFS, + 'IDBFS': IDBFS, + 'NODEFS': NODEFS, + 'WORKERFS': WORKERFS, + }; + },init:function(input, output, error) { + assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); + FS.init.initialized = true; + + FS.ensureErrnoError(); + + // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here + Module['stdin'] = input || Module['stdin']; + Module['stdout'] = output || Module['stdout']; + Module['stderr'] = error || Module['stderr']; + + FS.createStandardStreams(); + },quit:function() { + FS.init.initialized = false; + // force-flush all streams, so we get musl std streams printed out + var fflush = Module['_fflush']; + if (fflush) fflush(0); + // close all of our streams + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + },getMode:function(canRead, canWrite) { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + },joinPath:function(parts, forceRelative) { + var path = PATH.join.apply(null, parts); + if (forceRelative && path[0] == '/') path = path.substr(1); + return path; + },absolutePath:function(relative, base) { + return PATH_FS.resolve(base, relative); + },standardizePath:function(path) { + return PATH.normalize(path); + },findObject:function(path, dontResolveLastLink) { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (ret.exists) { + return ret.object; + } else { + ___setErrNo(ret.error); + return null; + } + },analyzePath:function(path, dontResolveLastLink) { + // operate from within the context of the symlink's target + try { + var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + path = lookup.path; + } catch (e) { + } + var ret = { + isRoot: false, exists: false, error: 0, name: null, path: null, object: null, + parentExists: false, parentPath: null, parentObject: null + }; + try { + var lookup = FS.lookupPath(path, { parent: true }); + ret.parentExists = true; + ret.parentPath = lookup.path; + ret.parentObject = lookup.node; + ret.name = PATH.basename(path); + lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + ret.exists = true; + ret.path = lookup.path; + ret.object = lookup.node; + ret.name = lookup.node.name; + ret.isRoot = lookup.path === '/'; + } catch (e) { + ret.error = e.errno; + }; + return ret; + },createFolder:function(parent, name, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.mkdir(path, mode); + },createPath:function(parent, path, canRead, canWrite) { + parent = typeof parent === 'string' ? parent : FS.getPath(parent); + var parts = path.split('/').reverse(); + while (parts.length) { + var part = parts.pop(); + if (!part) continue; + var current = PATH.join2(parent, part); + try { + FS.mkdir(current); + } catch (e) { + // ignore EEXIST + } + parent = current; + } + return current; + },createFile:function(parent, name, properties, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + },createDataFile:function(parent, name, data, canRead, canWrite, canOwn) { + var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data === 'string') { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + // make sure we can write to the file + FS.chmod(node, mode | 146); + var stream = FS.open(node, 'w'); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(node, mode); + } + return node; + },createDevice:function(parent, name, input, output) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + // Create a fake device that a set of stream ops to emulate + // the old behavior. + FS.registerDevice(dev, { + open: function(stream) { + stream.seekable = false; + }, + close: function(stream) { + // flush any pending line data + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: function(stream, buffer, offset, length, pos /* ignored */) { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset+i]); + } catch (e) { + throw new FS.ErrnoError(29); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + },createLink:function(parent, name, target, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + return FS.symlink(target, path); + },forceLoadFile:function(obj) { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + var success = true; + if (typeof XMLHttpRequest !== 'undefined') { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (read_) { + // Command-line. + try { + // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as + // read() will try to parse UTF8. + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + success = false; + } + } else { + throw new Error('Cannot load without read() or XMLHttpRequest.'); + } + if (!success) ___setErrNo(29); + return success; + },createLazyFile:function(parent, name, url, canRead, canWrite) { + // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; // Loaded chunks. Index is the chunk number + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length-1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = (idx / this.chunkSize)|0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + // Find length + var xhr = new XMLHttpRequest(); + xhr.open('HEAD', url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + + var chunkSize = 1024*1024; // Chunk size in bytes + + if (!hasByteServing) chunkSize = datalength; + + // Function to get a range from the remote URL. + var doXHR = (function(from, to) { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); + + // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + + // Some hints to the browser that we want binary data. + if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=x-user-defined'); + } + + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } else { + return intArrayFromString(xhr.responseText || '', true); + } + }); + var lazyArray = this; + lazyArray.setDataGetter(function(chunkNum) { + var start = chunkNum * chunkSize; + var end = (chunkNum+1) * chunkSize - 1; // including this byte + end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + + if (usesGzip || !datalength) { + // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length + chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file + datalength = this.getter(0).length; + chunkSize = datalength; + console.log("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest !== 'undefined') { + if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; + var lazyArray = new LazyUint8Array(); + Object.defineProperties(lazyArray, { + length: { + get: function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }, + chunkSize: { + get: function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + } + }); + + var properties = { isDevice: false, contents: lazyArray }; + } else { + var properties = { isDevice: false, url: url }; + } + + var node = FS.createFile(parent, name, properties, canRead, canWrite); + // This is a total hack, but I want to get this lazy file code out of the + // core of MEMFS. If we want to keep this lazy file concept I feel it should + // be its own thin LAZYFS proxying calls to MEMFS. + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + // Add a function that defers querying the file size until it is asked the first time. + Object.defineProperties(node, { + usedBytes: { + get: function() { return this.contents.length; } + } + }); + // override each stream op with one that tries to force load the lazy file first + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(function(key) { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(29); + } + return fn.apply(null, arguments); + }; + }); + // use a custom read function + stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(29); + } + var contents = stream.node.contents; + if (position >= contents.length) + return 0; + var size = Math.min(contents.length - position, length); + assert(size >= 0); + if (contents.slice) { // normal array + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR + buffer[offset + i] = contents.get(position + i); + } + } + return size; + }; + node.stream_ops = stream_ops; + return node; + },createPreloadedFile:function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { + Browser.init(); // XXX perhaps this method should move onto Browser? + // TODO we should allow people to just pass in a complete filename instead + // of parent and name being that we just join them anyways + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + var handled = false; + Module['preloadPlugins'].forEach(function(plugin) { + if (handled) return; + if (plugin['canHandle'](fullname)) { + plugin['handle'](byteArray, fullname, finish, function() { + if (onerror) onerror(); + removeRunDependency(dep); + }); + handled = true; + } + }); + if (!handled) finish(byteArray); + } + addRunDependency(dep); + if (typeof url == 'string') { + Browser.asyncLoad(url, function(byteArray) { + processData(byteArray); + }, onerror); + } else { + processData(url); + } + },indexedDB:function() { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + },DB_NAME:function() { + return 'EM_FS_' + window.location.pathname; + },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { + console.log('creating db'); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; + putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + },loadFilesFromDB:function(paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; // no database to load from + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + try { + var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); + } catch(e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var getRequest = files.get(path); + getRequest.onsuccess = function getRequest_onsuccess() { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function(dirfd, path) { + if (path[0] !== '/') { + // relative path + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = FS.getStream(dirfd); + if (!dirstream) throw new FS.ErrnoError(8); + dir = dirstream.path; + } + path = PATH.join2(dir, path); + } + return path; + },doStat:function(func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + // an error occurred while trying to look up the path; we should just report ENOTDIR + return -54; + } + throw e; + } + HEAP32[((buf)>>2)]=stat.dev; + HEAP32[(((buf)+(4))>>2)]=0; + HEAP32[(((buf)+(8))>>2)]=stat.ino; + HEAP32[(((buf)+(12))>>2)]=stat.mode; + HEAP32[(((buf)+(16))>>2)]=stat.nlink; + HEAP32[(((buf)+(20))>>2)]=stat.uid; + HEAP32[(((buf)+(24))>>2)]=stat.gid; + HEAP32[(((buf)+(28))>>2)]=stat.rdev; + HEAP32[(((buf)+(32))>>2)]=0; + (tempI64 = [stat.size>>>0,(tempDouble=stat.size,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(40))>>2)]=tempI64[0],HEAP32[(((buf)+(44))>>2)]=tempI64[1]); + HEAP32[(((buf)+(48))>>2)]=4096; + HEAP32[(((buf)+(52))>>2)]=stat.blocks; + HEAP32[(((buf)+(56))>>2)]=(stat.atime.getTime() / 1000)|0; + HEAP32[(((buf)+(60))>>2)]=0; + HEAP32[(((buf)+(64))>>2)]=(stat.mtime.getTime() / 1000)|0; + HEAP32[(((buf)+(68))>>2)]=0; + HEAP32[(((buf)+(72))>>2)]=(stat.ctime.getTime() / 1000)|0; + HEAP32[(((buf)+(76))>>2)]=0; + (tempI64 = [stat.ino>>>0,(tempDouble=stat.ino,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(80))>>2)]=tempI64[0],HEAP32[(((buf)+(84))>>2)]=tempI64[1]); + return 0; + },doMsync:function(addr, stream, len, flags) { + var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len)); + FS.msync(stream, buffer, 0, len, flags); + },doMkdir:function(path, mode) { + // remove a trailing slash, if one - /a/b/ has basename of '', but + // we want to create b in the context of this function + path = PATH.normalize(path); + if (path[path.length-1] === '/') path = path.substr(0, path.length-1); + FS.mkdir(path, mode, 0); + return 0; + },doMknod:function(path, mode, dev) { + // we don't want this in the JS API as it uses mknod to create all nodes. + switch (mode & 61440) { + case 32768: + case 8192: + case 24576: + case 4096: + case 49152: + break; + default: return -28; + } + FS.mknod(path, mode, dev); + return 0; + },doReadlink:function(path, buf, bufsize) { + if (bufsize <= 0) return -28; + var ret = FS.readlink(path); + + var len = Math.min(bufsize, lengthBytesUTF8(ret)); + var endChar = HEAP8[buf+len]; + stringToUTF8(ret, buf, bufsize+1); + // readlink is one of the rare functions that write out a C string, but does never append a null to the output buffer(!) + // stringToUTF8() always appends a null byte, so restore the character under the null byte after the write. + HEAP8[buf+len] = endChar; + + return len; + },doAccess:function(path, amode) { + if (amode & ~7) { + // need a valid mode + return -28; + } + var node; + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + if (!node) { + return -44; + } + var perms = ''; + if (amode & 4) perms += 'r'; + if (amode & 2) perms += 'w'; + if (amode & 1) perms += 'x'; + if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) { + return -2; + } + return 0; + },doDup:function(path, flags, suggestFD) { + var suggest = FS.getStream(suggestFD); + if (suggest) FS.close(suggest); + return FS.open(path, flags, 0, suggestFD, suggestFD).fd; + },doReadv:function(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[(((iov)+(i*8))>>2)]; + var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; + var curr = FS.read(stream, HEAP8,ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (curr < len) break; // nothing more to read + } + return ret; + },doWritev:function(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[(((iov)+(i*8))>>2)]; + var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; + var curr = FS.write(stream, HEAP8,ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + } + return ret; + },varargs:0,get:function(varargs) { + SYSCALLS.varargs += 4; + var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)]; + return ret; + },getStr:function() { + var ret = UTF8ToString(SYSCALLS.get()); + return ret; + },getStreamFromFD:function(fd) { + // TODO: when all syscalls use wasi, can remove the next line + if (fd === undefined) fd = SYSCALLS.get(); + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + },get64:function() { + var low = SYSCALLS.get(), high = SYSCALLS.get(); + if (low >= 0) assert(high === 0); + else assert(high === -1); + return low; + },getZero:function() { + assert(SYSCALLS.get() === 0); + }};function ___syscall195(which, varargs) {SYSCALLS.varargs = varargs; + try { + // SYS_stat64 + var path = SYSCALLS.getStr(), buf = SYSCALLS.get(); + return SYSCALLS.doStat(FS.stat, path, buf); + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall197(which, varargs) {SYSCALLS.varargs = varargs; + try { + // SYS_fstat64 + var stream = SYSCALLS.getStreamFromFD(), buf = SYSCALLS.get(); + return SYSCALLS.doStat(FS.stat, stream.path, buf); + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall221(which, varargs) {SYSCALLS.varargs = varargs; + try { + // fcntl64 + var stream = SYSCALLS.getStreamFromFD(), cmd = SYSCALLS.get(); + switch (cmd) { + case 0: { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -28; + } + var newStream; + newStream = FS.open(stream.path, stream.flags, 0, arg); + return newStream.fd; + } + case 1: + case 2: + return 0; // FD_CLOEXEC makes no sense for a single process. + case 3: + return stream.flags; + case 4: { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + case 12: + /* case 12: Currently in musl F_GETLK64 has same value as F_GETLK, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ { + + var arg = SYSCALLS.get(); + var offset = 0; + // We're always unlocked. + HEAP16[(((arg)+(offset))>>1)]=2; + return 0; + } + case 13: + case 14: + /* case 13: Currently in musl F_SETLK64 has same value as F_SETLK, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ + /* case 14: Currently in musl F_SETLKW64 has same value as F_SETLKW, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ + + + return 0; // Pretend that the locking is successful. + case 16: + case 8: + return -28; // These are for sockets. We don't have them fully implemented yet. + case 9: + // musl trusts getown return values, due to a bug where they must be, as they overlap with errors. just return -1 here, so fnctl() returns that, and we set errno ourselves. + ___setErrNo(28); + return -1; + default: { + return -28; + } + } + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall5(which, varargs) {SYSCALLS.varargs = varargs; + try { + // open + var pathname = SYSCALLS.getStr(), flags = SYSCALLS.get(), mode = SYSCALLS.get(); // optional TODO + var stream = FS.open(pathname, flags, mode); + return stream.fd; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs; + try { + // ioctl + var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get(); + switch (op) { + case 21509: + case 21505: { + if (!stream.tty) return -59; + return 0; + } + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: { + if (!stream.tty) return -59; + return 0; // no-op, not actually adjusting terminal settings + } + case 21519: { + if (!stream.tty) return -59; + var argp = SYSCALLS.get(); + HEAP32[((argp)>>2)]=0; + return 0; + } + case 21520: { + if (!stream.tty) return -59; + return -28; // not supported + } + case 21531: { + var argp = SYSCALLS.get(); + return FS.ioctl(stream, op, argp); + } + case 21523: { + // TODO: in theory we should write to the winsize struct that gets + // passed in, but for now musl doesn't read anything on it + if (!stream.tty) return -59; + return 0; + } + case 21524: { + // TODO: technically, this ioctl call should change the window size. + // but, since emscripten doesn't have any concept of a terminal window + // yet, we'll just silently throw it away as we do TIOCGWINSZ + if (!stream.tty) return -59; + return 0; + } + default: abort('bad ioctl syscall ' + op); + } + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___unlock() {} + + + function _fd_close(fd) {try { + + var stream = SYSCALLS.getStreamFromFD(fd); + FS.close(stream); + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + }function ___wasi_fd_close( + ) { + return _fd_close.apply(null, arguments) + } + + + function _fd_fdstat_get(fd, pbuf) {try { + + var stream = SYSCALLS.getStreamFromFD(fd); + // All character devices are terminals (other things a Linux system would + // assume is a character device, like the mouse, we have special APIs for). + var type = stream.tty ? 2 : + FS.isDir(stream.mode) ? 3 : + FS.isLink(stream.mode) ? 7 : + 4; + HEAP8[((pbuf)>>0)]=type; + // TODO HEAP16[(((pbuf)+(2))>>1)]=?; + // TODO (tempI64 = [?>>>0,(tempDouble=?,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((pbuf)+(8))>>2)]=tempI64[0],HEAP32[(((pbuf)+(12))>>2)]=tempI64[1]); + // TODO (tempI64 = [?>>>0,(tempDouble=?,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((pbuf)+(16))>>2)]=tempI64[0],HEAP32[(((pbuf)+(20))>>2)]=tempI64[1]); + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + }function ___wasi_fd_fdstat_get( + ) { + return _fd_fdstat_get.apply(null, arguments) + } + + + function _fd_read(fd, iov, iovcnt, pnum) {try { + + var stream = SYSCALLS.getStreamFromFD(fd); + var num = SYSCALLS.doReadv(stream, iov, iovcnt); + HEAP32[((pnum)>>2)]=num + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + }function ___wasi_fd_read( + ) { + return _fd_read.apply(null, arguments) + } + + + function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {try { + + var stream = SYSCALLS.getStreamFromFD(fd); + var HIGH_OFFSET = 0x100000000; // 2^32 + // use an unsigned operator on low and shift high by 32-bits + var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0); + + var DOUBLE_LIMIT = 0x20000000000000; // 2^53 + // we also check for equality since DOUBLE_LIMIT + 1 == DOUBLE_LIMIT + if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) { + return -61; + } + + FS.llseek(stream, offset, whence); + (tempI64 = [stream.position>>>0,(tempDouble=stream.position,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((newOffset)>>2)]=tempI64[0],HEAP32[(((newOffset)+(4))>>2)]=tempI64[1]); + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + }function ___wasi_fd_seek( + ) { + return _fd_seek.apply(null, arguments) + } + + + function _fd_write(fd, iov, iovcnt, pnum) {try { + + var stream = SYSCALLS.getStreamFromFD(fd); + var num = SYSCALLS.doWritev(stream, iov, iovcnt); + HEAP32[((pnum)>>2)]=num + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + }function ___wasi_fd_write( + ) { + return _fd_write.apply(null, arguments) + } + + + var tupleRegistrations={}; + + function runDestructors(destructors) { + while (destructors.length) { + var ptr = destructors.pop(); + var del = destructors.pop(); + del(ptr); + } + } + + function simpleReadValueFromPointer(pointer) { + return this['fromWireType'](HEAPU32[pointer >> 2]); + } + + + var awaitingDependencies={}; + + var registeredTypes={}; + + var typeDependencies={}; + + + + + + + var char_0=48; + + var char_9=57;function makeLegalFunctionName(name) { + if (undefined === name) { + return '_unknown'; + } + name = name.replace(/[^a-zA-Z0-9_]/g, '$'); + var f = name.charCodeAt(0); + if (f >= char_0 && f <= char_9) { + return '_' + name; + } else { + return name; + } + }function createNamedFunction(name, body) { + name = makeLegalFunctionName(name); + /*jshint evil:true*/ + return new Function( + "body", + "return function " + name + "() {\n" + + " \"use strict\";" + + " return body.apply(this, arguments);\n" + + "};\n" + )(body); + }function extendError(baseErrorType, errorName) { + var errorClass = createNamedFunction(errorName, function(message) { + this.name = errorName; + this.message = message; + + var stack = (new Error(message)).stack; + if (stack !== undefined) { + this.stack = this.toString() + '\n' + + stack.replace(/^Error(:[^\n]*)?\n/, ''); + } + }); + errorClass.prototype = Object.create(baseErrorType.prototype); + errorClass.prototype.constructor = errorClass; + errorClass.prototype.toString = function() { + if (this.message === undefined) { + return this.name; + } else { + return this.name + ': ' + this.message; + } + }; + + return errorClass; + }var InternalError=undefined;function throwInternalError(message) { + throw new InternalError(message); + }function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverters) { + myTypes.forEach(function(type) { + typeDependencies[type] = dependentTypes; + }); + + function onComplete(typeConverters) { + var myTypeConverters = getTypeConverters(typeConverters); + if (myTypeConverters.length !== myTypes.length) { + throwInternalError('Mismatched type converter count'); + } + for (var i = 0; i < myTypes.length; ++i) { + registerType(myTypes[i], myTypeConverters[i]); + } + } + + var typeConverters = new Array(dependentTypes.length); + var unregisteredTypes = []; + var registered = 0; + dependentTypes.forEach(function(dt, i) { + if (registeredTypes.hasOwnProperty(dt)) { + typeConverters[i] = registeredTypes[dt]; + } else { + unregisteredTypes.push(dt); + if (!awaitingDependencies.hasOwnProperty(dt)) { + awaitingDependencies[dt] = []; + } + awaitingDependencies[dt].push(function() { + typeConverters[i] = registeredTypes[dt]; + ++registered; + if (registered === unregisteredTypes.length) { + onComplete(typeConverters); + } + }); + } + }); + if (0 === unregisteredTypes.length) { + onComplete(typeConverters); + } + }function __embind_finalize_value_array(rawTupleType) { + var reg = tupleRegistrations[rawTupleType]; + delete tupleRegistrations[rawTupleType]; + var elements = reg.elements; + var elementsLength = elements.length; + var elementTypes = elements.map(function(elt) { return elt.getterReturnType; }). + concat(elements.map(function(elt) { return elt.setterArgumentType; })); + + var rawConstructor = reg.rawConstructor; + var rawDestructor = reg.rawDestructor; + + whenDependentTypesAreResolved([rawTupleType], elementTypes, function(elementTypes) { + elements.forEach(function(elt, i) { + var getterReturnType = elementTypes[i]; + var getter = elt.getter; + var getterContext = elt.getterContext; + var setterArgumentType = elementTypes[i + elementsLength]; + var setter = elt.setter; + var setterContext = elt.setterContext; + elt.read = function(ptr) { + return getterReturnType['fromWireType'](getter(getterContext, ptr)); + }; + elt.write = function(ptr, o) { + var destructors = []; + setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, o)); + runDestructors(destructors); + }; + }); + + return [{ + name: reg.name, + 'fromWireType': function(ptr) { + var rv = new Array(elementsLength); + for (var i = 0; i < elementsLength; ++i) { + rv[i] = elements[i].read(ptr); + } + rawDestructor(ptr); + return rv; + }, + 'toWireType': function(destructors, o) { + if (elementsLength !== o.length) { + throw new TypeError("Incorrect number of tuple elements for " + reg.name + ": expected=" + elementsLength + ", actual=" + o.length); + } + var ptr = rawConstructor(); + for (var i = 0; i < elementsLength; ++i) { + elements[i].write(ptr, o[i]); + } + if (destructors !== null) { + destructors.push(rawDestructor, ptr); + } + return ptr; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: rawDestructor, + }]; + }); + } + + + var structRegistrations={};function __embind_finalize_value_object(structType) { + var reg = structRegistrations[structType]; + delete structRegistrations[structType]; + + var rawConstructor = reg.rawConstructor; + var rawDestructor = reg.rawDestructor; + var fieldRecords = reg.fields; + var fieldTypes = fieldRecords.map(function(field) { return field.getterReturnType; }). + concat(fieldRecords.map(function(field) { return field.setterArgumentType; })); + whenDependentTypesAreResolved([structType], fieldTypes, function(fieldTypes) { + var fields = {}; + fieldRecords.forEach(function(field, i) { + var fieldName = field.fieldName; + var getterReturnType = fieldTypes[i]; + var getter = field.getter; + var getterContext = field.getterContext; + var setterArgumentType = fieldTypes[i + fieldRecords.length]; + var setter = field.setter; + var setterContext = field.setterContext; + fields[fieldName] = { + read: function(ptr) { + return getterReturnType['fromWireType']( + getter(getterContext, ptr)); + }, + write: function(ptr, o) { + var destructors = []; + setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, o)); + runDestructors(destructors); + } + }; + }); + + return [{ + name: reg.name, + 'fromWireType': function(ptr) { + var rv = {}; + for (var i in fields) { + rv[i] = fields[i].read(ptr); + } + rawDestructor(ptr); + return rv; + }, + 'toWireType': function(destructors, o) { + // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: + // assume all fields are present without checking. + for (var fieldName in fields) { + if (!(fieldName in o)) { + throw new TypeError('Missing field'); + } + } + var ptr = rawConstructor(); + for (fieldName in fields) { + fields[fieldName].write(ptr, o[fieldName]); + } + if (destructors !== null) { + destructors.push(rawDestructor, ptr); + } + return ptr; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: rawDestructor, + }]; + }); + } + + + function getShiftFromSize(size) { + switch (size) { + case 1: return 0; + case 2: return 1; + case 4: return 2; + case 8: return 3; + default: + throw new TypeError('Unknown type size: ' + size); + } + } + + + + function embind_init_charCodes() { + var codes = new Array(256); + for (var i = 0; i < 256; ++i) { + codes[i] = String.fromCharCode(i); + } + embind_charCodes = codes; + }var embind_charCodes=undefined;function readLatin1String(ptr) { + var ret = ""; + var c = ptr; + while (HEAPU8[c]) { + ret += embind_charCodes[HEAPU8[c++]]; + } + return ret; + } + + + + var BindingError=undefined;function throwBindingError(message) { + throw new BindingError(message); + }function registerType(rawType, registeredInstance, options) { + options = options || {}; + + if (!('argPackAdvance' in registeredInstance)) { + throw new TypeError('registerType registeredInstance requires argPackAdvance'); + } + + var name = registeredInstance.name; + if (!rawType) { + throwBindingError('type "' + name + '" must have a positive integer typeid pointer'); + } + if (registeredTypes.hasOwnProperty(rawType)) { + if (options.ignoreDuplicateRegistrations) { + return; + } else { + throwBindingError("Cannot register type '" + name + "' twice"); + } + } + + registeredTypes[rawType] = registeredInstance; + delete typeDependencies[rawType]; + + if (awaitingDependencies.hasOwnProperty(rawType)) { + var callbacks = awaitingDependencies[rawType]; + delete awaitingDependencies[rawType]; + callbacks.forEach(function(cb) { + cb(); + }); + } + }function __embind_register_bool(rawType, name, size, trueValue, falseValue) { + var shift = getShiftFromSize(size); + + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': function(wt) { + // ambiguous emscripten ABI: sometimes return values are + // true or false, and sometimes integers (0 or 1) + return !!wt; + }, + 'toWireType': function(destructors, o) { + return o ? trueValue : falseValue; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': function(pointer) { + // TODO: if heap is fixed (like in asm.js) this could be executed outside + var heap; + if (size === 1) { + heap = HEAP8; + } else if (size === 2) { + heap = HEAP16; + } else if (size === 4) { + heap = HEAP32; + } else { + throw new TypeError("Unknown boolean type size: " + name); + } + return this['fromWireType'](heap[pointer >> shift]); + }, + destructorFunction: null, // This type does not need a destructor + }); + } + + + + + function ClassHandle_isAliasOf(other) { + if (!(this instanceof ClassHandle)) { + return false; + } + if (!(other instanceof ClassHandle)) { + return false; + } + + var leftClass = this.$$.ptrType.registeredClass; + var left = this.$$.ptr; + var rightClass = other.$$.ptrType.registeredClass; + var right = other.$$.ptr; + + while (leftClass.baseClass) { + left = leftClass.upcast(left); + leftClass = leftClass.baseClass; + } + + while (rightClass.baseClass) { + right = rightClass.upcast(right); + rightClass = rightClass.baseClass; + } + + return leftClass === rightClass && left === right; + } + + + function shallowCopyInternalPointer(o) { + return { + count: o.count, + deleteScheduled: o.deleteScheduled, + preservePointerOnDelete: o.preservePointerOnDelete, + ptr: o.ptr, + ptrType: o.ptrType, + smartPtr: o.smartPtr, + smartPtrType: o.smartPtrType, + }; + } + + function throwInstanceAlreadyDeleted(obj) { + function getInstanceTypeName(handle) { + return handle.$$.ptrType.registeredClass.name; + } + throwBindingError(getInstanceTypeName(obj) + ' instance already deleted'); + } + + + var finalizationGroup=false; + + function detachFinalizer(handle) {} + + + function runDestructor($$) { + if ($$.smartPtr) { + $$.smartPtrType.rawDestructor($$.smartPtr); + } else { + $$.ptrType.registeredClass.rawDestructor($$.ptr); + } + }function releaseClassHandle($$) { + $$.count.value -= 1; + var toDelete = 0 === $$.count.value; + if (toDelete) { + runDestructor($$); + } + }function attachFinalizer(handle) { + if ('undefined' === typeof FinalizationGroup) { + attachFinalizer = function (handle) { return handle; }; + return handle; + } + // If the running environment has a FinalizationGroup (see + // https://github.com/tc39/proposal-weakrefs), then attach finalizers + // for class handles. We check for the presence of FinalizationGroup + // at run-time, not build-time. + finalizationGroup = new FinalizationGroup(function (iter) { + for (var result = iter.next(); !result.done; result = iter.next()) { + var $$ = result.value; + if (!$$.ptr) { + console.warn('object already deleted: ' + $$.ptr); + } else { + releaseClassHandle($$); + } + } + }); + attachFinalizer = function(handle) { + finalizationGroup.register(handle, handle.$$, handle.$$); + return handle; + }; + detachFinalizer = function(handle) { + finalizationGroup.unregister(handle.$$); + }; + return attachFinalizer(handle); + }function ClassHandle_clone() { + if (!this.$$.ptr) { + throwInstanceAlreadyDeleted(this); + } + + if (this.$$.preservePointerOnDelete) { + this.$$.count.value += 1; + return this; + } else { + var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), { + $$: { + value: shallowCopyInternalPointer(this.$$), + } + })); + + clone.$$.count.value += 1; + clone.$$.deleteScheduled = false; + return clone; + } + } + + function ClassHandle_delete() { + if (!this.$$.ptr) { + throwInstanceAlreadyDeleted(this); + } + + if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { + throwBindingError('Object already scheduled for deletion'); + } + + detachFinalizer(this); + releaseClassHandle(this.$$); + + if (!this.$$.preservePointerOnDelete) { + this.$$.smartPtr = undefined; + this.$$.ptr = undefined; + } + } + + function ClassHandle_isDeleted() { + return !this.$$.ptr; + } + + + var delayFunction=undefined; + + var deletionQueue=[]; + + function flushPendingDeletes() { + while (deletionQueue.length) { + var obj = deletionQueue.pop(); + obj.$$.deleteScheduled = false; + obj['delete'](); + } + }function ClassHandle_deleteLater() { + if (!this.$$.ptr) { + throwInstanceAlreadyDeleted(this); + } + if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { + throwBindingError('Object already scheduled for deletion'); + } + deletionQueue.push(this); + if (deletionQueue.length === 1 && delayFunction) { + delayFunction(flushPendingDeletes); + } + this.$$.deleteScheduled = true; + return this; + }function init_ClassHandle() { + ClassHandle.prototype['isAliasOf'] = ClassHandle_isAliasOf; + ClassHandle.prototype['clone'] = ClassHandle_clone; + ClassHandle.prototype['delete'] = ClassHandle_delete; + ClassHandle.prototype['isDeleted'] = ClassHandle_isDeleted; + ClassHandle.prototype['deleteLater'] = ClassHandle_deleteLater; + }function ClassHandle() { + } + + var registeredPointers={}; + + + function ensureOverloadTable(proto, methodName, humanName) { + if (undefined === proto[methodName].overloadTable) { + var prevFunc = proto[methodName]; + // Inject an overload resolver function that routes to the appropriate overload based on the number of arguments. + proto[methodName] = function() { + // TODO This check can be removed in -O3 level "unsafe" optimizations. + if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) { + throwBindingError("Function '" + humanName + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + proto[methodName].overloadTable + ")!"); + } + return proto[methodName].overloadTable[arguments.length].apply(this, arguments); + }; + // Move the previous function into the overload table. + proto[methodName].overloadTable = []; + proto[methodName].overloadTable[prevFunc.argCount] = prevFunc; + } + }function exposePublicSymbol(name, value, numArguments) { + if (Module.hasOwnProperty(name)) { + if (undefined === numArguments || (undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments])) { + throwBindingError("Cannot register public name '" + name + "' twice"); + } + + // We are exposing a function with the same name as an existing function. Create an overload table and a function selector + // that routes between the two. + ensureOverloadTable(Module, name, name); + if (Module.hasOwnProperty(numArguments)) { + throwBindingError("Cannot register multiple overloads of a function with the same number of arguments (" + numArguments + ")!"); + } + // Add the new function into the overload table. + Module[name].overloadTable[numArguments] = value; + } + else { + Module[name] = value; + if (undefined !== numArguments) { + Module[name].numArguments = numArguments; + } + } + } + + function RegisteredClass( + name, + constructor, + instancePrototype, + rawDestructor, + baseClass, + getActualType, + upcast, + downcast + ) { + this.name = name; + this.constructor = constructor; + this.instancePrototype = instancePrototype; + this.rawDestructor = rawDestructor; + this.baseClass = baseClass; + this.getActualType = getActualType; + this.upcast = upcast; + this.downcast = downcast; + this.pureVirtualFunctions = []; + } + + + + function upcastPointer(ptr, ptrClass, desiredClass) { + while (ptrClass !== desiredClass) { + if (!ptrClass.upcast) { + throwBindingError("Expected null or instance of " + desiredClass.name + ", got an instance of " + ptrClass.name); + } + ptr = ptrClass.upcast(ptr); + ptrClass = ptrClass.baseClass; + } + return ptr; + }function constNoSmartPtrRawPointerToWireType(destructors, handle) { + if (handle === null) { + if (this.isReference) { + throwBindingError('null is not a valid ' + this.name); + } + return 0; + } + + if (!handle.$$) { + throwBindingError('Cannot pass "' + _embind_repr(handle) + '" as a ' + this.name); + } + if (!handle.$$.ptr) { + throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name); + } + var handleClass = handle.$$.ptrType.registeredClass; + var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + return ptr; + } + + function genericPointerToWireType(destructors, handle) { + var ptr; + if (handle === null) { + if (this.isReference) { + throwBindingError('null is not a valid ' + this.name); + } + + if (this.isSmartPointer) { + ptr = this.rawConstructor(); + if (destructors !== null) { + destructors.push(this.rawDestructor, ptr); + } + return ptr; + } else { + return 0; + } + } + + if (!handle.$$) { + throwBindingError('Cannot pass "' + _embind_repr(handle) + '" as a ' + this.name); + } + if (!handle.$$.ptr) { + throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name); + } + if (!this.isConst && handle.$$.ptrType.isConst) { + throwBindingError('Cannot convert argument of type ' + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + ' to parameter type ' + this.name); + } + var handleClass = handle.$$.ptrType.registeredClass; + ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + + if (this.isSmartPointer) { + // TODO: this is not strictly true + // We could support BY_EMVAL conversions from raw pointers to smart pointers + // because the smart pointer can hold a reference to the handle + if (undefined === handle.$$.smartPtr) { + throwBindingError('Passing raw pointer to smart pointer is illegal'); + } + + switch (this.sharingPolicy) { + case 0: // NONE + // no upcasting + if (handle.$$.smartPtrType === this) { + ptr = handle.$$.smartPtr; + } else { + throwBindingError('Cannot convert argument of type ' + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + ' to parameter type ' + this.name); + } + break; + + case 1: // INTRUSIVE + ptr = handle.$$.smartPtr; + break; + + case 2: // BY_EMVAL + if (handle.$$.smartPtrType === this) { + ptr = handle.$$.smartPtr; + } else { + var clonedHandle = handle['clone'](); + ptr = this.rawShare( + ptr, + __emval_register(function() { + clonedHandle['delete'](); + }) + ); + if (destructors !== null) { + destructors.push(this.rawDestructor, ptr); + } + } + break; + + default: + throwBindingError('Unsupporting sharing policy'); + } + } + return ptr; + } + + function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) { + if (handle === null) { + if (this.isReference) { + throwBindingError('null is not a valid ' + this.name); + } + return 0; + } + + if (!handle.$$) { + throwBindingError('Cannot pass "' + _embind_repr(handle) + '" as a ' + this.name); + } + if (!handle.$$.ptr) { + throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name); + } + if (handle.$$.ptrType.isConst) { + throwBindingError('Cannot convert argument of type ' + handle.$$.ptrType.name + ' to parameter type ' + this.name); + } + var handleClass = handle.$$.ptrType.registeredClass; + var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + return ptr; + } + + + function RegisteredPointer_getPointee(ptr) { + if (this.rawGetPointee) { + ptr = this.rawGetPointee(ptr); + } + return ptr; + } + + function RegisteredPointer_destructor(ptr) { + if (this.rawDestructor) { + this.rawDestructor(ptr); + } + } + + function RegisteredPointer_deleteObject(handle) { + if (handle !== null) { + handle['delete'](); + } + } + + + function downcastPointer(ptr, ptrClass, desiredClass) { + if (ptrClass === desiredClass) { + return ptr; + } + if (undefined === desiredClass.baseClass) { + return null; // no conversion + } + + var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass); + if (rv === null) { + return null; + } + return desiredClass.downcast(rv); + } + + + + + function getInheritedInstanceCount() { + return Object.keys(registeredInstances).length; + } + + function getLiveInheritedInstances() { + var rv = []; + for (var k in registeredInstances) { + if (registeredInstances.hasOwnProperty(k)) { + rv.push(registeredInstances[k]); + } + } + return rv; + } + + function setDelayFunction(fn) { + delayFunction = fn; + if (deletionQueue.length && delayFunction) { + delayFunction(flushPendingDeletes); + } + }function init_embind() { + Module['getInheritedInstanceCount'] = getInheritedInstanceCount; + Module['getLiveInheritedInstances'] = getLiveInheritedInstances; + Module['flushPendingDeletes'] = flushPendingDeletes; + Module['setDelayFunction'] = setDelayFunction; + }var registeredInstances={}; + + function getBasestPointer(class_, ptr) { + if (ptr === undefined) { + throwBindingError('ptr should not be undefined'); + } + while (class_.baseClass) { + ptr = class_.upcast(ptr); + class_ = class_.baseClass; + } + return ptr; + }function getInheritedInstance(class_, ptr) { + ptr = getBasestPointer(class_, ptr); + return registeredInstances[ptr]; + } + + function makeClassHandle(prototype, record) { + if (!record.ptrType || !record.ptr) { + throwInternalError('makeClassHandle requires ptr and ptrType'); + } + var hasSmartPtrType = !!record.smartPtrType; + var hasSmartPtr = !!record.smartPtr; + if (hasSmartPtrType !== hasSmartPtr) { + throwInternalError('Both smartPtrType and smartPtr must be specified'); + } + record.count = { value: 1 }; + return attachFinalizer(Object.create(prototype, { + $$: { + value: record, + }, + })); + }function RegisteredPointer_fromWireType(ptr) { + // ptr is a raw pointer (or a raw smartpointer) + + // rawPointer is a maybe-null raw pointer + var rawPointer = this.getPointee(ptr); + if (!rawPointer) { + this.destructor(ptr); + return null; + } + + var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer); + if (undefined !== registeredInstance) { + // JS object has been neutered, time to repopulate it + if (0 === registeredInstance.$$.count.value) { + registeredInstance.$$.ptr = rawPointer; + registeredInstance.$$.smartPtr = ptr; + return registeredInstance['clone'](); + } else { + // else, just increment reference count on existing object + // it already has a reference to the smart pointer + var rv = registeredInstance['clone'](); + this.destructor(ptr); + return rv; + } + } + + function makeDefaultHandle() { + if (this.isSmartPointer) { + return makeClassHandle(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: rawPointer, + smartPtrType: this, + smartPtr: ptr, + }); + } else { + return makeClassHandle(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: ptr, + }); + } + } + + var actualType = this.registeredClass.getActualType(rawPointer); + var registeredPointerRecord = registeredPointers[actualType]; + if (!registeredPointerRecord) { + return makeDefaultHandle.call(this); + } + + var toType; + if (this.isConst) { + toType = registeredPointerRecord.constPointerType; + } else { + toType = registeredPointerRecord.pointerType; + } + var dp = downcastPointer( + rawPointer, + this.registeredClass, + toType.registeredClass); + if (dp === null) { + return makeDefaultHandle.call(this); + } + if (this.isSmartPointer) { + return makeClassHandle(toType.registeredClass.instancePrototype, { + ptrType: toType, + ptr: dp, + smartPtrType: this, + smartPtr: ptr, + }); + } else { + return makeClassHandle(toType.registeredClass.instancePrototype, { + ptrType: toType, + ptr: dp, + }); + } + }function init_RegisteredPointer() { + RegisteredPointer.prototype.getPointee = RegisteredPointer_getPointee; + RegisteredPointer.prototype.destructor = RegisteredPointer_destructor; + RegisteredPointer.prototype['argPackAdvance'] = 8; + RegisteredPointer.prototype['readValueFromPointer'] = simpleReadValueFromPointer; + RegisteredPointer.prototype['deleteObject'] = RegisteredPointer_deleteObject; + RegisteredPointer.prototype['fromWireType'] = RegisteredPointer_fromWireType; + }function RegisteredPointer( + name, + registeredClass, + isReference, + isConst, + + // smart pointer properties + isSmartPointer, + pointeeType, + sharingPolicy, + rawGetPointee, + rawConstructor, + rawShare, + rawDestructor + ) { + this.name = name; + this.registeredClass = registeredClass; + this.isReference = isReference; + this.isConst = isConst; + + // smart pointer properties + this.isSmartPointer = isSmartPointer; + this.pointeeType = pointeeType; + this.sharingPolicy = sharingPolicy; + this.rawGetPointee = rawGetPointee; + this.rawConstructor = rawConstructor; + this.rawShare = rawShare; + this.rawDestructor = rawDestructor; + + if (!isSmartPointer && registeredClass.baseClass === undefined) { + if (isConst) { + this['toWireType'] = constNoSmartPtrRawPointerToWireType; + this.destructorFunction = null; + } else { + this['toWireType'] = nonConstNoSmartPtrRawPointerToWireType; + this.destructorFunction = null; + } + } else { + this['toWireType'] = genericPointerToWireType; + // Here we must leave this.destructorFunction undefined, since whether genericPointerToWireType returns + // a pointer that needs to be freed up is runtime-dependent, and cannot be evaluated at registration time. + // TODO: Create an alternative mechanism that allows removing the use of var destructors = []; array in + // craftInvokerFunction altogether. + } + } + + function replacePublicSymbol(name, value, numArguments) { + if (!Module.hasOwnProperty(name)) { + throwInternalError('Replacing nonexistant public symbol'); + } + // If there's an overload table for this symbol, replace the symbol in the overload table instead. + if (undefined !== Module[name].overloadTable && undefined !== numArguments) { + Module[name].overloadTable[numArguments] = value; + } + else { + Module[name] = value; + Module[name].argCount = numArguments; + } + } + + function embind__requireFunction(signature, rawFunction) { + signature = readLatin1String(signature); + + function makeDynCaller(dynCall) { + var args = []; + for (var i = 1; i < signature.length; ++i) { + args.push('a' + i); + } + + var name = 'dynCall_' + signature + '_' + rawFunction; + var body = 'return function ' + name + '(' + args.join(', ') + ') {\n'; + body += ' return dynCall(rawFunction' + (args.length ? ', ' : '') + args.join(', ') + ');\n'; + body += '};\n'; + + return (new Function('dynCall', 'rawFunction', body))(dynCall, rawFunction); + } + + var fp; + if (Module['FUNCTION_TABLE_' + signature] !== undefined) { + fp = Module['FUNCTION_TABLE_' + signature][rawFunction]; + } else if (typeof FUNCTION_TABLE !== "undefined") { + fp = FUNCTION_TABLE[rawFunction]; + } else { + // asm.js does not give direct access to the function tables, + // and thus we must go through the dynCall interface which allows + // calling into a signature's function table by pointer value. + // + // https://github.com/dherman/asm.js/issues/83 + // + // This has three main penalties: + // - dynCall is another function call in the path from JavaScript to C++. + // - JITs may not predict through the function table indirection at runtime. + var dc = Module['dynCall_' + signature]; + if (dc === undefined) { + // We will always enter this branch if the signature + // contains 'f' and PRECISE_F32 is not enabled. + // + // Try again, replacing 'f' with 'd'. + dc = Module['dynCall_' + signature.replace(/f/g, 'd')]; + if (dc === undefined) { + throwBindingError("No dynCall invoker for signature: " + signature); + } + } + fp = makeDynCaller(dc); + } + + if (typeof fp !== "function") { + throwBindingError("unknown function pointer with signature " + signature + ": " + rawFunction); + } + return fp; + } + + + var UnboundTypeError=undefined; + + function getTypeName(type) { + var ptr = ___getTypeName(type); + var rv = readLatin1String(ptr); + _free(ptr); + return rv; + }function throwUnboundTypeError(message, types) { + var unboundTypes = []; + var seen = {}; + function visit(type) { + if (seen[type]) { + return; + } + if (registeredTypes[type]) { + return; + } + if (typeDependencies[type]) { + typeDependencies[type].forEach(visit); + return; + } + unboundTypes.push(type); + seen[type] = true; + } + types.forEach(visit); + + throw new UnboundTypeError(message + ': ' + unboundTypes.map(getTypeName).join([', '])); + }function __embind_register_class( + rawType, + rawPointerType, + rawConstPointerType, + baseClassRawType, + getActualTypeSignature, + getActualType, + upcastSignature, + upcast, + downcastSignature, + downcast, + name, + destructorSignature, + rawDestructor + ) { + name = readLatin1String(name); + getActualType = embind__requireFunction(getActualTypeSignature, getActualType); + if (upcast) { + upcast = embind__requireFunction(upcastSignature, upcast); + } + if (downcast) { + downcast = embind__requireFunction(downcastSignature, downcast); + } + rawDestructor = embind__requireFunction(destructorSignature, rawDestructor); + var legalFunctionName = makeLegalFunctionName(name); + + exposePublicSymbol(legalFunctionName, function() { + // this code cannot run if baseClassRawType is zero + throwUnboundTypeError('Cannot construct ' + name + ' due to unbound types', [baseClassRawType]); + }); + + whenDependentTypesAreResolved( + [rawType, rawPointerType, rawConstPointerType], + baseClassRawType ? [baseClassRawType] : [], + function(base) { + base = base[0]; + + var baseClass; + var basePrototype; + if (baseClassRawType) { + baseClass = base.registeredClass; + basePrototype = baseClass.instancePrototype; + } else { + basePrototype = ClassHandle.prototype; + } + + var constructor = createNamedFunction(legalFunctionName, function() { + if (Object.getPrototypeOf(this) !== instancePrototype) { + throw new BindingError("Use 'new' to construct " + name); + } + if (undefined === registeredClass.constructor_body) { + throw new BindingError(name + " has no accessible constructor"); + } + var body = registeredClass.constructor_body[arguments.length]; + if (undefined === body) { + throw new BindingError("Tried to invoke ctor of " + name + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(registeredClass.constructor_body).toString() + ") parameters instead!"); + } + return body.apply(this, arguments); + }); + + var instancePrototype = Object.create(basePrototype, { + constructor: { value: constructor }, + }); + + constructor.prototype = instancePrototype; + + var registeredClass = new RegisteredClass( + name, + constructor, + instancePrototype, + rawDestructor, + baseClass, + getActualType, + upcast, + downcast); + + var referenceConverter = new RegisteredPointer( + name, + registeredClass, + true, + false, + false); + + var pointerConverter = new RegisteredPointer( + name + '*', + registeredClass, + false, + false, + false); + + var constPointerConverter = new RegisteredPointer( + name + ' const*', + registeredClass, + false, + true, + false); + + registeredPointers[rawType] = { + pointerType: pointerConverter, + constPointerType: constPointerConverter + }; + + replacePublicSymbol(legalFunctionName, constructor); + + return [referenceConverter, pointerConverter, constPointerConverter]; + } + ); + } + + + + function new_(constructor, argumentList) { + if (!(constructor instanceof Function)) { + throw new TypeError('new_ called with constructor type ' + typeof(constructor) + " which is not a function"); + } + + /* + * Previously, the following line was just: + + function dummy() {}; + + * Unfortunately, Chrome was preserving 'dummy' as the object's name, even though at creation, the 'dummy' has the + * correct constructor name. Thus, objects created with IMVU.new would show up in the debugger as 'dummy', which + * isn't very helpful. Using IMVU.createNamedFunction addresses the issue. Doublely-unfortunately, there's no way + * to write a test for this behavior. -NRD 2013.02.22 + */ + var dummy = createNamedFunction(constructor.name || 'unknownFunctionName', function(){}); + dummy.prototype = constructor.prototype; + var obj = new dummy; + + var r = constructor.apply(obj, argumentList); + return (r instanceof Object) ? r : obj; + }function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc) { + // humanName: a human-readable string name for the function to be generated. + // argTypes: An array that contains the embind type objects for all types in the function signature. + // argTypes[0] is the type object for the function return value. + // argTypes[1] is the type object for function this object/class type, or null if not crafting an invoker for a class method. + // argTypes[2...] are the actual function parameters. + // classType: The embind type object for the class to be bound, or null if this is not a method of a class. + // cppInvokerFunc: JS Function object to the C++-side function that interops into C++ code. + // cppTargetFunc: Function pointer (an integer to FUNCTION_TABLE) to the target C++ function the cppInvokerFunc will end up calling. + var argCount = argTypes.length; + + if (argCount < 2) { + throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!"); + } + + var isClassMethodFunc = (argTypes[1] !== null && classType !== null); + + // Free functions with signature "void function()" do not need an invoker that marshalls between wire types. + // TODO: This omits argument count check - enable only at -O3 or similar. + // if (ENABLE_UNSAFE_OPTS && argCount == 2 && argTypes[0].name == "void" && !isClassMethodFunc) { + // return FUNCTION_TABLE[fn]; + // } + + + // Determine if we need to use a dynamic stack to store the destructors for the function parameters. + // TODO: Remove this completely once all function invokers are being dynamically generated. + var needsDestructorStack = false; + + for(var i = 1; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. + if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { // The type does not define a destructor function - must use dynamic stack + needsDestructorStack = true; + break; + } + } + + var returns = (argTypes[0].name !== "void"); + + var argsList = ""; + var argsListWired = ""; + for(var i = 0; i < argCount - 2; ++i) { + argsList += (i!==0?", ":"")+"arg"+i; + argsListWired += (i!==0?", ":"")+"arg"+i+"Wired"; + } + + var invokerFnBody = + "return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n" + + "if (arguments.length !== "+(argCount - 2)+") {\n" + + "throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount - 2)+" args!');\n" + + "}\n"; + + + if (needsDestructorStack) { + invokerFnBody += + "var destructors = [];\n"; + } + + var dtorStack = needsDestructorStack ? "destructors" : "null"; + var args1 = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"]; + var args2 = [throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]]; + + + if (isClassMethodFunc) { + invokerFnBody += "var thisWired = classParam.toWireType("+dtorStack+", this);\n"; + } + + for(var i = 0; i < argCount - 2; ++i) { + invokerFnBody += "var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n"; + args1.push("argType"+i); + args2.push(argTypes[i+2]); + } + + if (isClassMethodFunc) { + argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired; + } + + invokerFnBody += + (returns?"var rv = ":"") + "invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n"; + + if (needsDestructorStack) { + invokerFnBody += "runDestructors(destructors);\n"; + } else { + for(var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method. + var paramName = (i === 1 ? "thisWired" : ("arg"+(i - 2)+"Wired")); + if (argTypes[i].destructorFunction !== null) { + invokerFnBody += paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n"; + args1.push(paramName+"_dtor"); + args2.push(argTypes[i].destructorFunction); + } + } + } + + if (returns) { + invokerFnBody += "var ret = retType.fromWireType(rv);\n" + + "return ret;\n"; + } else { + } + invokerFnBody += "}\n"; + + args1.push(invokerFnBody); + + var invokerFunction = new_(Function, args1).apply(null, args2); + return invokerFunction; + } + + function heap32VectorToArray(count, firstElement) { + var array = []; + for (var i = 0; i < count; i++) { + array.push(HEAP32[(firstElement >> 2) + i]); + } + return array; + }function __embind_register_class_class_function( + rawClassType, + methodName, + argCount, + rawArgTypesAddr, + invokerSignature, + rawInvoker, + fn + ) { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + methodName = readLatin1String(methodName); + rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); + whenDependentTypesAreResolved([], [rawClassType], function(classType) { + classType = classType[0]; + var humanName = classType.name + '.' + methodName; + + function unboundTypesHandler() { + throwUnboundTypeError('Cannot call ' + humanName + ' due to unbound types', rawArgTypes); + } + + var proto = classType.registeredClass.constructor; + if (undefined === proto[methodName]) { + // This is the first function to be registered with this name. + unboundTypesHandler.argCount = argCount-1; + proto[methodName] = unboundTypesHandler; + } else { + // There was an existing function with the same name registered. Set up a function overload routing table. + ensureOverloadTable(proto, methodName, humanName); + proto[methodName].overloadTable[argCount-1] = unboundTypesHandler; + } + + whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { + // Replace the initial unbound-types-handler stub with the proper function. If multiple overloads are registered, + // the function handlers go into an overload table. + var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */); + var func = craftInvokerFunction(humanName, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn); + if (undefined === proto[methodName].overloadTable) { + func.argCount = argCount-1; + proto[methodName] = func; + } else { + proto[methodName].overloadTable[argCount-1] = func; + } + return []; + }); + return []; + }); + } + + function __embind_register_class_constructor( + rawClassType, + argCount, + rawArgTypesAddr, + invokerSignature, + invoker, + rawConstructor + ) { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + invoker = embind__requireFunction(invokerSignature, invoker); + + whenDependentTypesAreResolved([], [rawClassType], function(classType) { + classType = classType[0]; + var humanName = 'constructor ' + classType.name; + + if (undefined === classType.registeredClass.constructor_body) { + classType.registeredClass.constructor_body = []; + } + if (undefined !== classType.registeredClass.constructor_body[argCount - 1]) { + throw new BindingError("Cannot register multiple constructors with identical number of parameters (" + (argCount-1) + ") for class '" + classType.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!"); + } + classType.registeredClass.constructor_body[argCount - 1] = function unboundTypeHandler() { + throwUnboundTypeError('Cannot construct ' + classType.name + ' due to unbound types', rawArgTypes); + }; + + whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { + classType.registeredClass.constructor_body[argCount - 1] = function constructor_body() { + if (arguments.length !== argCount - 1) { + throwBindingError(humanName + ' called with ' + arguments.length + ' arguments, expected ' + (argCount-1)); + } + var destructors = []; + var args = new Array(argCount); + args[0] = rawConstructor; + for (var i = 1; i < argCount; ++i) { + args[i] = argTypes[i]['toWireType'](destructors, arguments[i - 1]); + } + + var ptr = invoker.apply(null, args); + runDestructors(destructors); + + return argTypes[0]['fromWireType'](ptr); + }; + return []; + }); + return []; + }); + } + + function __embind_register_class_function( + rawClassType, + methodName, + argCount, + rawArgTypesAddr, // [ReturnType, ThisType, Args...] + invokerSignature, + rawInvoker, + context, + isPureVirtual + ) { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + methodName = readLatin1String(methodName); + rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); + + whenDependentTypesAreResolved([], [rawClassType], function(classType) { + classType = classType[0]; + var humanName = classType.name + '.' + methodName; + + if (isPureVirtual) { + classType.registeredClass.pureVirtualFunctions.push(methodName); + } + + function unboundTypesHandler() { + throwUnboundTypeError('Cannot call ' + humanName + ' due to unbound types', rawArgTypes); + } + + var proto = classType.registeredClass.instancePrototype; + var method = proto[methodName]; + if (undefined === method || (undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2)) { + // This is the first overload to be registered, OR we are replacing a function in the base class with a function in the derived class. + unboundTypesHandler.argCount = argCount - 2; + unboundTypesHandler.className = classType.name; + proto[methodName] = unboundTypesHandler; + } else { + // There was an existing function with the same name registered. Set up a function overload routing table. + ensureOverloadTable(proto, methodName, humanName); + proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler; + } + + whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { + + var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context); + + // Replace the initial unbound-handler-stub function with the appropriate member function, now that all types + // are resolved. If multiple overloads are registered for this function, the function goes into an overload table. + if (undefined === proto[methodName].overloadTable) { + // Set argCount in case an overload is registered later + memberFunction.argCount = argCount - 2; + proto[methodName] = memberFunction; + } else { + proto[methodName].overloadTable[argCount - 2] = memberFunction; + } + + return []; + }); + return []; + }); + } + + + function validateThis(this_, classType, humanName) { + if (!(this_ instanceof Object)) { + throwBindingError(humanName + ' with invalid "this": ' + this_); + } + if (!(this_ instanceof classType.registeredClass.constructor)) { + throwBindingError(humanName + ' incompatible with "this" of type ' + this_.constructor.name); + } + if (!this_.$$.ptr) { + throwBindingError('cannot call emscripten binding method ' + humanName + ' on deleted object'); + } + + // todo: kill this + return upcastPointer( + this_.$$.ptr, + this_.$$.ptrType.registeredClass, + classType.registeredClass); + }function __embind_register_class_property( + classType, + fieldName, + getterReturnType, + getterSignature, + getter, + getterContext, + setterArgumentType, + setterSignature, + setter, + setterContext + ) { + fieldName = readLatin1String(fieldName); + getter = embind__requireFunction(getterSignature, getter); + + whenDependentTypesAreResolved([], [classType], function(classType) { + classType = classType[0]; + var humanName = classType.name + '.' + fieldName; + var desc = { + get: function() { + throwUnboundTypeError('Cannot access ' + humanName + ' due to unbound types', [getterReturnType, setterArgumentType]); + }, + enumerable: true, + configurable: true + }; + if (setter) { + desc.set = function() { + throwUnboundTypeError('Cannot access ' + humanName + ' due to unbound types', [getterReturnType, setterArgumentType]); + }; + } else { + desc.set = function(v) { + throwBindingError(humanName + ' is a read-only property'); + }; + } + + Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc); + + whenDependentTypesAreResolved( + [], + (setter ? [getterReturnType, setterArgumentType] : [getterReturnType]), + function(types) { + var getterReturnType = types[0]; + var desc = { + get: function() { + var ptr = validateThis(this, classType, humanName + ' getter'); + return getterReturnType['fromWireType'](getter(getterContext, ptr)); + }, + enumerable: true + }; + + if (setter) { + setter = embind__requireFunction(setterSignature, setter); + var setterArgumentType = types[1]; + desc.set = function(v) { + var ptr = validateThis(this, classType, humanName + ' setter'); + var destructors = []; + setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, v)); + runDestructors(destructors); + }; + } + + Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc); + return []; + }); + + return []; + }); + } + + + + var emval_free_list=[]; + + var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle) { + if (handle > 4 && 0 === --emval_handle_array[handle].refcount) { + emval_handle_array[handle] = undefined; + emval_free_list.push(handle); + } + } + + + + function count_emval_handles() { + var count = 0; + for (var i = 5; i < emval_handle_array.length; ++i) { + if (emval_handle_array[i] !== undefined) { + ++count; + } + } + return count; + } + + function get_first_emval() { + for (var i = 5; i < emval_handle_array.length; ++i) { + if (emval_handle_array[i] !== undefined) { + return emval_handle_array[i]; + } + } + return null; + }function init_emval() { + Module['count_emval_handles'] = count_emval_handles; + Module['get_first_emval'] = get_first_emval; + }function __emval_register(value) { + + switch(value){ + case undefined :{ return 1; } + case null :{ return 2; } + case true :{ return 3; } + case false :{ return 4; } + default:{ + var handle = emval_free_list.length ? + emval_free_list.pop() : + emval_handle_array.length; + + emval_handle_array[handle] = {refcount: 1, value: value}; + return handle; + } + } + }function __embind_register_emval(rawType, name) { + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': function(handle) { + var rv = emval_handle_array[handle].value; + __emval_decref(handle); + return rv; + }, + 'toWireType': function(destructors, value) { + return __emval_register(value); + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: null, // This type does not need a destructor + + // TODO: do we need a deleteObject here? write a test where + // emval is passed into JS via an interface + }); + } + + + function enumReadValueFromPointer(name, shift, signed) { + switch (shift) { + case 0: return function(pointer) { + var heap = signed ? HEAP8 : HEAPU8; + return this['fromWireType'](heap[pointer]); + }; + case 1: return function(pointer) { + var heap = signed ? HEAP16 : HEAPU16; + return this['fromWireType'](heap[pointer >> 1]); + }; + case 2: return function(pointer) { + var heap = signed ? HEAP32 : HEAPU32; + return this['fromWireType'](heap[pointer >> 2]); + }; + default: + throw new TypeError("Unknown integer type: " + name); + } + }function __embind_register_enum( + rawType, + name, + size, + isSigned + ) { + var shift = getShiftFromSize(size); + name = readLatin1String(name); + + function ctor() { + } + ctor.values = {}; + + registerType(rawType, { + name: name, + constructor: ctor, + 'fromWireType': function(c) { + return this.constructor.values[c]; + }, + 'toWireType': function(destructors, c) { + return c.value; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': enumReadValueFromPointer(name, shift, isSigned), + destructorFunction: null, + }); + exposePublicSymbol(name, ctor); + } + + + function requireRegisteredType(rawType, humanName) { + var impl = registeredTypes[rawType]; + if (undefined === impl) { + throwBindingError(humanName + " has unknown type " + getTypeName(rawType)); + } + return impl; + }function __embind_register_enum_value( + rawEnumType, + name, + enumValue + ) { + var enumType = requireRegisteredType(rawEnumType, 'enum'); + name = readLatin1String(name); + + var Enum = enumType.constructor; + + var Value = Object.create(enumType.constructor.prototype, { + value: {value: enumValue}, + constructor: {value: createNamedFunction(enumType.name + '_' + name, function() {})}, + }); + Enum.values[enumValue] = Value; + Enum[name] = Value; + } + + + function _embind_repr(v) { + if (v === null) { + return 'null'; + } + var t = typeof v; + if (t === 'object' || t === 'array' || t === 'function') { + return v.toString(); + } else { + return '' + v; + } + } + + function floatReadValueFromPointer(name, shift) { + switch (shift) { + case 2: return function(pointer) { + return this['fromWireType'](HEAPF32[pointer >> 2]); + }; + case 3: return function(pointer) { + return this['fromWireType'](HEAPF64[pointer >> 3]); + }; + default: + throw new TypeError("Unknown float type: " + name); + } + }function __embind_register_float(rawType, name, size) { + var shift = getShiftFromSize(size); + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': function(value) { + return value; + }, + 'toWireType': function(destructors, value) { + // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: we could + // avoid the following if() and assume value is of proper type. + if (typeof value !== "number" && typeof value !== "boolean") { + throw new TypeError('Cannot convert "' + _embind_repr(value) + '" to ' + this.name); + } + return value; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': floatReadValueFromPointer(name, shift), + destructorFunction: null, // This type does not need a destructor + }); + } + + + function integerReadValueFromPointer(name, shift, signed) { + // integers are quite common, so generate very specialized functions + switch (shift) { + case 0: return signed ? + function readS8FromPointer(pointer) { return HEAP8[pointer]; } : + function readU8FromPointer(pointer) { return HEAPU8[pointer]; }; + case 1: return signed ? + function readS16FromPointer(pointer) { return HEAP16[pointer >> 1]; } : + function readU16FromPointer(pointer) { return HEAPU16[pointer >> 1]; }; + case 2: return signed ? + function readS32FromPointer(pointer) { return HEAP32[pointer >> 2]; } : + function readU32FromPointer(pointer) { return HEAPU32[pointer >> 2]; }; + default: + throw new TypeError("Unknown integer type: " + name); + } + }function __embind_register_integer(primitiveType, name, size, minRange, maxRange) { + name = readLatin1String(name); + if (maxRange === -1) { // LLVM doesn't have signed and unsigned 32-bit types, so u32 literals come out as 'i32 -1'. Always treat those as max u32. + maxRange = 4294967295; + } + + var shift = getShiftFromSize(size); + + var fromWireType = function(value) { + return value; + }; + + if (minRange === 0) { + var bitshift = 32 - 8*size; + fromWireType = function(value) { + return (value << bitshift) >>> bitshift; + }; + } + + var isUnsignedType = (name.indexOf('unsigned') != -1); + + registerType(primitiveType, { + name: name, + 'fromWireType': fromWireType, + 'toWireType': function(destructors, value) { + // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: we could + // avoid the following two if()s and assume value is of proper type. + if (typeof value !== "number" && typeof value !== "boolean") { + throw new TypeError('Cannot convert "' + _embind_repr(value) + '" to ' + this.name); + } + if (value < minRange || value > maxRange) { + throw new TypeError('Passing a number "' + _embind_repr(value) + '" from JS side to C/C++ side to an argument of type "' + name + '", which is outside the valid range [' + minRange + ', ' + maxRange + ']!'); + } + return isUnsignedType ? (value >>> 0) : (value | 0); + }, + 'argPackAdvance': 8, + 'readValueFromPointer': integerReadValueFromPointer(name, shift, minRange !== 0), + destructorFunction: null, // This type does not need a destructor + }); + } + + function __embind_register_memory_view(rawType, dataTypeIndex, name) { + var typeMapping = [ + Int8Array, + Uint8Array, + Int16Array, + Uint16Array, + Int32Array, + Uint32Array, + Float32Array, + Float64Array, + ]; + + var TA = typeMapping[dataTypeIndex]; + + function decodeMemoryView(handle) { + handle = handle >> 2; + var heap = HEAPU32; + var size = heap[handle]; // in elements + var data = heap[handle + 1]; // byte offset into emscripten heap + return new TA(heap['buffer'], data, size); + } + + name = readLatin1String(name); + registerType(rawType, { + name: name, + 'fromWireType': decodeMemoryView, + 'argPackAdvance': 8, + 'readValueFromPointer': decodeMemoryView, + }, { + ignoreDuplicateRegistrations: true, + }); + } + + function __embind_register_std_string(rawType, name) { + name = readLatin1String(name); + var stdStringIsUTF8 + //process only std::string bindings with UTF8 support, in contrast to e.g. std::basic_string<unsigned char> + = (name === "std::string"); + + registerType(rawType, { + name: name, + 'fromWireType': function(value) { + var length = HEAPU32[value >> 2]; + + var str; + if(stdStringIsUTF8) { + //ensure null termination at one-past-end byte if not present yet + var endChar = HEAPU8[value + 4 + length]; + var endCharSwap = 0; + if(endChar != 0) + { + endCharSwap = endChar; + HEAPU8[value + 4 + length] = 0; + } + + var decodeStartPtr = value + 4; + //looping here to support possible embedded '0' bytes + for (var i = 0; i <= length; ++i) { + var currentBytePtr = value + 4 + i; + if(HEAPU8[currentBytePtr] == 0) + { + var stringSegment = UTF8ToString(decodeStartPtr); + if(str === undefined) + str = stringSegment; + else + { + str += String.fromCharCode(0); + str += stringSegment; + } + decodeStartPtr = currentBytePtr + 1; + } + } + + if(endCharSwap != 0) + HEAPU8[value + 4 + length] = endCharSwap; + } else { + var a = new Array(length); + for (var i = 0; i < length; ++i) { + a[i] = String.fromCharCode(HEAPU8[value + 4 + i]); + } + str = a.join(''); + } + + _free(value); + + return str; + }, + 'toWireType': function(destructors, value) { + if (value instanceof ArrayBuffer) { + value = new Uint8Array(value); + } + + var getLength; + var valueIsOfTypeString = (typeof value === 'string'); + + if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) { + throwBindingError('Cannot pass non-string to std::string'); + } + if (stdStringIsUTF8 && valueIsOfTypeString) { + getLength = function() {return lengthBytesUTF8(value);}; + } else { + getLength = function() {return value.length;}; + } + + // assumes 4-byte alignment + var length = getLength(); + var ptr = _malloc(4 + length + 1); + HEAPU32[ptr >> 2] = length; + + if (stdStringIsUTF8 && valueIsOfTypeString) { + stringToUTF8(value, ptr + 4, length + 1); + } else { + if(valueIsOfTypeString) { + for (var i = 0; i < length; ++i) { + var charCode = value.charCodeAt(i); + if (charCode > 255) { + _free(ptr); + throwBindingError('String has UTF-16 code units that do not fit in 8 bits'); + } + HEAPU8[ptr + 4 + i] = charCode; + } + } else { + for (var i = 0; i < length; ++i) { + HEAPU8[ptr + 4 + i] = value[i]; + } + } + } + + if (destructors !== null) { + destructors.push(_free, ptr); + } + return ptr; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: function(ptr) { _free(ptr); }, + }); + } + + function __embind_register_std_wstring(rawType, charSize, name) { + // nb. do not cache HEAPU16 and HEAPU32, they may be destroyed by emscripten_resize_heap(). + name = readLatin1String(name); + var getHeap, shift; + if (charSize === 2) { + getHeap = function() { return HEAPU16; }; + shift = 1; + } else if (charSize === 4) { + getHeap = function() { return HEAPU32; }; + shift = 2; + } + registerType(rawType, { + name: name, + 'fromWireType': function(value) { + var HEAP = getHeap(); + var length = HEAPU32[value >> 2]; + var a = new Array(length); + var start = (value + 4) >> shift; + for (var i = 0; i < length; ++i) { + a[i] = String.fromCharCode(HEAP[start + i]); + } + _free(value); + return a.join(''); + }, + 'toWireType': function(destructors, value) { + // assumes 4-byte alignment + var length = value.length; + var ptr = _malloc(4 + length * charSize); + var HEAP = getHeap(); + HEAPU32[ptr >> 2] = length; + var start = (ptr + 4) >> shift; + for (var i = 0; i < length; ++i) { + HEAP[start + i] = value.charCodeAt(i); + } + if (destructors !== null) { + destructors.push(_free, ptr); + } + return ptr; + }, + 'argPackAdvance': 8, + 'readValueFromPointer': simpleReadValueFromPointer, + destructorFunction: function(ptr) { _free(ptr); }, + }); + } + + function __embind_register_value_array( + rawType, + name, + constructorSignature, + rawConstructor, + destructorSignature, + rawDestructor + ) { + tupleRegistrations[rawType] = { + name: readLatin1String(name), + rawConstructor: embind__requireFunction(constructorSignature, rawConstructor), + rawDestructor: embind__requireFunction(destructorSignature, rawDestructor), + elements: [], + }; + } + + function __embind_register_value_array_element( + rawTupleType, + getterReturnType, + getterSignature, + getter, + getterContext, + setterArgumentType, + setterSignature, + setter, + setterContext + ) { + tupleRegistrations[rawTupleType].elements.push({ + getterReturnType: getterReturnType, + getter: embind__requireFunction(getterSignature, getter), + getterContext: getterContext, + setterArgumentType: setterArgumentType, + setter: embind__requireFunction(setterSignature, setter), + setterContext: setterContext, + }); + } + + function __embind_register_value_object( + rawType, + name, + constructorSignature, + rawConstructor, + destructorSignature, + rawDestructor + ) { + structRegistrations[rawType] = { + name: readLatin1String(name), + rawConstructor: embind__requireFunction(constructorSignature, rawConstructor), + rawDestructor: embind__requireFunction(destructorSignature, rawDestructor), + fields: [], + }; + } + + function __embind_register_value_object_field( + structType, + fieldName, + getterReturnType, + getterSignature, + getter, + getterContext, + setterArgumentType, + setterSignature, + setter, + setterContext + ) { + structRegistrations[structType].fields.push({ + fieldName: readLatin1String(fieldName), + getterReturnType: getterReturnType, + getter: embind__requireFunction(getterSignature, getter), + getterContext: getterContext, + setterArgumentType: setterArgumentType, + setter: embind__requireFunction(setterSignature, setter), + setterContext: setterContext, + }); + } + + function __embind_register_void(rawType, name) { + name = readLatin1String(name); + registerType(rawType, { + isVoid: true, // void return values can be optimized out sometimes + name: name, + 'argPackAdvance': 0, + 'fromWireType': function() { + return undefined; + }, + 'toWireType': function(destructors, o) { + // TODO: assert if anything else is given? + return undefined; + }, + }); + } + + + function requireHandle(handle) { + if (!handle) { + throwBindingError('Cannot use deleted val. handle = ' + handle); + } + return emval_handle_array[handle].value; + }function __emval_as(handle, returnType, destructorsRef) { + handle = requireHandle(handle); + returnType = requireRegisteredType(returnType, 'emval::as'); + var destructors = []; + var rd = __emval_register(destructors); + HEAP32[destructorsRef >> 2] = rd; + return returnType['toWireType'](destructors, handle); + } + + + function __emval_allocateDestructors(destructorsRef) { + var destructors = []; + HEAP32[destructorsRef >> 2] = __emval_register(destructors); + return destructors; + } + + + var emval_symbols={};function getStringOrSymbol(address) { + var symbol = emval_symbols[address]; + if (symbol === undefined) { + return readLatin1String(address); + } else { + return symbol; + } + } + + var emval_methodCallers=[];function __emval_call_method(caller, handle, methodName, destructorsRef, args) { + caller = emval_methodCallers[caller]; + handle = requireHandle(handle); + methodName = getStringOrSymbol(methodName); + return caller(handle, methodName, __emval_allocateDestructors(destructorsRef), args); + } + + function __emval_call_void_method(caller, handle, methodName, args) { + caller = emval_methodCallers[caller]; + handle = requireHandle(handle); + methodName = getStringOrSymbol(methodName); + caller(handle, methodName, null, args); + } + + + function __emval_equals(first, second) { + first = requireHandle(first); + second = requireHandle(second); + return first == second; + } + + + function emval_get_global() { + if (typeof globalThis === 'object') { + return globalThis; + } + return (function(){ + return Function; + })()('return this')(); + }function __emval_get_global(name) { + if(name===0){ + return __emval_register(emval_get_global()); + } else { + name = getStringOrSymbol(name); + return __emval_register(emval_get_global()[name]); + } + } + + + function __emval_addMethodCaller(caller) { + var id = emval_methodCallers.length; + emval_methodCallers.push(caller); + return id; + } + + function __emval_lookupTypes(argCount, argTypes, argWireTypes) { + var a = new Array(argCount); + for (var i = 0; i < argCount; ++i) { + a[i] = requireRegisteredType( + HEAP32[(argTypes >> 2) + i], + "parameter " + i); + } + return a; + }function __emval_get_method_caller(argCount, argTypes) { + var types = __emval_lookupTypes(argCount, argTypes); + + var retType = types[0]; + var signatureName = retType.name + "_$" + types.slice(1).map(function (t) { return t.name; }).join("_") + "$"; + + var params = ["retType"]; + var args = [retType]; + + var argsList = ""; // 'arg0, arg1, arg2, ... , argN' + for (var i = 0; i < argCount - 1; ++i) { + argsList += (i !== 0 ? ", " : "") + "arg" + i; + params.push("argType" + i); + args.push(types[1 + i]); + } + + var functionName = makeLegalFunctionName("methodCaller_" + signatureName); + var functionBody = + "return function " + functionName + "(handle, name, destructors, args) {\n"; + + var offset = 0; + for (var i = 0; i < argCount - 1; ++i) { + functionBody += + " var arg" + i + " = argType" + i + ".readValueFromPointer(args" + (offset ? ("+"+offset) : "") + ");\n"; + offset += types[i + 1]['argPackAdvance']; + } + functionBody += + " var rv = handle[name](" + argsList + ");\n"; + for (var i = 0; i < argCount - 1; ++i) { + if (types[i + 1]['deleteObject']) { + functionBody += + " argType" + i + ".deleteObject(arg" + i + ");\n"; + } + } + if (!retType.isVoid) { + functionBody += + " return retType.toWireType(destructors, rv);\n"; + } + functionBody += + "};\n"; + + params.push(functionBody); + var invokerFunction = new_(Function, params).apply(null, args); + return __emval_addMethodCaller(invokerFunction); + } + + function __emval_get_module_property(name) { + name = getStringOrSymbol(name); + return __emval_register(Module[name]); + } + + function __emval_get_property(handle, key) { + handle = requireHandle(handle); + key = requireHandle(key); + return __emval_register(handle[key]); + } + + function __emval_incref(handle) { + if (handle > 4) { + emval_handle_array[handle].refcount += 1; + } + } + + function __emval_instanceof(object, constructor) { + object = requireHandle(object); + constructor = requireHandle(constructor); + return object instanceof constructor; + } + + function __emval_is_number(handle) { + handle = requireHandle(handle); + return typeof handle === 'number'; + } + + function __emval_is_string(handle) { + handle = requireHandle(handle); + return typeof handle === 'string'; + } + + + function craftEmvalAllocator(argCount) { + /*This function returns a new function that looks like this: + function emval_allocator_3(constructor, argTypes, args) { + var argType0 = requireRegisteredType(HEAP32[(argTypes >> 2)], "parameter 0"); + var arg0 = argType0.readValueFromPointer(args); + var argType1 = requireRegisteredType(HEAP32[(argTypes >> 2) + 1], "parameter 1"); + var arg1 = argType1.readValueFromPointer(args + 8); + var argType2 = requireRegisteredType(HEAP32[(argTypes >> 2) + 2], "parameter 2"); + var arg2 = argType2.readValueFromPointer(args + 16); + var obj = new constructor(arg0, arg1, arg2); + return __emval_register(obj); + } */ + var argsList = ""; + for(var i = 0; i < argCount; ++i) { + argsList += (i!==0?", ":"")+"arg"+i; // 'arg0, arg1, ..., argn' + } + + var functionBody = + "return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n"; + + for(var i = 0; i < argCount; ++i) { + functionBody += + "var argType"+i+" = requireRegisteredType(Module['HEAP32'][(argTypes >> 2) + "+i+"], \"parameter "+i+"\");\n" + + "var arg"+i+" = argType"+i+".readValueFromPointer(args);\n" + + "args += argType"+i+"['argPackAdvance'];\n"; + } + functionBody += + "var obj = new constructor("+argsList+");\n" + + "return __emval_register(obj);\n" + + "}\n"; + + /*jshint evil:true*/ + return (new Function("requireRegisteredType", "Module", "__emval_register", functionBody))( + requireRegisteredType, Module, __emval_register); + } + + var emval_newers={};function __emval_new(handle, argCount, argTypes, args) { + handle = requireHandle(handle); + + var newer = emval_newers[argCount]; + if (!newer) { + newer = craftEmvalAllocator(argCount); + emval_newers[argCount] = newer; + } + + return newer(handle, argTypes, args); + } + + function __emval_new_array() { + return __emval_register([]); + } + + function __emval_new_cstring(v) { + return __emval_register(getStringOrSymbol(v)); + } + + function __emval_new_object() { + return __emval_register({}); + } + + function __emval_run_destructors(handle) { + var destructors = emval_handle_array[handle].value; + runDestructors(destructors); + __emval_decref(handle); + } + + function __emval_set_property(handle, key, value) { + handle = requireHandle(handle); + key = requireHandle(key); + value = requireHandle(value); + handle[key] = value; + } + + function __emval_take_value(type, argv) { + type = requireRegisteredType(type, '_emval_take_value'); + var v = type['readValueFromPointer'](argv); + return __emval_register(v); + } + + function _abort() { + abort(); + } + + function _emscripten_get_heap_size() { + return HEAP8.length; + } + + + + + function abortOnCannotGrowMemory(requestedSize) { + abort('Cannot enlarge memory arrays to size ' + requestedSize + ' bytes (OOM). Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + HEAP8.length + ', (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 '); + } + + function emscripten_realloc_buffer(size) { + try { + // round size grow request up to wasm page size (fixed 64KB per spec) + wasmMemory.grow((size - buffer.byteLength + 65535) >> 16); // .grow() takes a delta compared to the previous size + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1 /*success*/; + } catch(e) { + console.error('emscripten_realloc_buffer: Attempted to grow heap from ' + buffer.byteLength + ' bytes to ' + size + ' bytes, but got error: ' + e); + } + }function _emscripten_resize_heap(requestedSize) { + var oldSize = _emscripten_get_heap_size(); + // With pthreads, races can happen (another thread might increase the size in between), so return a failure, and let the caller retry. + assert(requestedSize > oldSize); + + + var PAGE_MULTIPLE = 65536; + var LIMIT = 2147483648 - PAGE_MULTIPLE; // We can do one page short of 2GB as theoretical maximum. + + if (requestedSize > LIMIT) { + err('Cannot enlarge memory, asked to go up to ' + requestedSize + ' bytes, but the limit is ' + LIMIT + ' bytes!'); + return false; + } + + var MIN_TOTAL_MEMORY = 16777216; + var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY); // So the loop below will not be infinite, and minimum asm.js memory size is 16MB. + + // TODO: see realloc_buffer - for PTHREADS we may want to decrease these jumps + while (newSize < requestedSize) { // Keep incrementing the heap size as long as it's less than what is requested. + if (newSize <= 536870912) { + newSize = alignUp(2 * newSize, PAGE_MULTIPLE); // Simple heuristic: double until 1GB... + } else { + // ..., but after that, add smaller increments towards 2GB, which we cannot reach + newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT); + } + + if (newSize === oldSize) { + warnOnce('Cannot ask for more memory since we reached the practical limit in browsers (which is just below 2GB), so the request would have failed. Requesting only ' + HEAP8.length); + } + } + + + + var replacement = emscripten_realloc_buffer(newSize); + if (!replacement) { + err('Failed to grow the heap from ' + oldSize + ' bytes to ' + newSize + ' bytes, not enough memory!'); + return false; + } + + + + return true; + } + + function _getenv(name) { + // char *getenv(const char *name); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/getenv.html + if (name === 0) return 0; + name = UTF8ToString(name); + if (!ENV.hasOwnProperty(name)) return 0; + + if (_getenv.ret) _free(_getenv.ret); + _getenv.ret = allocateUTF8(ENV[name]); + return _getenv.ret; + } + + + var ___tm_current=306544; + + + var ___tm_timezone=(stringToUTF8("GMT", 306592, 4), 306592);function _gmtime_r(time, tmPtr) { + var date = new Date(HEAP32[((time)>>2)]*1000); + HEAP32[((tmPtr)>>2)]=date.getUTCSeconds(); + HEAP32[(((tmPtr)+(4))>>2)]=date.getUTCMinutes(); + HEAP32[(((tmPtr)+(8))>>2)]=date.getUTCHours(); + HEAP32[(((tmPtr)+(12))>>2)]=date.getUTCDate(); + HEAP32[(((tmPtr)+(16))>>2)]=date.getUTCMonth(); + HEAP32[(((tmPtr)+(20))>>2)]=date.getUTCFullYear()-1900; + HEAP32[(((tmPtr)+(24))>>2)]=date.getUTCDay(); + HEAP32[(((tmPtr)+(36))>>2)]=0; + HEAP32[(((tmPtr)+(32))>>2)]=0; + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = ((date.getTime() - start) / (1000 * 60 * 60 * 24))|0; + HEAP32[(((tmPtr)+(28))>>2)]=yday; + HEAP32[(((tmPtr)+(40))>>2)]=___tm_timezone; + + return tmPtr; + }function _gmtime(time) { + return _gmtime_r(time, ___tm_current); + } + + + + var _llvm_cos_f64=Math_cos; + + + function _llvm_log2_f32(x) { + return Math.log(x) / Math.LN2; // TODO: Math.log2, when browser support is there + }function _llvm_log2_f64(a0 + ) { + return _llvm_log2_f32(a0); + } + + var _llvm_sin_f64=Math_sin; + + function _llvm_trap() { + abort('trap!'); + } + + + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.set(HEAPU8.subarray(src, src+num), dest); + } + + + + + + + + + function _usleep(useconds) { + // int usleep(useconds_t useconds); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/usleep.html + // We're single-threaded, so use a busy loop. Super-ugly. + var msec = useconds / 1000; + if ((ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self['performance'] && self['performance']['now']) { + var start = self['performance']['now'](); + while (self['performance']['now']() - start < msec) { + // Do nothing. + } + } else { + var start = Date.now(); + while (Date.now() - start < msec) { + // Do nothing. + } + } + return 0; + }function _nanosleep(rqtp, rmtp) { + // int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); + if (rqtp === 0) { + ___setErrNo(28); + return -1; + } + var seconds = HEAP32[((rqtp)>>2)]; + var nanoseconds = HEAP32[(((rqtp)+(4))>>2)]; + if (nanoseconds < 0 || nanoseconds > 999999999 || seconds < 0) { + ___setErrNo(28); + return -1; + } + if (rmtp !== 0) { + HEAP32[((rmtp)>>2)]=0; + HEAP32[(((rmtp)+(4))>>2)]=0; + } + return _usleep((seconds * 1e6) + (nanoseconds / 1000)); + } + + function _time(ptr) { + var ret = (Date.now()/1000)|0; + if (ptr) { + HEAP32[((ptr)>>2)]=ret; + } + return ret; + } + + function _uuid_generate(out) { + // void uuid_generate(uuid_t out); + var uuid = null; + + if (ENVIRONMENT_IS_NODE) { + // If Node.js try to use crypto.randomBytes + try { + var rb = require('crypto')['randomBytes']; + uuid = rb(16); + } catch(e) {} + } else if (ENVIRONMENT_IS_WEB && + typeof(window.crypto) !== 'undefined' && + typeof(window.crypto.getRandomValues) !== 'undefined') { + // If crypto.getRandomValues is available try to use it. + uuid = new Uint8Array(16); + window.crypto.getRandomValues(uuid); + } + + // Fall back to Math.random if a higher quality random number generator is not available. + if (!uuid) { + uuid = new Array(16); + var d = new Date().getTime(); + for (var i = 0; i < 16; i++) { + var r = ((d + Math.random() * 256) % 256)|0; + d = (d / 256)|0; + uuid[i] = r; + } + } + + uuid[6] = (uuid[6] & 0x0F) | 0x40; + uuid[8] = (uuid[8] & 0x7F) | 0x80; + writeArrayToMemory(uuid, out); + } +FS.staticInit();; +if (ENVIRONMENT_HAS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit(); }; +InternalError = Module['InternalError'] = extendError(Error, 'InternalError');; +embind_init_charCodes(); +BindingError = Module['BindingError'] = extendError(Error, 'BindingError');; +init_ClassHandle(); +init_RegisteredPointer(); +init_embind();; +UnboundTypeError = Module['UnboundTypeError'] = extendError(Error, 'UnboundTypeError');; +init_emval();; +var ASSERTIONS = true; + +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +/** @type {function(string, boolean=, number=)} */ +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy)+1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} + +function intArrayToString(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + var chr = array[i]; + if (chr > 0xFF) { + if (ASSERTIONS) { + assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.'); + } + chr &= 0xFF; + } + ret.push(String.fromCharCode(chr)); + } + return ret.join(''); +} + + +// ASM_LIBRARY EXTERN PRIMITIVES: Int8Array,Int32Array + +function nullFunc_di(x) { abortFnPtrError(x, 'di'); } +function nullFunc_did(x) { abortFnPtrError(x, 'did'); } +function nullFunc_dii(x) { abortFnPtrError(x, 'dii'); } +function nullFunc_diid(x) { abortFnPtrError(x, 'diid'); } +function nullFunc_diii(x) { abortFnPtrError(x, 'diii'); } +function nullFunc_diiid(x) { abortFnPtrError(x, 'diiid'); } +function nullFunc_fii(x) { abortFnPtrError(x, 'fii'); } +function nullFunc_i(x) { abortFnPtrError(x, 'i'); } +function nullFunc_ii(x) { abortFnPtrError(x, 'ii'); } +function nullFunc_iid(x) { abortFnPtrError(x, 'iid'); } +function nullFunc_iidd(x) { abortFnPtrError(x, 'iidd'); } +function nullFunc_iiddd(x) { abortFnPtrError(x, 'iiddd'); } +function nullFunc_iidddddd(x) { abortFnPtrError(x, 'iidddddd'); } +function nullFunc_iiddi(x) { abortFnPtrError(x, 'iiddi'); } +function nullFunc_iiddii(x) { abortFnPtrError(x, 'iiddii'); } +function nullFunc_iiddiiiii(x) { abortFnPtrError(x, 'iiddiiiii'); } +function nullFunc_iidi(x) { abortFnPtrError(x, 'iidi'); } +function nullFunc_iidid(x) { abortFnPtrError(x, 'iidid'); } +function nullFunc_iididii(x) { abortFnPtrError(x, 'iididii'); } +function nullFunc_iidii(x) { abortFnPtrError(x, 'iidii'); } +function nullFunc_iidiii(x) { abortFnPtrError(x, 'iidiii'); } +function nullFunc_iidiiii(x) { abortFnPtrError(x, 'iidiiii'); } +function nullFunc_iidiiiii(x) { abortFnPtrError(x, 'iidiiiii'); } +function nullFunc_iifff(x) { abortFnPtrError(x, 'iifff'); } +function nullFunc_iii(x) { abortFnPtrError(x, 'iii'); } +function nullFunc_iiid(x) { abortFnPtrError(x, 'iiid'); } +function nullFunc_iiidd(x) { abortFnPtrError(x, 'iiidd'); } +function nullFunc_iiiddd(x) { abortFnPtrError(x, 'iiiddd'); } +function nullFunc_iiidddddd(x) { abortFnPtrError(x, 'iiidddddd'); } +function nullFunc_iiiddi(x) { abortFnPtrError(x, 'iiiddi'); } +function nullFunc_iiiddiddddd(x) { abortFnPtrError(x, 'iiiddiddddd'); } +function nullFunc_iiiddiiidd(x) { abortFnPtrError(x, 'iiiddiiidd'); } +function nullFunc_iiidi(x) { abortFnPtrError(x, 'iiidi'); } +function nullFunc_iiidid(x) { abortFnPtrError(x, 'iiidid'); } +function nullFunc_iiididdddd(x) { abortFnPtrError(x, 'iiididdddd'); } +function nullFunc_iiidii(x) { abortFnPtrError(x, 'iiidii'); } +function nullFunc_iiidiii(x) { abortFnPtrError(x, 'iiidiii'); } +function nullFunc_iiifff(x) { abortFnPtrError(x, 'iiifff'); } +function nullFunc_iiii(x) { abortFnPtrError(x, 'iiii'); } +function nullFunc_iiiid(x) { abortFnPtrError(x, 'iiiid'); } +function nullFunc_iiiidd(x) { abortFnPtrError(x, 'iiiidd'); } +function nullFunc_iiiiddiiidd(x) { abortFnPtrError(x, 'iiiiddiiidd'); } +function nullFunc_iiiidi(x) { abortFnPtrError(x, 'iiiidi'); } +function nullFunc_iiiidiii(x) { abortFnPtrError(x, 'iiiidiii'); } +function nullFunc_iiiii(x) { abortFnPtrError(x, 'iiiii'); } +function nullFunc_iiiiii(x) { abortFnPtrError(x, 'iiiiii'); } +function nullFunc_iiiiiii(x) { abortFnPtrError(x, 'iiiiiii'); } +function nullFunc_iiiiiiii(x) { abortFnPtrError(x, 'iiiiiiii'); } +function nullFunc_ji(x) { abortFnPtrError(x, 'ji'); } +function nullFunc_jiji(x) { abortFnPtrError(x, 'jiji'); } +function nullFunc_v(x) { abortFnPtrError(x, 'v'); } +function nullFunc_vi(x) { abortFnPtrError(x, 'vi'); } +function nullFunc_vid(x) { abortFnPtrError(x, 'vid'); } +function nullFunc_viddd(x) { abortFnPtrError(x, 'viddd'); } +function nullFunc_vidii(x) { abortFnPtrError(x, 'vidii'); } +function nullFunc_vii(x) { abortFnPtrError(x, 'vii'); } +function nullFunc_viid(x) { abortFnPtrError(x, 'viid'); } +function nullFunc_viidd(x) { abortFnPtrError(x, 'viidd'); } +function nullFunc_viiddd(x) { abortFnPtrError(x, 'viiddd'); } +function nullFunc_viif(x) { abortFnPtrError(x, 'viif'); } +function nullFunc_viii(x) { abortFnPtrError(x, 'viii'); } +function nullFunc_viiid(x) { abortFnPtrError(x, 'viiid'); } +function nullFunc_viiidi(x) { abortFnPtrError(x, 'viiidi'); } +function nullFunc_viiii(x) { abortFnPtrError(x, 'viiii'); } +function nullFunc_viiiii(x) { abortFnPtrError(x, 'viiiii'); } +function nullFunc_viiiiii(x) { abortFnPtrError(x, 'viiiiii'); } + +var asmGlobalArg = {}; + +var asmLibraryArg = { "ClassHandle": ClassHandle, "ClassHandle_clone": ClassHandle_clone, "ClassHandle_delete": ClassHandle_delete, "ClassHandle_deleteLater": ClassHandle_deleteLater, "ClassHandle_isAliasOf": ClassHandle_isAliasOf, "ClassHandle_isDeleted": ClassHandle_isDeleted, "RegisteredClass": RegisteredClass, "RegisteredPointer": RegisteredPointer, "RegisteredPointer_deleteObject": RegisteredPointer_deleteObject, "RegisteredPointer_destructor": RegisteredPointer_destructor, "RegisteredPointer_fromWireType": RegisteredPointer_fromWireType, "RegisteredPointer_getPointee": RegisteredPointer_getPointee, "___atomic_fetch_add_8": ___atomic_fetch_add_8, "___buildEnvironment": ___buildEnvironment, "___cxa_allocate_exception": ___cxa_allocate_exception, "___cxa_begin_catch": ___cxa_begin_catch, "___cxa_throw": ___cxa_throw, "___exception_addRef": ___exception_addRef, "___exception_deAdjust": ___exception_deAdjust, "___gxx_personality_v0": ___gxx_personality_v0, "___lock": ___lock, "___setErrNo": ___setErrNo, "___syscall195": ___syscall195, "___syscall197": ___syscall197, "___syscall221": ___syscall221, "___syscall5": ___syscall5, "___syscall54": ___syscall54, "___unlock": ___unlock, "___wasi_fd_close": ___wasi_fd_close, "___wasi_fd_fdstat_get": ___wasi_fd_fdstat_get, "___wasi_fd_read": ___wasi_fd_read, "___wasi_fd_seek": ___wasi_fd_seek, "___wasi_fd_write": ___wasi_fd_write, "__embind_finalize_value_array": __embind_finalize_value_array, "__embind_finalize_value_object": __embind_finalize_value_object, "__embind_register_bool": __embind_register_bool, "__embind_register_class": __embind_register_class, "__embind_register_class_class_function": __embind_register_class_class_function, "__embind_register_class_constructor": __embind_register_class_constructor, "__embind_register_class_function": __embind_register_class_function, "__embind_register_class_property": __embind_register_class_property, "__embind_register_emval": __embind_register_emval, "__embind_register_enum": __embind_register_enum, "__embind_register_enum_value": __embind_register_enum_value, "__embind_register_float": __embind_register_float, "__embind_register_integer": __embind_register_integer, "__embind_register_memory_view": __embind_register_memory_view, "__embind_register_std_string": __embind_register_std_string, "__embind_register_std_wstring": __embind_register_std_wstring, "__embind_register_value_array": __embind_register_value_array, "__embind_register_value_array_element": __embind_register_value_array_element, "__embind_register_value_object": __embind_register_value_object, "__embind_register_value_object_field": __embind_register_value_object_field, "__embind_register_void": __embind_register_void, "__emval_addMethodCaller": __emval_addMethodCaller, "__emval_allocateDestructors": __emval_allocateDestructors, "__emval_as": __emval_as, "__emval_call_method": __emval_call_method, "__emval_call_void_method": __emval_call_void_method, "__emval_decref": __emval_decref, "__emval_equals": __emval_equals, "__emval_get_global": __emval_get_global, "__emval_get_method_caller": __emval_get_method_caller, "__emval_get_module_property": __emval_get_module_property, "__emval_get_property": __emval_get_property, "__emval_incref": __emval_incref, "__emval_instanceof": __emval_instanceof, "__emval_is_number": __emval_is_number, "__emval_is_string": __emval_is_string, "__emval_lookupTypes": __emval_lookupTypes, "__emval_new": __emval_new, "__emval_new_array": __emval_new_array, "__emval_new_cstring": __emval_new_cstring, "__emval_new_object": __emval_new_object, "__emval_register": __emval_register, "__emval_run_destructors": __emval_run_destructors, "__emval_set_property": __emval_set_property, "__emval_take_value": __emval_take_value, "__memory_base": 1024, "__table_base": 0, "_abort": _abort, "_embind_repr": _embind_repr, "_emscripten_get_heap_size": _emscripten_get_heap_size, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_resize_heap": _emscripten_resize_heap, "_fd_close": _fd_close, "_fd_fdstat_get": _fd_fdstat_get, "_fd_read": _fd_read, "_fd_seek": _fd_seek, "_fd_write": _fd_write, "_getenv": _getenv, "_gmtime": _gmtime, "_gmtime_r": _gmtime_r, "_llvm_cos_f64": _llvm_cos_f64, "_llvm_log2_f32": _llvm_log2_f32, "_llvm_log2_f64": _llvm_log2_f64, "_llvm_sin_f64": _llvm_sin_f64, "_llvm_trap": _llvm_trap, "_nanosleep": _nanosleep, "_time": _time, "_usleep": _usleep, "_uuid_generate": _uuid_generate, "abort": abort, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "attachFinalizer": attachFinalizer, "constNoSmartPtrRawPointerToWireType": constNoSmartPtrRawPointerToWireType, "count_emval_handles": count_emval_handles, "craftEmvalAllocator": craftEmvalAllocator, "craftInvokerFunction": craftInvokerFunction, "createNamedFunction": createNamedFunction, "demangle": demangle, "demangleAll": demangleAll, "detachFinalizer": detachFinalizer, "downcastPointer": downcastPointer, "embind__requireFunction": embind__requireFunction, "embind_init_charCodes": embind_init_charCodes, "emscripten_realloc_buffer": emscripten_realloc_buffer, "emval_get_global": emval_get_global, "ensureOverloadTable": ensureOverloadTable, "enumReadValueFromPointer": enumReadValueFromPointer, "exposePublicSymbol": exposePublicSymbol, "extendError": extendError, "floatReadValueFromPointer": floatReadValueFromPointer, "flushPendingDeletes": flushPendingDeletes, "genericPointerToWireType": genericPointerToWireType, "getBasestPointer": getBasestPointer, "getInheritedInstance": getInheritedInstance, "getInheritedInstanceCount": getInheritedInstanceCount, "getLiveInheritedInstances": getLiveInheritedInstances, "getShiftFromSize": getShiftFromSize, "getStringOrSymbol": getStringOrSymbol, "getTempRet0": getTempRet0, "getTypeName": getTypeName, "get_first_emval": get_first_emval, "heap32VectorToArray": heap32VectorToArray, "init_ClassHandle": init_ClassHandle, "init_RegisteredPointer": init_RegisteredPointer, "init_embind": init_embind, "init_emval": init_emval, "integerReadValueFromPointer": integerReadValueFromPointer, "jsStackTrace": jsStackTrace, "makeClassHandle": makeClassHandle, "makeLegalFunctionName": makeLegalFunctionName, "memory": wasmMemory, "new_": new_, "nonConstNoSmartPtrRawPointerToWireType": nonConstNoSmartPtrRawPointerToWireType, "nullFunc_di": nullFunc_di, "nullFunc_did": nullFunc_did, "nullFunc_dii": nullFunc_dii, "nullFunc_diid": nullFunc_diid, "nullFunc_diii": nullFunc_diii, "nullFunc_diiid": nullFunc_diiid, "nullFunc_fii": nullFunc_fii, "nullFunc_i": nullFunc_i, "nullFunc_ii": nullFunc_ii, "nullFunc_iid": nullFunc_iid, "nullFunc_iidd": nullFunc_iidd, "nullFunc_iiddd": nullFunc_iiddd, "nullFunc_iidddddd": nullFunc_iidddddd, "nullFunc_iiddi": nullFunc_iiddi, "nullFunc_iiddii": nullFunc_iiddii, "nullFunc_iiddiiiii": nullFunc_iiddiiiii, "nullFunc_iidi": nullFunc_iidi, "nullFunc_iidid": nullFunc_iidid, "nullFunc_iididii": nullFunc_iididii, "nullFunc_iidii": nullFunc_iidii, "nullFunc_iidiii": nullFunc_iidiii, "nullFunc_iidiiii": nullFunc_iidiiii, "nullFunc_iidiiiii": nullFunc_iidiiiii, "nullFunc_iifff": nullFunc_iifff, "nullFunc_iii": nullFunc_iii, "nullFunc_iiid": nullFunc_iiid, "nullFunc_iiidd": nullFunc_iiidd, "nullFunc_iiiddd": nullFunc_iiiddd, "nullFunc_iiidddddd": nullFunc_iiidddddd, "nullFunc_iiiddi": nullFunc_iiiddi, "nullFunc_iiiddiddddd": nullFunc_iiiddiddddd, "nullFunc_iiiddiiidd": nullFunc_iiiddiiidd, "nullFunc_iiidi": nullFunc_iiidi, "nullFunc_iiidid": nullFunc_iiidid, "nullFunc_iiididdddd": nullFunc_iiididdddd, "nullFunc_iiidii": nullFunc_iiidii, "nullFunc_iiidiii": nullFunc_iiidiii, "nullFunc_iiifff": nullFunc_iiifff, "nullFunc_iiii": nullFunc_iiii, "nullFunc_iiiid": nullFunc_iiiid, "nullFunc_iiiidd": nullFunc_iiiidd, "nullFunc_iiiiddiiidd": nullFunc_iiiiddiiidd, "nullFunc_iiiidi": nullFunc_iiiidi, "nullFunc_iiiidiii": nullFunc_iiiidiii, "nullFunc_iiiii": nullFunc_iiiii, "nullFunc_iiiiii": nullFunc_iiiiii, "nullFunc_iiiiiii": nullFunc_iiiiiii, "nullFunc_iiiiiiii": nullFunc_iiiiiiii, "nullFunc_ji": nullFunc_ji, "nullFunc_jiji": nullFunc_jiji, "nullFunc_v": nullFunc_v, "nullFunc_vi": nullFunc_vi, "nullFunc_vid": nullFunc_vid, "nullFunc_viddd": nullFunc_viddd, "nullFunc_vidii": nullFunc_vidii, "nullFunc_vii": nullFunc_vii, "nullFunc_viid": nullFunc_viid, "nullFunc_viidd": nullFunc_viidd, "nullFunc_viiddd": nullFunc_viiddd, "nullFunc_viif": nullFunc_viif, "nullFunc_viii": nullFunc_viii, "nullFunc_viiid": nullFunc_viiid, "nullFunc_viiidi": nullFunc_viiidi, "nullFunc_viiii": nullFunc_viiii, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "readLatin1String": readLatin1String, "registerType": registerType, "releaseClassHandle": releaseClassHandle, "replacePublicSymbol": replacePublicSymbol, "requireHandle": requireHandle, "requireRegisteredType": requireRegisteredType, "runDestructor": runDestructor, "runDestructors": runDestructors, "setDelayFunction": setDelayFunction, "setTempRet0": setTempRet0, "shallowCopyInternalPointer": shallowCopyInternalPointer, "simpleReadValueFromPointer": simpleReadValueFromPointer, "stackTrace": stackTrace, "table": wasmTable, "tempDoublePtr": tempDoublePtr, "throwBindingError": throwBindingError, "throwInstanceAlreadyDeleted": throwInstanceAlreadyDeleted, "throwInternalError": throwInternalError, "throwUnboundTypeError": throwUnboundTypeError, "upcastPointer": upcastPointer, "validateThis": validateThis, "whenDependentTypesAreResolved": whenDependentTypesAreResolved }; +// EMSCRIPTEN_START_ASM +var asm =Module["asm"]// EMSCRIPTEN_END_ASM +(asmGlobalArg, asmLibraryArg, buffer); + +Module["asm"] = asm; +var __ZSt18uncaught_exceptionv = Module["__ZSt18uncaught_exceptionv"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["__ZSt18uncaught_exceptionv"].apply(null, arguments) +}; + +var ___cxa_can_catch = Module["___cxa_can_catch"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["___cxa_can_catch"].apply(null, arguments) +}; + +var ___cxa_is_pointer_type = Module["___cxa_is_pointer_type"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["___cxa_is_pointer_type"].apply(null, arguments) +}; + +var ___embind_register_native_and_builtin_types = Module["___embind_register_native_and_builtin_types"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["___embind_register_native_and_builtin_types"].apply(null, arguments) +}; + +var ___errno_location = Module["___errno_location"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["___errno_location"].apply(null, arguments) +}; + +var ___getTypeName = Module["___getTypeName"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["___getTypeName"].apply(null, arguments) +}; + +var __get_environ = Module["__get_environ"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["__get_environ"].apply(null, arguments) +}; + +var _emscripten_get_sbrk_ptr = Module["_emscripten_get_sbrk_ptr"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_emscripten_get_sbrk_ptr"].apply(null, arguments) +}; + +var _emscripten_replace_memory = Module["_emscripten_replace_memory"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_emscripten_replace_memory"].apply(null, arguments) +}; + +var _fflush = Module["_fflush"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_fflush"].apply(null, arguments) +}; + +var _free = Module["_free"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_free"].apply(null, arguments) +}; + +var _i64Add = Module["_i64Add"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_i64Add"].apply(null, arguments) +}; + +var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_llvm_bswap_i32"].apply(null, arguments) +}; + +var _malloc = Module["_malloc"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_malloc"].apply(null, arguments) +}; + +var _memcpy = Module["_memcpy"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_memcpy"].apply(null, arguments) +}; + +var _memmove = Module["_memmove"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_memmove"].apply(null, arguments) +}; + +var _memset = Module["_memset"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["_memset"].apply(null, arguments) +}; + +var establishStackSpace = Module["establishStackSpace"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["establishStackSpace"].apply(null, arguments) +}; + +var globalCtors = Module["globalCtors"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["globalCtors"].apply(null, arguments) +}; + +var stackAlloc = Module["stackAlloc"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["stackAlloc"].apply(null, arguments) +}; + +var stackRestore = Module["stackRestore"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["stackRestore"].apply(null, arguments) +}; + +var stackSave = Module["stackSave"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["stackSave"].apply(null, arguments) +}; + +var dynCall_di = Module["dynCall_di"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_di"].apply(null, arguments) +}; + +var dynCall_did = Module["dynCall_did"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_did"].apply(null, arguments) +}; + +var dynCall_dii = Module["dynCall_dii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_dii"].apply(null, arguments) +}; + +var dynCall_diid = Module["dynCall_diid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_diid"].apply(null, arguments) +}; + +var dynCall_diii = Module["dynCall_diii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_diii"].apply(null, arguments) +}; + +var dynCall_diiid = Module["dynCall_diiid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_diiid"].apply(null, arguments) +}; + +var dynCall_fii = Module["dynCall_fii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_fii"].apply(null, arguments) +}; + +var dynCall_i = Module["dynCall_i"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_i"].apply(null, arguments) +}; + +var dynCall_ii = Module["dynCall_ii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_ii"].apply(null, arguments) +}; + +var dynCall_iid = Module["dynCall_iid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iid"].apply(null, arguments) +}; + +var dynCall_iidd = Module["dynCall_iidd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidd"].apply(null, arguments) +}; + +var dynCall_iiddd = Module["dynCall_iiddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiddd"].apply(null, arguments) +}; + +var dynCall_iidddddd = Module["dynCall_iidddddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidddddd"].apply(null, arguments) +}; + +var dynCall_iiddi = Module["dynCall_iiddi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiddi"].apply(null, arguments) +}; + +var dynCall_iiddii = Module["dynCall_iiddii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiddii"].apply(null, arguments) +}; + +var dynCall_iiddiiiii = Module["dynCall_iiddiiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiddiiiii"].apply(null, arguments) +}; + +var dynCall_iidi = Module["dynCall_iidi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidi"].apply(null, arguments) +}; + +var dynCall_iidid = Module["dynCall_iidid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidid"].apply(null, arguments) +}; + +var dynCall_iididii = Module["dynCall_iididii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iididii"].apply(null, arguments) +}; + +var dynCall_iidii = Module["dynCall_iidii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidii"].apply(null, arguments) +}; + +var dynCall_iidiii = Module["dynCall_iidiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidiii"].apply(null, arguments) +}; + +var dynCall_iidiiii = Module["dynCall_iidiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidiiii"].apply(null, arguments) +}; + +var dynCall_iidiiiii = Module["dynCall_iidiiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iidiiiii"].apply(null, arguments) +}; + +var dynCall_iifff = Module["dynCall_iifff"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iifff"].apply(null, arguments) +}; + +var dynCall_iii = Module["dynCall_iii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iii"].apply(null, arguments) +}; + +var dynCall_iiid = Module["dynCall_iiid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiid"].apply(null, arguments) +}; + +var dynCall_iiidd = Module["dynCall_iiidd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiidd"].apply(null, arguments) +}; + +var dynCall_iiiddd = Module["dynCall_iiiddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiddd"].apply(null, arguments) +}; + +var dynCall_iiidddddd = Module["dynCall_iiidddddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiidddddd"].apply(null, arguments) +}; + +var dynCall_iiiddi = Module["dynCall_iiiddi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiddi"].apply(null, arguments) +}; + +var dynCall_iiiddiddddd = Module["dynCall_iiiddiddddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiddiddddd"].apply(null, arguments) +}; + +var dynCall_iiiddiiidd = Module["dynCall_iiiddiiidd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiddiiidd"].apply(null, arguments) +}; + +var dynCall_iiidi = Module["dynCall_iiidi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiidi"].apply(null, arguments) +}; + +var dynCall_iiidid = Module["dynCall_iiidid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiidid"].apply(null, arguments) +}; + +var dynCall_iiididdddd = Module["dynCall_iiididdddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiididdddd"].apply(null, arguments) +}; + +var dynCall_iiidii = Module["dynCall_iiidii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiidii"].apply(null, arguments) +}; + +var dynCall_iiidiii = Module["dynCall_iiidiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiidiii"].apply(null, arguments) +}; + +var dynCall_iiifff = Module["dynCall_iiifff"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiifff"].apply(null, arguments) +}; + +var dynCall_iiii = Module["dynCall_iiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiii"].apply(null, arguments) +}; + +var dynCall_iiiid = Module["dynCall_iiiid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiid"].apply(null, arguments) +}; + +var dynCall_iiiidd = Module["dynCall_iiiidd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiidd"].apply(null, arguments) +}; + +var dynCall_iiiiddiiidd = Module["dynCall_iiiiddiiidd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiiddiiidd"].apply(null, arguments) +}; + +var dynCall_iiiidi = Module["dynCall_iiiidi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiidi"].apply(null, arguments) +}; + +var dynCall_iiiidiii = Module["dynCall_iiiidiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiidiii"].apply(null, arguments) +}; + +var dynCall_iiiii = Module["dynCall_iiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiii"].apply(null, arguments) +}; + +var dynCall_iiiiii = Module["dynCall_iiiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiiii"].apply(null, arguments) +}; + +var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiiiii"].apply(null, arguments) +}; + +var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_iiiiiiii"].apply(null, arguments) +}; + +var dynCall_ji = Module["dynCall_ji"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_ji"].apply(null, arguments) +}; + +var dynCall_jiji = Module["dynCall_jiji"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_jiji"].apply(null, arguments) +}; + +var dynCall_v = Module["dynCall_v"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_v"].apply(null, arguments) +}; + +var dynCall_vi = Module["dynCall_vi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_vi"].apply(null, arguments) +}; + +var dynCall_vid = Module["dynCall_vid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_vid"].apply(null, arguments) +}; + +var dynCall_viddd = Module["dynCall_viddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viddd"].apply(null, arguments) +}; + +var dynCall_vidii = Module["dynCall_vidii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_vidii"].apply(null, arguments) +}; + +var dynCall_vii = Module["dynCall_vii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_vii"].apply(null, arguments) +}; + +var dynCall_viid = Module["dynCall_viid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viid"].apply(null, arguments) +}; + +var dynCall_viidd = Module["dynCall_viidd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viidd"].apply(null, arguments) +}; + +var dynCall_viiddd = Module["dynCall_viiddd"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viiddd"].apply(null, arguments) +}; + +var dynCall_viif = Module["dynCall_viif"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viif"].apply(null, arguments) +}; + +var dynCall_viii = Module["dynCall_viii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viii"].apply(null, arguments) +}; + +var dynCall_viiid = Module["dynCall_viiid"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viiid"].apply(null, arguments) +}; + +var dynCall_viiidi = Module["dynCall_viiidi"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viiidi"].apply(null, arguments) +}; + +var dynCall_viiii = Module["dynCall_viiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viiii"].apply(null, arguments) +}; + +var dynCall_viiiii = Module["dynCall_viiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viiiii"].apply(null, arguments) +}; + +var dynCall_viiiiii = Module["dynCall_viiiiii"] = function() { + assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)'); + assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + return Module["asm"]["dynCall_viiiiii"].apply(null, arguments) +}; +; + + + +// === Auto-generated postamble setup entry stuff === + +Module['asm'] = asm; + +if (!Object.getOwnPropertyDescriptor(Module, "intArrayFromString")) Module["intArrayFromString"] = function() { abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "intArrayToString")) Module["intArrayToString"] = function() { abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "ccall")) Module["ccall"] = function() { abort("'ccall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "cwrap")) Module["cwrap"] = function() { abort("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "setValue")) Module["setValue"] = function() { abort("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getValue")) Module["getValue"] = function() { abort("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "allocate")) Module["allocate"] = function() { abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getMemory")) Module["getMemory"] = function() { abort("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "AsciiToString")) Module["AsciiToString"] = function() { abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToAscii")) Module["stringToAscii"] = function() { abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "UTF8ArrayToString")) Module["UTF8ArrayToString"] = function() { abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "UTF8ToString")) Module["UTF8ToString"] = function() { abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8Array")) Module["stringToUTF8Array"] = function() { abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8")) Module["stringToUTF8"] = function() { abort("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF8")) Module["lengthBytesUTF8"] = function() { abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "UTF16ToString")) Module["UTF16ToString"] = function() { abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF16")) Module["stringToUTF16"] = function() { abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF16")) Module["lengthBytesUTF16"] = function() { abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "UTF32ToString")) Module["UTF32ToString"] = function() { abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF32")) Module["stringToUTF32"] = function() { abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF32")) Module["lengthBytesUTF32"] = function() { abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8")) Module["allocateUTF8"] = function() { abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function() { abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnPreRun")) Module["addOnPreRun"] = function() { abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnInit")) Module["addOnInit"] = function() { abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnPreMain")) Module["addOnPreMain"] = function() { abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnExit")) Module["addOnExit"] = function() { abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnPostRun")) Module["addOnPostRun"] = function() { abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeStringToMemory")) Module["writeStringToMemory"] = function() { abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeArrayToMemory")) Module["writeArrayToMemory"] = function() { abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeAsciiToMemory")) Module["writeAsciiToMemory"] = function() { abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addRunDependency")) Module["addRunDependency"] = function() { abort("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "removeRunDependency")) Module["removeRunDependency"] = function() { abort("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "ENV")) Module["ENV"] = function() { abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS")) Module["FS"] = function() { abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createFolder")) Module["FS_createFolder"] = function() { abort("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createPath")) Module["FS_createPath"] = function() { abort("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createDataFile")) Module["FS_createDataFile"] = function() { abort("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createPreloadedFile")) Module["FS_createPreloadedFile"] = function() { abort("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createLazyFile")) Module["FS_createLazyFile"] = function() { abort("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createLink")) Module["FS_createLink"] = function() { abort("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createDevice")) Module["FS_createDevice"] = function() { abort("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_unlink")) Module["FS_unlink"] = function() { abort("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "GL")) Module["GL"] = function() { abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "dynamicAlloc")) Module["dynamicAlloc"] = function() { abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "loadDynamicLibrary")) Module["loadDynamicLibrary"] = function() { abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "loadWebAssemblyModule")) Module["loadWebAssemblyModule"] = function() { abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getLEB")) Module["getLEB"] = function() { abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getFunctionTables")) Module["getFunctionTables"] = function() { abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "alignFunctionTables")) Module["alignFunctionTables"] = function() { abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "registerFunctions")) Module["registerFunctions"] = function() { abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addFunction")) Module["addFunction"] = function() { abort("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "removeFunction")) Module["removeFunction"] = function() { abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = function() { abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "prettyPrint")) Module["prettyPrint"] = function() { abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "makeBigInt")) Module["makeBigInt"] = function() { abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = function() { abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getCompilerSetting")) Module["getCompilerSetting"] = function() { abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackSave")) Module["stackSave"] = function() { abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackRestore")) Module["stackRestore"] = function() { abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackAlloc")) Module["stackAlloc"] = function() { abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "establishStackSpace")) Module["establishStackSpace"] = function() { abort("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "print")) Module["print"] = function() { abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "printErr")) Module["printErr"] = function() { abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getTempRet0")) Module["getTempRet0"] = function() { abort("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "setTempRet0")) Module["setTempRet0"] = function() { abort("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "callMain")) Module["callMain"] = function() { abort("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "abort")) Module["abort"] = function() { abort("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "Pointer_stringify")) Module["Pointer_stringify"] = function() { abort("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "warnOnce")) Module["warnOnce"] = function() { abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +Module["writeStackCookie"] = writeStackCookie; +Module["checkStackCookie"] = checkStackCookie; +Module["abortStackOverflow"] = abortStackOverflow;if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NORMAL")) Object.defineProperty(Module, "ALLOC_NORMAL", { configurable: true, get: function() { abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_STACK")) Object.defineProperty(Module, "ALLOC_STACK", { configurable: true, get: function() { abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_DYNAMIC")) Object.defineProperty(Module, "ALLOC_DYNAMIC", { configurable: true, get: function() { abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NONE")) Object.defineProperty(Module, "ALLOC_NONE", { configurable: true, get: function() { abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Object.getOwnPropertyDescriptor(Module, "calledRun")) Object.defineProperty(Module, "calledRun", { configurable: true, get: function() { abort("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") } }); + + + +var calledRun; + +// Modularize mode returns a function, which can be called to +// create instances. The instances provide a then() method, +// must like a Promise, that receives a callback. The callback +// is called when the module is ready to run, with the module +// as a parameter. (Like a Promise, it also returns the module +// so you can use the output of .then(..)). +Module['then'] = function(func) { + // We may already be ready to run code at this time. if + // so, just queue a call to the callback. + if (calledRun) { + func(Module); + } else { + // we are not ready to call then() yet. we must call it + // at the same time we would call onRuntimeInitialized. + var old = Module['onRuntimeInitialized']; + Module['onRuntimeInitialized'] = function() { + if (old) old(); + func(Module); + }; + } + return Module; +}; + +/** + * @constructor + * @this {ExitStatus} + */ +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +} + +var calledMain = false; + + +dependenciesFulfilled = function runCaller() { + // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled +}; + + + + + +/** @type {function(Array=)} */ +function run(args) { + args = args || arguments_; + + if (runDependencies > 0) { + return; + } + + writeStackCookie(); + + preRun(); + + if (runDependencies > 0) return; // a preRun added a dependency, run will be called later + + function doRun() { + // run may have just been called through dependencies being fulfilled just in this very frame, + // or while the async setStatus time below was happening + if (calledRun) return; + calledRun = true; + + if (ABORT) return; + + initRuntime(); + + preMain(); + + if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); + + assert(!Module['_main'], 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'); + + postRun(); + } + + if (Module['setStatus']) { + Module['setStatus']('Running...'); + setTimeout(function() { + setTimeout(function() { + Module['setStatus'](''); + }, 1); + doRun(); + }, 1); + } else + { + doRun(); + } + checkStackCookie(); +} +Module['run'] = run; + +function checkUnflushedContent() { + // Compiler settings do not allow exiting the runtime, so flushing + // the streams is not possible. but in ASSERTIONS mode we check + // if there was something to flush, and if so tell the user they + // should request that the runtime be exitable. + // Normally we would not even include flush() at all, but in ASSERTIONS + // builds we do so just for this check, and here we see if there is any + // content to flush, that is, we check if there would have been + // something a non-ASSERTIONS build would have not seen. + // How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0 + // mode (which has its own special function for this; otherwise, all + // the code is inside libc) + var print = out; + var printErr = err; + var has = false; + out = err = function(x) { + has = true; + } + try { // it doesn't matter if it fails + var flush = Module['_fflush']; + if (flush) flush(0); + // also flush in the JS FS layer + ['stdout', 'stderr'].forEach(function(name) { + var info = FS.analyzePath('/dev/' + name); + if (!info) return; + var stream = info.object; + var rdev = stream.rdev; + var tty = TTY.ttys[rdev]; + if (tty && tty.output && tty.output.length) { + has = true; + } + }); + } catch(e) {} + out = print; + err = printErr; + if (has) { + warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.'); + } +} + +function exit(status, implicit) { + checkUnflushedContent(); + + // if this is just main exit-ing implicitly, and the status is 0, then we + // don't need to do anything here and can just leave. if the status is + // non-zero, though, then we need to report it. + // (we may have warned about this earlier, if a situation justifies doing so) + if (implicit && noExitRuntime && status === 0) { + return; + } + + if (noExitRuntime) { + // if exit() was called, we may warn the user if the runtime isn't actually being shut down + if (!implicit) { + err('program exited (with status: ' + status + '), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)'); + } + } else { + + ABORT = true; + EXITSTATUS = status; + + exitRuntime(); + + if (Module['onExit']) Module['onExit'](status); + } + + quit_(status, new ExitStatus(status)); +} + +if (Module['preInit']) { + if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; + while (Module['preInit'].length > 0) { + Module['preInit'].pop()(); + } +} + + + noExitRuntime = true; + +run(); + + + + + +// {{MODULE_ADDITIONS}} + + + + + + return rhino3dm +} +); +})(); +if (typeof exports === 'object' && typeof module === 'object') + module.exports = rhino3dm; + else if (typeof define === 'function' && define['amd']) + define([], function() { return rhino3dm; }); + else if (typeof exports === 'object') + exports["rhino3dm"] = rhino3dm; + \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/lib/rhino3dm.wasm b/01_Code/physical_computing_interface/simulation/lib/rhino3dm.wasm new file mode 100644 index 0000000000000000000000000000000000000000..93793a23fb7e4cdf5adc7a31ce8d6faea04284b7 Binary files /dev/null and b/01_Code/physical_computing_interface/simulation/lib/rhino3dm.wasm differ diff --git a/01_Code/physical_computing_interface/simulation/lib/stats.js b/01_Code/physical_computing_interface/simulation/lib/stats.js new file mode 100644 index 0000000000000000000000000000000000000000..4875f72ab6355bb339dfe46e58187b2a36740b50 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/stats.js @@ -0,0 +1,179 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.Stats = factory()); +}(this, (function () { 'use strict'; + +/** + * @author mrdoob / http://mrdoob.com/ + */ + +var Stats = function () { + + var mode = 0; + + var container = document.createElement( 'div' ); + container.style.cssText = 'position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000'; + container.addEventListener( 'click', function ( event ) { + + event.preventDefault(); + showPanel( ++ mode % container.children.length ); + + }, false ); + + // + + function addPanel( panel ) { + + container.appendChild( panel.dom ); + return panel; + + } + + function showPanel( id ) { + + for ( var i = 0; i < container.children.length; i ++ ) { + + container.children[ i ].style.display = i === id ? 'block' : 'none'; + + } + + mode = id; + + } + + // + + var beginTime = ( performance || Date ).now(), prevTime = beginTime, frames = 0; + + var fpsPanel = addPanel( new Stats.Panel( 'FPS', '#0ff', '#002' ) ); + var msPanel = addPanel( new Stats.Panel( 'MS', '#0f0', '#020' ) ); + + if ( self.performance && self.performance.memory ) { + + var memPanel = addPanel( new Stats.Panel( 'MB', '#f08', '#201' ) ); + + } + + showPanel( 0 ); + + return { + + REVISION: 16, + + dom: container, + + addPanel: addPanel, + showPanel: showPanel, + + begin: function () { + + beginTime = ( performance || Date ).now(); + + }, + + end: function () { + + frames ++; + + var time = ( performance || Date ).now(); + + msPanel.update( time - beginTime, 200 ); + + if ( time >= prevTime + 1000 ) { + + fpsPanel.update( ( frames * 1000 ) / ( time - prevTime ), 100 ); + + prevTime = time; + frames = 0; + + if ( memPanel ) { + + var memory = performance.memory; + memPanel.update( memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576 ); + + } + + } + + return time; + + }, + + update: function () { + + beginTime = this.end(); + + }, + + // Backwards Compatibility + + domElement: container, + setMode: showPanel + + }; + +}; + +Stats.Panel = function ( name, fg, bg ) { + + var min = Infinity, max = 0, round = Math.round; + var PR = round( window.devicePixelRatio || 1 ); + + var WIDTH = 80 * PR, HEIGHT = 48 * PR, + TEXT_X = 3 * PR, TEXT_Y = 2 * PR, + GRAPH_X = 3 * PR, GRAPH_Y = 15 * PR, + GRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR; + + var canvas = document.createElement( 'canvas' ); + canvas.width = WIDTH; + canvas.height = HEIGHT; + canvas.style.cssText = 'width:80px;height:48px'; + + var context = canvas.getContext( '2d' ); + context.font = 'bold ' + ( 9 * PR ) + 'px Helvetica,Arial,sans-serif'; + context.textBaseline = 'top'; + + context.fillStyle = bg; + context.fillRect( 0, 0, WIDTH, HEIGHT ); + + context.fillStyle = fg; + context.fillText( name, TEXT_X, TEXT_Y ); + context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT ); + + context.fillStyle = bg; + context.globalAlpha = 0.9; + context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT ); + + return { + + dom: canvas, + + update: function ( value, maxValue ) { + + min = Math.min( min, value ); + max = Math.max( max, value ); + + context.fillStyle = bg; + context.globalAlpha = 1; + context.fillRect( 0, 0, WIDTH, GRAPH_Y ); + context.fillStyle = fg; + context.fillText( round( value ) + ' ' + name + ' (' + round( min ) + '-' + round( max ) + ')', TEXT_X, TEXT_Y ); + + context.drawImage( canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT ); + + context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT ); + + context.fillStyle = bg; + context.globalAlpha = 0.9; + context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round( ( 1 - ( value / maxValue ) ) * GRAPH_HEIGHT ) ); + + } + + }; + +}; + +return Stats; + +}))); diff --git a/01_Code/physical_computing_interface/simulation/lib/stats.module.js b/01_Code/physical_computing_interface/simulation/lib/stats.module.js new file mode 100644 index 0000000000000000000000000000000000000000..8a3edfd40ae71d144dc0e879b2649133e9472856 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/stats.module.js @@ -0,0 +1,171 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +var Stats = function () { + + var mode = 0; + + var container = document.createElement( 'div' ); + container.style.cssText = 'position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000'; + container.addEventListener( 'click', function ( event ) { + + event.preventDefault(); + showPanel( ++ mode % container.children.length ); + + }, false ); + + // + + function addPanel( panel ) { + + container.appendChild( panel.dom ); + return panel; + + } + + function showPanel( id ) { + + for ( var i = 0; i < container.children.length; i ++ ) { + + container.children[ i ].style.display = i === id ? 'block' : 'none'; + + } + + mode = id; + + } + + // + + var beginTime = ( performance || Date ).now(), prevTime = beginTime, frames = 0; + + var fpsPanel = addPanel( new Stats.Panel( 'FPS', '#0ff', '#002' ) ); + var msPanel = addPanel( new Stats.Panel( 'MS', '#0f0', '#020' ) ); + + if ( self.performance && self.performance.memory ) { + + var memPanel = addPanel( new Stats.Panel( 'MB', '#f08', '#201' ) ); + + } + + showPanel( 0 ); + + return { + + REVISION: 16, + + dom: container, + + addPanel: addPanel, + showPanel: showPanel, + + begin: function () { + + beginTime = ( performance || Date ).now(); + + }, + + end: function () { + + frames ++; + + var time = ( performance || Date ).now(); + + msPanel.update( time - beginTime, 200 ); + + if ( time >= prevTime + 1000 ) { + + fpsPanel.update( ( frames * 1000 ) / ( time - prevTime ), 100 ); + + prevTime = time; + frames = 0; + + if ( memPanel ) { + + var memory = performance.memory; + memPanel.update( memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576 ); + + } + + } + + return time; + + }, + + update: function () { + + beginTime = this.end(); + + }, + + // Backwards Compatibility + + domElement: container, + setMode: showPanel + + }; + +}; + +Stats.Panel = function ( name, fg, bg ) { + + var min = Infinity, max = 0, round = Math.round; + var PR = round( window.devicePixelRatio || 1 ); + + var WIDTH = 80 * PR, HEIGHT = 48 * PR, + TEXT_X = 3 * PR, TEXT_Y = 2 * PR, + GRAPH_X = 3 * PR, GRAPH_Y = 15 * PR, + GRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR; + + var canvas = document.createElement( 'canvas' ); + canvas.width = WIDTH; + canvas.height = HEIGHT; + canvas.style.cssText = 'width:80px;height:48px'; + + var context = canvas.getContext( '2d' ); + context.font = 'bold ' + ( 9 * PR ) + 'px Helvetica,Arial,sans-serif'; + context.textBaseline = 'top'; + + context.fillStyle = bg; + context.fillRect( 0, 0, WIDTH, HEIGHT ); + + context.fillStyle = fg; + context.fillText( name, TEXT_X, TEXT_Y ); + context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT ); + + context.fillStyle = bg; + context.globalAlpha = 0.9; + context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT ); + + return { + + dom: canvas, + + update: function ( value, maxValue ) { + + min = Math.min( min, value ); + max = Math.max( max, value ); + + context.fillStyle = bg; + context.globalAlpha = 1; + context.fillRect( 0, 0, WIDTH, GRAPH_Y ); + context.fillStyle = fg; + context.fillText( round( value ) + ' ' + name + ' (' + round( min ) + '-' + round( max ) + ')', TEXT_X, TEXT_Y ); + + context.drawImage( canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT ); + + context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT ); + + context.fillStyle = bg; + context.globalAlpha = 0.9; + context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round( ( 1 - ( value / maxValue ) ) * GRAPH_HEIGHT ) ); + + } + + }; + +}; + +export default Stats; diff --git a/01_Code/physical_computing_interface/simulation/lib/tf.min.js b/01_Code/physical_computing_interface/simulation/lib/tf.min.js new file mode 100644 index 0000000000000000000000000000000000000000..68f247305766aef321c766e40905e9ccac29fda2 --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/tf.min.js @@ -0,0 +1,3 @@ +// @tensorflow/tfjs Copyright 2019 Google +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.tf=t.tf||{})}(this,function(t){"use strict";var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,n)};function n(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}var r=function(){return(r=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)};function i(t,e,n,r){return new(n||(n=Promise))(function(i,o){function a(t){try{u(r.next(t))}catch(t){o(t)}}function s(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(a,s)}u((r=r.apply(t,e||[])).next())})}function o(t,e){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=e.call(t,a)}catch(t){o=[6,t],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}}var a={},s={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function u(t){t in a||(a[t]=function(t){if(1!==t&&2!==t)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");var e=document.createElement("canvas");return e.addEventListener("webglcontextlost",function(e){e.preventDefault(),delete a[t]},!1),1===t?e.getContext("webgl",s)||e.getContext("experimental-webgl",s):e.getContext("webgl2",s)}(t));var e=a[t];return e.isContextLost()?(delete a[t],u(t)):(e.disable(e.DEPTH_TEST),e.disable(e.STENCIL_TEST),e.disable(e.BLEND),e.disable(e.DITHER),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SAMPLE_COVERAGE),e.enable(e.SCISSOR_TEST),e.enable(e.CULL_FACE),e.cullFace(e.BACK),a[t])}function l(t){for(var e=t.length,n=0,r=0;e>0;)r=Math.random()*e|0,n=t[--e],t[e]=t[r],t[r]=n}function c(t,e,n){return Math.max(t,Math.min(e,n))}function p(t){return t%2==0?t:t+1}function h(t){for(var e=0,n=0;n<t.length;n++)e+=t[n];return e}function f(t,e){var n=Math.random();return e*n+(1-n)*t}function d(t,e){if(!t)throw new Error("string"==typeof e?e:e())}function m(t,e,n){void 0===n&&(n=""),d(b(t,e),function(){return n+" Shapes "+t+" and "+e+" must match"})}function g(t){d(null!=t,function(){return"The input to the tensor constructor must be a non-null value."})}function y(t,e){if(void 0===e&&(e=[]),null==e&&(e=[]),Array.isArray(t)||_(t))for(var n=0;n<t.length;++n)y(t[n],e);else e.push(t);return e}function v(t){if(0===t.length)return 1;for(var e=t[0],n=1;n<t.length;n++)e*=t[n];return e}function b(t,e){if(t===e)return!0;if(null==t||null==e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}function w(t){return t%1==0}function x(t){if(null!=Math.tanh)return Math.tanh(t);if(t===1/0)return 1;if(t===-1/0)return-1;var e=Math.exp(2*t);return(e-1)/(e+1)}function N(t){var e=Math.ceil(Math.sqrt(t));return[e,Math.ceil(t/e)]}function S(t,e){return e<=t.length?t:t+" ".repeat(e-t.length)}function C(t,e,n){return void 0===e&&(e=function(t){return 0}),new Promise(function(r,i){var o=0,a=function(){if(t())r();else{var s=e(++o);null!=n&&o>=n?i():setTimeout(a,s)}};a()})}function E(t,e){for(var n=1,r=-1,i=0;i<t.length;++i)if(t[i]>=0)n*=t[i];else if(-1===t[i]){if(-1!==r)throw Error("Shapes can only have 1 implicit size. Found -1 at dim "+r+" and dim "+i);r=i}else if(t[i]<0)throw Error("Shapes can not be < 0. Found "+t[i]+" at dim "+i);if(-1===r){if(e>0&&e!==n)throw Error("Size("+e+") must match the product of shape "+t);return t}if(0===n)throw Error("Cannot infer the missing size in ["+t+"] when there are 0 elements");if(e%n!=0)throw Error("The implicit shape can't be a fractional number. Got "+e+" / "+n);var o=t.slice();return o[r]=e/n,o}function I(t,e){var n=e.length;return d((t=null==t?e.map(function(t,e){return e}):[].concat(t)).every(function(t){return t>=-n&&t<n}),function(){return"All values in axis param must be in range [-"+n+", "+n+") but got axis "+t}),d(t.every(function(t){return w(t)}),function(){return"All values in axis param must be integers but got axis "+t}),t.map(function(t){return t<0?n+t:t})}function k(t,e){for(var n=[],r=[],i=null==e?null:I(e,t).sort(),o=0,a=0;a<t.length;++a){if(null!=i){if(i[o]===a&&1!==t[a])throw new Error("Can't squeeze axis "+a+" since its dim '"+t[a]+"' is not 1");(null==i[o]||i[o]>a)&&1===t[a]&&(n.push(t[a]),r.push(a)),i[o]<=a&&o++}1!==t[a]&&(n.push(t[a]),r.push(a))}return{newShape:n,keptDims:r}}function A(t,e){var n=null;if(null==t||"float32"===t)n=new Float32Array(e);else if("int32"===t)n=new Int32Array(e);else{if("bool"!==t)throw new Error("Unknown data type "+t);n=new Uint8Array(e)}return n}function T(t,e){var n=null;if(null==t||"float32"===t)n=new Float32Array(e);else if("int32"===t)n=new Int32Array(e);else if("bool"===t)n=new Uint8Array(e);else{if("string"!==t)throw new Error("Unknown data type "+t);n=new Array(e)}return n}function R(t,e,n){if("float32"===e)for(var r=0;r<t.length;r++){var i=t[r];if(isNaN(i)||!isFinite(i))throw Error("The result of the '"+n+"' is "+i+".")}}function D(t,e){for(var n=0;n<t.length;n++){var r=t[n];if(isNaN(r)||!isFinite(r))throw Error("A tensor of type "+e+" being uploaded contains "+r+".")}}function O(t,e){return!("complex64"===e||"float32"===e&&"complex64"!==t||"int32"===e&&"float32"!==t&&"complex64"!==t||"bool"===e&&"bool"===t)}function _(t){return t instanceof Float32Array||t instanceof Int32Array||t instanceof Uint8Array}function M(t){if("float32"===t||"int32"===t)return 4;if("complex64"===t)return 8;if("bool"===t)return 1;throw new Error("Unknown dtype "+t)}function L(t){if(null==t)return 0;var e=0;return t.forEach(function(t){return e+=2*t.length}),e}function F(t){return"string"==typeof t||t instanceof String}function z(t){return"boolean"==typeof t}function P(t){return"number"==typeof t}function B(t){return Array.isArray(t)?B(t[0]):t instanceof Float32Array?"float32":t instanceof Int32Array||t instanceof Uint8Array?"int32":P(t)?"float32":F(t)?"string":z(t)?"bool":"float32"}function U(t){return!!(t&&t.constructor&&t.call&&t.apply)}function W(t,e){for(var n=e;n<t;++n)if(t%n==0)return n;return t}function V(t){var e=t.length;if(e<2)return[];var n=new Array(e-1);n[e-2]=t[e-1];for(var r=e-3;r>=0;--r)n[r]=n[r+1]*t[r+1];return n}function j(t,e,n){if("string"===e)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(t)&&(t=y(t)),n&&D(t,e),function(t,e){return t instanceof Float32Array&&"float32"===e||t instanceof Int32Array&&"int32"===e||t instanceof Uint8Array&&"bool"===e}(t,e))return t;if(null==e||"float32"===e||"complex64"===e)return new Float32Array(t);if("int32"===e)return new Int32Array(t);if("bool"===e){for(var r=new Uint8Array(t.length),i=0;i<r.length;++i)0!==Math.round(t[i])&&(r[i]=1);return r}throw new Error("Unknown data type "+e)}function q(t,e){if(0===t.length)return e[0];var n=t.reduce(function(t,e){return t*e});if(0===n)return[];if(n!==e.length)throw new Error("["+t+"] does not match the input size.");return function t(e,n,r){var i=new Array;if(1===n.length)for(var o=n[0],a=0;a<o;a++)i[a]=r[e+a];else{o=n[0];var s=n.slice(1),u=s.reduce(function(t,e){return t*e});for(a=0;a<o;a++)i[a]=t(e+a*u,s,r)}return i}(0,t,e)}function G(t,e){for(var n=H(t,e),r=0;r<n.length;r++)n[r]=1;return n}function H(t,e){if(null==e||"float32"===e||"complex64"===e)return new Float32Array(t);if("int32"===e)return new Int32Array(t);if("bool"===e)return new Uint8Array(t);throw new Error("Unknown data type "+e)}function K(){if("undefined"!=typeof performance)return performance.now();if("undefined"!=typeof process){var t=process.hrtime();return 1e3*t[0]+t[1]/1e6}throw new Error("Cannot measure time in this environment. You should run tf.js in the browser or in Node.js")}function $(t){t.forEach(function(e){d(Number.isInteger(e)&&e>=0,function(){return"Tensor must have a shape comprised of positive integers but got shape ["+t+"]."})})}var X=Object.freeze({shuffle:l,clamp:c,nearestLargerEven:p,sum:h,randUniform:f,distSquared:function(t,e){for(var n=0,r=0;r<t.length;r++){var i=Number(t[r])-Number(e[r]);n+=i*i}return n},assert:d,assertShapesMatch:m,assertNonNull:g,flatten:y,sizeFromShape:v,isScalarShape:function(t){return 0===t.length},arraysEqual:b,isInt:w,tanh:x,sizeToSquarishShape:N,createShuffledIndices:function(t){for(var e=new Uint32Array(t),n=0;n<t;++n)e[n]=n;return l(e),e},rightPad:S,repeatedTry:C,inferFromImplicitShape:E,parseAxisParam:I,squeezeShape:k,getTypedArrayFromDType:A,getArrayFromDType:T,checkComputationForErrors:R,checkConversionForErrors:D,hasEncodingLoss:O,isTypedArray:_,bytesPerElement:M,bytesFromStringArray:L,isString:F,isBoolean:z,isNumber:P,inferDtype:B,isFunction:U,nearestDivisor:W,computeStrides:V,toTypedArray:j,toNestedArray:q,makeOnesTypedArray:G,makeZerosTypedArray:H,now:K,assertNonNegativeIntegerDimensions:$}),Y=function(){function t(t,e){this.backendTimer=t,this.logger=e,null==e&&(this.logger=new J)}return t.prototype.profileKernel=function(t,e){var n,r=this,i=this.backendTimer.time(function(){n=e()});return(Array.isArray(n)?n:[n]).forEach(function(e){var n=e.dataSync();R(n,e.dtype,t),i.then(function(i){var o="";null!=i.getExtraProfileInfo&&(o=i.getExtraProfileInfo()),r.logger.logKernelProfile(t,e,n,i.kernelMs,o)})}),n},t}(),J=function(){function t(){}return t.prototype.logKernelProfile=function(t,e,n,r,i){var o=S(r+"ms",9),a=S(t,25),s=e.rank,u=e.size,l=S(e.shape.toString(),14);console.log("%c"+a+"\t%c"+o+"\t%c"+s+"D "+l+"\t%c"+u+"\t%c"+i,"font-weight:bold","color:red","color:blue","color: orange","color: green")},t}(),Z=20,Q=3,tt=7;function et(t,e,n,r){var i=V(e),o=function(t,e,n,r){var i=v(e),o=r[r.length-1],a=new Array(o).fill(0),s=e.length,u="complex64"===n?rt(t):t;if(s>1)for(var l=0;l<i/o;l++)for(var c=l*o,p=0;p<o;p++)a[p]=Math.max(a[p],nt(u[c+p],0).length);return a}(t,e,n,i),a=e.length,s=function t(e,n,r,i,o,a){void 0===a&&(a=!0);var s="complex64"===r?2:1,u=n[0],l=n.length;if(0===l)return"complex64"===r?[nt(rt(e)[0],0)]:[e[0].toString()];if(1===l){if(u>Z){var c=Q*s,p=Array.from(e.slice(0,c)),h=Array.from(e.slice(u-Q*s,u));return"complex64"===r&&(p=rt(p),h=rt(h)),["["+p.map(function(t,e){return nt(t,o[e])}).join(", ")+", ..., "+h.map(function(t,e){return nt(t,o[u-Q+e])}).join(", ")+"]"]}return["["+("complex64"===r?rt(e):Array.from(e)).map(function(t,e){return nt(t,o[e])}).join(", ")+"]"]}var f=n.slice(1),d=i.slice(1),m=i[0]*s,g=[];if(u>Z){for(var y=0;y<Q;y++){var v=(b=y*m)+m;g.push.apply(g,t(e.slice(b,v),f,r,d,o,!1))}for(g.push("..."),y=u-Q;y<u;y++)v=(b=y*m)+m,g.push.apply(g,t(e.slice(b,v),f,r,d,o,y===u-1))}else for(y=0;y<u;y++){var b;v=(b=y*m)+m,g.push.apply(g,t(e.slice(b,v),f,r,d,o,y===u-1))}var w=2===l?",":"";g[0]="["+g[0]+w;for(y=1;y<g.length-1;y++)g[y]=" "+g[y]+w;var x=",\n";for(y=2;y<l;y++)x+="\n";return g[g.length-1]=" "+g[g.length-1]+"]"+(a?"":x),g}(t,e,n,i,o),u=["Tensor"];return r&&(u.push(" dtype: "+n),u.push(" rank: "+a),u.push(" shape: ["+e+"]"),u.push(" values:")),u.push(s.map(function(t){return" "+t}).join("\n")),u.join("\n")}function nt(t,e){return S(Array.isArray(t)?parseFloat(t[0].toFixed(tt))+" + "+parseFloat(t[1].toFixed(tt))+"j":F(t)?"'"+t+"'":parseFloat(t.toFixed(tt)).toString(),e)}function rt(t){for(var e=[],n=0;n<t.length;n+=2)e.push([t[n],t[n+1]]);return e}var it=function(){function t(t,e,n){var r=this;if(this.dtype=e,this.shape=t.slice(),this.size=v(t),null!=n){var i=n.length;d(i===this.size,function(){return"Length of values '"+i+"' does not match the size inferred by the shape '"+r.size+"'."})}if("complex64"===e)throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||T(e,v(this.shape)),this.strides=V(t)}return t.prototype.set=function(t){for(var e=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];0===n.length&&(n=[0]),d(n.length===this.rank,function(){return"The number of provided coordinates ("+n.length+") must match the rank ("+e.rank+")"});var i=this.locToIndex(n);this.values[i]=t},t.prototype.get=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];0===t.length&&(t=[0]);for(var n=t[t.length-1],r=0;r<t.length-1;++r)n+=this.strides[r]*t[r];return this.values[n]},t.prototype.locToIndex=function(t){if(0===this.rank)return 0;if(1===this.rank)return t[0];for(var e=t[t.length-1],n=0;n<t.length-1;++n)e+=this.strides[n]*t[n];return e},t.prototype.indexToLoc=function(t){if(0===this.rank)return[];if(1===this.rank)return[t];for(var e=new Array(this.shape.length),n=0;n<e.length-1;++n)e[n]=Math.floor(t/this.strides[n]),t-=e[n]*this.strides[n];return e[e.length-1]=t,e},Object.defineProperty(t.prototype,"rank",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),t.prototype.toTensor=function(){return ut.make(this.shape,{values:this.values},this.dtype)},t}(),ot=null,at=null,st=null;var ut=function(){function t(t,e,n,r,i){this.isDisposedInternal=!1,this.shape=t.slice(),this.dtype=e||"float32",this.size=v(t),this.strides=V(t),this.dataId=null!=r?r:{},this.id=ot().nextTensorId(),this.rankType=this.rank<5?this.rank.toString():"higher",ot().registerTensor(this,i),null!=n&&ot().write(this.dataId,n)}return t.make=function(e,n,r,i){return new t(e,r,n.values,n.dataId,i)},t.prototype.flatten=function(){return this.throwIfDisposed(),this.as1D()},t.prototype.asScalar=function(){return this.throwIfDisposed(),d(1===this.size,function(){return"The array must have only 1 element."}),this.reshape([])},t.prototype.as1D=function(){return this.throwIfDisposed(),this.reshape([this.size])},t.prototype.as2D=function(t,e){return this.throwIfDisposed(),this.reshape([t,e])},t.prototype.as3D=function(t,e,n){return this.throwIfDisposed(),this.reshape([t,e,n])},t.prototype.as4D=function(t,e,n,r){return this.throwIfDisposed(),this.reshape([t,e,n,r])},t.prototype.as5D=function(t,e,n,r,i){return this.throwIfDisposed(),this.reshape([t,e,n,r,i])},t.prototype.asType=function(t){return this.throwIfDisposed(),at.cast(this,t)},Object.defineProperty(t.prototype,"rank",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),t.prototype.buffer=function(){return i(this,void 0,void 0,function(){var t;return o(this,function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,at.buffer(this.shape,this.dtype,t)]}})})},t.prototype.bufferSync=function(){return at.buffer(this.shape,this.dtype,this.dataSync())},t.prototype.array=function(){return i(this,void 0,void 0,function(){var t;return o(this,function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,q(this.shape,t)]}})})},t.prototype.arraySync=function(){return q(this.shape,this.dataSync())},t.prototype.data=function(){return i(this,void 0,void 0,function(){return o(this,function(t){return this.throwIfDisposed(),[2,ot().read(this.dataId)]})})},t.prototype.dataSync=function(){return this.throwIfDisposed(),ot().readSync(this.dataId)},t.prototype.dispose=function(){this.isDisposed||(ot().disposeTensor(this),this.isDisposedInternal=!0)},Object.defineProperty(t.prototype,"isDisposed",{get:function(){return this.isDisposedInternal},enumerable:!0,configurable:!0}),t.prototype.throwIfDisposed=function(){if(this.isDisposed)throw new Error("Tensor is disposed.")},t.prototype.toFloat=function(){return this.asType("float32")},t.prototype.toInt=function(){return this.asType("int32")},t.prototype.toBool=function(){return this.asType("bool")},t.prototype.print=function(t){return void 0===t&&(t=!1),at.print(this,t)},t.prototype.reshape=function(t){return this.throwIfDisposed(),at.reshape(this,t)},t.prototype.reshapeAs=function(t){return this.throwIfDisposed(),this.reshape(t.shape)},t.prototype.expandDims=function(t){return void 0===t&&(t=0),at.expandDims(this,t)},t.prototype.cumsum=function(t,e,n){return void 0===t&&(t=0),void 0===e&&(e=!1),void 0===n&&(n=!1),at.cumsum(this,t,e,n)},t.prototype.squeeze=function(t){return this.throwIfDisposed(),at.squeeze(this,t)},t.prototype.clone=function(){return this.throwIfDisposed(),at.clone(this)},t.prototype.oneHot=function(t,e,n){return this.throwIfDisposed(),at.oneHot(this,t,e,n)},t.prototype.toString=function(t){return void 0===t&&(t=!1),et(this.dataSync(),this.shape,this.dtype,t)},t.prototype.tile=function(t){return this.throwIfDisposed(),at.tile(this,t)},t.prototype.gather=function(t,e){return void 0===e&&(e=0),this.throwIfDisposed(),at.gather(this,t,e)},t.prototype.matMul=function(t,e,n){return void 0===e&&(e=!1),void 0===n&&(n=!1),this.throwIfDisposed(),at.matMul(this,t,e,n)},t.prototype.dot=function(t){return this.throwIfDisposed(),at.dot(this,t)},t.prototype.norm=function(t,e,n){return void 0===t&&(t="euclidean"),void 0===e&&(e=null),void 0===n&&(n=!1),this.throwIfDisposed(),at.norm(this,t,e,n)},t.prototype.slice=function(t,e){return this.throwIfDisposed(),at.slice(this,t,e)},t.prototype.reverse=function(t){return this.throwIfDisposed(),at.reverse(this,t)},t.prototype.concat=function(e,n){return void 0===n&&(n=0),this.throwIfDisposed(),e instanceof t&&(e=[e]),at.concat([this].concat(e),n)},t.prototype.split=function(t,e){return void 0===e&&(e=0),this.throwIfDisposed(),at.split(this,t,e)},t.prototype.stack=function(t,e){return void 0===e&&(e=0),at.stack([this,t],e)},t.prototype.unstack=function(t){return void 0===t&&(t=0),at.unstack(this,t)},t.prototype.pad=function(t,e){return void 0===e&&(e=0),at.pad(this,t,e)},t.prototype.batchNormalization=function(t,e,n,r,i){return void 0===n&&(n=.001),st("tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon"),this.batchNorm(t,e,i,r,n)},t.prototype.batchNorm=function(t,e,n,r,i){return void 0===i&&(i=.001),this.throwIfDisposed(),at.batchNorm(this,t,e,n,r,i)},t.prototype.all=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),at.all(this,t,e)},t.prototype.any=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),at.any(this,t,e)},t.prototype.logSumExp=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),at.logSumExp(this,t,e)},t.prototype.sum=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),at.sum(this,t,e)},t.prototype.prod=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),at.prod(this,t,e)},t.prototype.mean=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),at.mean(this,t,e)},t.prototype.min=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),at.min(this,t,e)},t.prototype.max=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),at.max(this,t,e)},t.prototype.argMin=function(t){return void 0===t&&(t=null),this.throwIfDisposed(),at.argMin(this,t)},t.prototype.argMax=function(t){return void 0===t&&(t=null),this.throwIfDisposed(),at.argMax(this,t)},t.prototype.cast=function(t){return this.throwIfDisposed(),at.cast(this,t)},t.prototype.add=function(t){return this.throwIfDisposed(),at.add(this,t)},t.prototype.addStrict=function(t){return this.throwIfDisposed(),at.addStrict(this,t)},t.prototype.atan2=function(t){return this.throwIfDisposed(),at.atan2(this,t)},t.prototype.sub=function(t){return this.throwIfDisposed(),at.sub(this,t)},t.prototype.subStrict=function(t){return this.throwIfDisposed(),at.subStrict(this,t)},t.prototype.pow=function(t){return this.throwIfDisposed(),at.pow(this,t)},t.prototype.powStrict=function(t){return this.throwIfDisposed(),at.powStrict(this,t)},t.prototype.mul=function(t){return this.throwIfDisposed(),at.mul(this,t)},t.prototype.mulStrict=function(t){return this.throwIfDisposed(),at.mulStrict(this,t)},t.prototype.div=function(t){return this.throwIfDisposed(),at.div(this,t)},t.prototype.floorDiv=function(t){return this.throwIfDisposed(),at.floorDiv(this,t)},t.prototype.divStrict=function(t){return this.throwIfDisposed(),at.divStrict(this,t)},t.prototype.minimum=function(t){return this.throwIfDisposed(),at.minimum(this,t)},t.prototype.minimumStrict=function(t){return this.throwIfDisposed(),at.minimumStrict(this,t)},t.prototype.maximum=function(t){return this.throwIfDisposed(),at.maximum(this,t)},t.prototype.maximumStrict=function(t){return this.throwIfDisposed(),at.maximumStrict(this,t)},t.prototype.mod=function(t){return this.throwIfDisposed(),at.mod(this,t)},t.prototype.modStrict=function(t){return this.throwIfDisposed(),at.modStrict(this,t)},t.prototype.squaredDifference=function(t){return this.throwIfDisposed(),at.squaredDifference(this,t)},t.prototype.squaredDifferenceStrict=function(t){return this.throwIfDisposed(),at.squaredDifferenceStrict(this,t)},t.prototype.transpose=function(t){return this.throwIfDisposed(),at.transpose(this,t)},t.prototype.notEqual=function(t){return this.throwIfDisposed(),at.notEqual(this,t)},t.prototype.notEqualStrict=function(t){return this.throwIfDisposed(),at.notEqualStrict(this,t)},t.prototype.less=function(t){return this.throwIfDisposed(),at.less(this,t)},t.prototype.lessStrict=function(t){return this.throwIfDisposed(),at.lessStrict(this,t)},t.prototype.equal=function(t){return this.throwIfDisposed(),at.equal(this,t)},t.prototype.equalStrict=function(t){return this.throwIfDisposed(),at.equalStrict(this,t)},t.prototype.lessEqual=function(t){return this.throwIfDisposed(),at.lessEqual(this,t)},t.prototype.lessEqualStrict=function(t){return this.throwIfDisposed(),at.lessEqualStrict(this,t)},t.prototype.greater=function(t){return this.throwIfDisposed(),at.greater(this,t)},t.prototype.greaterStrict=function(t){return this.throwIfDisposed(),at.greaterStrict(this,t)},t.prototype.greaterEqual=function(t){return this.throwIfDisposed(),at.greaterEqual(this,t)},t.prototype.greaterEqualStrict=function(t){return this.throwIfDisposed(),at.greaterEqualStrict(this,t)},t.prototype.logicalAnd=function(t){return this.throwIfDisposed(),at.logicalAnd(this,t)},t.prototype.logicalOr=function(t){return this.throwIfDisposed(),at.logicalOr(this,t)},t.prototype.logicalNot=function(){return this.throwIfDisposed(),at.logicalNot(this)},t.prototype.logicalXor=function(t){return this.throwIfDisposed(),at.logicalXor(this,t)},t.prototype.where=function(t,e){return this.throwIfDisposed(),at.where(t,this,e)},t.prototype.neg=function(){return this.throwIfDisposed(),at.neg(this)},t.prototype.ceil=function(){return this.throwIfDisposed(),at.ceil(this)},t.prototype.floor=function(){return this.throwIfDisposed(),at.floor(this)},t.prototype.sign=function(){return this.throwIfDisposed(),at.sign(this)},t.prototype.exp=function(){return this.throwIfDisposed(),at.exp(this)},t.prototype.expm1=function(){return this.throwIfDisposed(),at.expm1(this)},t.prototype.log=function(){return this.throwIfDisposed(),at.log(this)},t.prototype.log1p=function(){return this.throwIfDisposed(),at.log1p(this)},t.prototype.sqrt=function(){return this.throwIfDisposed(),at.sqrt(this)},t.prototype.rsqrt=function(){return this.throwIfDisposed(),at.rsqrt(this)},t.prototype.square=function(){return this.throwIfDisposed(),at.square(this)},t.prototype.reciprocal=function(){return this.throwIfDisposed(),at.reciprocal(this)},t.prototype.abs=function(){return this.throwIfDisposed(),at.abs(this)},t.prototype.clipByValue=function(t,e){return this.throwIfDisposed(),at.clipByValue(this,t,e)},t.prototype.relu=function(){return this.throwIfDisposed(),at.relu(this)},t.prototype.elu=function(){return this.throwIfDisposed(),at.elu(this)},t.prototype.selu=function(){return this.throwIfDisposed(),at.selu(this)},t.prototype.leakyRelu=function(t){return void 0===t&&(t=.2),this.throwIfDisposed(),at.leakyRelu(this,t)},t.prototype.prelu=function(t){return this.throwIfDisposed(),at.prelu(this,t)},t.prototype.sigmoid=function(){return this.throwIfDisposed(),at.sigmoid(this)},t.prototype.logSigmoid=function(){return this.throwIfDisposed(),at.logSigmoid(this)},t.prototype.softplus=function(){return this.throwIfDisposed(),at.softplus(this)},t.prototype.zerosLike=function(){return this.throwIfDisposed(),at.zerosLike(this)},t.prototype.onesLike=function(){return this.throwIfDisposed(),at.onesLike(this)},t.prototype.sin=function(){return this.throwIfDisposed(),at.sin(this)},t.prototype.cos=function(){return this.throwIfDisposed(),at.cos(this)},t.prototype.tan=function(){return this.throwIfDisposed(),at.tan(this)},t.prototype.asin=function(){return this.throwIfDisposed(),at.asin(this)},t.prototype.acos=function(){return this.throwIfDisposed(),at.acos(this)},t.prototype.atan=function(){return this.throwIfDisposed(),at.atan(this)},t.prototype.sinh=function(){return this.throwIfDisposed(),at.sinh(this)},t.prototype.cosh=function(){return this.throwIfDisposed(),at.cosh(this)},t.prototype.tanh=function(){return this.throwIfDisposed(),at.tanh(this)},t.prototype.asinh=function(){return this.throwIfDisposed(),at.asinh(this)},t.prototype.acosh=function(){return this.throwIfDisposed(),at.acosh(this)},t.prototype.atanh=function(){return this.throwIfDisposed(),at.atanh(this)},t.prototype.erf=function(){return this.throwIfDisposed(),at.erf(this)},t.prototype.round=function(){return this.throwIfDisposed(),at.round(this)},t.prototype.step=function(t){return void 0===t&&(t=0),this.throwIfDisposed(),at.step(this,t)},t.prototype.softmax=function(t){return void 0===t&&(t=-1),this.throwIfDisposed(),at.softmax(this,t)},t.prototype.logSoftmax=function(t){return void 0===t&&(t=-1),this.throwIfDisposed(),at.logSoftmax(this,t)},t.prototype.resizeBilinear=function(t,e){return void 0===e&&(e=!1),this.throwIfDisposed(),at.image.resizeBilinear(this,t,e)},t.prototype.resizeNearestNeighbor=function(t,e){return void 0===e&&(e=!1),this.throwIfDisposed(),at.image.resizeNearestNeighbor(this,t,e)},t.prototype.conv1d=function(t,e,n,r,i,o){return void 0===r&&(r="NWC"),void 0===i&&(i=1),this.throwIfDisposed(),at.conv1d(this,t,e,n,r,i,o)},t.prototype.conv2d=function(t,e,n,r,i,o){return void 0===r&&(r="NHWC"),void 0===i&&(i=[1,1]),this.throwIfDisposed(),at.conv2d(this,t,e,n,r,i,o)},t.prototype.conv2dTranspose=function(t,e,n,r,i){return this.throwIfDisposed(),at.conv2dTranspose(this,t,e,n,r,i)},t.prototype.depthwiseConv2D=function(t,e,n,r,i,o){return void 0===r&&(r="NHWC"),void 0===i&&(i=[1,1]),this.throwIfDisposed(),at.depthwiseConv2d(this,t,e,n,r,i,o)},t.prototype.separableConv2d=function(t,e,n,r,i,o){return void 0===i&&(i=[1,1]),void 0===o&&(o="NHWC"),this.throwIfDisposed(),at.separableConv2d(this,t,e,n,r,i,o)},t.prototype.avgPool=function(t,e,n,r){return this.throwIfDisposed(),at.avgPool(this,t,e,n,r)},t.prototype.maxPool=function(t,e,n,r){return this.throwIfDisposed(),at.maxPool(this,t,e,n,r)},t.prototype.localResponseNormalization=function(t,e,n,r){return void 0===t&&(t=5),void 0===e&&(e=1),void 0===n&&(n=1),void 0===r&&(r=.5),at.localResponseNormalization(this,t,e,n,r)},t.prototype.pool=function(t,e,n,r,i){return this.throwIfDisposed(),at.pool(this,t,e,n,r,i)},t.prototype.variable=function(t,e,n){return void 0===t&&(t=!0),this.throwIfDisposed(),lt.variable(this,t,e,n)},t.prototype.unsortedSegmentSum=function(t,e){return this.throwIfDisposed(),at.unsortedSegmentSum(this,t,e)},t.prototype.batchToSpaceND=function(t,e){return this.throwIfDisposed(),at.batchToSpaceND(this,t,e)},t.prototype.spaceToBatchND=function(t,e){return this.throwIfDisposed(),at.spaceToBatchND(this,t,e)},t.prototype.topk=function(t,e){return void 0===t&&(t=1),void 0===e&&(e=!0),this.throwIfDisposed(),at.topk(this,t,e)},t.prototype.stridedSlice=function(t,e,n,r,i,o,a,s){return void 0===r&&(r=0),void 0===i&&(i=0),void 0===o&&(o=0),void 0===a&&(a=0),void 0===s&&(s=0),this.throwIfDisposed(),at.stridedSlice(this,t,e,n,r,i,o,a,s)},t.prototype.depthToSpace=function(t,e){return this.throwIfDisposed(),at.depthToSpace(this,t,e)},t.prototype.fft=function(){return this.throwIfDisposed(),at.spectral.fft(this)},t.prototype.ifft=function(){return this.throwIfDisposed(),at.spectral.ifft(this)},t.prototype.rfft=function(){return this.throwIfDisposed(),at.spectral.rfft(this)},t.prototype.irfft=function(){return this.throwIfDisposed(),at.spectral.irfft(this)},t}();Object.defineProperty(ut,Symbol.hasInstance,{value:function(t){return!!t&&null!=t.dataId&&null!=t.shape&&null!=t.dtype}});var lt=function(t){function e(e,n,r){void 0===n&&(n=!0);var i=t.call(this,e.shape,e.dtype,null,e.dataId)||this;i.trainable=n,i.name=r,null==i.name&&(i.name=ot().nextVariableId().toString());try{ot().registerVariable(i)}catch(t){throw ot().disposeTensor(i),t}return i}return n(e,t),e.variable=function(t,n,r,i){return void 0===n&&(n=!0),null!=i&&i!==t.dtype&&(t=t.asType(i)),new e(t,n,r)},e.prototype.assign=function(t){if(t.dtype!==this.dtype)throw new Error("dtype of the new value ("+t.dtype+") and previous value ("+this.dtype+") must match");if(!b(t.shape,this.shape))throw new Error("shape of the new value ("+t.shape+") and previous value ("+this.shape+") must match");ot().disposeTensor(this),this.dataId=t.dataId,ot().registerTensor(this)},e}(ut);Object.defineProperty(lt,Symbol.hasInstance,{value:function(t){return t instanceof ut&&null!=t.assign&&t.assign instanceof Function}});var ct,pt,ht,ft,dt,mt=lt.variable;(dt=t.Rank||(t.Rank={})).R0="R0",dt.R1="R1",dt.R2="R2",dt.R3="R3",dt.R4="R4",dt.R5="R5",dt.R6="R6",function(t){t.float32="float32",t.int32="int32",t.bool="int32",t.complex64="complex64"}(ct||(ct={})),function(t){t.float32="float32",t.int32="int32",t.bool="bool",t.complex64="complex64"}(pt||(pt={})),function(t){t.float32="float32",t.int32="float32",t.bool="float32",t.complex64="complex64"}(ht||(ht={})),function(t){t.float32="complex64",t.int32="complex64",t.bool="complex64",t.complex64="complex64"}(ft||(ft={}));var gt={float32:ht,int32:ct,bool:pt,complex64:ft};function yt(t,e){if("string"===t||"string"===e){if("string"===t&&"string"===e)return"string";throw new Error("Can not upcast "+t+" with "+e)}return gt[t][e]}function vt(t){return yt(t,"int32")}function bt(t,e){if(t.dtype===e.dtype)return[t,e];var n=yt(t.dtype,e.dtype);return[t.cast(n),e.cast(n)]}function wt(t){var e=[];return function t(e,n,r){if(null!=e)if(e instanceof ut)n.push(e);else if(function(t){return Array.isArray(t)||"object"==typeof t}(e)){var i=e;for(var o in i){var a=i[o];r.has(a)||(r.add(a),t(a,n,r))}}}(t,e,new Set),e}var xt,Nt=function(){function t(t,e,n){this.backend=t,this.safeMode=e,this.debugMode=n,this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.profiling=!1,this.gradientScopeCount=0,this.customGradientDepth=0,this.scopeStack=[],this.keepTensors=new Set,this.tensorInfo=new WeakMap,this.profiler=new Y(t),this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}return t.prototype.moveData=function(t){this.write(t,this.readSync(t))},t.prototype.tidy=function(t,e,n){var r=this;void 0===n&&(n=!1);var i,o=null;if(null==e){if("function"!=typeof t)throw new Error("Please provide a function to tidy()");e=t}else{if("string"!=typeof t&&!(t instanceof String))throw new Error("When calling with two arguments, the first argument to tidy() must be a string");if("function"!=typeof e)throw new Error("When calling with two arguments, the 2nd argument to tidy() must be a function");o=t}return this.scopedRun(function(){return r.startScope(o,n)},function(){return r.endScope(i,n)},function(){return(i=e())instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),i})},t.prototype.scopedRun=function(t,e,n){t();try{var r=n();return e(),r}catch(t){throw e(),t}},t.prototype.nextTensorId=function(){return t.nextTensorId++},t.prototype.nextVariableId=function(){return t.nextVariableId++},t.prototype.runKernel=function(t,e,n){var r,i=this,o=[],a=function(t){return o.push(t),t},s=null!=this.activeScope?this.activeScope.name:"",u=this.numBytes,l=this.numTensors;if(this.scopedRun(function(){return i.customGradientDepth++},function(){return i.customGradientDepth--},function(){r=i.debugMode()?i.profiler.profileKernel(s,function(){return t(i.backend,a)}):t(i.backend,a)}),this.shouldRecord()){var c={id:this.nextTapeNodeId++,name:s,inputs:e,outputs:Array.isArray(r)?r:[r]};null!=n&&(c.gradient=function(t){return n(t,o)}),this.activeTape.push(c)}return this.profiling&&this.activeProfile.kernels.push({name:s,bytesAdded:this.numBytes-u,totalBytesSnapshot:this.numBytes,tensorsAdded:this.numTensors-l,totalTensorsSnapshot:this.numTensors,inputShapes:Object.keys(e).map(function(t){return e[t].shape}),outputShape:Array.isArray(r)?r.map(function(t){return t.shape}):r.shape}),r},t.prototype.registerTensor=function(t,e){var n=this.tensorInfo.has(t.dataId)?this.tensorInfo.get(t.dataId).refCount:0;if(this.numTensors++,"string"===t.dtype&&this.numStringTensors++,0===n){this.numDataBuffers++;var r=0;"complex64"!==t.dtype&&"string"!==t.dtype&&(r=v(t.shape)*M(t.dtype)),this.tensorInfo.set(t.dataId,{backend:null!=e?e:this.backend,dtype:t.dtype,shape:t.shape,bytes:r,refCount:0}),this.numBytes+=r,null!=e?e.register(t.dataId,t.shape,t.dtype):this.backend.register(t.dataId,t.shape,t.dtype)}this.tensorInfo.get(t.dataId).refCount++,t instanceof lt||this.track(t)},t.prototype.registerVariable=function(t){if(null!=this.registeredVariables[t.name])throw new Error("Variable with name "+t.name+" was already registered");this.registeredVariables[t.name]=t},t.prototype.disposeTensor=function(t){if(this.tensorInfo.has(t.dataId)){this.keepTensors.has(t.id)&&this.keepTensors.delete(t.id),this.numTensors--,"string"===t.dtype&&this.numStringTensors--;var e=this.tensorInfo.get(t.dataId);e.refCount<=1?("complex64"!==t.dtype&&(this.numBytes-=e.bytes),this.numDataBuffers--,e.backend.disposeData(t.dataId),this.tensorInfo.delete(t.dataId)):this.tensorInfo.get(t.dataId).refCount--}},t.prototype.disposeVariables=function(){for(var t in this.registeredVariables){var e=this.registeredVariables[t];this.disposeTensor(e),delete this.registeredVariables[t]}},t.prototype.memory=function(){var t=this.backend.memory();return t.numTensors=this.numTensors,t.numDataBuffers=this.numDataBuffers,t.numBytes=this.numBytes,this.numStringTensors>0&&(t.unreliable=!0,null==t.reasons&&(t.reasons=[]),t.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),t},t.prototype.profile=function(t){return i(this,void 0,void 0,function(){var e,n;return o(this,function(r){return this.profiling=!0,e=this.numBytes,n=this.numTensors,this.activeProfile.kernels=[],this.activeProfile.result=t(),this.profiling=!1,this.activeProfile.peakBytes=Math.max.apply(Math,this.activeProfile.kernels.map(function(t){return t.totalBytesSnapshot})),this.activeProfile.newBytes=this.numBytes-e,this.activeProfile.newTensors=this.numTensors-n,[2,this.activeProfile]})})},t.prototype.shouldRecord=function(){return null!=this.activeTape&&0===this.customGradientDepth},t.prototype.addTapeNode=function(t,e,n){var r={};t.forEach(function(t,e){r[e]=t});var i={id:this.nextTapeNodeId++,name:this.activeScope.name,inputs:r,outputs:[e],gradient:function(t){var e={};return n(t).forEach(function(t,n){e[n]=function(){return t}}),e}};this.activeTape.push(i)},t.prototype.keep=function(t){if(1===this.scopeStack.length&&this.safeMode)throw new Error("Safe mode is ON. Enclose all tensor operations inside tf.tidy(): tf.tidy(() => {...}) to avoid memory leaks.");return this.keepTensors.add(t.id),t},t.prototype.startScope=function(t,e){void 0===e&&(e=!1),e&&0===this.gradientScopeCount&&(this.activeTape=[]),e&&this.gradientScopeCount++;var n={track:[],name:"unnamed scope"};t&&(n.name=t),this.scopeStack.push(n),this.activeScope=n},t.prototype.endScope=function(t,e){var n=this;void 0===e&&(e=!1),e&&(this.gradientScopeCount--,0===this.gradientScopeCount&&(this.activeTape=null));var r=new Set(this.keepTensors),i=wt(t);i.forEach(function(t){return r.add(t.id)});for(var o=0;o<this.activeScope.track.length;o++){var a=this.activeScope.track[o];r.has(a.id)||(null!=this.activeTape?i.push(a):a.dispose())}var s=this.scopeStack.pop();this.activeScope=0===this.scopeStack.length?null:this.scopeStack[this.scopeStack.length-1],i.forEach(function(t){!n.keepTensors.has(t.id)&&function(t,e){for(var n=0;n<e.length;n++)if(e[n].id===t.id)return!0;return!1}(t,s.track)&&n.track(t)})},t.prototype.gradients=function(t,e,n,r){var i=this;if(void 0===r&&(r=!1),d(e.length>0,function(){return"gradients() received an empty list of xs."}),null!=n&&"float32"!==n.dtype)throw new Error("dy must have 'float32' dtype, but has '"+n.dtype+"'");return this.tidy("gradients",function(){var o=t();d(o instanceof ut,function(){return"The result y returned by f() must be a tensor."});var a=function(t,e,n){for(var r={},i={},o=0;o<e.length;o++)r[e[o].id]=!0;for(o=0;o<t.length;o++){var a=(d=t[o]).inputs;for(var s in a){for(var u=a[s],l=!1,c=0;c<e.length;c++)if(r[u.id]){d.outputs.forEach(function(t){return r[t.id]=!0}),l=!0,i[d.id]=!0;break}if(l)break}}var p={};p[n.id]=!0;var h={};for(o=t.length-1;o>=0;o--)for(a=(d=t[o]).inputs,c=0;c<d.outputs.length;c++)if(p[d.outputs[c].id]){for(var s in a)p[a[s].id]=!0,h[d.id]=!0;break}var f=[];for(o=0;o<t.length;o++){var d;if(i[(d=t[o]).id]&&h[d.id]){var m={};for(var s in d.inputs){var g=d.inputs[s];r[g.id]&&(m[s]=g)}var y=Object.assign({},d);y.inputs=m,y.outputs=d.outputs,f.push(y)}}return f}(i.activeTape,e,o);if(!r&&0===a.length&&e.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");var s={};return s[o.id]=null==n?function(t){var e=G(v(t),"float32");return ut.make(t,{values:e})}(o.shape):n,function(t,e){for(var n=function(n){var r=e[n],i=[];if(r.outputs.forEach(function(e){var n=t[e.id];if(null!=n)i.push(n);else{var r=ut.make(e.shape,{values:H(e.size,e.dtype)},e.dtype);i.push(r)}}),null==r.gradient)throw new Error("Cannot compute gradient: gradient function not found for "+r.name+".");var o=r.gradient(1===r.outputs.length?i[0]:i);for(var a in r.inputs){if(!(a in o))throw new Error("Cannot backprop through input "+a+". Available gradients found: "+Object.keys(o)+".");var s=o[a]();if("float32"!==s.dtype)throw new Error("Error in gradient for op "+r.name+". The gradient of input "+a+" must have 'float32' dtype, but has '"+s.dtype+"'");var u=r.inputs[a];if(!b(s.shape,u.shape))throw new Error("Error in gradient for op "+r.name+". The gradient of input '"+a+"' has shape '"+s.shape+"', which does not match the shape of the input '"+u.shape+"'");if(null==t[u.id])t[u.id]=s;else{var l=t[u.id];t[u.id]=l.add(s),l.dispose()}}},r=e.length-1;r>=0;r--)n(r)}(s,a),{value:o,grads:e.map(function(t){return s[t.id]})}},!0)},t.prototype.customGrad=function(t){var e=this;return d(U(t),function(){return"The f passed in customGrad(f) must be a function."}),function(){for(var n,r,i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];return d(i.every(function(t){return t instanceof ut}),function(){return"The args passed in customGrad(f)(x1, x2,...) must all be tensors"}),e.scopedRun(function(){return e.customGradientDepth++},function(){return e.customGradientDepth--},function(){r=e.tidy(t.name,function(){var e=t.apply(void 0,i),r=e.value,o=e.gradFunc;return d(r instanceof ut,function(){return"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"}),d(U(o),function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."}),n=o,r},!0)}),e.shouldRecord()&&e.addTapeNode(i,r,function(t){var e=n(t),r=Array.isArray(e)?e:[e];return d(r.length===i.length,function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."}),d(r.every(function(t){return t instanceof ut}),function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors."}),r}),r}},t.prototype.write=function(t,e){var n=this.tensorInfo.get(t);if("string"===n.dtype){var r=L(e);this.numBytes+=r-n.bytes,n.bytes=r}this.backend!==n.backend&&(n.backend.disposeData(t),n.backend=this.backend,this.backend.register(t,n.shape,n.dtype)),this.backend.write(t,e)},t.prototype.readSync=function(t){return this.tensorInfo.get(t).backend.readSync(t)},t.prototype.read=function(t){return this.tensorInfo.get(t).backend.read(t)},t.prototype.fromPixels=function(t,e){return this.backend.fromPixels(t,e)},t.prototype.time=function(t){return i(this,void 0,void 0,function(){var e,n;return o(this,function(r){switch(r.label){case 0:return e=K(),[4,this.backend.time(t)];case 1:return(n=r.sent()).wallMs=K()-e,[2,n]}})})},t.prototype.track=function(t){if(1===this.scopeStack.length&&this.safeMode)throw new Error("Safe mode is ON. Enclose all tensor operations inside tf.tidy(): tf.tidy(() => {op();...}); to avoid memory leaks.");return null!=this.activeScope&&this.activeScope.track.push(t),t},t.nextTensorId=0,t.nextVariableId=0,t}();!function(t){t[t.NUMBER=0]="NUMBER",t[t.BOOLEAN=1]="BOOLEAN",t[t.STRING=2]="STRING"}(xt||(xt={}));var St,Ct,Et=[{name:"DEBUG",type:xt.BOOLEAN},{name:"IS_BROWSER",type:xt.BOOLEAN},{name:"WEBGL_LAZILY_UNPACK",type:xt.BOOLEAN},{name:"WEBGL_CPU_FORWARD",type:xt.BOOLEAN},{name:"WEBGL_PACK",type:xt.BOOLEAN},{name:"WEBGL_PACK_BATCHNORMALIZATION",type:xt.BOOLEAN},{name:"WEBGL_PACK_CLIP",type:xt.BOOLEAN},{name:"WEBGL_PACK_DEPTHWISECONV",type:xt.BOOLEAN},{name:"WEBGL_PACK_BINARY_OPERATIONS",type:xt.BOOLEAN},{name:"WEBGL_PACK_ARRAY_OPERATIONS",type:xt.BOOLEAN},{name:"WEBGL_PACK_IMAGE_OPERATIONS",type:xt.BOOLEAN},{name:"WEBGL_PACK_REDUCE",type:xt.BOOLEAN},{name:"WEBGL_CONV_IM2COL",type:xt.BOOLEAN},{name:"WEBGL_MAX_TEXTURE_SIZE",type:xt.NUMBER},{name:"WEBGL_NUM_MB_BEFORE_PAGING",type:xt.NUMBER},{name:"WEBGL_MAX_TEXTURES_IN_SHADER",type:xt.NUMBER},{name:"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",type:xt.NUMBER},{name:"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",type:xt.BOOLEAN},{name:"WEBGL_VERSION",type:xt.NUMBER},{name:"WEBGL_RENDER_FLOAT32_ENABLED",type:xt.BOOLEAN},{name:"WEBGL_DOWNLOAD_FLOAT_ENABLED",type:xt.BOOLEAN},{name:"WEBGL_FENCE_API_ENABLED",type:xt.BOOLEAN},{name:"WEBGL_SIZE_UPLOAD_UNIFORM",type:xt.NUMBER},{name:"BACKEND",type:xt.STRING},{name:"EPSILON",type:xt.NUMBER},{name:"PROD",type:xt.BOOLEAN},{name:"TENSORLIKE_CHECK_SHAPE_CONSISTENCY",type:xt.BOOLEAN},{name:"DEPRECATION_WARNINGS_ENABLED",type:xt.BOOLEAN}];function It(t){try{if(null!=u(t))return!0}catch(t){return!1}return!1}var kt="tfjsflags";function At(){var t={};if("undefined"==typeof window||void 0===window.location||void 0===window.location.search)return t;var e=function(t){var e={};return t.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,function(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return function(t,e,n){t[decodeURIComponent(e)]=decodeURIComponent(n||"")}(e,n[0],n[1]),n.join("=")}),e}(window.location.search);if(kt in e){var n={};e[kt].split(",").forEach(function(t){var e=t.split(":"),r=e[0],i=e[1];n[r]=i}),Et.forEach(function(e){e.name in n&&(console.log("Setting feature override from URL "+e.name+": "+n[e.name]),e.type===xt.NUMBER?t[e.name]=+n[e.name]:e.type===xt.BOOLEAN?t[e.name]="true"===n[e.name]:e.type===xt.STRING?t[e.name]=n[e.name]:console.warn("Unknown URL param: "+e.name+"."))})}return t}function Tt(t,e){return null!=t.getExtension(e)}function Rt(t,e){var n=t.createFramebuffer(),r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r);var i=2===e?t.RGBA32F:t.RGBA;t.texImage2D(t.TEXTURE_2D,0,i,1,1,0,t.RGBA,t.FLOAT,null),t.bindFramebuffer(t.FRAMEBUFFER,n),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0);var o=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(r),t.deleteFramebuffer(n),o}var Dt=600;var Ot,_t=function(){function t(t){this.features={},this.registry={},null!=t&&(this.features=t),this.get("DEBUG")&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")}return t.setBackend=function(t,e){if(void 0===e&&(e=!1),!(t in Bt.registry))throw new Error("Backend name '"+t+"' not found in registry");Bt.engine.backend=Bt.findBackend(t),Bt.backendName=t},t.getBackend=function(){return Bt.initEngine(),Bt.backendName},t.disposeVariables=function(){Bt.engine.disposeVariables()},t.memory=function(){return Bt.engine.memory()},t.profile=function(t){return Bt.engine.profile(t)},t.tidy=function(t,e){return Bt.engine.tidy(t,e)},t.dispose=function(t){wt(t).forEach(function(t){return t.dispose()})},t.keep=function(t){return Bt.engine.keep(t)},t.time=function(t){return Bt.engine.time(t)},t.prototype.get=function(t){return t in this.features?this.features[t]:(this.features[t]=this.evaluateFeature(t),this.features[t])},t.prototype.getFeatures=function(){return this.features},t.prototype.set=function(t,e){this.features[t]=e},t.prototype.getBestBackendName=function(){var t=this;if(0===Object.keys(this.registry).length)throw new Error("No backend found in registry.");return Object.keys(this.registry).map(function(e){return{name:e,entry:t.registry[e]}}).sort(function(t,e){return e.entry.priority-t.entry.priority})[0].name},t.prototype.evaluateFeature=function(t){if("DEBUG"===t)return!1;if("IS_BROWSER"===t)return"undefined"!=typeof window;if("IS_NODE"===t)return"undefined"!=typeof process&&void 0!==process.versions&&void 0!==process.versions.node;if("IS_CHROME"===t)return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor);if("WEBGL_CPU_FORWARD"===t)return!0;if("WEBGL_PACK"===t)return 0!==this.get("WEBGL_VERSION");if("WEBGL_PACK_BATCHNORMALIZATION"===t)return this.get("WEBGL_PACK");if("WEBGL_PACK_CLIP"===t)return this.get("WEBGL_PACK");if("WEBGL_PACK_DEPTHWISECONV"===t)return this.get("WEBGL_PACK");if("WEBGL_PACK_BINARY_OPERATIONS"===t)return this.get("WEBGL_PACK");if("WEBGL_PACK_ARRAY_OPERATIONS"===t)return this.get("WEBGL_PACK");if("WEBGL_PACK_IMAGE_OPERATIONS"===t)return this.get("WEBGL_PACK");if("WEBGL_PACK_REDUCE"===t)return this.get("WEBGL_PACK");if("WEBGL_LAZILY_UNPACK"===t)return this.get("WEBGL_PACK");if("WEBGL_CONV_IM2COL"===t)return this.get("WEBGL_PACK");if("WEBGL_NUM_MB_BEFORE_PAGING"===t)return this.get("PROD")||!this.get("IS_BROWSER")?Number.POSITIVE_INFINITY:window.screen.height*window.screen.width*window.devicePixelRatio*Dt/1024;if("WEBGL_MAX_TEXTURE_SIZE"===t)return function(t){if(null==St){var e=u(t);St=e.getParameter(e.MAX_TEXTURE_SIZE)}return St}(this.get("WEBGL_VERSION"));if("WEBGL_MAX_TEXTURES_IN_SHADER"===t)return function(t){if(null==Ct){var e=u(t);Ct=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,Ct)}(this.get("WEBGL_VERSION"));if("IS_TEST"===t)return!1;if("BACKEND"===t)return this.getBestBackendName();if("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"===t){var e=this.get("WEBGL_VERSION");return 0===e?0:function(t){if(0===t)return 0;var e=u(t);return Tt(e,"EXT_disjoint_timer_query_webgl2")&&2===t?2:Tt(e,"EXT_disjoint_timer_query")?1:0}(e)}if("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE"===t)return this.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!function(){var t=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))}();if("HAS_WEBGL"===t)return this.get("WEBGL_VERSION")>0;if("WEBGL_VERSION"===t)return It(2)?2:It(1)?1:0;if("WEBGL_RENDER_FLOAT32_ENABLED"===t)return function(t){if(0===t)return!1;var e=u(t);if(1===t){if(!Tt(e,"OES_texture_float"))return!1}else if(!Tt(e,"EXT_color_buffer_float"))return!1;return Rt(e,t)}(this.get("WEBGL_VERSION"));if("WEBGL_DOWNLOAD_FLOAT_ENABLED"===t)return function(t){if(0===t)return!1;var e=u(t);if(1===t){if(!Tt(e,"OES_texture_float"))return!1;if(!Tt(e,"WEBGL_color_buffer_float"))return!1}else if(!Tt(e,"EXT_color_buffer_float"))return!1;return Rt(e,t)}(this.get("WEBGL_VERSION"));if("WEBGL_FENCE_API_ENABLED"===t)return function(t){return 2===t&&null!=u(t).fenceSync}(this.get("WEBGL_VERSION"));if("WEBGL_SIZE_UPLOAD_UNIFORM"===t)return this.get("WEBGL_RENDER_FLOAT32_ENABLED")?4:0;if("TEST_EPSILON"===t)return 32===this.backend.floatPrecision()?.001:.1;if("EPSILON"===t)return 32===this.backend.floatPrecision()?1e-7:1e-4;if("PROD"===t)return!1;if("TENSORLIKE_CHECK_SHAPE_CONSISTENCY"===t)return!this.get("PROD");if("DEPRECATION_WARNINGS_ENABLED"===t)return!0;throw new Error("Unknown feature "+t+".")},t.prototype.setFeatures=function(t){this.features=Object.assign({},t)},t.prototype.reset=function(){this.features=At(),null!=this.globalEngine&&(this.globalEngine=null)},Object.defineProperty(t.prototype,"backend",{get:function(){return this.engine.backend},enumerable:!0,configurable:!0}),t.prototype.findBackend=function(t){return t in this.registry?this.registry[t].backend:null},t.prototype.registerBackend=function(t,e,n){var r=this;if(void 0===n&&(n=1),t in this.registry)return console.warn(t+" backend was already registered. Reusing existing backend"),!1;try{var i=e();return i.setDataMover({moveData:function(t){return r.engine.moveData(t)}}),this.registry[t]={backend:i,priority:n},!0}catch(e){return console.warn("Registration of backend "+t+" failed"),console.warn(e.stack||e.message),!1}},t.prototype.removeBackend=function(t){if(!(t in this.registry))throw new Error(t+" backend not found in registry");this.registry[t].backend.dispose(),delete this.registry[t]},Object.defineProperty(t.prototype,"engine",{get:function(){return this.initEngine(),this.globalEngine},enumerable:!0,configurable:!0}),t.prototype.initEngine=function(){var t=this;if(null==this.globalEngine){this.backendName=this.get("BACKEND");var e=this.findBackend(this.backendName);this.globalEngine=new Nt(e,!1,function(){return t.get("DEBUG")})}},Object.defineProperty(t.prototype,"global",{get:function(){return Mt()},enumerable:!0,configurable:!0}),t}();function Mt(){if(null==Ot){var t=void 0;if("undefined"!=typeof window)t=window;else if("undefined"!=typeof global)t=global;else{if("undefined"==typeof process)throw new Error("Could not find a global object");t=process}Ot=t}return Ot}function Lt(){Bt.set("PROD",!0)}function Ft(){Bt.set("DEBUG",!0)}function zt(){Bt.set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function Pt(t){Bt.get("DEPRECATION_WARNINGS_ENABLED")&&console.warn(t+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}!function(t){st=t}(Pt);var Bt=function(){var t=Mt();return null==t.ENV&&(t.ENV=new _t(At())),function(t){ot=t}(function(){return t.ENV.engine}),t.ENV}(),Ut=Object.freeze({EPSILON_FLOAT16:1e-4,EPSILON_FLOAT32:1e-7,Environment:_t,enableProdMode:Lt,enableDebugMode:Ft,disableDeprecationWarnings:zt,deprecationWarn:Pt,ENV:Bt});function Wt(t,e){if(d(U(t),function(){return"The f passed in variableGrads(f) must be a function"}),d(null==e||Array.isArray(e)&&e.every(function(t){return t instanceof lt}),function(){return"The varList passed in variableGrads(f, varList) must be an array of variables"}),null==e)for(var n in e=[],Bt.engine.registeredVariables)e.push(Bt.engine.registeredVariables[n]);var r=e.length;d((e=e.filter(function(t){return t.trainable})).length>0,function(){return"variableGrads() expects at least one of the input variables to be trainable, but none of the "+r+" variables is trainable."});var i=Bt.engine.gradients(t,e,null,!0),o=i.value,a=i.grads;d(a.some(function(t){return null!=t}),function(){return"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."}),d(0===o.rank,function(){return"The f passed in variableGrads(f) must return a scalar, but it returned a rank-"+o.rank+" tensor"});var s={};return e.forEach(function(t,e){null!=a[e]&&(s[t.name]=a[e])}),{value:o,grads:s}}function Vt(t){return Bt.engine.customGrad(t)}function jt(t){if(t.filter(function(t){return null==t}).length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that\n the f you passed encloses all operations that lead from x to y.")}var qt=_t.tidy,Gt=_t.keep,Ht=_t.dispose,Kt=_t.time,$t=_t.profile;function Xt(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];Bt.get("IS_TEST")||console.warn.apply(console,t)}function Yt(t,e,n,r){void 0===r&&(r=!0);var i=[];if(r)(i=i.concat(e.slice(0))).push(t[0]/n),i=i.concat(t.slice(1));else{i=i.concat(t[0]);for(var o=e.length,a=0;a<o;++a)i=i.concat([t[a+1]/e[a],e[a]]);i=i.concat(t.slice(o+1))}return i}function Jt(t,e,n){void 0===n&&(n=!0);var r=[];if(n){r.push(e);for(var i=e+1;i<t;++i)i<=2*e?(r.push(i),r.push(i-(e+1))):r.push(i)}else{var o=[],a=[];for(i=1;i<t;++i)i>=2*e+1||i%2==1?a.push(i):o.push(i);r.push.apply(r,o),r.push(0),r.push.apply(r,a)}return r}function Zt(t,e,n,r){void 0===r&&(r=!0);var i=[];r?i.push(t[0]/n):i.push(t[0]*n);for(var o=1;o<t.length;++o)o<=e.length?r?i.push(e[o-1]*t[o]):i.push(t[o]/e[o-1]):i.push(t[o]);return i}function Qt(t,e){for(var n=[0],r=0;r<e;++r)n.push(t[r][0]);return n}function te(t,e,n){for(var r=t.slice(0,1),i=0;i<n;++i)r.push(t[i+1]-e[i][0]-e[i][1]);return r}function ee(t,e){for(var n=0;n<t.length;++n)if(t[t.length-n-1]!==e-1-n)return!1;return!0}function ne(t,e){for(var n=[],r=t.length,i=0;i<r;i++)-1===e.indexOf(i)&&n.push(t[i]);return[n,e.map(function(e){return t[e]})]}function re(t,e){return function(t,e,n){for(var r=t.length+e.length,i=[],o=0,a=0,s=0;s<r;s++)-1===n.indexOf(s)?i.push(t[o++]):i.push(e[a++]);return i}(t,e.map(function(t){return 1}),e)}function ie(t,e,n){d(ee(e,n),function(){return t+" supports only inner-most axes for now. Got axes "+e+" and rank-"+n+" input."})}function oe(t,e){if(ee(t,e))return null;for(var n=[],r=0;r<e;++r)-1===t.indexOf(r)&&n.push(r);return t.forEach(function(t){return n.push(t)}),n}function ae(t){return t.map(function(t,e){return[e,t]}).sort(function(t,e){return t[1]-e[1]}).map(function(t){return t[0]})}function se(t,e){for(var n=[],r=e-t;r<e;++r)n.push(r);return n}function ue(t,e){for(var n=t[0].slice(),r=1;r<t.length;r++)n[e]+=t[r][e];return n}function le(t,e){if(t.rank<1)throw new Error("tf.gatherND() expects the input to be rank 1 or higher, but the rank was "+t.rank+".");if(e.rank<1)throw new Error("tf.gatherND() expects the indices to be rank 1 or higher, but the rank was "+e.rank+".");if("int32"!==e.dtype)throw new Error("tf.gatherND() expects the indices to be int32 type, but the dtype was "+e.dtype+".");if(e.shape[e.rank-1]>t.rank)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+e.shape[e.rank-1]+" vs. "+t.rank);if(0===t.size)throw new Error("Requested more than 0 entries, but input is empty. Input shape: "+t.shape+".");for(var n=e.shape,r=n[n.length-1],i=1,o=0;o<n.length-1;++o)i*=n[o];var a=t.shape,s=n.slice();s.pop();var u=1;for(o=r;o<t.rank;++o)u*=a[o],s.push(a[o]);var l=V(t.shape).map(function(t){return t/u}).concat([1]).slice(0,r);return[s,i,u,l]}var ce=30;function pe(t){return t<=ce?t:W(t,Math.floor(Math.sqrt(t)))}function he(t,e,n){if(e.rank<1)throw new Error("tf.scatterND() expects the indices to be rank 1 or higher, but the rank was "+e.rank+".");if(t.rank<1)throw new Error("tf.scatterND() expects the updates to be rank 1 or higher, but the rank was "+t.rank+".");if("int32"!==e.dtype)throw new Error("The dtype of 'indices' should be int32, but got dtype: "+e.dtype);if(n.length<1)throw new Error("Output rank must be greater or equal to 1, but got shape: "+n);if(0===n.length){if(0===e.size)throw new Error("Indices specified for empty output. indices shape: "+e.shape);if(0===t.size)throw new Error("Updates specified for empty output. updates shape: "+t.shape)}!function(t,e,n){var r=e.rank>1?e.shape[e.rank-1]:1,i=e.rank>1?e.rank-1:1,o="Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: "+n.shape+", indices.shape: "+e.shape+", shape: "+t+", sliceDim: "+r+", and batchDim: "+i+".";if(n.rank<i)throw new Error(o+" update.rank < "+i+". ");if(t.length<r+(n.rank-i))throw new Error(o+" Output shape length < "+(r+(n.rank-i)));if(n.rank!==i+t.length-r)throw new Error(o+" update.rank != "+(i+t.length-r));for(var a=0;a<i;++a)if(n.shape[a]!==e.shape[a])throw new Error(o+" updates.shape["+a+"] ("+n.shape[a]+") != indices.shape["+a+"] ("+e.shape[a]+").");for(a=0;a<n.rank-i;++a)if(n.shape[a+i]!==t[a+r])throw new Error(o+" updates.shape["+(a+i)+"] ("+n.shape[a+i]+") != shape["+(a+i)+"] ("+t[a+i]+")")}(n,e,t)}function fe(t,e,n){for(var r=e.rank>1?e.shape[e.rank-1]:1,i=n.length,o=1,a=r;a<i;++a)o*=n[a];var s=r<1?1:r;return{sliceRank:r,numUpdates:e.size/s,sliceSize:o,strides:V(n.slice(0,r)).concat([1]),outputSize:v(n)}}function de(t,e,n,r,i,o,a,s,u){if(void 0===i&&(i=0),void 0===o&&(o=0),void 0===a&&(a=0),void 0===s&&(s=0),void 0===u&&(u=0),0!==a)throw new Error("ellipsis mask is not yet supported");if(0!==s)throw new Error("new axis mask is not yet supported");for(var l=[],c=[],p=[],h=0;h<t.length;h++)l[h]=me(i,e,r,t,h),c[h]=ge(o,n,r,t,h),u&1<<h&&(c[h]=l[h]+1,p.push(h));var f=new Array(t.length).fill(0);return f=f.map(function(t,e){for(var n=0,i=l[e];!(r[e]>0?i>=c[e]:i<=c[e]);i+=r[e])n+=1;return n}),[l,f,p]}function me(t,e,n,r,i){var o=e[i];t&1<<i&&(o=n[i]>0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var a=r[i];return o<0&&(o+=a),c(0,o,a-1)}function ge(t,e,n,r,i){var o=e[i];t&1<<i&&(o=n[i]>0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var a=r[i];return o<0&&(o+=a),n[i]>0?c(0,o,a):c(-1,o,a-1)}function ye(t,e,n){for(var r=n.length,i=0;i<n.length;i++)if(n[i]>1){r=i;break}for(i=r+1;i<n.length;i++)if(e[i]>0||n[i]!==t[i])return!1;return!0}function ve(t,e){for(var n=t.length>0?t[t.length-1]:1,r=0;r<t.length-1;r++)n+=t[r]*e[r];return n}function be(t){var e=t;if(_(t))return[t.length];if(!Array.isArray(t))return[];for(var n=[];Array.isArray(e)||_(e);)n.push(e.length),e=e[0];return Array.isArray(t)&&Bt.get("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&function t(e,n,r){if(r=r||[],Array.isArray(e)||_(e)){d(n.length>0,function(){return"Element arr["+r.join("][")+"] should be a primitive, but is an array of "+e.length+" elements"}),d(e.length===n[0],function(){return"Element arr["+r.join("][")+"] should have "+n[0]+" elements, but has "+e.length+" elements"});for(var i=n.slice(1),o=0;o<e.length;++o)t(e[o],i,r.concat(o))}else d(0===n.length,function(){return"Element arr["+r.join("][")+"] is a primitive, but should be an array/TypedArray of "+n[0]+" elements"})}(t,n,[]),n}function we(t,e,n,r){if(null!=t&&("numeric"!==t&&t!==e||"numeric"===t&&"string"===e))throw new Error("Argument '"+n+"' passed to '"+r+"' must be "+t+" tensor, but got "+e+" tensor")}function xe(t,e,n,r){if(void 0===r&&(r="numeric"),t instanceof ut)return we(r,t.dtype,e,n),t;var i=B(t);if("string"!==i&&["bool","int32","float32"].indexOf(r)>=0&&(i=r),we(r,i,e,n),!_(t)&&!Array.isArray(t)&&"number"!=typeof t&&"boolean"!=typeof t&&"string"!=typeof t)throw new Error("Argument '"+e+"' passed to '"+n+"' must be a Tensor or TensorLike, but got '"+t.constructor.name+"'");var o=be(t);_(t)||Array.isArray(t)||(t=[t]);var a="string"!==i?j(t,i,Bt.get("DEBUG")):y(t);return ut.make(o,{values:a},i)}function Ne(t,e,n){if(!Array.isArray(t))throw new Error("Argument "+e+" passed to "+n+" must be a `Tensor[]` or `TensorLike[]`");return t.map(function(t,r){return xe(t,e+"["+r+"]",n)})}function Se(t){var e=Object.keys(t);if(1!==e.length)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+e.length+" keys.");var n=e[0],r=t[n];n.endsWith("_")&&(n=n.substring(0,n.length-1));var i=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];Bt.engine.startScope(n);try{var i=r.apply(void 0,t);return i instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),Bt.engine.endScope(i),i}catch(t){throw Bt.engine.endScope(null),t}};return Object.defineProperty(i,"name",{value:n,configurable:!0}),i}var Ce=Se({softmax_:function(t,e){void 0===e&&(e=-1);var n=xe(t,"logits","softmax");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error("Softmax along a non-last dimension is not yet supported. Logits was rank "+n.rank+" and dim was "+e);return Vt(function(t){var n=t.logSumExp([e],!0),r=t.toFloat().sub(n).exp();return{value:r,gradFunc:function(t){var n=t.mul(r);return n.sub(n.sum([e],!0).mul(r))}}})(n)}}),Ee=Se({logSoftmax_:function(t,e){void 0===e&&(e=-1);var n=xe(t,"logits","logSoftmax");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error("Log Softmax along a non-last dimension is not yet supported. Logits was rank "+n.rank+" and axis was "+e);return Vt(function(t){var n=t.max(e,!0),r=t.sub(n),i=r.toFloat().sub(r.exp().sum(e,!0).log());return{value:i,gradFunc:function(t){var n=i.exp();return t.sub(t.sum(e,!0).mul(n))}}})(n)}});var Ie=Se({complex_:function(t,e){var n=xe(t,"real","complex"),r=xe(e,"imag","complex");return m(n.shape,r.shape,"real and imag shapes, "+n.shape+" and "+r.shape+", must match in call to tf.complex()."),Bt.engine.runKernel(function(t){return t.complex(n,r)},{$real:n,$imag:r})}}),ke=Se({real_:function(t){var e=xe(t,"input","real");return Bt.engine.runKernel(function(t){return t.real(e)},{$input:e})}}),Ae=Se({imag_:function(t){var e=xe(t,"input","imag");return Bt.engine.runKernel(function(t){return t.imag(e)},{$input:e})}});function Te(t,e,n){if(null==n&&(n=B(t)),"complex64"===n)throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!_(t)&&!Array.isArray(t)&&"number"!=typeof t&&"boolean"!=typeof t&&"string"!=typeof t)throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");var r=be(t);if(null!=e){$(e);var i=v(e),o=v(r);d(i===o,function(){return"Based on the provided shape, ["+e+"], the tensor should have "+i+" values but has "+o});for(var a=0;a<r.length;++a){var s=r[a],u=a!==r.length-1||s!==v(e.slice(a));d(r[a]===e[a]||!u,function(){return"Error creating a new Tensor. Inferred shape ("+r+") does not match the provided shape ("+e+"). "})}}return _(t)||Array.isArray(t)||(t=[t]),e=e||r,t="string"!==n?j(t,n,Bt.get("DEBUG")):y(t),ut.make(e,{values:t},n)}function Re(t,e){if((_(t)||Array.isArray(t))&&"complex64"!==e)throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");return Te(t,[],e)}function De(t,e){g(t);var n=be(t);if(1!==n.length)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Te(t,n,e)}function Oe(t,e,n){if(g(t),null!=e&&2!==e.length)throw new Error("tensor2d() requires shape to have two numbers");var r=be(t);if(2!==r.length&&1!==r.length)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Te(t,e=e||r,n)}function _e(t,e,n){if(g(t),null!=e&&3!==e.length)throw new Error("tensor3d() requires shape to have three numbers");var r=be(t);if(3!==r.length&&1!==r.length)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Te(t,e=e||r,n)}function Me(t,e,n){if(g(t),null!=e&&4!==e.length)throw new Error("tensor4d() requires shape to have four numbers");var r=be(t);if(4!==r.length&&1!==r.length)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Te(t,e=e||r,n)}function Le(t,e,n){if(g(t),null!=e&&5!==e.length)throw new Error("tensor5d() requires shape to have five numbers");var r=be(t);if(5!==r.length&&1!==r.length)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Te(t,e=e||r,n)}function Fe(t,e,n){if(g(t),null!=e&&6!==e.length)throw new Error("tensor6d() requires shape to have six numbers");var r=be(t);if(6!==r.length&&1!==r.length)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return Te(t,e=e||r,n)}function ze(t,e){if(void 0===e&&(e="float32"),"complex64"===e){var n=ze(t,"float32"),r=ze(t,"float32");return Ie(n,r)}var i=G(v(t),e);return ut.make(t,{values:i},e)}function Pe(t,e){if(void 0===e&&(e="float32"),"complex64"===e){var n=Pe(t,"float32"),r=Pe(t,"float32");return Ie(n,r)}var i=H(v(t),e);return ut.make(t,{values:i},e)}function Be(t,e,n){return Bt.engine.runKernel(function(r){return r.fill(t,e,n)},{})}function Ue(t,e,n){if(0===n)throw new Error("Cannot request zero samples");var r=(e-t)/(n-1),i=H(n,"float32");i[0]=t;for(var o=1;o<i.length;o++)i[o]=i[o-1]+r;return De(i,"float32")}function We(t,e,n,r){if(void 0===n&&(n=1),void 0===r&&(r="float32"),0===n)throw new Error("Cannot have a step of zero");if(t===e||t<e&&n<0||e<t&&n>1)return Pe([0],r);var i=H(Math.abs(Math.ceil((e-t)/n)),r);e<t&&1===n&&(n=-1),i[0]=t;for(var o=1;o<i.length;o++)i[o]=i[o-1]+n;return De(i,r)}var Ve=Se({onesLike_:function(t){var e=xe(t,"x","onesLike");return Bt.engine.runKernel(function(t){return t.onesLike(e)},{$x:e},null)}}),je=Se({zerosLike_:function(t){var e=xe(t,"x","zerosLike");return Bt.engine.runKernel(function(t){return t.zerosLike(e)},{$x:e},null)}}),qe=function(){function t(t){this.dataMover=t,this.data=new WeakMap}return t.prototype.get=function(t){return this.data.has(t)||this.dataMover.moveData(t),this.data.get(t)},t.prototype.set=function(t,e){this.data.set(t,e)},t.prototype.has=function(t){return this.data.has(t)},t.prototype.delete=function(t){return this.data.delete(t)},t}(),Ge=function(){function t(){}return t.prototype.time=function(t){throw new Error("Not yet implemented.")},t.prototype.read=function(t){throw new Error("Not yet implemented.")},t.prototype.readSync=function(t){throw new Error("Not yet implemented.")},t.prototype.disposeData=function(t){throw new Error("Not yet implemented.")},t.prototype.write=function(t,e){throw new Error("Not yet implemented.")},t.prototype.fromPixels=function(t,e){throw new Error("Not yet implemented.")},t.prototype.register=function(t,e,n){throw new Error("Not yet implemented.")},t.prototype.memory=function(){throw new Error("Not yet implemented.")},t.prototype.floatPrecision=function(){throw new Error("Not yet implemented")},t.prototype.batchMatMul=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.fusedBatchMatMul=function(t,e,n,r,i,o){throw new Error("Not yet implemented")},t.prototype.slice=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.stridedSlice=function(t,e,n,r,i,o,a,s,u){throw new Error("Not yet implemented")},t.prototype.unstack=function(t,e){throw new Error("Not yet implemented")},t.prototype.reverse=function(t,e){throw new Error("Not yet implemented")},t.prototype.concat=function(t,e){throw new Error("Not yet implemented")},t.prototype.neg=function(t){throw new Error("Not yet implemented")},t.prototype.add=function(t,e){throw new Error("Not yet implemented")},t.prototype.addN=function(t){throw new Error("Not yet implemented")},t.prototype.subtract=function(t,e){throw new Error("Not yet implemented")},t.prototype.multiply=function(t,e){throw new Error("Not yet implemented")},t.prototype.realDivide=function(t,e){throw new Error("Not yet implemented")},t.prototype.floorDiv=function(t,e){throw new Error("Not yet implemented")},t.prototype.sum=function(t,e){throw new Error("Not yet implemented")},t.prototype.prod=function(t,e){throw new Error("Not yet implemented")},t.prototype.unsortedSegmentSum=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.argMin=function(t,e){throw new Error("Not yet implemented")},t.prototype.argMax=function(t,e){throw new Error("Not yet implemented")},t.prototype.equal=function(t,e){throw new Error("Not yet implemented")},t.prototype.notEqual=function(t,e){throw new Error("Not yet implemented")},t.prototype.less=function(t,e){throw new Error("Not yet implemented")},t.prototype.lessEqual=function(t,e){throw new Error("Not yet implemented")},t.prototype.greater=function(t,e){throw new Error("Not yet implemented")},t.prototype.greaterEqual=function(t,e){throw new Error("Not yet implemented")},t.prototype.logicalNot=function(t){throw new Error("Not yet implemented")},t.prototype.logicalAnd=function(t,e){throw new Error("Not yet implemented")},t.prototype.logicalOr=function(t,e){throw new Error("Not yet implemented")},t.prototype.where=function(t){throw new Error("Not yet implemented")},t.prototype.select=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.topk=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.min=function(t,e){throw new Error("Not yet implemented")},t.prototype.minimum=function(t,e){throw new Error("Not yet implemented")},t.prototype.mod=function(t,e){throw new Error("Not yet implemented")},t.prototype.max=function(t,e){throw new Error("Not yet implemented")},t.prototype.maximum=function(t,e){throw new Error("Not yet implemented")},t.prototype.all=function(t,e){throw new Error("Not yet implemented")},t.prototype.any=function(t,e){throw new Error("Not yet implemented")},t.prototype.squaredDifference=function(t,e){throw new Error("Not yet implemented")},t.prototype.ceil=function(t){throw new Error("Not yet implemented")},t.prototype.floor=function(t){throw new Error("Not yet implemented")},t.prototype.round=function(t){throw new Error("Not yet implemented")},t.prototype.sign=function(t){throw new Error("Not yet implemented")},t.prototype.pow=function(t,e){throw new Error("Not yet implemented")},t.prototype.exp=function(t){throw new Error("Not yet implemented")},t.prototype.expm1=function(t){throw new Error("Not yet implemented")},t.prototype.log=function(t){throw new Error("Not yet implemented")},t.prototype.log1p=function(t){throw new Error("Not yet implemented")},t.prototype.sqrt=function(t){throw new Error("Not yet implemented")},t.prototype.rsqrt=function(t){throw new Error("Not yet implemented")},t.prototype.square=function(t){throw new Error("Not yet implemented")},t.prototype.reciprocal=function(t){throw new Error("Not yet implemented")},t.prototype.relu=function(t){throw new Error("Not yet implemented")},t.prototype.prelu=function(t,e){throw new Error("Not yet implemented")},t.prototype.elu=function(t){throw new Error("Not yet implemented")},t.prototype.eluDer=function(t,e){throw new Error("Not yet implemented")},t.prototype.selu=function(t){throw new Error("Not yet implemented")},t.prototype.int=function(t){throw new Error("Not yet implemented")},t.prototype.clip=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.abs=function(t){throw new Error("Not yet implemented")},t.prototype.complexAbs=function(t){throw new Error("Not yet implemented")},t.prototype.sigmoid=function(t){throw new Error("Not yet implemented")},t.prototype.softplus=function(t){throw new Error("Not yet implemented")},t.prototype.sin=function(t){throw new Error("Not yet implemented")},t.prototype.cos=function(t){throw new Error("Not yet implemented")},t.prototype.tan=function(t){throw new Error("Not yet implemented")},t.prototype.asin=function(t){throw new Error("Not yet implemented")},t.prototype.acos=function(t){throw new Error("Not yet implemented")},t.prototype.atan=function(t){throw new Error("Not yet implemented")},t.prototype.atan2=function(t,e){throw new Error("Not yet implemented")},t.prototype.sinh=function(t){throw new Error("Not yet implemented")},t.prototype.cosh=function(t){throw new Error("Not yet implemented")},t.prototype.tanh=function(t){throw new Error("Not yet implemented")},t.prototype.asinh=function(t){throw new Error("Not yet implemented")},t.prototype.acosh=function(t){throw new Error("Not yet implemented")},t.prototype.atanh=function(t){throw new Error("Not yet implemented")},t.prototype.erf=function(t){throw new Error("Not yet implemented")},t.prototype.step=function(t,e){throw new Error("Not yet implemented")},t.prototype.conv2d=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.conv2dDerInput=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.conv2dDerFilter=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.depthwiseConv2D=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.depthwiseConv2DDerInput=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.depthwiseConv2DDerFilter=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.conv3d=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.conv3dDerInput=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.conv3dDerFilter=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.maxPool=function(t,e){throw new Error("Not yet implemented")},t.prototype.maxPoolBackprop=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.avgPool=function(t,e){throw new Error("Not yet implemented")},t.prototype.avgPoolBackprop=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.reshape=function(t,e){throw new Error("Not yet implemented")},t.prototype.cast=function(t,e){throw new Error("Not yet implemented")},t.prototype.tile=function(t,e){throw new Error("Not yet implemented")},t.prototype.pad=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.transpose=function(t,e){throw new Error("Not yet implemented")},t.prototype.gather=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.gatherND=function(t,e){throw new Error("Not yet implemented")},t.prototype.scatterND=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.batchToSpaceND=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.spaceToBatchND=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.resizeBilinear=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.resizeBilinearBackprop=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.resizeNearestNeighbor=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.resizeNearestNeighborBackprop=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.batchNormalization=function(t,e,n,r,i,o){throw new Error("Not yet implemented")},t.prototype.localResponseNormalization4D=function(t,e,n,r,i){throw new Error("Not yet implemented")},t.prototype.LRNGrad=function(t,e,n,r,i,o,a){throw new Error("Not yet implemented")},t.prototype.multinomial=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.oneHot=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.cumsum=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.nonMaxSuppression=function(t,e,n,r,i){throw new Error("Not yet implemented")},t.prototype.fft=function(t){throw new Error("Not yet implemented")},t.prototype.ifft=function(t){throw new Error("Not yet implemented")},t.prototype.complex=function(t,e){throw new Error("Not yet implemented")},t.prototype.real=function(t){throw new Error("Not yet implemented")},t.prototype.imag=function(t){throw new Error("Not yet implemented")},t.prototype.cropAndResize=function(t,e,n,r,i,o){throw new Error("Not yet implemented")},t.prototype.depthToSpace=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.split=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.sparseToDense=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.fill=function(t,e,n){throw new Error("Not yet implemented.")},t.prototype.onesLike=function(t){throw new Error("Not yet implemented")},t.prototype.zerosLike=function(t){throw new Error("Not yet implemented")},t.prototype.setDataMover=function(t){throw new Error("Not yet implemented")},t.prototype.dispose=function(){throw new Error("Not yet implemented")},t}();function He(t,e,n){if("complex64"===e){if("complex64"===t.dtype)return t.clone();var r=Pe(t.shape),i=t.toFloat(),o=n.complex(i,r);return r.dispose(),i.dispose(),o}if(!O(t.dtype,e))return ut.make(t.shape,{dataId:t.dataId},e);if("complex64"===t.dtype){var a=n.real(t);return o=a.cast(e),a.dispose(),o}if("int32"===e)return n.int(t);if("bool"===e){var s=Re(0,t.dtype);return o=n.notEqual(t,s),s.dispose(),o}throw new Error("Error in Cast: unknown dtype argument ("+e+")")}function Ke(t,e){return ut.make(e,{dataId:t.dataId},t.dtype)}function $e(t,e){if(t.length!==e.length)throw new Error("Cannot merge real and imag arrays of different lengths. real:"+t.length+", imag: "+e.length+".");for(var n=new Float32Array(2*t.length),r=0;r<n.length;r+=2)n[r]=t[r/2],n[r+1]=e[r/2];return n}function Xe(t,e){return{real:t[2*e],imag:t[2*e+1]}}function Ye(t,e,n,r){t[2*r]=e,t[2*r+1]=n}function Je(t,e,n){var r=(n?2:-2)*Math.PI*(t/e);return{real:Math.cos(r),imag:Math.sin(r)}}function Ze(t,e,n,r,i){for(var o=Array.from(e).map(function(t,e){return{score:t,boxIndex:e}}).filter(function(t){return t.score>i}).sort(function(t,e){return e.score-t.score}),a=[],s=0;s<o.length;s++){var u=o[s],l=u.score,c=u.boxIndex;if(l<i)break;for(var p=!1,h=a.length-1;h>=0;--h)if(Qe(t,c,a[h])>=r){p=!0;break}if(!p&&(a.push(c),a.length>=n))break}return De(a,"int32")}function Qe(t,e,n){var r=t.subarray(4*e,4*e+4),i=t.subarray(4*n,4*n+4),o=Math.min(r[0],r[2]),a=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),l=Math.min(i[0],i[2]),c=Math.min(i[1],i[3]),p=Math.max(i[0],i[2]),h=Math.max(i[1],i[3]),f=(s-o)*(u-a),d=(p-l)*(h-c);if(f<=0||d<=0)return 0;var m=Math.max(o,l),g=Math.max(a,c),y=Math.min(s,p),v=Math.min(u,h),b=Math.max(y-m,0)*Math.max(v-g,0);return b/(f+d-b)}function tn(t,e,n){var r=new Array(t.rank).fill(0),i=t.shape.slice();return e.map(function(e){i[n]=e;var o=t.slice(r,i);return r[n]+=e,o})}function en(t,e,n,r,i){for(var o=e[e.length-1],a=[t.length/o,o],s=a[0],u=a[1],l=A(n,s*r),c=A("int32",s*r),p=0;p<s;p++){for(var h=p*u,f=t.subarray(h,h+u),d=[],m=0;m<f.length;m++)d.push({value:f[m],index:m});d.sort(function(t,e){return e.value-t.value});var g=p*r,y=l.subarray(g,g+r),v=c.subarray(g,g+r);for(m=0;m<r;m++)y[m]=d[m].value,v[m]=d[m].index}var b=e.slice();return b[b.length-1]=r,[Te(l,b,n),Te(c,b,"int32")]}var nn=function(t,e,n){this.variableNames=["A"];var r=t.windowSize,i=t.batchSize,o=t.inSize,a=Math.ceil(o/r);n||this.variableNames.push("bestIndicesA"),this.outputShape=[i,a];var s="max"===e?">":"<",u=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+r+";\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < "+r+"; i++) {\n int inIdx = "+u+";\n float candidate = getA(batch, inIdx);\n if (candidate "+s+" bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n "};function rn(t,e){return["x","y","z","w","u","v"].slice(0,e).map(function(e){return t+"."+e})}function on(t,e){return 1===e?[t]:rn(t,e)}function an(t,e){for(var n=t.length,r=[],i=0;i<n;i++){var o=n-1-i,a=t[o]||1;(e[e.length-1-i]||1)>1&&1===a&&r.unshift(o)}return r}function sn(t,e){for(var n=[],r=0;r<e.length;r++){var i=t[t.length-r-1],o=e.length-r-1,a=e[o];(null==i||1===i&&a>1)&&n.unshift(o)}return n}function un(t,e){for(var n=[],r=Math.max(t.length,e.length),i=0;i<r;i++){var o=t[t.length-i-1];null==o&&(o=1);var a=e[e.length-i-1];if(null==a&&(a=1),1===o)n.unshift(a);else if(1===a)n.unshift(o);else{if(o!==a)throw Error("Operands could not be broadcast together with shapes "+t+" and "+e+".");n.unshift(o)}}return n}function ln(){var t,e,n,r,i,o,a,s;return 2===Bt.get("WEBGL_VERSION")?(t="#version 300 es",e="in",n="out",r="in",i="texture",o="outputColor",a="out vec4 outputColor;",s="\n #define round(value) newRound(value)\n int newRound(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 newRound(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "):(t="",e="attribute",n="varying",r="varying",i="texture2D",o="gl_FragColor",a="",s="\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 round(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "),{version:t,attribute:e,varyingVs:n,varyingFs:r,texture2D:i,output:o,defineOutput:a,defineRound:s}}function cn(t,e,n){void 0===n&&(n="index");var r=V(e);return r.map(function(e,i){return"int "+t[i]+" = "+n+" / "+e+"; "+(i===r.length-1?"int "+t[i+1]+" = "+n+" - "+t[i]+" * "+e:"index -= "+t[i]+" * "+e)+";"}).join("")}function pn(t){return 1===t.length?""+t[0]:"vec"+t.length+"("+t.join(",")+")"}function hn(t,e,n,r){var i=[];t.forEach(function(t){var e=v(t.shapeInfo.logicalShape);t.shapeInfo.isUniform?i.push("uniform float "+t.name+(e>1?"["+e+"]":"")+";"):(i.push("uniform sampler2D "+t.name+";"),i.push("uniform int offset"+t.name+";"))});var o,a,s=i.join("\n"),u=t.map(function(t){return function(t,e,n){void 0===n&&(n=!1);var r="";r+=n?dn(t):fn(t);var i=t.shapeInfo.logicalShape,o=e.logicalShape;return i.length<=o.length&&(r+=n?function(t,e){var n,r=t.name,i=r.charAt(0).toUpperCase()+r.slice(1),o="get"+i+"AtOutCoords",a=t.shapeInfo.logicalShape.length,s=e.logicalShape.length,u=an(t.shapeInfo.logicalShape,e.logicalShape),l=xn(s),c=s-a,p=["x","y","z","w","u","v"];n=0===a?"":s<2&&u.length>=1?"coords = 0;":u.map(function(t){return"coords."+p[t+c]+" = 0;"}).join("\n");var h="";h=s<2&&a>0?"coords":t.shapeInfo.logicalShape.map(function(t,e){return"coords."+p[e+c]}).join(", ");var f="return outputValue;";if(1===a&&s>1)f="\n return vec4(outputValue.xy, outputValue.xy);\n ";else if(0===a&&s>0)f=1===s?"\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n ":"\n return vec4(outputValue.x);\n ";else if(u.length){var d=a-2,m=a-1;u.indexOf(d)>-1&&u.indexOf(m)>-1?f="return vec4(outputValue.x);":u.indexOf(d)>-1?f="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":u.indexOf(m)>-1&&(f="return vec4(outputValue.xx, outputValue.zz);")}return"\n vec4 "+o+"() {\n "+l+" coords = getOutputCoords();\n "+n+"\n vec4 outputValue = get"+i+"("+h+");\n "+f+"\n }\n "}(t,e):function(t,e){var n=t.name,r=n.charAt(0).toUpperCase()+n.slice(1),i="get"+r+"AtOutCoords",o=e.texShape,a=t.shapeInfo.texShape,s=t.shapeInfo.logicalShape.length,u=e.logicalShape.length;if(!t.shapeInfo.isUniform&&s===u&&null==t.shapeInfo.flatOffset&&b(a,o))return"\n float "+i+"() {\n return sampleTexture("+n+", resultUV);\n }\n ";var l=xn(u),c=an(t.shapeInfo.logicalShape,e.logicalShape),p=u-s,h=["x","y","z","w","u","v"];return"\n float "+i+"() {\n "+l+" coords = getOutputCoords();\n "+(0===s?"":u<2&&c.length>=1?"coords = 0;":c.map(function(t){return"coords."+h[t+p]+" = 0;"}).join("\n"))+"\n return get"+r+"("+(u<2&&s>0?"coords":t.shapeInfo.logicalShape.map(function(t,e){return"coords."+h[e+p]}).join(", "))+");\n }\n "}(t,e)),r}(t,e,r)}).join("\n"),l=e.texShape,c=ln(),p=function(t){return"\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return "+t.texture2D+"(textureSampler, uv).r;\n }\n "}(c),h=function(t){var e="";return e=Bt.get("PROD")?"\n bool isNaN(float val) {\n return false;\n }\n\n bool hasNaN(vec4 values) {\n return false;\n }\n ":"\n bool isNaN(float val) {\n return (val < 1.0 || 0.0 < val || val == 0.0) ? false : true;\n }\n\n bvec4 isNaN(vec4 val) {\n return bvec4(\n isNaN(val.x),\n isNaN(val.y),\n isNaN(val.z),\n isNaN(val.w)\n );\n }\n\n bool hasNaN(vec4 values) {\n return any(bvec4(\n isNaN(values.x),\n isNaN(values.y),\n isNaN(values.z),\n isNaN(values.w)\n ));\n }\n ",t.version+"\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n "+t.varyingFs+" vec2 resultUV;\n "+t.defineOutput+"\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n "+e+"\n\n float getNaN(vec4 values) {\n return dot(vec4(1), values);\n }\n\n "+t.defineRound+"\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n "+mn+"\n "+gn+"\n "+yn+"\n "}(c);return e.isPacked?(o=function(t,e){switch(t.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];return 1===n[0]?"\n int getOutputCoords() {\n return 2 * int(resultUV.x * "+n[1]+".0);\n }\n ":1===n[1]?"\n int getOutputCoords() {\n return 2 * int(resultUV.y * "+n[0]+".0);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n return resTexRC.x * "+n[1]+" + resTexRC.y;\n }\n "}(0,e);case 2:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(b(t,e))return"\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2("+n[0]+", "+n[1]+"));\n }\n ";var r=Math.ceil(t[1]/2);return"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec2(r, c);\n }\n "}(t,e);case 3:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)],r=Math.ceil(t[2]/2),i=r*Math.ceil(t[1]/2);return"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n\n int b = index / "+i+";\n index -= b * "+i+";\n\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec3(b, r, c);\n }\n "}(t,e);default:return function(t,e){for(var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)],r=Math.ceil(t[t.length-1]/2),i=r*Math.ceil(t[t.length-2]/2),o=i,a="",s="b, r, c",u=2;u<t.length-1;u++)a="\n int b"+u+" = index / "+(o*=t[t.length-u-1])+";\n index -= b"+u+" * "+o+";\n "+a,s="b"+u+", "+s;return"\n ivec"+t.length+" getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n\n "+a+"\n\n int b = index / "+i+";\n index -= b * "+i+";\n\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec"+t.length+"("+s+");\n }\n "}(t,e)}}(e.logicalShape,l),a=function(t){return"\n void setOutput(vec4 val) {\n "+t.output+" = val;\n }\n "}(c)):(o=function(t,e){switch(t.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(t,e){return 1===e[0]?"\n int getOutputCoords() {\n return int(resultUV.x * "+e[1]+".0);\n }\n ":1===e[1]?"\n int getOutputCoords() {\n return int(resultUV.y * "+e[0]+".0);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n return resTexRC.x * "+e[1]+" + resTexRC.y;\n }\n "}(0,e);case 2:return function(t,e){return b(t,e)?"\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2("+e[0]+", "+e[1]+"));\n }\n ":1===t[1]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n return ivec2(index, 0);\n }\n ":1===t[0]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n return ivec2(0, index);\n }\n ":"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n int r = index / "+t[1]+";\n int c = index - r * "+t[1]+";\n return ivec2(r, c);\n }\n "}(t,e);case 3:return function(t,e){var n=cn(["r","c","d"],t);return"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n "+n+"\n return ivec3(r, c, d);\n }\n "}(t,e);case 4:return function(t,e){var n=cn(["r","c","d","d2"],t);return"\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n "+n+"\n return ivec4(r, c, d, d2);\n }\n "}(t,e);case 5:return function(t,e){var n=cn(["r","c","d","d2","d3"],t);return"\n ivec5 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2("+e[0]+",\n "+e[1]+"));\n\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n\n "+n+"\n\n ivec5 outShape = ivec5(r, c, d, d2, d3);\n return outShape;\n }\n "}(t,e);case 6:return function(t,e){var n=cn(["r","c","d","d2","d3","d4"],t);return"\n ivec6 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n\n "+n+"\n\n ivec6 result = ivec6(r, c, d, d2, d3, d4);\n return result;\n }\n "}(t,e);default:throw new Error(t.length+"-D output sampling is not yet supported")}}(e.logicalShape,l),a=function(t){return"\n void setOutput(float val) {\n "+t.output+" = vec4(val, 0, 0, 0);\n }\n "}(c)),r&&(h+=vn),[h,p,a,s,o,u,n].join("\n")}function fn(t){var e=t.shapeInfo.logicalShape;switch(e.length){case 0:return function(t){var e=t.name,n="get"+e.charAt(0).toUpperCase()+e.slice(1);if(t.shapeInfo.isUniform)return"float "+n+"() {return "+e+";}";var r=t.shapeInfo.texShape,i=r[0],o=r[1];if(1===i&&1===o)return"\n float "+n+"() {\n return sampleTexture("+e+", halfCR);\n }\n ";var a=t.shapeInfo.texShape;return"\n float "+n+"() {\n vec2 uv = uvFromFlat("+a[0]+", "+a[1]+", "+bn(e)+");\n return sampleTexture("+e+", uv);\n }\n "}(t);case 1:return function(t){var e=t.name,n="get"+e.charAt(0).toUpperCase()+e.slice(1);if(t.shapeInfo.isUniform)return"\n float "+n+"(int index) {\n "+wn(t)+"\n }\n ";var r=t.shapeInfo.texShape,i=r[0],o=r[1];if(1===o&&1===i)return"\n float "+n+"(int index) {\n return sampleTexture("+e+", halfCR);\n }\n ";var a=bn(e);return 1===o?"\n float "+n+"(int index) {\n vec2 uv = vec2(0.5, (float(index + "+a+") + 0.5) / "+i+".0);\n return sampleTexture("+e+", uv);\n }\n ":1===i?"\n float "+n+"(int index) {\n vec2 uv = vec2((float(index + "+a+") + 0.5) / "+o+".0, 0.5);\n return sampleTexture("+e+", uv);\n }\n ":"\n float "+n+"(int index) {\n vec2 uv = uvFromFlat("+i+", "+o+", index + "+a+");\n return sampleTexture("+e+", uv);\n }\n "}(t);case 2:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),i=t.shapeInfo.texShape;if(null!=i&&b(e,i)){var o=i[0];return"\n float "+r+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+i[1]+".0, "+o+".0);\n return sampleTexture("+n+", uv);\n }\n "}var a=k(e),s=a.newShape,u=a.keptDims,l=s;if(l.length<e.length)return"\n "+fn(Nn(t,l))+"\n float "+r+"(int row, int col) {\n return "+r+"("+Sn(["row","col"],u)+");\n }\n ";if(t.shapeInfo.isUniform)return"\n float "+r+"(int row, int col) {\n int index = round(dot(vec2(row, col), vec2("+e[1]+", 1)));\n "+wn(t)+"\n }\n ";var c=i[0],p=i[1],h=bn(n);return 1===p?"\n float "+r+"(int row, int col) {\n float index = dot(vec3(row, col, "+h+"), vec3("+e[1]+", 1, 1));\n vec2 uv = vec2(0.5, (index + 0.5) / "+c+".0);\n return sampleTexture("+n+", uv);\n }\n ":1===c?"\n float "+r+"(int row, int col) {\n float index = dot(vec3(row, col, "+h+"), vec3("+e[1]+", 1, 1));\n vec2 uv = vec2((index + 0.5) / "+p+".0, 0.5);\n return sampleTexture("+n+", uv);\n }\n ":"\n float "+r+"(int row, int col) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+e[1]+" + col + "+h+";\n vec2 uv = uvFromFlat("+c+", "+p+", index);\n return sampleTexture("+n+", uv);\n }\n"}(t);case 3:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),i=e[1]*e[2],o=e[2],a=k(e),s=a.newShape,u=a.keptDims,l=s;if(l.length<e.length)return"\n "+fn(Nn(t,l))+"\n float "+r+"(int row, int col, int depth) {\n return "+r+"("+Sn(["row","col","depth"],u)+");\n }\n ";if(t.shapeInfo.isUniform)return"\n float "+r+"(int row, int col, int depth) {\n int index = round(dot(vec3(row, col, depth),\n vec3("+i+", "+o+", 1)));\n "+wn(t)+"\n }\n ";var c=t.shapeInfo.texShape,p=c[0],h=c[1],f=t.shapeInfo.flatOffset;return h===i&&null==f?"\n float "+r+"(int row, int col, int depth) {\n float texR = float(row);\n float texC = dot(vec2(col, depth), vec2("+o+", 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+h+".0, "+p+".0);\n return sampleTexture("+n+", uv);\n }\n ":h===o&&null==f?"\n float "+r+"(int row, int col, int depth) {\n float texR = dot(vec2(row, col), vec2("+e[1]+", 1));\n float texC = float(depth);\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2("+h+".0, "+p+".0);\n return sampleTexture("+n+", uv);\n }\n ":"\n float "+r+"(int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+i+" + col * "+o+" + depth + "+bn(n)+";\n vec2 uv = uvFromFlat("+p+", "+h+", index);\n return sampleTexture("+n+", uv);\n }\n "}(t);case 4:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),i=e[3],o=e[2]*i,a=e[1]*o,s=k(e),u=s.newShape,l=s.keptDims;if(u.length<e.length)return"\n "+fn(Nn(t,u))+"\n float "+r+"(int row, int col, int depth, int depth2) {\n return "+r+"("+Sn(["row","col","depth","depth2"],l)+");\n }\n ";if(t.shapeInfo.isUniform)return"\n float "+r+"(int row, int col, int depth, int depth2) {\n int index = round(dot(vec4(row, col, depth, depth2),\n vec4("+a+", "+o+", "+i+", 1)));\n "+wn(t)+"\n }\n ";var c=t.shapeInfo.flatOffset,p=t.shapeInfo.texShape,h=p[0],f=p[1];return f===a&&null==c?"\n float "+r+"(int row, int col, int depth, int depth2) {\n float texR = float(row);\n float texC =\n dot(vec3(col, depth, depth2),\n vec3("+o+", "+i+", 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+f+".0, "+h+".0);\n return sampleTexture("+n+", uv);\n }\n ":f===i&&null==c?"\n float "+r+"(int row, int col, int depth, int depth2) {\n float texR = dot(vec3(row, col, depth),\n vec3("+e[1]*e[2]+", "+e[2]+", 1));\n float texC = float(depth2);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+f+".0, "+h+".0);\n return sampleTexture("+n+", uv);\n }\n ":"\n float "+r+"(int row, int col, int depth, int depth2) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+a+" + col * "+o+" +\n depth * "+i+" + depth2;\n vec2 uv = uvFromFlat("+h+", "+f+", index + "+bn(n)+");\n return sampleTexture("+n+", uv);\n }\n "}(t);case 5:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),i=e[4],o=e[3]*i,a=e[2]*o,s=e[1]*a,u=k(e),l=u.newShape,c=u.keptDims;if(l.length<e.length)return"\n "+fn(Nn(t,l))+"\n float "+r+"(int row, int col, int depth, int depth2, int depth3) {\n return "+r+"("+Sn(["row","col","depth","depth2","depth3"],c)+");\n }\n ";if(t.shapeInfo.isUniform)return"\n float "+r+"(int row, int col, int depth, int depth2, int depth3) {\n float index = dot(\n vec4(row, col, depth, depth2),\n vec4("+s+", "+a+", "+o+", "+i+")) +\n depth3;\n "+wn(t)+"\n }\n ";var p=t.shapeInfo.flatOffset,h=t.shapeInfo.texShape,f=h[0],d=h[1];return d===s&&null==p?"\n float "+r+"(int row, int col, int depth, int depth2, int depth3) {\n int texR = row;\n float texC = dot(vec4(col, depth, depth2, depth3),\n vec4("+a+", "+o+", "+i+", 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+d+".0, "+f+".0);\n return sampleTexture("+n+", uv);\n }\n ":d===i&&null==p?"\n float "+r+"(int row, int col, int depth, int depth2, int depth3) {\n float texR = dot(\n vec4(row, col, depth, depth2),\n vec4("+e[1]*e[2]*e[3]+",\n "+e[2]*e[3]+", "+e[3]+", 1));\n int texC = depth3;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+d+".0, "+f+".0);\n return sampleTexture("+n+", uv);\n }\n ":"\n float "+r+"(int row, int col, int depth, int depth2, int depth3) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+s+" + col * "+a+" + depth * "+o+" +\n depth2 * "+i+" + depth3 + "+bn(n)+";\n vec2 uv = uvFromFlat("+f+", "+d+", index);\n return sampleTexture("+n+", uv);\n }\n "}(t);case 6:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),i=k(e),o=i.newShape,a=i.keptDims;if(o.length<e.length)return"\n "+fn(Nn(t,o))+"\n float "+r+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n return "+r+"("+Sn(["row","col","depth","depth2","depth3","depth4"],a)+");\n }\n ";var s=e[5],u=e[4]*s,l=e[3]*u,c=e[2]*l,p=e[1]*c;if(t.shapeInfo.isUniform)return"\n float "+r+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int index = round(dot(\n vec4(row, col, depth, depth2),\n vec4("+p+", "+c+", "+l+", "+u+")) +\n dot(\n vec2(depth3, depth4),\n vec2("+s+", 1)));\n "+wn(t)+"\n }\n ";var h=t.shapeInfo.flatOffset,f=t.shapeInfo.texShape,d=f[0],m=f[1];return m===p&&null==h?"\n float "+r+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int texR = row;\n float texC = dot(vec4(col, depth, depth2, depth3),\n vec4("+c+", "+l+", "+u+", "+s+")) +\n float(depth4);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+m+".0, "+d+".0);\n return sampleTexture("+n+", uv);\n }\n ":m===s&&null==h?"\n float "+r+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n float texR = dot(vec4(row, col, depth, depth2),\n vec4("+e[1]*e[2]*e[3]*e[4]+",\n "+e[2]*e[3]*e[4]+",\n "+e[3]*e[4]+",\n "+e[4]+")) + float(depth3);\n int texC = depth4;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+m+".0, "+d+".0);\n return sampleTexture("+n+", uv);\n }\n ":"\n float "+r+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+p+" + col * "+c+" + depth * "+l+" +\n depth2 * "+u+" + depth3 * "+s+" + depth4 + "+bn(n)+";\n vec2 uv = uvFromFlat("+d+", "+m+", index);\n return sampleTexture("+n+", uv);\n }\n "}(t);default:throw new Error(e.length+"-D input sampling is not yet supported")}}function dn(t){switch(t.shapeInfo.logicalShape.length){case 0:return function(t){var e=t.name;return"\n vec4 get"+e.charAt(0).toUpperCase()+e.slice(1)+"() {\n return "+ln().texture2D+"("+e+", halfCR);\n }\n "}(t);case 1:return function(t){var e=t.name,n="get"+e.charAt(0).toUpperCase()+e.slice(1),r=t.shapeInfo.texShape,i=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)],o=ln();return"\n vec4 "+n+"(int index) {\n vec2 uv = packedUVfrom1D(\n "+i[0]+", "+i[1]+", index);\n return "+o.texture2D+"("+e+", uv);\n }\n "}(t);case 2:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),i=t.shapeInfo.texShape,o=i[0],a=i[1],s=ln();if(null!=i&&b(e,i))return"\n vec4 "+r+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+a+".0, "+o+".0);\n\n return "+s.texture2D+"("+n+", uv);\n }\n ";var u=[Math.ceil(i[0]/2),Math.ceil(i[1]/2)];return"\n vec4 "+r+"(int row, int col) {\n vec2 uv = packedUVfrom2D("+Math.ceil(e[1]/2)+", "+u[0]+", "+u[1]+", row, col);\n return "+s.texture2D+"("+n+", uv);\n }\n "}(t);case 3:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),i=t.shapeInfo.texShape,o=[Math.ceil(i[0]/2),Math.ceil(i[1]/2)];if(1===e[0])return"\n "+dn(Nn(t,e.slice(1)))+"\n vec4 "+r+"(int b, int row, int col) {\n return "+r+"("+Sn(["b","row","col"],[1,2])+");\n }\n ";var a=o[0],s=o[1],u=Math.ceil(e[2]/2);return"\n vec4 "+r+"(int b, int row, int col) {\n vec2 uv = packedUVfrom3D(\n "+a+", "+s+", "+u*Math.ceil(e[1]/2)+", "+u+", b, row, col);\n return "+ln().texture2D+"("+n+", uv);\n }\n "}(t);default:return function(t){for(var e=t.shapeInfo.logicalShape,n=e.length,r=t.name,i="get"+r.charAt(0).toUpperCase()+r.slice(1),o=t.shapeInfo.texShape,a=[Math.ceil(o[0]/2),Math.ceil(o[1]/2)],s=a[0],u=a[1],l=Math.ceil(e[n-1]/2),c=l*Math.ceil(e[n-2]/2),p="int b, int row, int col",h="b * "+c+" + (row / 2) * "+l+" + (col / 2)",f=2;f<n-1;f++)p="int b"+f+", "+p,h="b"+f+" * "+(c*=e[n-f-1])+" + "+h;return"\n vec4 "+i+"("+p+") {\n int index = "+h+";\n int texR = index / "+u+";\n int texC = index - texR * "+u+";\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2("+u+", "+s+");\n return "+ln().texture2D+"("+r+", uv);\n }\n "}(t)}}var mn="\nvec2 uvFromFlat(int texNumR, int texNumC, int index) {\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom1D(int texNumR, int texNumC, int index) {\n int texelIndex = index / 2;\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n",gn="\nvec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,\n int texNumC, int row, int col) {\n int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n",yn="\nvec2 packedUVfrom3D(int texNumR, int texNumC,\n int texelsInBatch, int texelsInLogicalRow, int b,\n int row, int col) {\n int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n",vn="\n float getChannel(vec4 frag, vec2 innerDims) {\n vec2 modCoord = mod(innerDims, 2.);\n return modCoord.x == 0. ?\n (modCoord.y == 0. ? frag.r : frag.g) :\n (modCoord.y == 0. ? frag.b : frag.a);\n }\n float getChannel(vec4 frag, int dim) {\n float modCoord = mod(float(dim), 2.);\n return modCoord == 0. ? frag.r : frag.g;\n }\n";function bn(t){return"offset"+t}function wn(t){var e=t.name,n=v(t.shapeInfo.logicalShape);return 1===n?"return "+e+";":"\n for (int i = 0; i < "+n+"; i++) {\n if (i == index) {\n return "+e+"[i];\n }\n }\n "}function xn(t){if(t<=1)return"int";if(2===t)return"ivec2";if(3===t)return"ivec3";if(4===t)return"ivec4";if(5===t)return"ivec5";if(6===t)return"ivec6";throw Error("GPU for rank "+t+" is not yet supported")}function Nn(t,e){var n=JSON.parse(JSON.stringify(t));return n.shapeInfo.logicalShape=e,n}function Sn(t,e){return e.map(function(e){return t[e]}).join(", ")}var Cn=function(t,e,n,r){this.variableNames=["A"],this.usesPackedTextures=!0,d(t.length>2,function(){return"Packed arg"+(n.charAt(0).toUpperCase()+n.slice(1))+" supports only inputs with rank above 2."});var i=t[t.length-1],o=Math.ceil(i/e);this.outputShape=t.slice(0,-1),o>1&&this.outputShape.push(o),r||this.variableNames.push("bestIndicesA");var a,s,u=this.outputShape,l=u.length,c=xn(l),p=on("coords",l);if(1===o){var h=xn(s=l+1);a="\n "+h+" sourceLocR = "+h+"("+p.join()+", 0);\n ++"+p[l-1]+";\n "+h+" sourceLocG = "+h+"("+p.join()+", 0);\n ++"+p[l-2]+";\n "+h+" sourceLocA = "+h+"("+p.join()+", 0);\n --"+p[l-1]+";\n "+h+" sourceLocB = "+h+"("+p.join()+", 0);\n --"+p[l-2]+";"}else s=l,a="\n "+c+" sourceLocR = coords;\n ++"+p[l-1]+";\n "+c+" sourceLocG = coords;\n ++"+p[l-2]+";\n "+c+" sourceLocA = coords;\n --"+p[l-1]+";\n "+c+" sourceLocB = coords;\n --"+p[l-2]+";";var f=["x","y","z","w","u","v"].slice(0,s),m="."+f[s-1],g=f.map(function(t){return"int "+t}),y=on("sourceLocR",s-1).concat("inIdx.r"),v=on("sourceLocG",s-1).concat("inIdx.g"),b=on("sourceLocB",s-1).concat("inIdx.b"),w=on("sourceLocA",s-1).concat("inIdx.a"),x="max"===n?"greaterThan":"lessThan",N=r?"":"\n inIdx = round(vec4(getBestIndicesAChannel("+y.join()+"),\n getBestIndicesAChannel("+v.join()+"),\n getBestIndicesAChannel("+b.join()+"),\n getBestIndicesAChannel("+w.join()+")));",S="vec4(\n getAChannel("+y.join()+"),\n hasNextCol ? getAChannel("+v.join()+") : 0.,\n hasNextRow ? getAChannel("+b.join()+") : 0.,\n hasNextRow && hasNextCol ? getAChannel("+w.join()+") : 0.)",C=r?"":"\n float getBestIndicesAChannel("+g.join()+") {\n return getChannel(getBestIndicesA("+f.join()+"),\n vec2("+f.slice(-2).join()+"));\n }";this.userCode="\n float getAChannel("+g.join()+") {\n return getChannel(getA("+f.join()+"),\n vec2("+f.slice(-2).join()+"));\n }\n "+C+"\n void main() {\n "+c+" coords = getOutputCoords();\n bool hasNextCol = "+p[l-1]+" < "+(u[l-1]-1)+";\n bool hasNextRow = "+p[l-2]+" < "+(u[l-2]-1)+";\n "+a+"\n ivec4 srcIdx = ivec4(sourceLocR"+m+", sourceLocG"+m+",\n sourceLocB"+m+", sourceLocA"+m+") * "+e+";\n ivec4 inIdx = srcIdx;\n vec4 bestIndex = vec4(inIdx);\n vec4 bestValue = "+S+";\n\n for (int i = 0; i < "+e+"; i++) {\n inIdx = srcIdx;\n "+N+"\n vec4 candidate = "+S+";\n bvec4 nan = isNaN(candidate);\n bvec4 replace = bvec4(\n vec4("+x+"(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));\n\n bestValue = vec4(replace.x ? candidate.x : bestValue.x,\n replace.y ? candidate.y : bestValue.y,\n replace.z ? candidate.z : bestValue.z,\n replace.w ? candidate.w : bestValue.w);\n bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));\n srcIdx++;\n }\n setOutput(bestIndex);\n }\n "},En=function(t){this.variableNames=["dy"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,i=t.strideWidth,o=t.dilationHeight,a=t.dilationWidth,s=t.effectiveFilterHeight,u=t.effectiveFilterWidth,l=s-1-t.padInfo.top,c=u-1-t.padInfo.left,p=1/(e*n);this.userCode="\n const ivec2 pads = ivec2("+l+", "+c+");\n const float avgMultiplier = float("+p+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+s+";\n wR += "+o+") {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+u+";\n wC+= "+a+") {\n float dyC = float(dyCCorner + wC) / "+i+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n "},In=function(t,e,n,r,i,o){this.outputShape=[],this.variableNames=["x","mean","variance"],un(t,e),un(t,n);var a="0.0";null!=r&&(un(t,r),this.variableNames.push("offset"),a="getOffsetAtOutCoords()");var s="1.0";null!=i&&(un(t,i),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=t,this.userCode="\n void main() {\n float x = getXAtOutCoords();\n float mean = getMeanAtOutCoords();\n float variance = getVarianceAtOutCoords();\n float offset = "+a+";\n float scale = "+s+";\n float inv = scale * inversesqrt(variance + float("+o+"));\n setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\n }\n "},kn=function(t,e,n,r,i,o){this.usesPackedTextures=!0,this.variableNames=["x","mean","variance"],un(t,e),un(t,n);var a="vec4(0.0)";null!=r&&(un(t,r),this.variableNames.push("offset"),a="getOffsetAtOutCoords()");var s="vec4(1.0)";null!=i&&(un(t,i),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=t,this.userCode="\n void main() {\n vec4 offset = "+a+";\n vec4 scale = "+s+";\n\n vec4 x = getXAtOutCoords();\n vec4 mean = getMeanAtOutCoords();\n vec4 variance = getVarianceAtOutCoords();\n\n vec4 inv = scale * inversesqrt(variance + vec4("+o+"));\n\n setOutput((x - mean) * inv + offset);\n }\n "},An="return areal * breal - aimag * bimag;",Tn="return areal * bimag + aimag * breal;",Rn=function(t,e,n){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=un(e,n),this.userCode="\n float binaryOpComplex(\n float areal, float aimag, float breal, float bimag) {\n "+t+"\n }\n\n void main() {\n float areal = getARealAtOutCoords();\n float aimag = getAImagAtOutCoords();\n float breal = getBRealAtOutCoords();\n float bimag = getBImagAtOutCoords();\n setOutput(binaryOpComplex(areal, aimag, breal, bimag));\n }\n "},Dn="return a + b;",On="return a - b;",_n="return a * b;",Mn=function(){function t(t,e,n){this.variableNames=["A","B"],this.outputShape=un(e,n),this.userCode="\n uniform float NAN;\n float binaryOperation(float a, float b) {\n "+t+"\n }\n\n void main() {\n float a = getAAtOutCoords();\n float b = getBAtOutCoords();\n setOutput(binaryOperation(a, b));\n }\n "}return t.prototype.getCustomSetupFunc=function(){var t=this;return function(e,n){null==t.startLoc&&(t.startLoc=e.getUniformLocationNoThrow(n,"NAN"),null==t.startLoc)||e.gl.uniform1f(t.startLoc,NaN)}},t}(),Ln=function(){function t(t,e,n){this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.usesPackedTextures=!0,this.outputShape=un(e,n),this.userCode="\n uniform float NAN;\n vec4 binaryOperation(vec4 a, vec4 b) {\n "+t+"\n }\n\n void main() {\n vec4 a = getAAtOutCoords();\n vec4 b = getBAtOutCoords();\n setOutput(binaryOperation(a, b));\n }\n "}return t.prototype.getCustomSetupFunc=function(){var t=this;return function(e,n){null==t.startLoc&&(t.startLoc=e.getUniformLocationNoThrow(n,"NAN"),null==t.startLoc)||e.gl.uniform1f(t.startLoc,NaN)}},t}(),Fn=function(){function t(t){this.variableNames=["A"],this.outputShape=t,this.userCode="\n uniform float min;\n uniform float max;\n\n void main() {\n float value = getAAtOutCoords();\n if (isNaN(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, min, max));\n }\n "}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,i){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(i,"min"),n.maxLoc=r.getUniformLocationNoThrow(i,"max")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e)}},t}(),zn=function(){function t(t){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=t,this.userCode="\n uniform float min;\n uniform float max;\n\n void main() {\n vec4 value = getAAtOutCoords();\n\n if (hasNaN(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, vec4(min), vec4(max)));\n }\n "}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,i){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(i,"min"),n.maxLoc=r.getUniformLocationNoThrow(i,"max")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e)}},t}(),Pn=function(t){this.variableNames=["real","imag"],this.outputShape=t,this.userCode="\n void main() {\n float re = abs(getRealAtOutCoords());\n float im = abs(getImagAtOutCoords());\n float mx = max(re, im);\n\n // sadly the length function in glsl is not underflow-safe\n // (at least not on Intel GPUs). So the safe solution is\n // to ensure underflow-safety in all cases.\n setOutput(\n mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))\n );\n }\n "},Bn=function(t){this.outputShape=[],this.outputShape=ue(t,1),this.variableNames=t.map(function(t,e){return"T"+e});var e=new Array(t.length-1);e[0]=t[0][1];for(var n=1;n<e.length;n++)e[n]=e[n-1]+t[n][1];var r=["if (yC < "+e[0]+") setOutput(getT0(yR, yC));"];for(n=1;n<e.length;n++){var i=e[n-1];r.push("else if (yC < "+e[n]+") setOutput(getT"+n+"(yR, yC-"+i+"));")}var o=e.length,a=e[e.length-1];r.push("else setOutput(getT"+o+"(yR, yC-"+a+"));"),this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int yR = coords.x;\n int yC = coords.y;\n\n "+r.join("\n ")+"\n }\n "},Un=function(t,e){this.usesPackedTextures=!0,this.outputShape=[],this.outputShape=ue(t,e);var n=this.outputShape,r=n.length,i=xn(r),o=on("coords",r),a=["x","y","z","w","u","v"].slice(0,r);this.variableNames=t.map(function(t,e){return"T"+e});var s=new Array(t.length-1);s[0]=t[0][e];for(var u=1;u<s.length;u++)s[u]=s[u-1]+t[u][e];var l=a[e],c="vec2("+a.slice(-2).join()+")",p=a.join(),h="if ("+l+" < "+s[0]+")\n return getChannel(getT0("+p+"), "+c+");";for(u=1;u<s.length;u++){var f=s[u-1];h+="\n else if ("+l+" < "+s[u]+") {\n "+l+" -= "+f+";\n return getChannel(getT"+u+"("+p+"), "+c+");\n }"}var d=s.length;h+="\n else {\n "+l+" -= "+s[s.length-1]+";\n return getChannel(getT"+d+"("+p+"), "+c+");\n }",this.userCode="\n float getValue("+a.map(function(t){return"int "+t})+") {\n "+h+"\n }\n\n void main() {\n "+i+" coords = getOutputCoords();\n vec4 result = vec4(getValue("+o+"), 0., 0., 0.);\n if (++"+o[r-1]+" < "+n[r-1]+") {\n result.g = getValue("+o+");\n }\n if (++"+o[r-2]+" < "+n[r-2]+") {\n result.a = getValue("+o+");\n }\n if ("+o[r-2]+" < "+n[r-2]+" &&\n --"+o[r-1]+" < "+n[r-1]+") {\n result.b = getValue("+o+");\n }\n setOutput(result);\n }\n "},Wn=function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,i=t.padInfo.left;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int d2 = coords.w;\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int b = 0; b < "+t.batchSize+"; b++) {\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+e+" - "+r+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+i+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "},Vn=function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,i=t.strideWidth,o=e-1-t.padInfo.top,a=n-1-t.padInfo.left;this.userCode="\n const ivec2 pads = ivec2("+o+", "+a+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+e+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+e+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+i+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+t.outChannels+"; d2++) {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "},jn=function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,i=t.padInfo.front,o=t.padInfo.top,a=t.padInfo.left;this.userCode="\n void main() {\n ivec5 coords = getOutputCoords();\n int wF = coords.x;\n int wR = coords.y;\n int wC = coords.z;\n int d1 = coords.w;\n int d2 = coords.u;\n\n float dotProd = 0.0;\n\n for (int b = 0; b < "+t.batchSize+"; b++) {\n for (int yF = 0; yF < "+t.outDepth+"; yF++) {\n int xF = wF + yF * "+e+" - "+i+";\n\n if (xF < 0 || xF >= "+t.inDepth+") {\n continue;\n }\n\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+n+" - "+o+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+r+" - "+a+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yF, yR, yC, d2);\n float xValue = getX(b, xF, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n "},qn=function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,i=t.strideDepth,o=t.strideHeight,a=t.strideWidth,s=e-1-t.padInfo.front,u=n-1-t.padInfo.top,l=r-1-t.padInfo.left;this.userCode="\n const ivec3 pads = ivec3("+s+", "+u+", "+l+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.u;\n\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyFCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n float dotProd = 0.0;\n for (int wF = 0; wF < "+e+"; wF++) {\n float dyF = float(dyFCorner + wF) / "+i+".0;\n\n if (dyF < 0.0 || dyF >= "+t.outDepth+".0 || fract(dyF) > 0.0) {\n continue;\n }\n int idyF = int(dyF);\n\n int wFPerm = "+e+" - 1 - wF;\n\n for (int wR = 0; wR < "+n+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+o+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+n+" - 1 - wR;\n\n for (int wC = 0; wC < "+r+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+r+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+t.outChannels+"; d2++) {\n float xValue = getDy(batch, idyF, idyR, idyC, d2);\n float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n }\n setOutput(dotProd);\n }\n "},Gn=function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,i=t.padInfo.left,o=t.outChannels/t.inChannels;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int dm = coords.w;\n int d2 = d1 * "+o+" + dm;\n\n float dotProd = 0.0;\n\n // TODO: Vec4 over the batch size\n for (int b = 0; b < "+t.batchSize+"; b++) {\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+e+" - "+r+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+i+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "},Hn=function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,i=t.strideWidth,o=e-1-t.padInfo.top,a=n-1-t.padInfo.left,s=t.outChannels/t.inChannels;this.userCode="\n const ivec2 pads = ivec2("+o+", "+a+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < "+e+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+e+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+i+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n // TODO: Vec4 over the channelMul\n for (int dm = 0; dm < "+s+"; dm++) {\n int d2 = d1 * "+s+" + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "},Kn=function(t){this.variableNames=["x","W"],this.outputShape=t.outShape;var e=t.padInfo.top,n=t.padInfo.left,r=t.strideHeight,i=t.strideWidth,o=t.dilationHeight,a=t.dilationWidth,s=t.filterHeight,u=t.filterWidth,l=4*Math.floor(t.inChannels/4),c=t.inChannels%4;this.userCode="\n const ivec2 strides = ivec2("+r+", "+i+");\n const ivec2 pads = ivec2("+e+", "+n+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+s+"; wR++) {\n int xR = xRCorner + wR * "+o+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+u+"; wC++) {\n int xC = xCCorner + wC * "+a+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+l+"; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if ("+(1===c)+") {\n dotProd +=\n getX(batch, xR, xC, "+l+") *\n getW(wR, wC, "+l+", d2);\n } else if ("+(2===c)+") {\n vec2 xValues = vec2(\n getX(batch, xR, xC, "+l+"),\n getX(batch, xR, xC, "+l+" + 1)\n );\n vec2 wValues = vec2(\n getW(wR, wC, "+l+", d2),\n getW(wR, wC, "+l+" + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if ("+(3===c)+") {\n vec3 xValues = vec3(\n getX(batch, xR, xC, "+l+"),\n getX(batch, xR, xC, "+l+" + 1),\n getX(batch, xR, xC, "+l+" + 2)\n );\n vec3 wValues = vec3(\n getW(wR, wC, "+l+", d2),\n getW(wR, wC, "+l+" + 1, d2),\n getW(wR, wC, "+l+" + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n setOutput(dotProd);\n }\n "},$n=function(t){this.variableNames=["x","W"],this.outputShape=t.outShape;var e=t.padInfo.front,n=t.padInfo.top,r=t.padInfo.left,i=t.strideDepth,o=t.strideHeight,a=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,l=t.dilationWidth,c=t.filterDepth,p=t.filterHeight,h=t.filterWidth,f=4*Math.floor(t.inChannels/4),d=t.inChannels%4;this.userCode="\n const ivec3 strides = ivec3("+i+", "+o+", "+a+");\n const ivec3 pads = ivec3("+e+", "+n+", "+r+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d2 = coords.u;\n\n ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xFCorner = xFRCCorner.x;\n int xRCorner = xFRCCorner.y;\n int xCCorner = xFRCCorner.z;\n\n // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get\n // y(yF, yR, yC, d2). ? = to be determined. : = across all\n // values in that axis.\n float dotProd = 0.0;\n for (int wF = 0; wF < "+c+"; wF++) {\n int xF = xFCorner + wF * "+s+";\n\n if (xF < 0 || xF >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+p+"; wR++) {\n int xR = xRCorner + wR * "+u+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+h+"; wC++) {\n int xC = xCCorner + wC * "+l+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+f+"; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xF, xR, xC, d1),\n getX(batch, xF, xR, xC, d1 + 1),\n getX(batch, xF, xR, xC, d1 + 2),\n getX(batch, xF, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wF, wR, wC, d1, d2),\n getW(wF, wR, wC, d1 + 1, d2),\n getW(wF, wR, wC, d1 + 2, d2),\n getW(wF, wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if ("+(1===d)+") {\n dotProd +=\n getX(batch, xF, xR, xC, "+f+") *\n getW(wF, wR, wC, "+f+", d2);\n } else if ("+(2===d)+") {\n vec2 xValues = vec2(\n getX(batch, xF, xR, xC, "+f+"),\n getX(batch, xF, xR, xC, "+f+" + 1)\n );\n vec2 wValues = vec2(\n getW(wF, wR, wC, "+f+", d2),\n getW(wF, wR, wC, "+f+" + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if ("+(3===d)+") {\n vec3 xValues = vec3(\n getX(batch, xF, xR, xC, "+f+"),\n getX(batch, xF, xR, xC, "+f+" + 1),\n getX(batch, xF, xR, xC, "+f+" + 2)\n );\n vec3 wValues = vec3(\n getW(wF, wR, wC, "+f+", d2),\n getW(wF, wR, wC, "+f+" + 1, d2),\n getW(wF, wR, wC, "+f+" + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n "},Xn=function(t){this.variableNames=["x","W"],this.outputShape=t.outShape;var e=t.inHeight,n=t.inWidth,r=t.padInfo.top,i=t.padInfo.left,o=t.strideHeight,a=t.strideWidth,s=t.dilationHeight,u=t.dilationWidth,l=t.filterHeight,c=t.filterWidth,p=t.outChannels/t.inChannels;this.userCode="\n const ivec2 strides = ivec2("+o+", "+a+");\n const ivec2 pads = ivec2("+r+", "+i+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / "+p+";\n int q = d2 - d1 * "+p+";\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TODO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < "+l+"; wR++) {\n int xR = xRCorner + wR * "+s+";\n\n if (xR < 0 || xR >= "+e+") {\n continue;\n }\n\n for (int wC = 0; wC < "+c+"; wC++) {\n int xC = xCCorner + wC * "+u+";\n\n if (xC < 0 || xC >= "+n+") {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n setOutput(dotProd);\n }\n "},Yn=function(t){this.variableNames=["x","W"],this.usesPackedTextures=!0,this.outputShape=t.outShape;for(var e=t.inHeight,n=t.inWidth,r=t.padInfo.top,i=t.padInfo.left,o=t.strideHeight,a=t.strideWidth,s=t.dilationHeight,u=t.dilationWidth,l=t.filterHeight,c=t.filterWidth,h=c,f="int xR; int xC; int xCOffset;",d=0;d<l;d++)for(var m=0;m<c;m++)f+="\n vec4 xTexelR"+d+"C"+2*m+" = vec4(0.);\n vec4 wR"+d+"C"+m+" = vec4(0.);\n vec4 xR"+d+"C"+m+" = vec4(0.);";for(d=0;d<l;d++)for(var g=0;g<h;g++){if(f+="\n xR = xRCorner + "+d*s+";\n xC = xCCorner + "+(m=2*g)*u+";\n ",1===a){if(m<c&&(f+=i%2==1?"\n xCOffset = xC + 1;\n if(xR >= 0 && xR < "+e+" && xCOffset >= 0 && xCOffset < "+n+") {\n xTexelR"+d+"C"+m+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+d+"C"+m+" = vec4(0.);\n }\n\n xCOffset = xC + 1 - 2;\n if(xR >= 0 && xR < "+e+" && xCOffset >= 0 && xCOffset < "+n+") {\n vec4 previous = getX(batch, xR, xCOffset, d1);\n xR"+d+"C"+m+" = vec4(previous.zw, xTexelR"+d+"C"+m+".xy);\n } else {\n xR"+d+"C"+m+" = vec4(0, 0, xTexelR"+d+"C"+m+".xy);\n }\n ":"\n if(xR >= 0 && xR < "+e+" && xC >= 0 && xC < "+n+") {\n xTexelR"+d+"C"+m+" = getX(batch, xR, xC, d1);\n } else {\n xTexelR"+d+"C"+m+" = vec4(0.);\n }\n\n xR"+d+"C"+m+" = xTexelR"+d+"C"+m+";\n ",m+1<c)){var y=i%2==0?p(u):u;u%2==0&&i%2==1||u%2!=0&&i%2!=1?(f+="\n xCOffset = xC + "+i%2+" + "+y+";\n\n if(xR >= 0 && xR < "+e+" &&\n xCOffset >= 0 && xCOffset < "+n+") {\n xTexelR"+d+"C"+(m+2)+" = getX(batch, xR, xCOffset, d1);\n }\n ",u>1&&(f+="\n xCOffset -= 2;\n if(xR >= 0 && xR < "+e+" &&\n xCOffset >= 0 && xCOffset < "+n+") {\n xTexelR"+d+"C"+m+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+d+"C"+m+" = vec4(0.);\n }\n "),f+="\n xR"+d+"C"+(m+1)+" = vec4(\n xTexelR"+d+"C"+m+".zw, xTexelR"+d+"C"+(m+2)+".xy);\n "):f+="\n xCOffset = xC + "+y+";\n\n if(xR >= 0 && xR < "+e+" &&\n xCOffset >= 0 && xCOffset < "+n+") {\n xTexelR"+d+"C"+(m+2)+" = getX(batch, xR, xCOffset, d1);\n }\n\n xR"+d+"C"+(m+1)+" = xTexelR"+d+"C"+(m+2)+";\n "}}else m<c&&(f+="\n if(xR >= 0 && xR < "+e+") {\n ",i%2==1?(f+="\n xCOffset = xC + 1 - "+a+";\n if(xCOffset >= 0 && xCOffset < "+n+") {\n xTexelR"+d+"C"+m+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+d+"C"+m+" = vec4(0.);\n }\n\n if(xC + 1 >= 0 && xC + 1 < "+n+") {\n xTexelR"+d+"C"+(m+2)+" = getX(batch, xR, xC + 1, d1);\n } else {\n xTexelR"+d+"C"+(m+2)+" = vec4(0.);\n }\n\n xR"+d+"C"+m+" = vec4(\n xTexelR"+d+"C"+m+".zw, xTexelR"+d+"C"+(m+2)+".zw);\n ",m+1<c&&(f+="\n vec4 final = vec4(0.);\n xCOffset = xC + 1 + "+a+";\n if(xCOffset >= 0 && xCOffset < "+n+") {\n final = getX(batch, xR, xCOffset, d1);\n }\n xR"+d+"C"+(m+1)+" = vec4(xTexelR"+d+"C"+(m+2)+".xy, final.xy);\n ")):(f+="\n if(xC >= 0 && xC < "+n+") {\n xTexelR"+d+"C"+m+" = getX(batch, xR, xC, d1);\n } else {\n xTexelR"+d+"C"+m+" = vec4(0.);\n }\n\n xCOffset = xC + "+a+";\n if(xCOffset >= 0 && xCOffset < "+n+") {\n xTexelR"+d+"C"+(m+2)+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+d+"C"+(m+2)+" = vec4(0.);\n }\n\n xR"+d+"C"+m+" = vec4(\n xTexelR"+d+"C"+m+".xy, xTexelR"+d+"C"+(m+2)+".xy);\n ",m+1<c&&(f+="\n xR"+d+"C"+(m+1)+" = vec4(\n xTexelR"+d+"C"+m+".zw, xTexelR"+d+"C"+(m+2)+".zw);\n ")),f+="}");m<c&&(f+="\n vec4 wTexelR"+d+"C"+m+" = getW("+d+", "+m+", d1, q);\n wR"+d+"C"+m+" = vec4(wTexelR"+d+"C"+m+".xz, wTexelR"+d+"C"+m+".xz);\n ",m+1<c&&(f+="\n vec4 wTexelR"+d+"C"+(m+1)+" = getW("+d+", "+(m+1)+", d1, q);\n wR"+d+"C"+(m+1)+" =\n vec4(wTexelR"+d+"C"+(m+1)+".xz, wTexelR"+d+"C"+(m+1)+".xz);"))}for(d=0;d<l;d++)for(m=0;m<c;m++)f+="result += xR"+d+"C"+m+" * wR"+d+"C"+m+";";this.userCode="\n const ivec2 strides = ivec2("+o+", "+a+");\n const ivec2 pads = ivec2("+r+", "+i+");\n\n void main() {\n\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2;\n int q = 0;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n vec4 result = vec4(0.);\n\n "+f+"\n\n setOutput(result);\n }\n "},Jn=function(t,e,n,r,i){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];var o=t[0],a=t[1],s=t[2],u=t[3],l=e[0],c=n[0],p=n[1];this.outputShape=[l,c,p,u];var h="bilinear"===r?1:0,f=[a-1+".0",s-1+".0"],d=f[0],m=f[1],g=c>1?[""+(a-1)/(c-1),"(y2-y1) * height_ratio","y1*"+d+" + float(y)*(height_scale)"]:["0.0","0.0","0.5 * (y1+y2) * "+d],y=g[0],v=g[1],b=g[2],w=p>1?[""+(s-1)/(p-1),"(x2-x1) * width_ratio","x1*"+m+" + float(x)*(width_scale)"]:["0.0","0.0","0.5 * (x1+x2) * "+m],x=w[0],N=w[1],S=w[2];this.userCode="\n const float height_ratio = float("+y+");\n const float width_ratio = float("+x+");\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= "+o+") {\n return;\n }\n\n float height_scale = "+v+";\n float width_scale = "+N+";\n\n float in_y = "+b+";\n if( in_y < 0.0 || in_y > "+d+" ) {\n setOutput(float("+i+"));\n return;\n }\n float in_x = "+S+";\n if( in_x < 0.0 || in_x > "+m+" ) {\n setOutput(float("+i+"));\n return;\n }\n\n vec2 sourceFracIndexRC = vec2(in_y,in_x);\n if("+h+" == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(ceil(sourceFracIndexRC));\n\n float topLeft = getImage(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getImage(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getImage(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getImage(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(floor(\n sourceFracIndexRC + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestRC.x, sourceNearestRC.y, d);\n setOutput(newValue);\n }\n }\n "},Zn=function(t,e,n){this.variableNames=["x"],this.outputShape=t;var r=t.length,i=t[t.length-1],o=n?"<":">";this.userCode="\n int getIndex(int i) {\n "+(n?"return "+i+" -i - 1;":"return i;")+"\n }\n\n void main() {\n "+xn(r)+" coords = getOutputCoords();\n int end = "+Qn(r,"coords")+";\n float val = 0.0;\n for (int i = "+i+" - 1; i >= 0; i -= 1) {\n int idx = getIndex(i);\n if (idx "+o+" end) {\n continue;\n }\n if (idx == end && "+e+") {\n continue;\n }\n "+Qn(r,"coords")+" = idx;\n val += getX("+function(t,e){if(1===t)return""+e;if(2===t)return e+".x, "+e+".y";if(3===t)return e+".x, "+e+".y, "+e+".z";if(4===t)return e+".x, "+e+".y, "+e+".z, "+e+".w";throw Error("Cumulative sum for rank "+t+" is not yet supported")}(r,"coords")+");\n }\n setOutput(val);\n }\n "};function Qn(t,e){if(1===t)return""+e;if(2===t)return e+".y";if(3===t)return e+".z";if(4===t)return e+".w";throw Error("Cumulative sum for rank "+t+" is not yet supported")}var tr=function(){function t(t,e,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=t,this.blockSize=e,this.dataFormat=n,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = "+this.getHeightCoordString()+";\n int w = "+this.getWidthCoordString()+";\n int d = "+this.getDepthCoordString()+";\n\n int in_h = h / "+e+";\n int offset_h = imod(h, "+e+");\n int in_w = w / "+e+";\n int offset_w = imod(w, "+e+");\n int offset_d = (offset_h * "+e+" + offset_w) *\n "+this.getOutputDepthSize()+";\n int in_d = d + offset_d;\n\n float result = "+this.getInputSamplingString()+";\n setOutput(result);\n }\n "}return t.prototype.getHeightCoordString=function(){return"NHWC"===this.dataFormat?"coords[1]":"coords[2]"},t.prototype.getWidthCoordString=function(){return"NHWC"===this.dataFormat?"coords[2]":"coords[3]"},t.prototype.getDepthCoordString=function(){return"NHWC"===this.dataFormat?"coords[3]":"coords[1]"},t.prototype.getOutputDepthSize=function(){return"NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},t.prototype.getInputSamplingString=function(){return"NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},t}(),er=function(t){this.variableNames=["A"];var e=ln();this.outputShape=t,this.userCode="\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n lowp vec4 encode_float(highp float v) {\n if (isNaN(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n\n void main() {\n float x = getAAtOutCoords();\n "+e.output+" = encode_float(x);\n }\n "},nr="return real * expR - imag * expI;",rr="return real * expI + imag * expR;",ir=function(t,e,n){this.variableNames=["real","imag"];var r=e[1];this.outputShape=e;var i=n?"2.0 * "+Math.PI:"-2.0 * "+Math.PI,o=n?r+".0":"1.0";this.userCode="\n const float exponentMultiplier = "+i+";\n\n float unaryOpComplex(float real, float expR, float imag, float expI) {\n "+t+"\n }\n\n float mulMatDFT(int batch, int index) {\n float indexRatio = float(index) / float("+r+");\n float exponentMultiplierTimesIndexRatio =\n exponentMultiplier * indexRatio;\n\n float result = 0.0;\n\n for (int i = 0; i < "+r+"; i++) {\n // x = (-2|2 * PI / N) * index * i;\n float x = exponentMultiplierTimesIndexRatio * float(i);\n float expR = cos(x);\n float expI = sin(x);\n float real = getReal(batch, i);\n float imag = getImag(batch, i);\n\n result +=\n unaryOpComplex(real, expR, imag, expI) / "+o+";\n }\n\n return result;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n setOutput(mulMatDFT(coords[0], coords[1]));\n }\n "},or=function(){function t(t,e){this.outputShape=[],this.variableNames=["x"],this.outputShape=t,this.userCode="\n uniform float value;\n void main() {\n // Input can be obtained from uniform value.\n setOutput(value);\n }\n "}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.valueLoc&&(e.valueLoc=n.getUniformLocationNoThrow(r,"value")),n.gl.uniform1f(e.valueLoc,t)}},t}(),ar=function(t){this.variableNames=["A"];var e=ln(),n=t[0],r=t[1];this.outputShape=t,this.userCode="\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2("+r+".0, "+n+".0);\n\n vec4 values = "+e.texture2D+"(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n setOutput(floor(value * 255.0 + 0.5));\n }\n "},sr=function(t,e,n){this.variableNames=["A","indices"];var r=t.slice();r[n]=e,this.outputShape=r,this.rank=r.length;var i=xn(this.rank),o=function(t,e){var n=t.length;if(n>4)throw Error("Gather for rank "+n+" is not yet supported");if(1===n)return"int(getIndices(resRC))";for(var r=["resRC.x","resRC.y","resRC.z","resRC.w"],i=[],o=0;o<t.length;o++)o===e?i.push("int(getIndices("+r[o]+"))"):i.push(""+r[o]);return i.join()}(t,n);this.userCode="\n void main() {\n "+i+" resRC = getOutputCoords();\n setOutput(getA("+o+"));\n }\n "};var ur,lr,cr=function(t,e,n){this.sliceDim=t,this.strides=e,this.variableNames=["x","indices"],this.outputShape=n;var r=xn(e.length),i=xn(n.length),o=this.sliceDim>1?"strides[j]":"strides";this.userCode="\n "+r+" strides = "+r+"("+this.strides+");\n void main() {\n "+i+" coords = getOutputCoords();\n int flattenIndex = 0;\n for (int j = 0; j < "+this.sliceDim+"; j++) {\n int index = round(getIndices(coords[0], j));\n flattenIndex += index * "+o+";\n }\n setOutput(getX(flattenIndex, coords[1]));\n }\n "};function pr(t,e){return[e,t]}function hr(t,e){return t*e}function fr(t,e,n){var r=function(t,e){if(t%e!=0)throw new Error("unpackedSize ("+t+") must be a multiple of "+e);return t/e}(t.length,n);if(e.length<r)throw new Error("matrix length ("+e.length+") must be >= "+r);for(var i=0,o=0;o<t.length;o+=n)e[i++]=t[o]}function dr(t,e){return[Math.max(1,Math.ceil(e/2)),Math.max(1,Math.ceil(t/2))]}function mr(t,e){var n=dr(t,e);return n[0]*n[1]*4}function gr(t,e,n,r,i){var o=n*r;if(i.length<o)throw new Error("matrix length ("+i.length+") must be >= "+o);for(var a=r%2==1,s=n%2==1,u=Math.floor(r/2),l=Math.floor(n/2),c=Math.ceil(r/2),h=c*Math.ceil(n/2),f=p(n)*p(r),d=0;d<e;d++){for(var m=d*n*r,g=d*f,y=a?4:0,v=r+(a?1:0),b=g,w=m,x=m+r,N=0;N<l;++N){for(var S=0;S<u;++S)i[w++]=t[b++],i[w++]=t[b++],i[x++]=t[b++],i[x++]=t[b++];b+=y,w+=v,x+=v}if(a){b=g+4*(c-1);var C=m+r-1;for(y=4*c,v=2*r,N=0;N<l;++N)i[C]=t[b],i[C+r]=t[b+2],b+=y,C+=v}if(s){for(b=g+4*(h-c),C=m+(n-1)*r,S=0;S<u;++S)i[C++]=t[b++],i[C++]=t[b++],b+=2;a&&(i[m+n*r-1]=t[b])}}return i}function yr(t,e){var n=e();return wr(t),n}!function(t){t[t.RENDER=0]="RENDER",t[t.UPLOAD=1]="UPLOAD",t[t.PIXELS=2]="PIXELS",t[t.DOWNLOAD=3]="DOWNLOAD"}(ur||(ur={})),function(t){t[t.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",t[t.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",t[t.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",t[t.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",t[t.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"}(lr||(lr={}));var vr=!1;function br(t){vr=t}function wr(t){if(vr){var e=t.getError();if(e!==t.NO_ERROR)throw new Error("WebGL Error: "+Cr(t,e))}}var xr=5.96e-8,Nr=65504;function Sr(t){return!!(Bt.get("WEBGL_RENDER_FLOAT32_ENABLED")||0===t||xr<Math.abs(t)&&Math.abs(t)<Nr)}function Cr(t,e){switch(e){case t.NO_ERROR:return"NO_ERROR";case t.INVALID_ENUM:return"INVALID_ENUM";case t.INVALID_VALUE:return"INVALID_VALUE";case t.INVALID_OPERATION:return"INVALID_OPERATION";case t.INVALID_FRAMEBUFFER_OPERATION:return"INVALID_FRAMEBUFFER_OPERATION";case t.OUT_OF_MEMORY:return"OUT_OF_MEMORY";case t.CONTEXT_LOST_WEBGL:return"CONTEXT_LOST_WEBGL";default:return"Unknown error code "+e}}function Er(t,e){return Kr(t,function(){return t.getExtension(e)},'Extension "'+e+'" not supported on this browser.')}function Ir(t,e){var n=Kr(t,function(){return t.createShader(t.VERTEX_SHADER)},"Unable to create vertex WebGLShader.");if(yr(t,function(){return t.shaderSource(n,e)}),yr(t,function(){return t.compileShader(n)}),!1===t.getShaderParameter(n,t.COMPILE_STATUS))throw console.log(t.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function kr(t,e){var n=Kr(t,function(){return t.createShader(t.FRAGMENT_SHADER)},"Unable to create fragment WebGLShader.");if(yr(t,function(){return t.shaderSource(n,e)}),yr(t,function(){return t.compileShader(n)}),!1===t.getShaderParameter(n,t.COMPILE_STATUS))throw function(t,e){var n=Ar.exec(e);if(null==n)return console.log("Couldn't parse line number in error: "+e),void console.log(t);for(var r=+n[1],i=t.split("\n"),o=i.length.toString().length+2,a=i.map(function(t,e){return S((e+1).toString(),o)+t}),s=0,u=0;u<a.length;u++)s=Math.max(a[u].length,s);var l=a.slice(0,r-1),c=a.slice(r-1,r),p=a.slice(r);console.log(l.join("\n")),console.log(e.split("\n")[0]),console.log("%c "+S(c[0],s),"border:1px solid red; background-color:#e3d2d2; color:#a61717"),console.log(p.join("\n"))}(e,t.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var Ar=/ERROR: [0-9]+:([0-9]+):/g;function Tr(t){return Kr(t,function(){return t.createProgram()},"Unable to create WebGLProgram.")}function Rr(t,e){if(yr(t,function(){return t.linkProgram(e)}),!1===t.getProgramParameter(e,t.LINK_STATUS))throw console.log(t.getProgramInfoLog(e)),new Error("Failed to link vertex and fragment shaders.")}function Dr(t,e){if(yr(t,function(){return t.validateProgram(e)}),!1===t.getProgramParameter(e,t.VALIDATE_STATUS))throw console.log(t.getProgramInfoLog(e)),new Error("Shader program validation failed.")}function Or(t,e){var n=Kr(t,function(){return t.createBuffer()},"Unable to create WebGLBuffer");return yr(t,function(){return t.bindBuffer(t.ARRAY_BUFFER,n)}),yr(t,function(){return t.bufferData(t.ARRAY_BUFFER,e,t.STATIC_DRAW)}),n}function _r(t,e){var n=Kr(t,function(){return t.createBuffer()},"Unable to create WebGLBuffer");return yr(t,function(){return t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)}),yr(t,function(){return t.bufferData(t.ELEMENT_ARRAY_BUFFER,e,t.STATIC_DRAW)}),n}function Mr(){return 2===Bt.get("WEBGL_VERSION")?1:4}function Lr(t){return Kr(t,function(){return t.createTexture()},"Unable to create WebGLTexture.")}function Fr(t,e){var n=Bt.get("WEBGL_MAX_TEXTURE_SIZE");if(t<=0||e<=0){var r="["+t+"x"+e+"]";throw new Error("Requested texture size "+r+" is invalid.")}if(t>n||e>n)throw r="["+t+"x"+e+"]",new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU ["+n+"x"+n+"].")}function zr(t){return Kr(t,function(){return t.createFramebuffer()},"Unable to create WebGLFramebuffer.")}function Pr(t,e,n,r,i,o,a){var s=t.getAttribLocation(e,n);return-1!==s&&(yr(t,function(){return t.bindBuffer(t.ARRAY_BUFFER,r)}),yr(t,function(){return t.vertexAttribPointer(s,i,t.FLOAT,!1,o,a)}),yr(t,function(){return t.enableVertexAttribArray(s)}),!0)}function Br(t,e,n){$r(t,n),yr(t,function(){return t.activeTexture(t.TEXTURE0+n)}),yr(t,function(){return t.bindTexture(t.TEXTURE_2D,e)})}function Ur(t,e,n){return Kr(t,function(){return t.getUniformLocation(e,n)},'uniform "'+n+'" not present in program.')}function Wr(t,e,n){return t.getUniformLocation(e,n)}function Vr(t,e,n,r,i){yr(t,function(){return Br(t,n,i)}),yr(t,function(){return t.uniform1i(r,i)})}function jr(t,e,n){yr(t,function(){return t.bindFramebuffer(t.FRAMEBUFFER,n)}),yr(t,function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0)})}function qr(t,e){yr(t,function(){return t.bindFramebuffer(t.FRAMEBUFFER,e)}),yr(t,function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,null,0)})}function Gr(t){var e=t.checkFramebufferStatus(t.FRAMEBUFFER);if(e!==t.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+Hr(t,e))}function Hr(t,e){switch(e){case t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case t.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error "+e}}function Kr(t,e,n){var r=yr(t,function(){return e()});if(null==r)throw new Error(n);return r}function $r(t,e){var n=t.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=e+t.TEXTURE0;if(r<t.TEXTURE0||r>n)throw new Error("textureUnit must be in [gl.TEXTURE0, gl.TEXTURE"+n+"].")}function Xr(t,e){return void 0===e&&(e=2),v(t.slice(0,t.length-e))}function Yr(t){if(0===t.length)throw Error("Cannot get rows and columns of an empty shape array.");return[t.length>1?t[t.length-2]:1,t[t.length-1]]}function Jr(t,e){var n;void 0===e&&(e=!1);var r=Bt.get("WEBGL_MAX_TEXTURE_SIZE");if(e&&(r*=2,1===(t=t.map(function(e,n){return n>=t.length-2?p(t[n]):t[n]})).length&&(t=[2,t[0]])),2!==t.length){var i=k(t);t=i.newShape}var o=v(t);if(t.length<=1&&o<=r)return[1,o];if(2===t.length&&t[0]<=r&&t[1]<=r)return t;if(3===t.length&&t[0]*t[1]<=r&&t[2]<=r)return[t[0]*t[1],t[2]];if(3===t.length&&t[0]<=r&&t[1]*t[2]<=r)return[t[0],t[1]*t[2]];if(4===t.length&&t[0]*t[1]*t[2]<=r&&t[3]<=r)return[t[0]*t[1]*t[2],t[3]];if(4===t.length&&t[0]<=r&&t[1]*t[2]*t[3]<=r)return[t[0],t[1]*t[2]*t[3]];if(e){var a=Xr(t),s=2,u=2;return t.length&&(s=(n=Yr(t))[0],u=n[1]),N(o=a*(s/2)*(u/2)).map(function(t){return 2*t})}return N(o)}function Zr(t){return t%2==0}function Qr(t,e){if(b(t=t.slice(-2),e=e.slice(-2)))return!0;if(!t.length||!e.length)return!0;if(0===t[0]||0===t[1]||0===e[0]||0===e[1])return!0;if(t.length!==e.length){var n=t.slice(-1)[0],r=e.slice(-1)[0];if(n===r)return!0;if(Zr(n)&&Zr(r)&&(1===t[0]||1===e[0]))return!0}return t[1]===e[1]&&Zr(t[0])&&Zr(e[0])}var ti=Object.freeze({callAndCheck:yr,enableDebugWebGLErrorChecking:br,checkWebGLError:wr,canBeRepresented:Sr,getWebGLErrorMessage:Cr,getExtensionOrThrow:Er,createVertexShader:Ir,createFragmentShader:kr,createProgram:Tr,linkProgram:Rr,validateProgram:Dr,createStaticVertexBuffer:Or,createStaticIndexBuffer:_r,getNumChannels:Mr,createTexture:Lr,validateTextureSize:Fr,createFramebuffer:zr,bindVertexBufferToProgramAttribute:Pr,bindTextureUnit:Br,unbindTextureUnit:function(t,e){$r(t,e),yr(t,function(){return t.activeTexture(t.TEXTURE0+e)}),yr(t,function(){return t.bindTexture(t.TEXTURE_2D,null)})},getProgramUniformLocationOrThrow:Ur,getProgramUniformLocation:Wr,bindTextureToProgramUniformSampler:Vr,bindCanvasToFramebuffer:function(t){yr(t,function(){return t.bindFramebuffer(t.FRAMEBUFFER,null)}),yr(t,function(){return t.viewport(0,0,t.canvas.width,t.canvas.height)}),yr(t,function(){return t.scissor(0,0,t.canvas.width,t.canvas.height)})},bindColorTextureToFramebuffer:jr,unbindColorTextureFromFramebuffer:qr,validateFramebuffer:Gr,getFramebufferErrorMessage:Hr,getBatchDim:Xr,getRowsCols:Yr,getTextureShapeFromLogicalShape:Jr,isReshapeFree:Qr});function ei(t){var e=ln();return Ir(t,e.version+"\n precision highp float;\n "+e.attribute+" vec3 clipSpacePos;\n "+e.attribute+" vec2 uv;\n "+e.varyingVs+" vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }")}function ni(t){return Or(t,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function ri(t){return _r(t,new Uint16Array([0,1,2,2,1,3]))}function ii(t,e){var n,r,i,o,a,s,u,l,c=t;return 2===Bt.get("WEBGL_VERSION")?(n=c.R32F,r=c.R16F,i=c.RGBA16F,o=c.RGBA32F,a=c.RED,s=4,u=1,l=c.HALF_FLOAT):(n=t.RGBA,r=t.RGBA,i=t.RGBA,o=c.RGBA,a=t.RGBA,s=4,u=4,l=null!=e?e.HALF_FLOAT_OES:null),{internalFormatFloat:n,internalFormatHalfFloat:r,internalFormatPackedHalfFloat:i,internalFormatPackedFloat:o,textureFormatFloat:a,downloadTextureFormat:t.RGBA,downloadUnpackNumChannels:s,defaultNumChannels:u,textureTypeHalfFloat:l}}function oi(t,e,n,r,i,o){Fr(e,n);var a=Lr(t),s=t.TEXTURE_2D;return yr(t,function(){return t.bindTexture(s,a)}),yr(t,function(){return t.texParameteri(s,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE)}),yr(t,function(){return t.texParameteri(s,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)}),yr(t,function(){return t.texParameteri(s,t.TEXTURE_MIN_FILTER,t.NEAREST)}),yr(t,function(){return t.texParameteri(s,t.TEXTURE_MAG_FILTER,t.NEAREST)}),yr(t,function(){return t.texImage2D(s,0,r,e,n,0,i,o,null)}),yr(t,function(){return t.bindTexture(t.TEXTURE_2D,null)}),a}function ai(t,e,n,r){var i=pr(e,n);return oi(t,i[0],i[1],r.internalFormatFloat,r.textureFormatFloat,t.FLOAT)}function si(t,e,n,r){var i=pr(e,n);return oi(t,i[0],i[1],r.internalFormatHalfFloat,r.textureFormatFloat,r.textureTypeHalfFloat)}function ui(t,e,n,r){var i=pr(e,n);return oi(t,i[0],i[1],t.RGBA,t.RGBA,t.UNSIGNED_BYTE)}function li(t,e,n,r){var i=dr(e,n);return oi(t,i[0],i[1],r.internalFormatPackedFloat,t.RGBA,t.FLOAT)}function ci(t,e,n,r){var i=dr(e,n);return oi(t,i[0],i[1],r.internalFormatPackedHalfFloat,t.RGBA,r.textureTypeHalfFloat)}function pi(t,e,n){return yr(t,function(){return t.bindBuffer(t.ARRAY_BUFFER,n)}),Pr(t,e,"clipSpacePos",n,3,20,0)&&Pr(t,e,"uv",n,2,20,12)}function hi(t,e,n){yr(t,function(){return t.bindTexture(t.TEXTURE_2D,e)}),yr(t,function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n)}),yr(t,function(){return t.bindTexture(t.TEXTURE_2D,null)})}function fi(t,e,n,r,i,o){Fr(n,r),yr(t,function(){return t.bindTexture(t.TEXTURE_2D,e)}),yr(t,function(){return t.texSubImage2D(t.TEXTURE_2D,0,0,0,n,r,o,t.FLOAT,i)}),yr(t,function(){return t.bindTexture(t.TEXTURE_2D,null)})}function di(t,e,n,r,i,o,a){var s,u=pr(n,r),l=u[0],c=u[1],p=n*r;1===a.defaultNumChannels&&p===i.length?s=i:function(t,e,n){var r=hr(t.length,n);if(e.length<r)throw new Error("unpackedArray length ("+e.length+") must be >= "+r);for(var i=0,o=0;o<t.length;++o)e[i]=t[o],i+=n}(i,s=new Float32Array(p*o),o),fi(t,e,l,c,s,a.textureFormatFloat)}function mi(t,e,n,r,i,o,a,s,u){var l=dr(o,a),c=l[0],h=l[1],f=new Float32Array(mr(o,a));(function(t,e,n,r,i){for(var o=r%2==1,a=n%2==1,s=Math.floor(r/2),u=Math.floor(n/2),l=Math.ceil(r/2),c=l*Math.ceil(n/2),h=p(n)*p(r),f=0;f<e;f++){for(var d=f*n*r,m=f*h,g=o?4:0,y=r,v=m,b=0;b<u;++b){for(var w=2*b*r,x=0;x<s;++x){var N=d+w+2*x;i[v]=t[N],i[v+1]=t[N+1],i[v+2]=t[N+y],i[v+3]=t[N+y+1],v+=4}v+=g}if(o){N=d+r-1,v=m+4*(l-1);var S=2*r;for(g=4*l,b=0;b<u;++b)i[v]=t[N],i[v+2]=t[N+r],N+=S,v+=g}if(a){for(N=d+(n-1)*r,v=m+4*(c-l),x=0;x<s;++x)i[v++]=t[N++],i[v++]=t[N++],v+=2;o&&a&&(i[m+h-4]=t[N])}}})(s,n,r,i,f),fi(t,e,c,h,f,t.RGBA)}function gi(t,e,n,r,i){var o=e;if(2===Bt.get("WEBGL_VERSION")){var a=t,s=a.createBuffer();yr(t,function(){return t.bindBuffer(a.PIXEL_PACK_BUFFER,s)});var u=4*hr(n*r,i.downloadUnpackNumChannels);yr(t,function(){return t.bufferData(a.PIXEL_PACK_BUFFER,u,a.STREAM_READ)}),yr(t,function(){return a.readPixels(0,0,r,n,t.RGBA,t.FLOAT,0)}),yr(t,function(){return t.bindBuffer(a.PIXEL_PACK_BUFFER,null)}),o=s}return o}function yi(t,e,n,r,i){var o=t,a=new Float32Array(hr(n*r,i.downloadUnpackNumChannels));o.bindBuffer(o.PIXEL_PACK_BUFFER,e),o.getBufferSubData(o.PIXEL_PACK_BUFFER,0,a),o.bindBuffer(o.PIXEL_PACK_BUFFER,null);var s=new Float32Array(n*r);return fr(a,s,i.downloadUnpackNumChannels),s}function vi(t,e,n,r){var i=pr(e,n),o=i[0],a=i[1],s=new Float32Array(hr(e*n,r.downloadUnpackNumChannels));yr(t,function(){return t.readPixels(0,0,o,a,r.downloadTextureFormat,t.FLOAT,s)});var u=new Float32Array(e*n);return fr(s,u,r.downloadUnpackNumChannels),u}function bi(t,e,n,r){var i=pr(e,n),o=i[0],a=i[1],s=new Uint8Array(hr(e*n,4));return yr(t,function(){return t.readPixels(0,0,o,a,r.downloadTextureFormat,t.UNSIGNED_BYTE,s)}),new Float32Array(s.buffer)}function wi(t,e,n,r,i,o,a,s){var u=t,l=new Float32Array(mr(o,a));u.bindBuffer(u.PIXEL_PACK_BUFFER,e),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,l),u.bindBuffer(u.PIXEL_PACK_BUFFER,null);var c=new Float32Array(v([n,r,i]));return gr(l,n,r,i,c),c}function xi(t,e,n,r,i,o,a){var s=dr(i,o),u=s[0],l=s[1],c=new Float32Array(mr(i,o));yr(t,function(){return t.readPixels(0,0,u,l,t.RGBA,t.FLOAT,c)});var p=new Float32Array(v([e,n,r]));return gr(c,e,n,r,p)}var Ni=Object.freeze({createVertexShader:ei,createVertexBuffer:ni,createIndexBuffer:ri,getTextureConfig:ii,createFloat32MatrixTexture:ai,createFloat16MatrixTexture:si,createUnsignedBytesMatrixTexture:ui,createPackedMatrixTexture:li,createFloat16PackedMatrixTexture:ci,bindVertexProgramAttributeStreams:pi,uploadPixelDataToTexture:hi,uploadMatrixToTexture:di,uploadMatrixToPackedTexture:mi,maybeCreateBufferFromOutputTexture:gi,downloadFloat32MatrixFromBuffer:yi,downloadFloat32MatrixFromOutputTexture:vi,downloadByteEncodedFloatMatrixFromOutputTexture:bi,downloadPackedMatrixFromBuffer:wi,downloadMatrixFromPackedOutputTexture:xi}),Si=function(){function t(t){this.outputTexture=null,this.program=null,this.disposed=!1,this.autoDebugValidate=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];var e=Bt.get("WEBGL_VERSION");null!=t?(this.gl=t,function(t,e){a[t]=e}(e,t)):this.gl=u(e),1===Bt.get("WEBGL_VERSION")?(this.textureFloatExtension=Er(this.gl,"OES_texture_float"),this.colorBufferFloatExtension=this.gl.getExtension("WEBGL_color_buffer_float"),Bt.get("WEBGL_RENDER_FLOAT32_ENABLED")||(this.textureHalfFloatExtension=Er(this.gl,"OES_texture_half_float"),this.colorBufferHalfFloatExtension=this.gl.getExtension("EXT_color_buffer_half_float"))):this.colorBufferFloatExtension=Er(this.gl,"EXT_color_buffer_float"),this.vertexBuffer=ni(this.gl),this.indexBuffer=ri(this.gl),this.framebuffer=zr(this.gl),this.textureConfig=ii(this.gl,this.textureHalfFloatExtension)}return t.prototype.dispose=function(){var t=this;if(!this.disposed){null!=this.program&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),null!=this.outputTexture&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");var e=this.gl;yr(e,function(){return e.finish()}),yr(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)}),yr(e,function(){return e.deleteFramebuffer(t.framebuffer)}),yr(e,function(){return e.bindBuffer(e.ARRAY_BUFFER,null)}),yr(e,function(){return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)}),yr(e,function(){return e.deleteBuffer(t.indexBuffer)}),this.disposed=!0}},t.prototype.enableAutomaticDebugValidation=function(t){this.autoDebugValidate=t,br(t)},t.prototype.createFloat32MatrixTexture=function(t,e){return this.throwIfDisposed(),ai(this.gl,t,e,this.textureConfig)},t.prototype.createFloat16MatrixTexture=function(t,e){return this.throwIfDisposed(),si(this.gl,t,e,this.textureConfig)},t.prototype.createUnsignedBytesMatrixTexture=function(t,e){return this.throwIfDisposed(),ui(this.gl,t,e,this.textureConfig)},t.prototype.uploadPixelDataToTexture=function(t,e){this.throwIfDisposed(),hi(this.gl,t,e)},t.prototype.createFloat16PackedMatrixTexture=function(t,e){return this.throwIfDisposed(),ci(this.gl,t,e,this.textureConfig)},t.prototype.createPackedMatrixTexture=function(t,e){return this.throwIfDisposed(),li(this.gl,t,e,this.textureConfig)},t.prototype.deleteMatrixTexture=function(t){var e=this;this.throwIfDisposed(),this.outputTexture===t&&(qr(this.gl,this.framebuffer),this.outputTexture=null),yr(this.gl,function(){return e.gl.deleteTexture(t)})},t.prototype.uploadMatrixToTexture=function(t,e,n,r){this.throwIfDisposed();var i=Mr();return di(this.gl,t,e,n,r,i,this.textureConfig)},t.prototype.uploadMatrixToPackedTexture=function(t,e,n,r,i,o,a){return this.throwIfDisposed(),mi(this.gl,t,e,n,r,i,o,a,this.textureConfig)},t.prototype.downloadFloat32MatrixFromOutputTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,function(){return vi(r.gl,e,n,r.textureConfig)})},t.prototype.downloadByteEncodedFloatMatrixFromOutputTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,function(){return bi(r.gl,e,n,r.textureConfig)})},t.prototype.downloadPackedMatrixFromBuffer=function(t,e,n,r,i,o){return wi(this.gl,t,e,n,r,i,o,this.textureConfig)},t.prototype.downloadFloat32MatrixFromBuffer=function(t,e,n){return yi(this.gl,t,e,n,this.textureConfig)},t.prototype.maybeCreateBufferFromTexture=function(t,e,n){this.bindTextureToFrameBuffer(t);var r=gi(this.gl,t,e,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r},t.prototype.createAndWaitForFence=function(){var t=this.createFence(this.gl);return this.pollFence(t)},t.prototype.createFence=function(t){var e,n,r=this;if(Bt.get("WEBGL_FENCE_API_ENABLED")){var i=t,o=i.fenceSync(i.SYNC_GPU_COMMANDS_COMPLETE,0);t.flush(),n=function(){var t=i.clientWaitSync(o,0,0);return t===i.ALREADY_SIGNALED||t===i.CONDITION_SATISFIED},e=o}else Bt.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(e=this.beginQuery(),this.endQuery(),n=function(){return r.isQueryAvailable(e,Bt.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):n=function(){return!0};return{query:e,isFencePassed:n}},t.prototype.downloadMatrixFromPackedTexture=function(t,e,n,r,i,o){var a=this;return this.downloadMatrixDriver(t,function(){return xi(a.gl,e,n,r,i,o,a.textureConfig)})},t.prototype.createProgram=function(t){this.throwIfDisposed();var e=this.gl,n=kr(e,t),r=ei(e),i=Tr(e);return yr(e,function(){return e.attachShader(i,r)}),yr(e,function(){return e.attachShader(i,n)}),Rr(e,i),this.autoDebugValidate&&Dr(e,i),this.vertexAttrsAreBound||(this.setProgram(i),this.vertexAttrsAreBound=pi(e,this.program,this.vertexBuffer)),i},t.prototype.deleteProgram=function(t){var e=this;this.throwIfDisposed(),t===this.program&&(this.program=null),null!=t&&yr(this.gl,function(){return e.gl.deleteProgram(t)})},t.prototype.setProgram=function(t){var e=this;this.throwIfDisposed(),this.program=t,null!=this.program&&this.autoDebugValidate&&Dr(this.gl,this.program),yr(this.gl,function(){return e.gl.useProgram(t)})},t.prototype.getUniformLocation=function(t,e,n){return void 0===n&&(n=!0),this.throwIfDisposed(),n?Ur(this.gl,t,e):Wr(this.gl,t,e)},t.prototype.getAttributeLocation=function(t,e){var n=this;return this.throwIfDisposed(),yr(this.gl,function(){return n.gl.getAttribLocation(t,e)})},t.prototype.getUniformLocationNoThrow=function(t,e){return this.throwIfDisposed(),this.gl.getUniformLocation(t,e)},t.prototype.setInputMatrixTexture=function(t,e,n){this.throwIfDisposed(),this.throwIfNoProgram(),Vr(this.gl,this.program,t,e,n)},t.prototype.setOutputMatrixTexture=function(t,e,n){this.setOutputMatrixTextureDriver(t,n,e)},t.prototype.setOutputPackedMatrixTexture=function(t,e,n){this.throwIfDisposed();var r=dr(e,n),i=r[0],o=r[1];this.setOutputMatrixTextureDriver(t,i,o)},t.prototype.setOutputMatrixWriteRegion=function(t,e,n,r){this.setOutputMatrixWriteRegionDriver(n,t,r,e)},t.prototype.setOutputPackedMatrixWriteRegion=function(t,e,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},t.prototype.debugValidate=function(){null!=this.program&&Dr(this.gl,this.program),Gr(this.gl)},t.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var t=this.gl;this.autoDebugValidate&&this.debugValidate(),yr(t,function(){return t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0)})},t.prototype.blockUntilAllProgramsCompleted=function(){var t=this;this.throwIfDisposed(),yr(this.gl,function(){return t.gl.finish()})},t.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=Er(this.gl,2===Bt.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},t.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},t.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},t.prototype.beginQuery=function(){if(2===Bt.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var t=this.gl,e=this.getQueryTimerExtensionWebGL2(),n=t.createQuery();return t.beginQuery(e.TIME_ELAPSED_EXT,n),n}var r=this.getQueryTimerExtensionWebGL1(),i=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,i),i},t.prototype.endQuery=function(){if(2!==Bt.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var t=this.getQueryTimerExtensionWebGL1();t.endQueryEXT(t.TIME_ELAPSED_EXT)}else{var e=this.gl,n=this.getQueryTimerExtensionWebGL2();e.endQuery(n.TIME_ELAPSED_EXT)}},t.prototype.waitForQueryAndGetTime=function(t){return i(this,void 0,void 0,function(){var e=this;return o(this,function(n){switch(n.label){case 0:return[4,C(function(){return e.disposed||e.isQueryAvailable(t,Bt.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))})];case 1:return n.sent(),[2,this.getQueryTime(t,Bt.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}})})},t.prototype.getQueryTime=function(t,e){if(0===e)return null;if(2===e){var n=this.gl;return n.getQueryParameter(t,n.QUERY_RESULT)/1e6}var r=this.getQueryTimerExtensionWebGL1();return r.getQueryObjectEXT(t,r.QUERY_RESULT_EXT)/1e6},t.prototype.isQueryAvailable=function(t,e){if(0===e)return!0;if(2===e){var n=this.gl,r=this.getQueryTimerExtensionWebGL2(),i=n.getQueryParameter(t,n.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),i&&!this.disjoint}return i=(r=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(t,r.QUERY_RESULT_AVAILABLE_EXT),null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),i&&!this.disjoint},t.prototype.pollFence=function(t){var e=this;return new Promise(function(n){e.addItemToPoll(function(){return t.isFencePassed()},function(){return n()})})},t.prototype.pollItems=function(){for(var t=function(t){for(var e=0;e<t.length&&t[e]();++e);return e-1}(this.itemsToPoll.map(function(t){return t.isDoneFn})),e=0;e<=t;++e)(0,this.itemsToPoll[e].resolveFn)();this.itemsToPoll=this.itemsToPoll.slice(t+1)},t.prototype.addItemToPoll=function(t,e){var n=this;this.itemsToPoll.push({isDoneFn:t,resolveFn:e}),this.itemsToPoll.length>1||C(function(){return n.pollItems(),0===n.itemsToPoll.length})},t.prototype.bindTextureToFrameBuffer=function(t){this.throwIfDisposed(),jr(this.gl,t,this.framebuffer),this.autoDebugValidate&&Gr(this.gl)},t.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(jr(this.gl,this.outputTexture,this.framebuffer),this.autoDebugValidate&&Gr(this.gl)):qr(this.gl,this.framebuffer)},t.prototype.downloadMatrixDriver=function(t,e){this.bindTextureToFrameBuffer(t);var n=e();return this.unbindTextureToFrameBuffer(),n},t.prototype.setOutputMatrixTextureDriver=function(t,e,n){this.throwIfDisposed();var r=this.gl;jr(r,t,this.framebuffer),this.autoDebugValidate&&Gr(r),this.outputTexture=t,yr(r,function(){return r.viewport(0,0,e,n)}),yr(r,function(){return r.scissor(0,0,e,n)})},t.prototype.setOutputMatrixWriteRegionDriver=function(t,e,n,r){var i=this;this.throwIfDisposed(),yr(this.gl,function(){return i.gl.scissor(t,e,n,r)})},t.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},t.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error("No GPU program is currently set.")},t}();function Ci(t,e){if(t.length!==e.length)throw Error("Binary was compiled with "+t.length+" inputs, but was executed with "+e.length+" inputs");t.forEach(function(t,n){var r=t.logicalShape,i=e[n],o=i.shape;if(!b(r,o))throw Error("Binary was compiled with different shapes than the current args. Shapes "+r+" and "+o+" must match");if(!t.isUniform||!i.isUniform){var a=t.texShape,s=i.isUniform?null:i.texData.texShape;if(!b(a,s))throw Error("Binary was compiled with different texture shapes than the current args. Shape "+a+" and "+s+" must match")}})}var Ei=function(t,e,n){this.variableNames=["A"],this.outputShape=t;var r=n.filterWidth,i=n.inChannels,o=n.strideWidth,a=n.strideHeight,s=n.padInfo,u=n.outWidth,l=n.dilationWidth,c=n.dilationHeight,p=s.left,h=s.top,f=i*r,d=ln();this.userCode="\n void main() {\n ivec2 rc = getOutputCoords();\n\n vec4 result = vec4(0);\n\n for(int row=0; row<=1; row++) {\n for(int col=0; col<=1; col++) {\n int blockIndex = rc.y + col;\n int pos = rc.x + row;\n\n if(blockIndex >= "+t[1]+" || pos >= "+t[0]+") continue;\n\n int offsetY = int(blockIndex / ("+u+")) * "+a+" - "+h+";\n int d0 = offsetY + "+c+" * (pos / "+f+");\n\n if(d0 >= "+e[0]+" || d0 < 0) continue;\n\n int offsetX = int(mod(float(blockIndex), "+u+".) * "+o+". - "+p+".);\n int d1 = offsetX + "+l+" * (int(mod(float(pos), "+f+".) / "+i+".));\n\n if(d1 >= "+e[1]+" || d1 < 0) continue;\n\n result[row * 2 + col] = getA(d0, d1, int(mod(float(pos), "+i+".)));\n }\n }\n\n "+d.output+" = result;\n }\n "},Ii=function(t,e,n,r,i){this.variableNames=["x"],this.outputShape=[];var o,a=e,s=t[3]-1;this.outputShape=t;var u="float("+n+") + float("+r+") * sum";o=.5===i?"inversesqrt("+u+")":1===i?"1.0/("+u+")":"exp(log("+u+") * float(-"+i+"));",this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n int d = coords[3];\n float x = getX(b, r, c, d);\n float sum = 0.0;\n for (int j = -"+a+"; j <= "+a+"; j++) {\n int idx = d + j;\n if (idx >= 0 && idx <= "+s+") {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * "+o+";\n setOutput(val);\n }\n "},ki=function(t,e,n,r,i){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=t,this.depth=t[3],this.depthRadius=e,this.bias=n,this.alpha=r,this.beta=i,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < "+this.depth+"; ++d) {\n int depthBegin = int(max(0.0, float(d - "+e+")));\n int depthEnd = int(min(float("+this.depth+"),\n float(d + "+e+" + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = "+this.depth+";\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float("+r+") * norm + float("+n+");\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float("+r+")\n * float("+i+")\n * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * "+i+");\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n "},Ai=function(t){this.variableNames=["dy","maxPos"],this.outputShape=t.inShape;var e=t.strideHeight,n=t.strideWidth,r=t.dilationHeight,i=t.effectiveFilterHeight,o=t.effectiveFilterWidth,a=i-1-t.padInfo.top,s=o-1-t.padInfo.left,u=i*o-1;this.userCode="\n const ivec2 pads = ivec2("+a+", "+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+i+";\n wR += "+r+") {\n float dyR = float(dyRCorner + wR) / "+e+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+o+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+n+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = "+u+" - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * "+o+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n "},Ti=function(t,e,n,r,i,o){void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===i&&(i=!1),void 0===o&&(o=null),this.variableNames=["matrixA","matrixB"],this.usesPackedTextures=!0,this.outputShape=e;var a=n?t[1]:t[2],s=Math.ceil(a/2),u=n?"i * 2, rc.y":"rc.y, i * 2",l=r?"rc.z, i * 2":"i * 2, rc.z",c=n?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],p=r?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],h="",f="";o&&(h="vec4 activation(vec4 x) {\n "+o+"\n }",f="result = activation(result);");var d=i?"result += getBiasAtOutCoords();":"";i&&this.variableNames.push("bias"),this.userCode="\n "+h+"\n\n const float sharedDimension = "+s+".0;\n\n vec4 dot2x2ARowBCol(ivec3 rc) {\n vec4 result = vec4(0);\n for (int i = 0; i < "+s+"; i++) {\n vec4 a = getMatrixA(rc.x, "+u+");\n vec4 b = getMatrixB(rc.x, "+l+");\n\n result += ("+c[0]+" * "+p[0]+") + ("+c[1]+" * "+p[1]+");\n }\n return result;\n }\n\n void main() {\n ivec3 rc = getOutputCoords();\n vec4 result = dot2x2ARowBCol(rc);\n\n "+d+"\n\n "+f+"\n\n setOutput(result);\n }\n "},Ri=function(){function t(t,e,n){this.variableNames=["probs"],this.outputShape=[t,n],this.userCode="\n uniform float seed;\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < "+(e-1)+"; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float("+(e-1)+"));\n }\n "}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.seedLoc&&(e.seedLoc=n.getUniformLocation(r,"seed")),n.gl.uniform1f(e.seedLoc,t)}},t}(),Di=function(t,e,n,r){this.variableNames=["indices"],this.outputShape=[t,e],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float("+r+"), float("+n+"),\n float(index == coords.y)));\n }\n "},Oi=function(t){this.variableNames=["A"],this.isPackShader=!0,this.outputShape=t;var e=t.length;if(0===e)this.userCode="\n void main() {\n setOutput(vec4(getA(), 0., 0., 0.));\n }\n ";else{var n=on("rc",e),r=xn(e),i=function(t,e,n){if(1===t)return"rc > "+e[0];for(var r="",i=t-2;i<t;i++)r+=n[i]+" >= "+e[i],i<t-1&&(r+="||");return r}(e,t,n),o=function(t,e,n,r){if(1===t)return"";var i=r.slice(-2);return"\n int r = "+i[0]+";\n int c = "+i[1]+";\n int rp1 = r + 1;\n int cp1 = c + 1;\n\n bool cEdge = cp1 >= "+e+";\n bool rEdge = rp1 >= "+n+";\n "}(e,t[t.length-1],t[t.length-2],n),a=function(t,e){var n=t.length,r=function(t,e){for(var n=[],r=0;r<=1;r++)for(var i=0;i<=1;i++){for(var o=(0===r?"r":"rp1")+", "+(0===i?"c":"cp1"),a=2;a<t;a++)o=e[e.length-1-a]+","+o;n.push(o)}return n}(n,e);return 1===n?"getA(rc),\n rc + 1 >= "+t[0]+" ? 0. : getA(rc + 1),\n 0, 0":"getA("+r[0]+"),\n cEdge ? 0. : getA("+r[1]+"),\n rEdge ? 0. : getA("+r[2]+"),\n rEdge || cEdge ? 0. : getA("+r[3]+")"}(t,n);this.userCode="\n void main() {\n "+r+" rc = getOutputCoords();\n\n if("+i+") {\n setOutput(vec4(0));\n } else {\n "+o+"\n\n setOutput(vec4("+a+"));\n }\n }\n "}};var _i=function(t,e,n){this.variableNames=["x"],this.outputShape=e.map(function(e,n){return e[0]+t[n]+e[1]});var r=t.length,i=xn(r),o=e.map(function(t){return t[0]}).join(","),a=e.map(function(e,n){return e[0]+t[n]}).join(","),s=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);this.userCode=1!==r?"\n "+i+" start = "+i+"("+o+");\n "+i+" end = "+i+"("+a+");\n\n void main() {\n "+i+" outC = getOutputCoords();\n if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\n setOutput(float("+n+"));\n } else {\n "+i+" coords = outC - start;\n setOutput(getX("+s+"));\n }\n }\n ":"\n int start = "+o+";\n int end = "+a+";\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start || outC >= end) {\n setOutput(float("+n+"));\n } else {\n setOutput(getX(outC - start));\n }\n }\n "},Mi=function(t,e,n){this.variableNames=["x"],this.usesPackedTextures=!0,this.outputShape=e.map(function(e,n){return e[0]+t[n]+e[1]});for(var r=t.length,i=xn(r),o=e.map(function(t){return t[0]}).join(","),a=e.map(function(e,n){return e[0]+t[n]}).join(","),s=on("rc",r),u=on("source",r),l=s[r-1]+" < "+this.outputShape[r-1],c=1===r?"source":"vec2("+u.slice(-2).join()+")",p=[i+" rc = outputLoc;",s[r-1]+" += 1;\n if("+l+") {\n ",1===r?"":"}\n rc = outputLoc;\n "+s[r-2]+" += 1;\n if("+s[r-2]+" < "+this.outputShape[r-2]+") {",1===r?"":" "+s[r-1]+" += 1;\n if("+l+") {"],h=1===r?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",f="",d=0,m=1===r?2:4;d<m;d++)f+="\n "+p[d]+"\n if ("+h+") {\n result["+d+"] = float("+n+");\n } else {\n "+i+" source = rc - start;\n result["+d+"] = getChannel(getX("+u.join()+"), "+c+");\n }\n ";f+=1===r?"} ":"}}",this.userCode="\n const "+i+" start = "+i+"("+o+");\n const "+i+" end = "+i+"("+a+");\n\n void main() {\n "+i+" outputLoc = getOutputCoords();\n vec4 result = vec4(0.);\n "+f+"\n setOutput(result);\n }\n "},Li=function(t,e,n){if(this.variableNames=["x"],"avg"===e&&n)throw new Error("Cannot compute positions for average pool.");var r=t.filterWidth,i=t.strideHeight,o=t.strideWidth,a=t.dilationHeight,s=t.dilationWidth,u=t.effectiveFilterHeight,l=t.effectiveFilterWidth,c=t.padInfo.top,p=t.padInfo.left;this.outputShape=t.outShape;var h="avg"===e,f="0.0";if(h||(f="-1.0 / 1e-20"),n)this.userCode="\n const ivec2 strides = ivec2("+i+", "+o+");\n const ivec2 pads = ivec2("+c+", "+p+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n float avgValue = 0.0;\n\n for (int wR = 0; wR < "+u+";\n wR += "+a+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+l+";\n wC += "+s+") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = wR * "+l+" + wC;\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else{var d=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===e&&(d="avgValue / count");var m=4*Math.floor(r/4),g=r%4,y="\n if ("+h+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec2 strides = ivec2("+i+", "+o+");\n const ivec2 pads = ivec2("+c+", "+p+");\n const float initializationValue = "+f+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= "+t.inWidth+") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4("+f+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < "+u+";\n wR += "+a+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+m+"; wC += 4) {\n int xC = xCCorner + wC * "+s+";\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n getValue(batch, xR, xC + 3 * "+s+", d)\n );\n\n "+y+"\n }\n\n int xC = xCCorner + "+m+";\n if ("+(1===g)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+y+"\n } else if ("+(2===g)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n initializationValue,\n initializationValue\n );\n\n "+y+"\n } else if ("+(3===g)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n initializationValue\n );\n\n "+y+"\n }\n }\n setOutput("+d+");\n }\n "}},Fi=function(t,e){this.variableNames=["x"];var n=t.windowSize,r=t.batchSize,i=t.inSize,o=Math.ceil(i/n);this.outputShape=[r,o];var a="0.0",s="";"prod"===e?a="1.0":"min"===e?(a="1.0 / 1e-20",s="min"):"max"===e&&(a="-1.0 / 1e-20",s="max");var u=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"sum"===e?u="sumValue":"prod"===e?u="prodValue":"all"===e?u="allValue":"any"===e&&(u="anyValue");var l=4*Math.floor(n/4),c=n%4,p="\n if ("+("sum"===e)+") {\n sumValue += dot(values, ones);\n } else if ("+("prod"===e)+") {\n vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\n prodValue *= tmp[0] * tmp[1];\n } else {\n minMaxValue = "+s+"(values, minMaxValue);\n }\n ",h="vec4";"all"===e?(a="1.0",p="\n bool reducedAllValue = all(values);\n float floatedReducedAllValue = float(reducedAllValue);\n allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\n ",h="bvec4"):"any"===e&&(a="0.0",p="\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n ",h="bvec4");var f="";i%n>0&&(f="\n if (inIdx < 0 || inIdx >= "+i+") {\n return initializationValue;\n }\n "),this.userCode="\n const float initializationValue = "+a+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n "+f+"\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+n+";\n\n vec4 minMaxValue = vec4("+a+");\n float prodValue = 1.0;\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < "+l+"; i += 4) {\n int inIdx = inOffset + i;\n "+h+" values = "+h+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n "+p+"\n }\n\n int inIdx = inOffset + "+l+";\n if ("+(1===c)+") {\n "+h+" values = "+h+"(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+p+"\n } else if ("+(2===c)+") {\n "+h+" values = "+h+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n "+p+"\n } else if ("+(3===c)+") {\n "+h+" values = "+h+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n "+p+"\n }\n setOutput("+u+");\n }\n "},zi=function(t,e){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=t;for(var n="",r=0;r<4;r++){var i="thisRC = rc;";r%2==1&&(i+="thisRC.z += 1;"),r>1&&(i+="thisRC.y += 1;"),n+="\n "+i+"\n "+(r>0?"if(thisRC.y < rows && thisRC.z < cols){":"")+"\n int flatIndex = getFlatIndex(thisRC);\n\n ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\n vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n result["+r+"] =\n getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n "+(r>0?"}":"")+"\n "}this.userCode="\n "+function(t){return"\n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n "+cn(["r","c","d"],t)+"\n return ivec3(r, c, d);\n }\n "}(e)+"\n "+function(t){return"\n int getFlatIndex(ivec3 coords) {\n return round("+function(t,e){if(t.length!==e.length)throw new Error("Vectors to be dotted must be of the same length -got "+t.length+" and "+e.length);for(var n=[],r=Math.floor(t.length/4),i=t.length%4,o=0;o<r;o++){var a=t.slice(4*o,4*o+4),s=e.slice(4*o,4*o+4);n.push(pn(a)+", "+pn(s))}return 0!==i&&(a=t.slice(4*r),s=e.slice(4*r),1===a.length&&(a=a.map(function(t){return"float("+t+")"}),s=s.map(function(t){return"float("+t+")"})),n.push(pn(a)+", "+pn(s))),n.map(function(t,e){return"dot("+t+")"}).join("+")}(["coords.x","coords.y","coords.z"],V(t).map(function(t){return t.toString()}).concat(["1."]))+");\n }\n "}(t)+"\n\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0.);\n\n ivec3 thisRC;\n int rows = "+t[1]+";\n int cols = "+t[2]+";\n\n "+n+"\n\n setOutput(result);\n }\n "};var Pi=function(t,e,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,i=r[1],o=r[2],a=t.shape,s=a[1],u=a[2],l=[n&&s>1?i-1:i,n&&u>1?o-1:o],c=[n&&s>1?s-1:s,n&&u>1?u-1:u],p=l[0]/c[0],h=l[1]/c[1],f=1/p,d=1/h,m=2*Math.ceil(f)+2,g=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+p+");\n const float widthScale = float("+h+");\n\n const float invHeightScale = float("+f+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+m+");\n const int winWidth = int("+g+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), "+(i-1)+".0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), "+(o-1)+".0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "},Bi=function(t,e,n,r){this.variableNames=["A"],this.outputShape=[];var i=t[0],o=t[1],a=t[2],s=t[3];this.outputShape=[i,e,n,s];var u=[r&&e>1?o-1:o,r&&n>1?a-1:a],l=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+");\n const vec2 inputShapeRC = vec2("+o+".0, "+a+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n "},Ui=function(t,e,n,r){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=[];var i=t[0],o=t[1],a=t[2],s=t[3];this.outputShape=[i,e,n,s];var u=[r&&e>1?o-1:o,r&&n>1?a-1:a],l=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode="\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+",\n "+u[1]/l[1]+");\n const vec3 inputShapeRC = vec3("+o+".0, "+a+".0,\n "+a+".0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = vec3(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec3 sourceFloorRC = ivec3(sourceFracIndexRC);\n ivec3 sourceCeilRC = ivec3(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n \n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < "+(s-1)+"; \n bool hasNextRow = coords.z < "+(n-1)+";\n\n // In parallel, construct four corners for all four components in\n // packed 2x2 cell.\n vec4 topLeft = vec4(\n getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 bottomLeft = vec4(\n getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 topRight = vec4(\n getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec4 bottomRight = vec4(\n getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);\n\n vec4 top = mix(topLeft, topRight, fracRC.yyzz);\n vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);\n vec4 newValue = mix(top, bottom, fracRC.x);\n\n setOutput(newValue);\n }\n "},Wi=function(t,e,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,i=r[1],o=r[2],a=t.shape,s=a[1],u=a[2],l=[n&&s>1?i-1:i,n&&u>1?o-1:o],c=[n&&s>1?s-1:s,n&&u>1?u-1:u],p=l[0]/c[0],h=l[1]/c[1],f=1/p,d=1/h,m=2*Math.ceil(f)+2,g=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+p+");\n const float widthScale = float("+h+");\n\n const float invHeightScale = float("+f+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+m+");\n const int winWidth = int("+g+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float sourceFracRow =\n float("+l[0]+") *\n (float(dyR) / float("+c[0]+"));\n\n float sourceFracCol =\n float("+l[1]+") *\n (float(dyC) / float("+c[1]+"));\n\n int sourceNearestRow = int(min(\n float(int("+i+") - 1),\n "+n+" ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int("+o+") - 1),\n "+n+" ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "},Vi=function(t,e,n,r){this.variableNames=["A"],this.outputShape=[];var i=t[0],o=t[1],a=t[2],s=t[3];this.outputShape=[i,e,n,s];var u=[r&&e>1?o-1:o,r&&n>1?a-1:a],l=[r&&e>1?e-1:e,r&&n>1?n-1:n],c=r?"0.5":"0.0";this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+");\n const vec2 inputShapeRC = vec2("+o+".0, "+a+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + "+c+")));\n\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n "},ji=function(t,e){this.variableNames=["x"];var n=t.length;if(n>4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");if(this.outputShape=t,1!==n){var r=t.map(function(n,r){return function(n){return-1!==e.indexOf(n)&&1!==t[n]?t[n]+" - coords["+n+"] - 1":"coords["+n+"]"}(r)}).join(","),i=xn(n);this.userCode="\n void main() {\n "+i+" coords = getOutputCoords();\n setOutput(getX("+r+"));\n }\n "}else this.userCode="\n void main() {\n int coord = getOutputCoords();\n setOutput(getX("+t[0]+" - coord - 1));\n }\n "},qi=function(t,e,n,r,i,o,a){void 0===a&&(a=!0),this.variableNames=["updates","indices","defaultValue"],this.outputShape=o;var s=xn(i.length),u=xn(o.length),l="";1===n?l="i":2===n&&(l="i, j");var c="getIndices("+l+")",p="";1===r?p="i":2===r&&(p="i, coords[1]");var h="getUpdates("+p+")",f=e>1?"strides[j]":"strides";this.userCode="\n "+s+" strides = "+s+"("+i+");\n\n void main() {\n "+u+" coords = getOutputCoords();\n float sum = 0.0;\n bool found = false;\n for (int i = 0; i < "+t+"; i++) {\n int flattenedIndex = 0;\n for (int j = 0; j < "+e+"; j++) {\n int index = round("+c+");\n flattenedIndex += index * "+f+";\n }\n if (flattenedIndex == coords[0]) {\n sum += "+h+";\n found = true;\n }\n }\n setOutput(mix(getDefaultValue(), sum, float(found)));\n }\n "},Gi=function(t,e){this.variableNames=["x","segmentIds"];var n=t.windowSize,r=t.batchSize,i=t.inSize,o=t.numSegments,a=o*Math.ceil(i/n);this.outputShape=[r,a];var s=4*Math.floor(n/4),u=n%4,l="\n sumValue += dot(values, segFilter);\n ",c="";i%n>0&&(c="\n if (inIdx < 0 || inIdx >= "+i+") {\n return initializationValue;\n }\n ");var p="";i%n>0&&(p="\n if (inIdx < 0 || inIdx >= "+i+") {\n return -1.0;\n }\n "),this.userCode="\n const float initializationValue = 0.0;\n\n float getValue(int batch, int inIdx) {\n "+c+"\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n "+p+"\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n "+o+")) * float("+n+"));\n int currentSeg = int(mod(float(outIdx), float("+o+")));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < "+s+"; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n "+l+"\n }\n\n int inIdx = inOffset + "+s+";\n if ("+(1===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n "+l+"\n } else if ("+(2===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n "+l+"\n } else if ("+(3===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n "+l+"\n }\n setOutput(sumValue);\n }\n "},Hi=function(t,e,n){var r,i;if(this.variableNames=["c","a","b"],this.outputShape=e,n>4)throw Error("Where for rank "+n+" is not yet supported");if(1===n)i="resRC",r="resRC";else{for(var o=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[],s=[],u=0;u<e.length;u++)s.push(""+o[u]),u<t&&a.push(""+o[u]);r=a.join(),i=s.join()}var l=xn(n);this.userCode="\n void main() {\n "+l+" resRC = getOutputCoords();\n float cVal = getC("+r+");\n if (cVal >= 1.0) {\n setOutput(getA("+i+"));\n } else {\n setOutput(getB("+i+"));\n }\n }\n "},Ki=function(){function t(t){this.variableNames=["source"],this.outputShape=t,this.rank=t.length;var e,n=xn(this.rank),r="uniform int start["+this.rank+"];",i=function(t){if(1===t)return"sourceLoc";if(t<=6)return $i.slice(0,t).map(function(t){return"sourceLoc."+t}).join(",");throw Error("Slicing for rank "+t+" is not yet supported")}(this.rank);e="\n "+n+" sourceLoc;\n "+n+" coords = getOutputCoords();\n "+t.map(function(t,e){return"sourceLoc."+$i[e]+" = start["+e+"] + coords."+$i[e]+";"}).join("\n")+"\n ",this.userCode="\n "+r+"\n void main() {\n "+e+"\n setOutput(getSource("+i+"));\n }\n "}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,"start"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t)}},t}(),$i=["x","y","z","w","u","v"];var Xi=function(){function t(t){this.variableNames=["source"],this.usesPackedTextures=!0,this.outputShape=t,this.rank=t.length;var e=xn(this.rank),n=on("coords",this.rank),r=on("sourceLoc",this.rank),i=1===this.rank?"sourceLoc":"vec2("+r.slice(-2).join()+")",o="getChannel(getSource("+r.join()+"), "+i+")",a="\n result.x = "+o+";\n if (++"+n[this.rank-1]+" < "+t[this.rank-1]+") {\n ++"+r[this.rank-1]+";\n result.y = "+o+";\n --"+r[this.rank-1]+";\n }\n ",s=1===this.rank?"":"\n --"+n[this.rank-1]+";\n if (++"+n[this.rank-2]+" < "+t[this.rank-2]+") {\n ++"+r[this.rank-2]+";\n result.z = "+o+";\n if (++"+n[this.rank-1]+" < "+t[this.rank-1]+") {\n ++"+r[this.rank-1]+";\n result.w = "+o+";\n }\n }\n ",u=this.rank<=4?"sourceLoc = coords +\n "+e+"("+t.map(function(t,e){return"start["+e+"]"}).join()+");":t.map(function(t,e){return r[e]+" = "+n[e]+" + start["+e+"];"}).join("\n");this.userCode="\n uniform int start["+this.rank+"];\n void main() {\n "+e+" coords = getOutputCoords();\n "+e+" sourceLoc;\n "+u+" \n vec4 result = vec4(0.);\n "+a+"\n "+s+"\n setOutput(result);\n }\n "}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,"start"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t)}},t}(),Yi=function(t,e,n,r){this.variableNames=["x"];var i=n.filter(function(t,e){return-1===r.indexOf(e)});this.outputShape=i;var o=n.length,a=xn(n.length),s=xn(i.length),u="";if(1===o)u="coords * strides + begin";else{var l=0;u=n.map(function(t,e){return-1===r.indexOf(e)?(l++,1===i.length?"coords * strides["+e+"] + begin["+e+"]":"coords["+(l-1)+"] * strides["+e+"] + begin["+e+"]"):"begin["+e+"]"}).join(",")}this.userCode="\n "+a+" begin = "+a+"("+t+");\n "+a+" strides = "+a+"("+e+");\n\n void main() {\n "+s+" coords = getOutputCoords();\n setOutput(getX("+u+"));\n }\n "},Ji=function(){function t(t){this.gpgpu=t,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}return t.prototype.acquireTexture=function(t,e,n){var r,i=Zi(e,n),o=Qi(t,i,n);if(o in this.freeTextures||(this.freeTextures[o]=[]),o in this.usedTextures||(this.usedTextures[o]=[]),this.freeTextures[o].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var a=this.freeTextures[o].shift();return this.usedTextures[o].push(a),a}return this.numUsedTextures++,this.log(),i===lr.PACKED_2X2_FLOAT32?r=this.gpgpu.createPackedMatrixTexture(t[0],t[1]):i===lr.PACKED_2X2_FLOAT16?r=this.gpgpu.createFloat16PackedMatrixTexture(t[0],t[1]):i===lr.UNPACKED_FLOAT32?r=this.gpgpu.createFloat32MatrixTexture(t[0],t[1]):i===lr.UNPACKED_FLOAT16?r=this.gpgpu.createFloat16MatrixTexture(t[0],t[1]):i===lr.PACKED_4X1_UNSIGNED_BYTE&&(r=this.gpgpu.createUnsignedBytesMatrixTexture(t[0],t[1])),this.usedTextures[o].push(r),r},t.prototype.releaseTexture=function(t,e,n,r){if(null!=this.freeTextures){var i=Qi(e,Zi(n,r),r);i in this.freeTextures||(this.freeTextures[i]=[]),this.freeTextures[i].push(t),this.numFreeTextures++,this.numUsedTextures--;var o=this.usedTextures[i],a=o.indexOf(t);if(a<0)throw new Error("Cannot release a texture that was never provided by this texture manager");o.splice(a,1),this.log()}},t.prototype.log=function(){if(this.logEnabled){var t=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",this.numFreeTextures+" / "+this.numUsedTextures,"("+t+")")}},t.prototype.getNumUsedTextures=function(){return this.numUsedTextures},t.prototype.getNumFreeTextures=function(){return this.numFreeTextures},t.prototype.dispose=function(){var t=this;if(null!=this.freeTextures){for(var e in this.freeTextures)this.freeTextures[e].forEach(function(e){t.gpgpu.deleteMatrixTexture(e)});for(var e in this.usedTextures)this.usedTextures[e].forEach(function(e){t.gpgpu.deleteMatrixTexture(e)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0}},t}();function Zi(t,e){if(t===ur.UPLOAD)return e?lr.PACKED_2X2_FLOAT32:lr.UNPACKED_FLOAT32;if(t===ur.RENDER||null==t)return e?Bt.get("WEBGL_RENDER_FLOAT32_ENABLED")?lr.PACKED_2X2_FLOAT32:lr.PACKED_2X2_FLOAT16:Bt.get("WEBGL_RENDER_FLOAT32_ENABLED")?lr.UNPACKED_FLOAT32:lr.UNPACKED_FLOAT16;if(t===ur.DOWNLOAD||t===ur.PIXELS)return lr.PACKED_4X1_UNSIGNED_BYTE;throw new Error("Unknown logical texture type "+t)}function Qi(t,e,n){return t[0]+"_"+t[1]+"_"+e+"_"+n}var to=function(t,e){this.variableNames=["A"];for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[r]*e[r];this.outputShape=n,this.rank=n.length;var i=xn(this.rank),o=function(t){var e=t.length;if(e>5)throw Error("Tile for rank "+e+" is not yet supported");if(1===e)return"imod(resRC, "+t[0]+")";for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[],i=0;i<t.length;i++)r.push("imod("+n[i]+", "+t[i]+")");return r.join()}(t);this.userCode="\n void main() {\n "+i+" resRC = getOutputCoords();\n setOutput(getA("+o+"));\n }\n "};var eo=function(t,e){this.variableNames=["A"];for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[e[r]];this.outputShape=n,this.rank=n.length;var i=xn(this.rank),o=function(t){var e=t.length;if(e>6)throw Error("Transpose for rank "+e+" is not yet supported");for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(e),i=0;i<t.length;i++)r[t[i]]=n[i];return r.join()}(e);this.userCode="\n void main() {\n "+i+" resRC = getOutputCoords();\n setOutput(getA("+o+"));\n }\n "};var no=function(t,e){this.variableNames=["A"],this.usesPackedTextures=!0;for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[e[r]];if(this.outputShape=n,this.rank=n.length,this.rank>6)throw Error("Packed transpose for rank "+this.rank+" is not yet supported.");var i=xn(this.rank),o=rn("rc",this.rank),a=new Array(this.rank);for(r=0;r<e.length;r++)a[e[r]]=o[r];var s="vec2("+a.slice(-2).join()+")",u="++"+o[this.rank-1]+" < "+n[this.rank-1],l="getChannel(getA("+a.join()+"), "+s+")";this.userCode="\n void main() {\n "+i+" rc = getOutputCoords();\n vec4 result = vec4(0.);\n result[0] = "+l+";\n if("+u+") {\n result[1] = "+l+";\n }\n --"+o[this.rank-1]+";\n if(++"+o[this.rank-2]+" < "+n[this.rank-2]+") {\n result[2] = "+l+";\n if("+u+") {\n result[3] = "+l+";\n }\n } \n setOutput(result);\n }\n "},ro=1.7580993408473768,io=1.0507009873554805,oo=function(){function t(t,e){this.variableNames=["A"],this.outputShape=t,this.userCode="\n uniform float NAN;\n float unaryOperation(float x) {\n "+e+"\n }\n\n void main() {\n float x = getAAtOutCoords();\n float y = unaryOperation(x);\n\n setOutput(y);\n }\n "}return t.prototype.getCustomSetupFunc=function(){var t=this;return function(e,n){null==t.startLoc&&(t.startLoc=e.getUniformLocationNoThrow(n,"NAN"),null==t.startLoc)||e.gl.uniform1f(t.startLoc,NaN)}},t}(),ao="if (isNaN(x)) return x;",so="return x;",uo=ao+"\n return (x < 0.0) ? 0.0 : x;\n",lo="\n // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\n // see: https://arxiv.org/abs/1706.02515\n float scaleAlpha = "+ro+";\n float scale = "+io+";\n return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n";var co="return exp(x);",po=ao+"\n return sin(x);\n",ho=ao+"\n return cos(x);\n",fo=ao+"\n return atan(x);\n",mo=ao+"\n if (x < 1.0) return NAN;\n return log(x + sqrt(x * x - 1.0));",go=ao+"\n if ((x < -1.0) || (x > 1.0)) return NAN;\n return (log(1.0 + x) - log(1.0 - x)) / 2.0;",yo="return x;",vo="\n vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n\n result.r = isNaN(x.r) ? x.r : result.r;\n result.g = isNaN(x.g) ? x.g : result.g;\n result.b = isNaN(x.b) ? x.b : result.b;\n result.a = isNaN(x.a) ? x.a : result.a;\n\n return result;\n",bo=function(){function t(t,e){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=t,this.userCode="\n uniform float NAN;\n vec4 unaryOperation(vec4 x) {\n "+e+"\n }\n\n void main() {\n vec4 x = getAAtOutCoords();\n vec4 y = unaryOperation(x);\n\n setOutput(y);\n }\n "}return t.prototype.getCustomSetupFunc=function(){var t=this;return function(e,n){null==t.startLoc&&(t.startLoc=e.getUniformLocationNoThrow(n,"NAN"),null==t.startLoc)||e.gl.uniform1f(t.startLoc,NaN)}},t}(),wo=function(t){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=t;var e=t.length,n=on("rc",e),r=xn(e),i=function(t,e){if(1===t)return"rc";for(var n="",r=0;r<t;r++)n+=e[r],r<t-1&&(n+=",");return n}(e,n),o=n.slice(-2),a=e<=1?"rc":"vec2("+o.join(",")+")";this.userCode="\n void main() {\n "+r+" rc = getOutputCoords();\n vec4 packedInput = getA("+i+");\n\n setOutput(getChannel(packedInput, "+a+"));\n }\n "};var xo=Se({concat_:function(t,e){void 0===e&&(e=0),d(t.length>=1,function(){return"Pass at least one tensor to concat"});var n=Ne(t,"tensors","concat");e=I(e,n[0].shape)[0];var r=ue(n.map(function(t){return t.shape}),e);if(0===v(r))return Te([],r);if(1===(n=n.filter(function(t){return t.size>0})).length)return n[0];var i=n.map(function(t){return t.shape});!function(t,e){var n=t[0].length;t.forEach(function(t,e){d(t.length===n,function(){return"Error in concat"+n+"D: rank of tensors["+e+"] must be the same as the rank of the rest ("+n+")"})}),d(e>=0&&e<n,function(){return"Error in concat"+n+"D: axis must be between 0 and "+(n-1)+"."});var r=t[0];t.forEach(function(t,i){for(var o=0;o<n;o++)d(o===e||t[o]===r[o],function(){return"Error in concat"+n+"D: Shape of tensors["+i+"] ("+t+") does not match the shape of the rest ("+r+") along the non-concatenated axis "+i+"."})})}(i,e);var o=n;return Bt.engine.runKernel(function(t){return t.concat(n,e)},o,function(t){var n=i.map(function(t){return t[e]});return Io(t,n,e).map(function(t){return function(){return t}})})}}),No=Se({concat1d_:function(t){return xo(t,0)}}),So=Se({concat2d_:function(t,e){return xo(t,e)}}),Co=Se({concat3d_:function(t,e){return xo(t,e)}}),Eo=Se({concat4d_:function(t,e){return xo(t,e)}}),Io=Se({split_:function(t,e,n){void 0===n&&(n=0);var r,i=xe(t,"x","split");return n=I(n,i.shape)[0],"number"==typeof e?(d(i.shape[n]%e==0,function(){return"Number of splits must evenly divide the axis."}),r=new Array(e).fill(i.shape[n]/e)):(d(i.shape[n]===e.reduce(function(t,e){return t+e}),function(){return"The sum of sizes must match the size of the axis dimension."}),r=e),Bt.engine.runKernel(function(t){return t.split(i,r,n)},{$x:i},function(t){return{$x:function(){return xo(t,n)}}})}});function ko(t,e){return t(e={exports:{}},e.exports),e.exports}var Ao=ko(function(t){!function(t,e,n){function r(t,e){return e.c=t.c,e.s0=t.s0,e.s1=t.s1,e.s2=t.s2,e}function i(t,e){var n=new function(t){var e,n=this,r=(e=4022871197,function(t){t=t.toString();for(var n=0;n<t.length;n++){var r=.02519603282416938*(e+=t.charCodeAt(n));r-=e=r>>>0,e=(r*=e)>>>0,e+=4294967296*(r-=e)}return 2.3283064365386963e-10*(e>>>0)});n.next=function(){var t=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=t-(n.c=0|t)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(t),n.s0<0&&(n.s0+=1),n.s1-=r(t),n.s1<0&&(n.s1+=1),n.s2-=r(t),n.s2<0&&(n.s2+=1),r=null}(t),i=e&&e.state,o=n.next;return o.int32=function(){return 4294967296*n.next()|0},o.double=function(){return o()+1.1102230246251565e-16*(2097152*o()|0)},o.quick=o,i&&("object"==typeof i&&r(i,n),o.state=function(){return r(n,{})}),o}e&&e.exports?e.exports=i:this.alea=i}(0,t)}),To=ko(function(t){!function(t,e,n){function r(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e}function i(t,e){var n=new function(t){var e=this,n="";e.x=0,e.y=0,e.z=0,e.w=0,e.next=function(){var t=e.x^e.x<<11;return e.x=e.y,e.y=e.z,e.z=e.w,e.w^=e.w>>>19^t^t>>>8},t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),e.next()}(t),i=e&&e.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},o.int32=n.next,o.quick=o,i&&("object"==typeof i&&r(i,n),o.state=function(){return r(n,{})}),o}e&&e.exports?e.exports=i:this.xor128=i}(0,t)}),Ro=ko(function(t){!function(t,e,n){function r(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e.v=t.v,e.d=t.d,e}function i(t,e){var n=new function(t){var e=this,n="";e.next=function(){var t=e.x^e.x>>>2;return e.x=e.y,e.y=e.z,e.z=e.w,e.w=e.v,(e.d=e.d+362437|0)+(e.v=e.v^e.v<<4^t^t<<1)|0},e.x=0,e.y=0,e.z=0,e.w=0,e.v=0,t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),r==n.length&&(e.d=e.x<<10^e.x>>>4),e.next()}(t),i=e&&e.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},o.int32=n.next,o.quick=o,i&&("object"==typeof i&&r(i,n),o.state=function(){return r(n,{})}),o}e&&e.exports?e.exports=i:this.xorwow=i}(0,t)}),Do=ko(function(t){!function(t,e,n){function r(t,e){return e.x=t.x.slice(),e.i=t.i,e}function i(t,e){null==t&&(t=+new Date);var n=new function(t){var e=this;e.next=function(){var t,n,r=e.x,i=e.i;return t=r[i],n=(t^=t>>>7)^t<<24,n^=(t=r[i+1&7])^t>>>10,n^=(t=r[i+3&7])^t>>>3,n^=(t=r[i+4&7])^t<<7,t=r[i+7&7],n^=(t^=t<<13)^t<<9,r[i]=n,e.i=i+1&7,n},function(t,e){var n,r=[];if(e===(0|e))r[0]=e;else for(e=""+e,n=0;n<e.length;++n)r[7&n]=r[7&n]<<15^e.charCodeAt(n)+r[n+1&7]<<13;for(;r.length<8;)r.push(0);for(n=0;n<8&&0===r[n];++n);for(8==n?r[7]=-1:r[n],t.x=r,t.i=0,n=256;n>0;--n)t.next()}(e,t)}(t),i=e&&e.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},o.int32=n.next,o.quick=o,i&&(i.x&&r(i,n),o.state=function(){return r(n,{})}),o}e&&e.exports?e.exports=i:this.xorshift7=i}(0,t)}),Oo=ko(function(t){!function(t,e,n){function r(t,e){return e.i=t.i,e.w=t.w,e.X=t.X.slice(),e}function i(t,e){null==t&&(t=+new Date);var n=new function(t){var e=this;e.next=function(){var t,n,r=e.w,i=e.X,o=e.i;return e.w=r=r+1640531527|0,n=i[o+34&127],t=i[o=o+1&127],n^=n<<13,t^=t<<17,n^=n>>>15,t^=t>>>12,n=i[o]=n^t,e.i=o,n+(r^r>>>16)|0},function(t,e){var n,r,i,o,a,s=[],u=128;for(e===(0|e)?(r=e,e=null):(e+="\0",r=0,u=Math.max(u,e.length)),i=0,o=-32;o<u;++o)e&&(r^=e.charCodeAt((o+32)%e.length)),0===o&&(a=r),r^=r<<10,r^=r>>>15,r^=r<<4,r^=r>>>13,o>=0&&(a=a+1640531527|0,i=0==(n=s[127&o]^=r+a)?i+1:0);for(i>=128&&(s[127&(e&&e.length||0)]=-1),i=127,o=512;o>0;--o)r=s[i+34&127],n=s[i=i+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[i]=r^n;t.w=a,t.X=s,t.i=i}(e,t)}(t),i=e&&e.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},o.int32=n.next,o.quick=o,i&&(i.X&&r(i,n),o.state=function(){return r(n,{})}),o}e&&e.exports?e.exports=i:this.xor4096=i}(0,t)}),_o=ko(function(t){!function(t,e,n){function r(t,e){return e.a=t.a,e.b=t.b,e.c=t.c,e.d=t.d,e}function i(t,e){var n=new function(t){var e=this,n="";e.next=function(){var t=e.b,n=e.c,r=e.d,i=e.a;return t=t<<25^t>>>7^n,n=n-r|0,r=r<<24^r>>>8^i,i=i-t|0,e.b=t=t<<20^t>>>12^n,e.c=n=n-r|0,e.d=r<<16^n>>>16^i,e.a=i-t|0},e.a=0,e.b=0,e.c=-1640531527,e.d=1367130551,t===Math.floor(t)?(e.a=t/4294967296|0,e.b=0|t):n+=t;for(var r=0;r<n.length+20;r++)e.b^=0|n.charCodeAt(r),e.next()}(t),i=e&&e.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},o.int32=n.next,o.quick=o,i&&("object"==typeof i&&r(i,n),o.state=function(){return r(n,{})}),o}e&&e.exports?e.exports=i:this.tychei=i}(0,t)}),Mo=ko(function(t){!function(e,n){var r,i=this,o=256,a=6,s="random",u=n.pow(o,a),l=n.pow(2,52),c=2*l,p=o-1;function h(t,h,g){var y=[],v=d(function t(e,n){var r,i=[],o=typeof e;if(n&&"object"==o)for(r in e)try{i.push(t(e[r],n-1))}catch(t){}return i.length?i:"string"==o?e:e+"\0"}((h=1==h?{entropy:!0}:h||{}).entropy?[t,m(e)]:null==t?function(){try{var t;return r&&(t=r.randomBytes)?t=t(o):(t=new Uint8Array(o),(i.crypto||i.msCrypto).getRandomValues(t)),m(t)}catch(t){var n=i.navigator,a=n&&n.plugins;return[+new Date,i,a,i.screen,m(e)]}}():t,3),y),b=new function(t){var e,n=t.length,r=this,i=0,a=r.i=r.j=0,s=r.S=[];for(n||(t=[n++]);i<o;)s[i]=i++;for(i=0;i<o;i++)s[i]=s[a=p&a+t[i%n]+(e=s[i])],s[a]=e;(r.g=function(t){for(var e,n=0,i=r.i,a=r.j,s=r.S;t--;)e=s[i=p&i+1],n=n*o+s[p&(s[i]=s[a=p&a+e])+(s[a]=e)];return r.i=i,r.j=a,n})(o)}(y),w=function(){for(var t=b.g(a),e=u,n=0;t<l;)t=(t+n)*o,e*=o,n=b.g(1);for(;t>=c;)t/=2,e/=2,n>>>=1;return(t+n)/e};return w.int32=function(){return 0|b.g(4)},w.quick=function(){return b.g(4)/4294967296},w.double=w,d(m(b.S),e),(h.pass||g||function(t,e,r,i){return i&&(i.S&&f(i,b),t.state=function(){return f(b,{})}),r?(n[s]=t,e):t})(w,v,"global"in h?h.global:this==n,h.state)}function f(t,e){return e.i=t.i,e.j=t.j,e.S=t.S.slice(),e}function d(t,e){for(var n,r=t+"",i=0;i<r.length;)e[p&i]=p&(n^=19*e[p&i])+r.charCodeAt(i++);return m(e)}function m(t){return String.fromCharCode.apply(0,t)}if(n["seed"+s]=h,d(n.random(),e),t.exports){t.exports=h;try{r=require("crypto")}catch(t){}}}([],Math)});Mo.alea=Ao,Mo.xor128=To,Mo.xorwow=Ro,Mo.xorshift7=Do,Mo.xor4096=Oo,Mo.tychei=_o;var Lo=Mo.alea,Fo=function(){function t(t,e,n,r,i){this.mean=t,this.stdDev=e,this.dtype=n,this.nextVal=NaN,this.truncated=r,this.truncated&&(this.upper=this.mean+2*this.stdDev,this.lower=this.mean-2*this.stdDev);var o=i||Math.random();this.random=Lo(o.toString())}return t.prototype.nextValue=function(){if(!isNaN(this.nextVal)){var t=this.nextVal;return this.nextVal=NaN,t}for(var e,n,r=!1;!r;){var i=void 0,o=void 0,a=void 0;do{a=(i=2*this.random()-1)*i+(o=2*this.random()-1)*o}while(a>=1||0===a);var s=Math.sqrt(-2*Math.log(a)/a);e=this.mean+this.stdDev*i*s,n=this.mean+this.stdDev*o*s,this.truncated&&!this.isValidTruncated(e)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(e)},t.prototype.convertValue=function(t){return null==this.dtype||"float32"===this.dtype?t:Math.round(t)},t.prototype.isValidTruncated=function(t){return t<=this.upper&&t>=this.lower},t}();function zo(t,e,n){return void 0===e&&(e="float32"),e=e||"float32",$(t),new it(t,e,n)}function Po(t,e){void 0===e&&(e=!1),console.log(t.toString(e))}var Bo=Se({batchToSpaceND_:function(t,e,n){var r=xe(t,"x","batchToSpaceND"),i=e.reduce(function(t,e){return t*e});return d(r.rank>=1+e.length,function(){return"input rank is "+r.rank+" but should be > than blockShape.length "+e.length}),d(n.length===e.length,function(){return"crops.length is "+n.length+" but should be equal to blockShape.length "+e.length}),d(r.shape[0]%i==0,function(){return"input tensor batch is "+r.shape[0]+" but is not divisible by the product of the elements of blockShape "+e.join(" * ")+" === "+i}),Bt.engine.runKernel(function(t){return t.batchToSpaceND(r,e,n)},{$x:r},function(t){return{$x:function(){return t.spaceToBatchND(e,n)}}})}}),Uo=Se({cast_:function(t,e){var n=xe(t,"x","cast");return Bt.engine.runKernel(function(t){return t.cast(n,e)},{$x:n},function(t){return{$x:function(){return t.clone()}}})}}),Wo=Se({clone_:function(t){var e=xe(t,"x","clone",null);return Bt.engine.runKernel(function(t){return ut.make(e.shape,{dataId:e.dataId},e.dtype)},{$x:e},function(t){return{$x:function(){return t.toFloat()}}})}}),Vo=Se({cumsum_:function(t,e,n,r){void 0===e&&(e=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var i=xe(t,"x","cumsum"),o=oe([e|=0],i.rank),a=i;null!=o&&(a=i.transpose(o));var s=se(1,i.rank)[0],u=Bt.engine.runKernel(function(t){return t.cumsum(a,s,n,r)},{permutedX:a},function(t){return{permutedX:function(){return t.cumsum(e,n,!r)}}});return null!=o&&(u=u.transpose(o)),u}}),jo=Se({depthToSpace_:function(t,e,n){void 0===n&&(n="NHWC");var r=xe(t,"x","depthToSpace"),i="NHWC"===n?r.shape[1]:r.shape[2],o="NHWC"===n?r.shape[2]:r.shape[3],a="NHWC"===n?r.shape[3]:r.shape[1];return d(i*e>=0,function(){return"Negative dimension size caused by overflow when multiplying\n "+i+" and "+e+" for depthToSpace with input shape\n "+r.shape}),d(o*e>=0,function(){return"Negative dimension size caused by overflow when multiplying\n "+o+" and "+e+" for depthToSpace with input shape\n "+r.shape}),d(a%(e*e)==0,function(){return"Dimension size must be evenly divisible by "+e*e+" but is "+a+" for depthToSpace with input shape "+r.shape}),Bt.engine.runKernel(function(t){return t.depthToSpace(r,e,n)},{$x:r})}}),qo=Se({expandDims_:function(t,e){void 0===e&&(e=0);var n=xe(t,"x","expandDims");d(e<=n.rank,function(){return"Axis must be <= rank of the tensor"});var r=n.shape.slice();return e<0&&(d(-(n.rank+1)<=e,function(){return"Axis must be in the interval ["+-(n.rank+1)+", "+n.rank+"]"}),e=n.rank+e+1),r.splice(e,0,1),na(n,r)}}),Go=Se({eye_:function(t,e,n,r){void 0===r&&(r="float32"),null==e&&(e=t);for(var i=zo([t,e],r),o=t<=e?t:e,a=0;a<o;++a)i.set(1,a,a);var s=i.toTensor().as2D(t,e);if(null==n)return s;if(1===n.length)return aa(qo(s,0),[n[0],1,1]);if(2===n.length)return aa(qo(qo(s,0),0),[n[0],n[1],1,1]);if(3===n.length)return aa(qo(qo(qo(s,0),0),0),[n[0],n[1],n[2],1,1]);throw new Error("eye() currently supports only 1D and 2D batchShapes, but received "+n.length+"D.")}}),Ho=Se({multinomial_:function(t,e,n,r){void 0===r&&(r=!1);var i=xe(t,"logits","multinomial"),o=i.size,a=i.rank;if(o<2)throw new Error("Error in multinomial: you need at least 2 outcomes, but got "+o+".");if(a>2)throw new Error("Rank of probabilities must be 1 or 2, but is "+a);n=n||Math.random();var s=1===a?i.as2D(1,-1):i,u=Bt.engine.runKernel(function(t){return t.multinomial(s,r,e,n)},{logits2D:s});return 1===a?u.as1D():u}}),Ko=Se({oneHot_:function(t,e,n,r){if(void 0===n&&(n=1),void 0===r&&(r=0),e<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+e);var i=xe(t,"indices","oneHot","int32"),o=i.shape.concat([e]);return i=i.flatten(),Bt.engine.runKernel(function(t){return t.oneHot(i,e,n,r)},{$indices:i},function(t){return{$indices:function(){return Pe(i.shape,"float32")}}}).reshape(o)}}),$o=Se({pad_:function(t,e,n){void 0===n&&(n=0);var r=xe(t,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var i=e.map(function(t){return t[0]});return Bt.engine.runKernel(function(t){return t.pad(r,e,n)},{$x:r},function(t){return{$x:function(){return t.slice(i,r.shape)}}})}}),Xo=Se({pad1d_:function(t,e,n){return void 0===n&&(n=0),d(2===e.length,function(){return"Invalid number of paddings. Must be length of 2."}),$o(t,[e],n)}}),Yo=Se({pad2d_:function(t,e,n){return void 0===n&&(n=0),d(2===e.length&&2===e[0].length&&2===e[1].length,function(){return"Invalid number of paddings. Must be length of 2 each."}),$o(t,e,n)}}),Jo=Se({pad3d_:function(t,e,n){return void 0===n&&(n=0),d(3===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length,function(){return"Invalid number of paddings. Must be length of 2 each."}),$o(t,e,n)}}),Zo=Se({pad4d_:function(t,e,n){return void 0===n&&(n=0),d(4===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length&&2===e[3].length,function(){return"Invalid number of paddings. Must be length of 2 each."}),$o(t,e,n)}}),Qo=Se({rand_:function(t,e,n){var r=v(t),i=null;if(null==n||"float32"===n)i=new Float32Array(r);else if("int32"===n)i=new Int32Array(r);else{if("bool"!==n)throw new Error("Unknown data type "+n);i=new Uint8Array(r)}for(var o=0;o<r;o++)i[o]=e();return ut.make(t,{values:i},n)}}),ta=Se({randomNormal_:function(t,e,n,r,i){if(void 0===e&&(e=0),void 0===n&&(n=1),null!=r&&"bool"===r)throw new Error("Unsupported data type "+r);for(var o=new Fo(e,n,r,!1,i),a=zo(t,r),s=0;s<a.values.length;s++)a.values[s]=o.nextValue();return a.toTensor()}}),ea=Se({randomUniform_:function(t,e,n,r){void 0===e&&(e=0),void 0===n&&(n=1),void 0===r&&(r="float32");for(var i=zo(t,r),o=0;o<i.values.length;o++)i.values[o]=f(e,n);return i.toTensor()}}),na=Se({reshape_:function(t,e){var n=xe(t,"x","reshape",null);return e=E(e,n.size),d(n.size===v(e),function(){return"new shape and old shape must have the same number of elements."}),Bt.engine.runKernel(function(t){return t.reshape(n,e)},{$x:n},function(t){return{$x:function(){return t.reshape(n.shape)}}})}}),ra=Se({spaceToBatchND_:function(t,e,n){var r=xe(t,"x","spaceToBatchND");return d(r.rank>=1+e.length,function(){return"input rank "+r.rank+" should be > than [blockShape] "+e.length}),d(n.length===e.length,function(){return"paddings.shape[0] "+n.length+" must be equal to [blockShape] "+e.length}),d(r.shape.reduce(function(t,r,i){return i>0&&i<=e.length?t&&(r+n[i-1][0]+n[i-1][1])%e[i-1]==0:t},!0),function(){return"input spatial dimensions "+r.shape.slice(1)+" with paddings "+n.toString()+" must be divisible by blockShapes "+e.toString()}),Bt.engine.runKernel(function(t){return t.spaceToBatchND(r,e,n)},{$x:r},function(t){return{$x:function(){return t.batchToSpaceND(e,n)}}})}}),ia=Se({squeeze_:function(t,e){var n=xe(t,"x","squeeze");return na(n,k(n.shape,e).newShape)}}),oa=Se({stack_:function(t,e){void 0===e&&(e=0);var n=Ne(t,"tensors","stack");if(d(n.length>=1,function(){return"Pass at least one tensor to tf.stack"}),1===n.length)return n[0].expandDims(e);var r=n[0].rank,i=n[0].shape,o=n[0].dtype;d(e<=r,function(){return"Axis must be <= rank of the tensor"}),n.forEach(function(t){m(i,t.shape,"All tensors passed to stack must have matching shapes")}),n.forEach(function(t){d(o===t.dtype,function(){return"All tensors passed to stack must have matching dtypes"})});var a=n.map(function(t){return t.expandDims(e)});return xo(a,e)}}),aa=Se({tile_:function(t,e){var n=xe(t,"x","tile");return d(n.rank===e.length,function(){return"Error in transpose: rank of input "+n.rank+" must match length of reps "+e+"."}),Bt.engine.runKernel(function(t){return t.tile(n,e)},{$x:n},function(t){return{$x:function(){var r=je(n);if(1===n.rank)for(var i=0;i<e[0];++i)r=r.add(t.slice([i*n.shape[0]],[n.shape[0]]));else if(2===n.rank)for(i=0;i<e[0];++i)for(var o=0;o<e[1];++o)r=r.add(t.slice([i*n.shape[0],o*n.shape[1]],[n.shape[0],n.shape[1]]));else if(3===n.rank)for(i=0;i<e[0];++i)for(o=0;o<e[1];++o)for(var a=0;a<e[2];++a)r=r.add(t.slice([i*n.shape[0],o*n.shape[1],a*n.shape[2]],[n.shape[0],n.shape[1],n.shape[2]]));else{if(4!==n.rank)throw new Error("Gradient for tile operation is not implemented for rank-"+n.rank+" tensors yet.");for(i=0;i<e[0];++i)for(o=0;o<e[1];++o)for(a=0;a<e[2];++a)for(var s=0;s<e[3];++s)r=r.add(t.slice([i*n.shape[0],o*n.shape[1],a*n.shape[2],s*n.shape[3]],[n.shape[0],n.shape[1],n.shape[2],n.shape[3]]))}return r}}})}}),sa=Se({truncatedNormal_:function(t,e,n,r,i){if(void 0===e&&(e=0),void 0===n&&(n=1),null!=r&&"bool"===r)throw new Error("Unsupported data type "+r);for(var o=new Fo(e,n,r,!0,i),a=zo(t,r),s=0;s<a.values.length;s++)a.values[s]=o.nextValue();return a.toTensor()}}),ua=Se({unstack_:function(t,e){void 0===e&&(e=0),e=e||0;var n=xe(t,"x","unstack");return d(e>=-n.shape.length&&e<n.shape.length,function(){return"Axis = "+e+" is not in [-"+n.shape.length+", "+n.shape.length+")"}),e<0&&(e+=n.shape.length),Bt.engine.runKernel(function(t){return t.unstack(n,e)},{$x:n},function(t){return{$x:function(){return oa(t,e)}}})}}),la=function(t,e){return i(this,void 0,void 0,function(){var n,r,i,a,s,u,l,c,p,h;return o(this,function(o){switch(o.label){case 0:return n=xe(t,"x","setdiff1d"),r=xe(e,"y","setdiff1d"),d(n.dtype===r.dtype,function(){return"x and y should have the same dtype, but got x ("+n.dtype+") and y ("+r.dtype+")."}),d(1===n.rank,function(){return"x should be 1D tensor, but got x ("+n.shape+")."}),d(1===r.rank,function(){return"y should be 1D tensor, but got y ("+r.shape+")."}),[4,n.data()];case 1:return i=o.sent(),[4,r.data()];case 2:for(a=o.sent(),s=new Set(a),u=0,p=0;p<i.length;p++)s.has(i[p])||u++;for(l=new it([u],n.dtype),c=new it([u],"int32"),p=0,h=0;p<i.length;p++)s.has(i[p])||(l.values[h]=i[p],c.values[h]=p,h++);return[2,[l.toTensor(),c.toTensor()]]}})})};function ca(t,e){for(var n=[],r=0;r<e.length;r++)e[r]&&n.push(r);var i=zo(t,"int32"),o=zo([n.length,t.length],"int32");for(r=0;r<n.length;r++){var a=i.indexToLoc(n[r]),s=r*t.length;o.values.set(a,s)}return o.toTensor()}var pa=function(){function t(t){if(this.gpgpu=t,this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.lruDataGPU=[],this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.binaryCache={},this.disposed=!1,Bt.get("WEBGL_VERSION")<1)throw new Error("WebGL is not supported on this device");if(null==t){var e=u(Bt.get("WEBGL_VERSION"));this.gpgpu=new Si(e),this.canvas=e.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpuCreatedLocally=!1,this.canvas=t.gl.canvas;this.textureManager=new Ji(this.gpgpu)}return t.prototype.register=function(t,e,n){if(this.texData.has(t))throw new Error("Data buffer is already registered");this.texData.set(t,{shape:e,dtype:n})},t.prototype.setDataMover=function(t){this.texData=new qe(t)},t.prototype.fromPixels=function(t,e){if(null==t)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");var n=[t.height,t.width],r=[t.height,t.width,e];if(Bt.get("IS_BROWSER")){if(!(t instanceof HTMLVideoElement||t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof ImageData))throw new Error("pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement or ImageData, but was "+t.constructor.name);if(t instanceof HTMLVideoElement){if(null==this.fromPixels2DContext){if("complete"!==document.readyState)throw new Error("The DOM is not ready yet. Please call tf.browser.fromPixels() once the DOM is ready. One way to do that is to add an event listener for `DOMContentLoaded` on the document object");this.fromPixels2DContext=document.createElement("canvas").getContext("2d")}this.fromPixels2DContext.canvas.width=t.width,this.fromPixels2DContext.canvas.height=t.height,this.fromPixels2DContext.drawImage(t,0,0,t.width,t.height),t=this.fromPixels2DContext.canvas}}var i=this.makeTensorHandle(n,"int32");this.texData.get(i.dataId).usage=ur.PIXELS,this.gpgpu.uploadPixelDataToTexture(this.getTexture(i.dataId),t);var o=new ar(r),a=this.compileAndRun(o,[i]);return this.disposeData(i.dataId),a},t.prototype.makeTensorHandle=function(t,e){var n={};return this.register(n,t,e),{dataId:n,shape:t,dtype:e}},t.prototype.write=function(t,e){if(null==e)throw new Error("MathBackendWebGL.write(): values can not be null");if(Bt.get("DEBUG"))for(var n=0;n<e.length;n++){var r=e[n];if(!Sr(r))throw Error("The value "+r+" cannot be represented on this device.")}var i=this.texData.get(t),o=i.texture,a=i.texShape,s=i.usage,u=i.dtype,l=i.isPacked;if("complex64"===u)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");null!=o&&(this.releaseTexture(t,o,a,s,u,l),i.texture=null,i.texShape=null),i.usage=ur.UPLOAD,i.values=e},t.prototype.readSync=function(t){var e=this.texData.get(t),n=e.values,r=e.dtype,i=e.complexTensors,o=e.slice,a=e.shape;if(null!=o){var s=new oo(a,"return x;"),u=this.compileAndRun(s,[{dataId:t,shape:a,dtype:r}]),l=this.readSync(u.dataId);return u.dispose(),l}if(null!=n)return this.convertAndCacheOnCPU(t);if("string"===r)return n;var c,p,h=null!=this.activeTimers;return h&&(c=performance.now()),p="complex64"===r?$e(i.real.dataSync(),i.imag.dataSync()):this.getValuesFromTexture(t),h&&(this.downloadWaitMs+=performance.now()-c),this.convertAndCacheOnCPU(t,p)},t.prototype.read=function(t){return i(this,void 0,void 0,function(){var e,n,r,i,a,s,u,l,c,p,h,f,d,m,g,y,b,w,x,N,S,C,E,I;return o(this,function(o){switch(o.label){case 0:if(this.pendingRead.has(t))return r=this.pendingRead.get(t),[2,new Promise(function(t){return r.push(t)})];if(i=this.texData.get(t),a=i.texture,s=i.values,u=i.texShape,l=i.isPacked,c=i.shape,p=i.slice,h=i.dtype,null!=p)return f=new oo(c,"return x;"),d=this.compileAndRun(f,[{dataId:t,shape:c,dtype:h}]),m=this.read(d.dataId),d.dispose(),[2,m];if(null!=s)return[2,this.convertAndCacheOnCPU(t)];if(this.pendingRead.set(t,[]),!Bt.get("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&2===Bt.get("WEBGL_VERSION"))throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");return g=u[1],y=u[0],l&&(e=dr(u[0],u[1]),g=e[0],y=e[1]),b=this.gpgpu.maybeCreateBufferFromTexture(a,y,g),[4,this.gpgpu.createAndWaitForFence()];case 1:return o.sent(),b instanceof WebGLTexture?w=this.getValuesFromTexture(t):(x=v(c),l?(N=Xr(c),S=1,C=1,c.length&&(n=Yr(c),S=n[0],C=n[1]),w=this.gpgpu.downloadPackedMatrixFromBuffer(b,N,S,C,u[0],u[1]).subarray(0,x)):w=this.gpgpu.downloadFloat32MatrixFromBuffer(b,u[0],u[1]).subarray(0,x)),E=this.convertAndCacheOnCPU(t,w),I=this.pendingRead.get(t),this.pendingRead.delete(t),I.forEach(function(t){return t(E)}),this.pendingDisposal.has(t)&&(this.pendingDisposal.delete(t),this.disposeData(t)),[2,E]}})})},t.prototype.getValuesFromTexture=function(t){var e,n=this,r=this.texData.get(t),i=r.shape,o=r.dtype,a=r.texture,s=r.texShape,u=v(i);if(Bt.get("WEBGL_DOWNLOAD_FLOAT_ENABLED")){if(this.texData.get(t).isPacked){var l=Xr(i),c=1,p=1;return i.length&&(c=(e=Yr(i))[0],p=e[1]),this.gpgpu.downloadMatrixFromPackedTexture(a,l,c,p,s[0],s[1]).subarray(0,u)}return this.gpgpu.downloadFloat32MatrixFromOutputTexture(a,s[0],s[1]).subarray(0,u)}var h=this.makeTensorHandle(i,"float32");h.size=v(i),this.texData.get(h.dataId).usage=ur.DOWNLOAD;var f=qt(function(){var e=new er(i);return n.compileAndRun(e,[{shape:i,dtype:o,dataId:t}],h,null,!1)}),d=this.texData.get(f.dataId),m=this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(d.texture,d.texShape[0],d.texShape[1]).subarray(0,u);return this.disposeData(h.dataId),m},t.prototype.time=function(t){return i(this,void 0,void 0,function(){var e,n,r,i,a,s,u;return o(this,function(o){switch(o.label){case 0:return e=this.activeTimers,n=[],r=!1,null==this.programTimersStack?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,t(),i=y(this.activeTimers.map(function(t){return t.query})).filter(function(t){return null!=t}),a=y(this.activeTimers.map(function(t){return t.name})).filter(function(t){return null!=t}),this.activeTimers=e,r&&(this.programTimersStack=null),[4,Promise.all(i)];case 1:return s=o.sent(),u={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:h(s),getExtraProfileInfo:function(){return s.map(function(t,e){return{name:a[e],ms:t}}).map(function(t){return t.name+": "+t.ms}).join(", ")},wallMs:null},this.uploadWaitMs=0,this.downloadWaitMs=0,[2,u]}})})},t.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU}},t.prototype.startTimer=function(){return Bt.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?this.gpgpu.beginQuery():{startMs:performance.now(),endMs:null}},t.prototype.endTimer=function(t){return Bt.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(this.gpgpu.endQuery(),t):(t.endMs=performance.now(),t)},t.prototype.getQueryTime=function(t){return i(this,void 0,void 0,function(){var e;return o(this,function(n){return Bt.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?[2,this.gpgpu.waitForQueryAndGetTime(t)]:[2,(e=t).endMs-e.startMs]})})},t.prototype.disposeData=function(t){if(!this.pendingDisposal.has(t))if(this.pendingRead.has(t))this.pendingDisposal.add(t);else if(this.texData.has(t)){var e=this.texData.get(t),n=e.texture,r=e.dtype,i=e.texShape,o=e.usage,a=e.complexTensors,s=e.isPacked,u=e.slice;if(null!=n){var l=u&&u.origDataId||t,c=this.dataRefCount.get(l);c>1?this.dataRefCount.set(l,c-1):(this.dataRefCount.delete(l),this.releaseTexture(t,n,i,o,r,s),this.texData.delete(t))}null!=a&&(a.real.dispose(),a.imag.dispose())}},t.prototype.getTexture=function(t){return this.uploadToGPU(t),this.texData.get(t).texture},t.prototype.getCPUBackend=function(){return Bt.get("WEBGL_CPU_FORWARD")?(null==this.cpuBackend&&(this.cpuBackend=Bt.findBackend("cpu")),this.cpuBackend):null},t.prototype.shouldExecuteOnCPU=function(t,e){var n=this;return void 0===e&&(e=128),null!=this.getCPUBackend()&&t.every(function(t){return null==n.texData.get(t.dataId).texture&&t.size<e})},t.prototype.getGPGPUContext=function(){return this.gpgpu},t.prototype.getCanvas=function(){return this.canvas},t.prototype.complex=function(t,e){var n=this.makeOutputArray(t.shape,"complex64");return this.texData.get(n.dataId).complexTensors={real:Bt.engine.keep(t.clone()),imag:Bt.engine.keep(e.clone())},n},t.prototype.real=function(t){return this.texData.get(t.dataId).complexTensors.real.clone()},t.prototype.imag=function(t){return this.texData.get(t.dataId).complexTensors.imag.clone()},t.prototype.slice=function(t,e,n){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.slice(t,e,n);var r=this.texData.get(t.dataId).isPacked,i=ye(t.shape,e,n);if(r||!i){var o=Bt.get("WEBGL_PACK_ARRAY_OPERATIONS")?new Xi(n):new Ki(n),a=o.getCustomSetupFunc(e);return this.compileAndRun(o,[t],null,a)}return this.uploadToGPU(t.dataId),this.shallowSlice(t,e,n)},t.prototype.shallowSlice=function(t,e,n){var r=this.texData.get(t.dataId),i=ut.make(n,{},t.dtype,this),o=this.texData.get(i.dataId);Object.assign(o,r),o.shape=n,o.dtype=t.dtype;var a=ve(e,t.strides);r.slice&&(a+=r.slice.flatOffset),o.slice={flatOffset:a,origDataId:r.slice&&r.slice.origDataId||t.dataId};var s=this.dataRefCount.get(o.slice.origDataId)||1;return this.dataRefCount.set(o.slice.origDataId,s+1),i},t.prototype.stridedSlice=function(t,e,n,r,i,o,a,s,u){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.stridedSlice(t,e,n,r,i,o,a,s,u);var l=de(t.shape,e,n,r,i,o,a,s,u),c=l[0],p=l[1],h=l[2],f=p.filter(function(t,e){return-1===h.indexOf(e)});if(f.some(function(t){return 0===t}))return Te([],f);var d=new Yi(c,r,p,h);return this.compileAndRun(d,[t])},t.prototype.reverse=function(t,e){var n=new ji(t.shape,e);return this.compileAndRun(n,[t])},t.prototype.concat=function(t,e){if(this.shouldExecuteOnCPU(t))return this.cpuBackend.concat(t,e);if(1===t.length)return t[0];if(t.length>Bt.get("WEBGL_MAX_TEXTURES_IN_SHADER")){var n=Math.floor(t.length/2),r=this.concat(t.slice(0,n),e),i=this.concat(t.slice(n),e);return this.concat([r,i],e)}if(Bt.get("WEBGL_PACK_ARRAY_OPERATIONS")&&t[0].rank>1){var o=new Un(t.map(function(t){return t.shape}),e);return this.compileAndRun(o,t)}var a=ue(t.map(function(t){return t.shape}),e),s=t.map(function(t){return t.as2D(-1,v(t.shape.slice(e)))}),u=new Bn(s.map(function(t){return t.shape}));return this.compileAndRun(u,s).reshape(a)},t.prototype.neg=function(t){var e=new oo(t.shape,"return -x;");return this.compileAndRun(e,[t])},t.prototype.batchMatMul=function(t,e,n,r){var i=n?t.shape[2]:t.shape[1],o=r?e.shape[1]:e.shape[2],a=n?t.shape[1]:t.shape[2],s=t.shape[0];if((1===i||1===o)&&a>1e3){n&&(t=t.transpose([0,2,1])),r&&(e=e.transpose([0,2,1]));var u=1===o?t:t.as3D(s,a,1),l=1===o?2:1,c=1===o?e.as3D(s,1,a):e;return this.multiply(u,c).sum(l,!0)}var p=yt(t.dtype,e.dtype),h=new Ti(t.shape,[s,i,o],n,r),f=this.makePackedTensor(h.outputShape,p);return this.compileAndRun(h,[t,e],f)},t.prototype.fusedBatchMatMul=function(t,e,n,r,i,o){var a=n?t.shape[2]:t.shape[1],s=r?e.shape[1]:e.shape[2],u=t.shape[0],l=yt(t.dtype,e.dtype),c=new Ti(t.shape,[u,a,s],n,r,!!i,o?function(t,e){if(void 0===e&&(e=!1),"linear"===t)return e?yo:so;if("relu"===t)return e?vo:uo;throw new Error("Activation "+t+" has not been implemented for the WebGL backend.")}(o,!0):null),p=this.makePackedTensor(c.outputShape,l),h=[t,e];return i&&h.push(i),this.compileAndRun(c,h,p)},t.prototype.multiply=function(t,e){if("complex64"===t.dtype){var n=this.texData.get(t.dataId),r=this.texData.get(e.dataId),i=new Rn(An,t.shape,e.shape),o=new Rn(Tn,t.shape,e.shape),a=[this.makeComplexComponentTensorHandle(t,n.complexTensors.real),this.makeComplexComponentTensorHandle(t,n.complexTensors.imag),this.makeComplexComponentTensorHandle(e,r.complexTensors.real),this.makeComplexComponentTensorHandle(e,r.complexTensors.imag)],s=this.compileAndRun(i,a),u=this.compileAndRun(o,a),l=this.complex(s,u);return s.dispose(),u.dispose(),l}if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.multiply(t,e);if(Bt.get("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,_n,t.dtype);var c=new Mn(_n,t.shape,e.shape),p=this.makeOutputArray(c.outputShape,t.dtype);return this.compileAndRun(c,[t,e],p)},t.prototype.batchNormalization=function(t,e,n,r,i,o){var a=[t,e,n],s=null;null!=o&&(s=o.shape,a.push(o));var u=null;if(null!=i&&(u=i.shape,a.push(i)),Bt.get("WEBGL_PACK_BATCHNORMALIZATION")){var l=new kn(t.shape,e.shape,n.shape,s,u,r);return this.compileAndRun(l,a)}var c=new In(t.shape,e.shape,n.shape,s,u,r);return this.compileAndRun(c,a)},t.prototype.localResponseNormalization4D=function(t,e,n,r,i){var o=new Ii(t.shape,e,n,r,i);return this.compileAndRun(o,[t])},t.prototype.LRNGrad=function(t,e,n,r,i,o,a){var s=new ki(e.shape,r,i,o,a);return this.compileAndRun(s,[e,n,t])},t.prototype.tile=function(t,e){var n=new to(t.shape,e);return this.compileAndRun(n,[t])},t.prototype.pad=function(t,e,n){var r=Bt.get("WEBGL_PACK_ARRAY_OPERATIONS")?new Mi(t.shape,e,n):new _i(t.shape,e,n);return this.compileAndRun(r,[t])},t.prototype.transpose=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.transpose(t,e);var n=Bt.get("WEBGL_PACK_ARRAY_OPERATIONS")?new no(t.shape,e):new eo(t.shape,e);return this.compileAndRun(n,[t])},t.prototype.gather=function(t,e,n){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.gather(t,e,n);var r=new sr(t.shape,e.size,n);return this.compileAndRun(r,[t,e])},t.prototype.batchToSpaceND=function(t,e,n){d(t.rank<=4,function(){return"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"});var r=e.reduce(function(t,e){return t*e}),i=Yt(t.shape,e,r),o=Jt(i.length,e.length),a=Zt(t.shape,e,r),s=Qt(n,e.length),u=te(a,n,e.length);return t.reshape(i).transpose(o).reshape(a).slice(s,u)},t.prototype.spaceToBatchND=function(t,e,n){d(t.rank<=4,function(){return"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"});var r=e.reduce(function(t,e){return t*e}),i=[[0,0]];i.push.apply(i,n);for(var o=1+e.length;o<t.shape.length;++o)i.push([0,0]);var a=t.pad(i),s=Yt(a.shape,e,r,!1),u=Jt(s.length,e.length,!1),l=Zt(a.shape,e,r,!1);return a.reshape(s).transpose(u).reshape(l)},t.prototype.reduce=function(t,e,n){var r=t.shape[0],i=t.shape[1],o=pe(i),a=new Fi({windowSize:o,inSize:i,batchSize:r},e),s=a.outputShape,u=s[0],l=s[1],c=this.makeOutputArray([u,l],n);return this.compileAndRun(a,[t],c),1===c.shape[1]?c:this.reduce(c,e,n)},t.prototype.argReduce=function(t,e,n){void 0===n&&(n=null);var r=t.shape[0],i=t.shape[1];null!=n&&(r=n.shape[0],i=n.shape[1]);var o=pe(i),a=new nn({windowSize:o,inSize:i,batchSize:r},e,null==n),s=a.outputShape,u=s[0],l=s[1],c=this.makeOutputArray([u,l],"int32"),p=[t];return null!=n&&p.push(n),this.compileAndRun(a,p,c),1===c.shape[1]?c:this.argReduce(t,e,c)},t.prototype.argReducePacked=function(t,e,n){void 0===n&&(n=null);var r=null!=n?n.shape:t.shape,i=pe(r[r.length-1]),o=new Cn(r,i,e,null==n),a=this.makePackedTensor(o.outputShape,"int32"),s=null==n?[t]:[t,n];return this.compileAndRun(o,s,a),a.rank===t.rank?this.argReducePacked(t,e,a):a},t.prototype.sum=function(t,e){ie("sum",e,t.rank);var n=ne(t.shape,e),r=n[0],i=v(n[1]),o=t.as2D(-1,i),a=vt(t.dtype);return this.reduce(o,"sum",a).reshape(r)},t.prototype.prod=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.prod(t,e);var n=ne(t.shape,e),r=n[0],i=v(n[1]),o=t.as2D(-1,i),a=vt(t.dtype);return this.reduce(o,"prod",a).reshape(r)},t.prototype.unsortedSegmentSum=function(t,e,n){var r=0,i=oe([r],t.rank),o=t;null!=i&&(o=t.transpose(i),r=se(1,t.rank)[0]);var a=function(t,e,n){for(var r=[],i=t.length,o=0;o<i;o++)o!==e?r.push(t[o]):r.push(n);return r}(o.shape,r,n),s=v([o.shape[r]]),u=o.as2D(-1,s),l=vt(t.dtype),c=this.segOpCompute(u,"unsortedSegmentSum",e,l,n).reshape(a);return null!=i&&(c=c.transpose(ae(i))),c},t.prototype.segOpCompute=function(t,e,n,r,i){var o=t.shape[0],a=t.shape[1],s=function(t,e){var n,r=!1;for(t<=ce?(n=t,r=!0):n=W(t,Math.floor(Math.sqrt(t)));!r;){if(n>e||n===t){r=!0;break}n=W(t,n+1)}return n}(a,i),u=new Gi({windowSize:s,inSize:a,batchSize:o,numSegments:i},e),l=u.outputShape,c=l[0],p=l[1],h=this.makeOutputArray([c,p],r);return this.compileAndRun(u,[t,n],h),h.shape[1]===i?h:(n=We(0,i).tile([a/s]),this.segOpCompute(h,e,n,r,i))},t.prototype.argMinMaxReduce=function(t,e,n){var r=[e];if(ie("arg"+n.charAt(0).toUpperCase()+n.slice(1),r,t.rank),!Bt.get("WEBGL_PACK_REDUCE")||t.rank<=2){var i=ne(t.shape,r),o=i[0],a=v(i[1]),s=t.as2D(-1,a);return this.argReduce(s,n).reshape(o)}return this.argReducePacked(t,n)},t.prototype.argMin=function(t,e){return this.argMinMaxReduce(t,e,"min")},t.prototype.argMax=function(t,e){return this.argMinMaxReduce(t,e,"max")},t.prototype.cumsum=function(t,e,n,r){if(e!==t.rank-1)throw new Error("WebGL cumsum shader expects an inner-most axis="+(t.rank-1)+" but got axis="+e);var i=new Zn(t.shape,n,r);return this.compileAndRun(i,[t])},t.prototype.equal=function(t,e){if(Bt.get("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(equal(a, b));\n","bool");var n=new Mn("return float(a == b);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.notEqual=function(t,e){if(Bt.get("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(notEqual(a, b));\n","bool");var n=new Mn("return float(a != b);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.less=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.less(t,e);if(Bt.get("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(lessThan(a, b));\n","bool");var n=new Mn("return float(a < b);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.lessEqual=function(t,e){if(Bt.get("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(lessThanEqual(a, b));\n","bool");var n=new Mn("return float(a <= b);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.greater=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.greater(t,e);if(Bt.get("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(greaterThan(a, b));\n","bool");var n=new Mn("return float(a > b);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.greaterEqual=function(t,e){if(Bt.get("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(greaterThanEqual(a, b));\n","bool");var n=new Mn("return float(a >= b);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.logicalNot=function(t){var e=new oo(t.shape,"return float(!(x >= 1.0));");return this.compileAndRun(e,[t])},t.prototype.logicalAnd=function(t,e){if(Bt.get("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(\n vec4(greaterThanEqual(a, vec4(1.0))) *\n vec4(greaterThanEqual(b, vec4(1.0))));\n","bool");var n=new Mn("return float(a >= 1.0 && b >= 1.0);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.logicalOr=function(t,e){if(Bt.get("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return min(\n vec4(greaterThanEqual(a, vec4(1.0))) +\n vec4(greaterThanEqual(b, vec4(1.0))),\n vec4(1.0));\n","bool");var n=new Mn("return float(a >= 1.0 || b >= 1.0);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.select=function(t,e,n){var r=new Hi(t.rank,e.shape,e.rank),i=this.makeOutputArray(r.outputShape,yt(e.dtype,n.dtype));return this.compileAndRun(r,[t,e,n],i)},t.prototype.where=function(t){Xt("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");var e=t.dataSync();return ca(t.shape,e)},t.prototype.topk=function(t,e,n){return en(t.dataSync(),t.shape,t.dtype,e)},t.prototype.min=function(t,e){ie("min",e,t.rank);var n=ne(t.shape,e),r=n[0],i=v(n[1]),o=t.as2D(-1,i);return this.reduce(o,"min",o.dtype).reshape(r)},t.prototype.minimum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.minimum(t,e);var n=Bt.get("WEBGL_PACK_BINARY_OPERATIONS")?new Ln("\n vec4 result = vec4(min(a, b));\n vec4 isNaN = min(vec4(isNaN(a)) + vec4(isNaN(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new Mn("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return min(a, b);\n",t.shape,e.shape),r=n.getCustomSetupFunc();return this.compileAndRun(n,[t,e],null,r)},t.prototype.mod=function(t,e){var n=Bt.get("WEBGL_PACK_BINARY_OPERATIONS")?new Ln("\n vec4 result = mod(a, b);\n vec4 isNaN = vec4(equal(b, vec4(0.0)));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new Mn("if (b == 0.0) return NAN;\n return mod(a, b);",t.shape,e.shape),r=n.getCustomSetupFunc();return this.compileAndRun(n,[t,e],null,r)},t.prototype.max=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.max(t,e);ie("max",e,t.rank);var n=ne(t.shape,e),r=n[0],i=v(n[1]),o=t.as2D(-1,i);return this.reduce(o,"max",o.dtype).reshape(r)},t.prototype.maximum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.maximum(t,e);var n=Bt.get("WEBGL_PACK_BINARY_OPERATIONS")?new Ln("\n vec4 result = vec4(max(a, b));\n vec4 isNaN = min(vec4(isNaN(a)) + vec4(isNaN(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new Mn("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return max(a, b);\n",t.shape,e.shape),r=n.getCustomSetupFunc();return this.compileAndRun(n,[t,e],null,r)},t.prototype.all=function(t,e){ie("all",e,t.rank);var n=ne(t.shape,e),r=n[0],i=v(n[1]),o=t.as2D(-1,i);return this.reduce(o,"all",o.dtype).reshape(r)},t.prototype.any=function(t,e){ie("any",e,t.rank);var n=ne(t.shape,e),r=n[0],i=v(n[1]),o=t.as2D(-1,i);return this.reduce(o,"any",o.dtype).reshape(r)},t.prototype.squaredDifference=function(t,e){var n=Bt.get("WEBGL_PACK_BINARY_OPERATIONS")?new Ln("return (a - b) * (a - b);",t.shape,e.shape):new Mn("return (a - b) * (a - b);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},t.prototype.realDivide=function(t,e){var n=new Mn("if (a == b) return 1.0;\n return a / b;",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"float32");return this.compileAndRun(n,[t,e],r)},t.prototype.floorDiv=function(t,e){if(Bt.get("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n vec4 resultSign = sign(a) * sign(b);\n ivec4 ia = round(a);\n ivec4 ib = round(b);\n ivec4 result = ia / ib;\n ivec4 amodb = ia - ib * result;\n\n // Vectorize INT_DIV\n // if (resultSign < 0.0 && amodb != 0) result -= 1;\n // return float(result);\n return vec4(result -\n ivec4(lessThan(resultSign, vec4(0.0))) * ivec4(notEqual(amodb, ivec4(0))));\n","int32");var n=new Mn("\n float resultSign = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n int result = ia / ib;\n int amodb = ia - ib * result;\n\n if (resultSign < 0.0 && amodb != 0) {\n result -= 1;\n }\n return float(result);\n",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"int32");return this.compileAndRun(n,[t,e],r)},t.prototype.add=function(t,e){if("complex64"===t.dtype&&"complex64"===e.dtype)return this.complexSeparableBinaryOp(t,e,Dn);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.add(t,e);var n=yt(t.dtype,e.dtype);if(Bt.get("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,Dn,n);var r=new Mn(Dn,t.shape,e.shape),i=this.makeOutputArray(r.outputShape,n);return this.compileAndRun(r,[t,e],i)},t.prototype.packedBinaryOp=function(t,e,n,r){var i=new Ln(n,t.shape,e.shape),o=this.makePackedTensor(i.outputShape,r);return this.compileAndRun(i,[t,e],o)},t.prototype.complexSeparableBinaryOp=function(t,e,n){var r=this,i=this.texData.get(t.dataId),o=this.texData.get(e.dataId),a=[[i.complexTensors.real,o.complexTensors.real],[i.complexTensors.imag,o.complexTensors.imag]].map(function(i){var o=i[0],a=i[1],s=r.makeComplexComponentTensorHandle(t,o),u=r.makeComplexComponentTensorHandle(e,a),l=new Mn(n,t.shape,e.shape),c=r.makeOutputArray(l.outputShape,yt(o.dtype,a.dtype));return r.compileAndRun(l,[s,u],c)}),s=a[0],u=a[1],l=this.complex(s,u);return s.dispose(),u.dispose(),l},t.prototype.makeComplexComponentTensorHandle=function(t,e){return{dataId:e.dataId,dtype:e.dtype,shape:t.shape}},t.prototype.addN=function(t){for(var e=t[0],n=1;n<t.length;n++)e=this.add(e,t[n]);return e},t.prototype.subtract=function(t,e){if("complex64"===t.dtype&&"complex64"===e.dtype)return this.complexSeparableBinaryOp(t,e,On);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.subtract(t,e);var n=yt(t.dtype,e.dtype);if(Bt.get("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,On,t.dtype);var r=new Mn(On,t.shape,e.shape),i=this.makeOutputArray(r.outputShape,n);return this.compileAndRun(r,[t,e],i)},t.prototype.pow=function(t,e){var n=Bt.get("WEBGL_PACK_BINARY_OPERATIONS"),r=n?new Ln("\n // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.\n vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));\n vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);\n vec4 result = multiplier * pow(abs(a), b);\n\n vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new Mn("\nif(a < 0.0 && floor(b) < b){\n return NAN;\n}\nreturn (round(mod(b, 2.0)) != 1) ?\n pow(abs(a), b) : sign(a) * pow(abs(a), b);\n",t.shape,e.shape),i=yt(t.dtype,e.dtype),o=n?this.makePackedTensor(r.outputShape,i):this.makeOutputArray(r.outputShape,i),a=r.getCustomSetupFunc();return this.compileAndRun(r,[t,e],o,a)},t.prototype.ceil=function(t){var e=new oo(t.shape,"return ceil(x);");return this.compileAndRun(e,[t])},t.prototype.floor=function(t){var e=new oo(t.shape,"return floor(x);");return this.compileAndRun(e,[t])},t.prototype.sign=function(t){var e=new oo(t.shape,"\n if (isNaN(x)) { return 0.0; }\n return sign(x);\n");return this.compileAndRun(e,[t])},t.prototype.round=function(t){var e=new oo(t.shape,"\n // OpenGL ES does not support round function.\n // The algorithm is based on banker's rounding.\n float base = floor(x);\n if ((x - base) < 0.5) {\n return floor(x);\n } else if ((x - base) > 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n");return this.compileAndRun(e,[t])},t.prototype.exp=function(t){var e;return e=Bt.get("WEBGL_PACK")?new bo(t.shape,co):new oo(t.shape,co),this.compileAndRun(e,[t])},t.prototype.expm1=function(t){var e=new oo(t.shape,"return exp(x) - 1.0;");return this.compileAndRun(e,[t])},t.prototype.log=function(t){var e,n=(e=Bt.get("WEBGL_PACK")?new bo(t.shape,"\n vec4 result = log(x);\n vec4 isNaN = vec4(lessThan(x, vec4(0.0)));\n result.r = isNaN.r == 1.0 ? NAN : result.r;\n result.g = isNaN.g == 1.0 ? NAN : result.g;\n result.b = isNaN.b == 1.0 ? NAN : result.b;\n result.a = isNaN.a == 1.0 ? NAN : result.a;\n\n return result;\n"):new oo(t.shape,"if (x < 0.0) return NAN;\n return log(x);")).getCustomSetupFunc();return this.compileAndRun(e,[t],null,n)},t.prototype.log1p=function(t){var e=new oo(t.shape,"return log(1.0 + x);");return this.compileAndRun(e,[t])},t.prototype.sqrt=function(t){var e=new oo(t.shape,"return sqrt(x);");return this.compileAndRun(e,[t])},t.prototype.rsqrt=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.rsqrt(t);var e=new oo(t.shape,"return inversesqrt(x);");return this.compileAndRun(e,[t])},t.prototype.square=function(t){var e=new oo(t.shape,"return x * x;");return this.compileAndRun(e,[t])},t.prototype.reciprocal=function(t){var e=new oo(t.shape,"return 1.0 / x;");return this.compileAndRun(e,[t])},t.prototype.relu=function(t){var e;return e=Bt.get("WEBGL_PACK")?new bo(t.shape,vo):new oo(t.shape,uo),this.compileAndRun(e,[t])},t.prototype.prelu=function(t,e){var n=Bt.get("WEBGL_PACK_BINARY_OPERATIONS")?new Ln("\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n",t.shape,e.shape):new Mn("return (a < 0.) ? b * a : a;",t.shape,e.shape);return this.compileAndRun(n,[t,e])},t.prototype.elu=function(t){var e=new oo(t.shape,"return (x >= 0.0) ? x : (exp(x) - 1.0);");return this.compileAndRun(e,[t])},t.prototype.eluDer=function(t,e){var n=Bt.get("WEBGL_PACK_BINARY_OPERATIONS")?new Ln("\n vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));\n return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\n",t.shape,e.shape):new Mn("return (b >= 1.0) ? a : a * (b + 1.0);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},t.prototype.selu=function(t){var e=new oo(t.shape,lo);return this.compileAndRun(e,[t])},t.prototype.int=function(t){var e=new oo(t.shape,"return float(int(x));"),n=this.makeOutputArray(e.outputShape,"int32");return this.compileAndRun(e,[t],n)},t.prototype.clip=function(t,e,n){var r,i=(r=Bt.get("WEBGL_PACK_CLIP")?new zn(t.shape):new Fn(t.shape)).getCustomSetupFunc(e,n);return this.compileAndRun(r,[t],null,i)},t.prototype.abs=function(t){var e=new oo(t.shape,"return abs(x);");return this.compileAndRun(e,[t])},t.prototype.complexAbs=function(t){var e=this.texData.get(t.dataId),n=new Pn(t.shape),r=[this.makeComplexComponentTensorHandle(t,e.complexTensors.real),this.makeComplexComponentTensorHandle(t,e.complexTensors.imag)];return this.compileAndRun(n,r)},t.prototype.sigmoid=function(t){var e=new oo(t.shape,"return 1.0 / (1.0 + exp(-1.0 * x));");return this.compileAndRun(e,[t])},t.prototype.softplus=function(t){var e=new oo(t.shape,"\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n");return this.compileAndRun(e,[t])},t.prototype.sin=function(t){var e=new oo(t.shape,po);return this.compileAndRun(e,[t])},t.prototype.cos=function(t){var e=new oo(t.shape,ho);return this.compileAndRun(e,[t])},t.prototype.tan=function(t){var e=new oo(t.shape,"return tan(x);");return this.compileAndRun(e,[t])},t.prototype.asin=function(t){var e=new oo(t.shape,"return asin(x);");return this.compileAndRun(e,[t])},t.prototype.acos=function(t){var e=new oo(t.shape,"return acos(x);");return this.compileAndRun(e,[t])},t.prototype.atan=function(t){var e=new oo(t.shape,fo);return this.compileAndRun(e,[t])},t.prototype.atan2=function(t,e){var n=Bt.get("WEBGL_PACK_BINARY_OPERATIONS")?new Ln("\n vec4 result = atan(a, b);\n vec4 isNaN = min(vec4(isNaN(a)) + vec4(isNaN(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new Mn("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return atan(a, b);\n",t.shape,e.shape),r=n.getCustomSetupFunc();return this.compileAndRun(n,[t,e],null,r)},t.prototype.sinh=function(t){var e=new oo(t.shape,"\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n");return this.compileAndRun(e,[t])},t.prototype.cosh=function(t){var e=new oo(t.shape,"\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n");return this.compileAndRun(e,[t])},t.prototype.tanh=function(t){var e=new oo(t.shape,"\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n");return this.compileAndRun(e,[t])},t.prototype.asinh=function(t){var e=new oo(t.shape,"return log(x + sqrt(x * x + 1.0));");return this.compileAndRun(e,[t])},t.prototype.acosh=function(t){var e=new oo(t.shape,mo),n=e.getCustomSetupFunc();return this.compileAndRun(e,[t],null,n)},t.prototype.atanh=function(t){var e=new oo(t.shape,go),n=e.getCustomSetupFunc();return this.compileAndRun(e,[t],null,n)},t.prototype.erf=function(t){var e=new oo(t.shape,'\n // Error function is calculated approximately with elementary function.\n // See "Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables", Abramowitz and Stegun.\n float p = 0.3275911;\n float a1 = 0.254829592;\n float a2 = -0.284496736;\n float a3 = 1.421413741;\n float a4 = -1.453152027;\n float a5 = 1.061405429;\n\n float t = 1.0 / (1.0 + p * x);\n return 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x);\n');return this.compileAndRun(e,[t])},t.prototype.step=function(t,e){var n=new oo(t.shape,function(t){return void 0===t&&(t=0),ao+"\n return x > 0.0 ? 1.0 : float("+t+");\n "}(e));return this.compileAndRun(n,[t])},t.prototype.conv2dByMatMul=function(t,e,n){var r=t.shape,i=this.texData.get(t.dataId);if(!Bt.get("WEBGL_LAZILY_UNPACK")||!Bt.get("WEBGL_PACK_BINARY_OPERATIONS")||r[2]%2==0||!i.isPacked){var o=this.reshape(t,[1,r[0]*r[1]*r[2],n.inChannels]),a=this.reshape(e,[1,n.inChannels,n.outChannels]);return this.reshape(this.batchMatMul(o,a,!1,!1),n.outShape)}var s=ut.make([1,r[0]*r[1]*(r[2]+1),n.inChannels],{dataId:t.dataId},t.dtype,this),u=i.shape;i.shape=i.shape.slice(),i.shape[i.shape.length-2]++,d(Qr(i.shape,s.shape),function(){return"packed reshape "+i.shape+" to "+s.shape+" isn't free"});var l=this.reshape(e,[1,n.inChannels,n.outChannels]),c=this.batchMatMul(s,l,!1,!1),p=this.texData.get(c.dataId);return d(p.isPacked,function(){return"batchMatMul result is expected to be packed"}),i.shape=u,p.shape=n.outShape,ut.make(n.outShape,{dataId:c.dataId},c.dtype,this)},t.prototype.conv2dWithIm2Row=function(t,e,n){var r=n.filterWidth,i=n.filterHeight,o=n.inChannels,a=n.outWidth,s=n.outHeight,u=r*i*o,l=s*a,c=[u,l],p=t.squeeze([0]),h=e.reshape([1,u,-1]),f=new Ei(c,p.shape,n),d=this.compileAndRun(f,[p]).reshape([1,c[0],c[1]]),m=new Ti(d.shape,[1,l,n.outChannels],!0,!1);return this.compileAndRun(m,[d,h]).reshape([1,s,a,n.outChannels])},t.prototype.conv2d=function(t,e,n){if(1===n.filterHeight&&1===n.filterWidth&&1===n.dilationHeight&&1===n.dilationWidth&&1===n.strideHeight&&1===n.strideWidth&&("SAME"===n.padInfo.type||"VALID"===n.padInfo.type))return this.conv2dByMatMul(t,e,n);if(Bt.get("WEBGL_CONV_IM2COL")&&1===t.shape[0])return this.conv2dWithIm2Row(t,e,n);var r=new Kn(n);return this.compileAndRun(r,[t,e])},t.prototype.conv2dDerInput=function(t,e,n){var r=new Vn(n);return this.compileAndRun(r,[t,e])},t.prototype.conv2dDerFilter=function(t,e,n){var r=new Wn(n);return this.compileAndRun(r,[t,e])},t.prototype.depthwiseConv2D=function(t,e,n){var r;return Bt.get("WEBGL_PACK_DEPTHWISECONV")&&n.strideWidth<=2&&n.outChannels/n.inChannels==1?(r=new Yn(n),this.compileAndRun(r,[t,e],this.makePackedTensor(n.outShape,t.dtype))):(r=new Xn(n),this.compileAndRun(r,[t,e]))},t.prototype.depthwiseConv2DDerInput=function(t,e,n){var r=new Hn(n);return this.compileAndRun(r,[t,e])},t.prototype.depthwiseConv2DDerFilter=function(t,e,n){var r=new Gn(n);return this.compileAndRun(r,[t,e])},t.prototype.conv3d=function(t,e,n){var r=new $n(n);return this.compileAndRun(r,[t,e])},t.prototype.conv3dDerInput=function(t,e,n){var r=new qn(n);return this.compileAndRun(r,[t,e])},t.prototype.conv3dDerFilter=function(t,e,n){var r=new jn(n);return this.compileAndRun(r,[t,e])},t.prototype.maxPool=function(t,e){var n=new Li(e,"max",!1),r=this.makeOutputArray(n.outputShape,t.dtype);return this.compileAndRun(n,[t],r)},t.prototype.avgPool=function(t,e){var n=new Li(e,"avg",!1),r=this.makeOutputArray(n.outputShape,"float32");return this.compileAndRun(n,[t],r)},t.prototype.maxPoolBackprop=function(t,e,n,r){var i=new Li(r,"max",!0),o=this.compileAndRun(i,[e]),a=new Ai(r),s=this.makeOutputArray(a.outputShape,e.dtype),u=this.compileAndRun(a,[t,o],s);return o.dispose(),u},t.prototype.avgPoolBackprop=function(t,e,n){var r=new En(n),i=this.makeOutputArray(r.outputShape,e.dtype);return this.compileAndRun(r,[t],i)},t.prototype.cast=function(t,e){return He(t,e,this)},t.prototype.unstack=function(t,e){for(var n=t.shape[e],r=new Array(t.rank-1),i=0,o=0;o<t.rank;o++)o!==e&&(r[i++]=t.shape[o]);var a=new Array(t.rank).fill(0),s=t.shape.slice();s[e]=1;var u=new Array(n);for(o=0;o<u.length;o++)a[e]=o,u[o]=this.slice(t,a,s).reshape(r);return u},t.prototype.reshape=function(t,e){var n=this.texData.get(t.dataId);return!n.isPacked||Qr(t.shape,e)||null!==n.texture&&Qr(n.shape,e)?Ke(t,e):this.packedReshape(t,e)},t.prototype.resizeBilinear=function(t,e,n,r){var i=Bt.get("WEBGL_PACK_IMAGE_OPERATIONS")?new Ui(t.shape,e,n,r):new Bi(t.shape,e,n,r);return this.compileAndRun(i,[t])},t.prototype.resizeBilinearBackprop=function(t,e,n){var r=new Pi(t,e,n);return this.compileAndRun(r,[t])},t.prototype.resizeNearestNeighbor=function(t,e,n,r){var i=new Vi(t.shape,e,n,r);return this.compileAndRun(i,[t])},t.prototype.resizeNearestNeighborBackprop=function(t,e,n){var r=new Wi(t,e,n);return this.compileAndRun(r,[t])},t.prototype.multinomial=function(t,e,n,r){var i=e?t:Ce(t),o=i.shape[0],a=i.shape[1],s=new Ri(o,a,n),u=this.makeOutputArray(s.outputShape,"int32"),l=s.getCustomSetupFunc(r);return this.compileAndRun(s,[i],u,l)},t.prototype.oneHot=function(t,e,n,r){var i=new Di(t.size,e,n,r);return this.compileAndRun(i,[t])},t.prototype.nonMaxSuppression=function(t,e,n,r,i){return Xt("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead"),Ze(t.dataSync(),e.dataSync(),n,r,i)},t.prototype.cropAndResize=function(t,e,n,r,i,o){var a=new Jn(t.shape,e.shape,r,i,o);return this.compileAndRun(a,[t,e,n])},t.prototype.depthToSpace=function(t,e,n){d(e>1,function(){return"blockSize should be > 1 for depthToSpace, but was: "+e});var r=t.shape[0],i="NHWC"===n?t.shape[1]:t.shape[2],o="NHWC"===n?t.shape[2]:t.shape[3],a="NHWC"===n?t.shape[3]:t.shape[1],s=i*e,u=o*e,l=a/(e*e),c=new tr("NHWC"===n?[r,s,u,l]:[r,l,s,u],e,n);return this.compileAndRun(c,[t])},t.prototype.split=function(t,e,n){return tn(t,e,n)},t.prototype.scatterND=function(t,e,n){var r=fe(0,t,n),i=r.sliceRank,o=r.numUpdates,a=r.sliceSize,s=r.strides,u=r.outputSize,l=[u/a,a],c=t.reshape([o,i]),p=e.reshape([o,a]);if(0===u)return Ke(Te([]),n);var h=Re(0),f=new qi(o,i,c.rank,p.rank,s,l);return this.compileAndRun(f,[p,c,h]).reshape(n)},t.prototype.sparseToDense=function(t,e,n,r){var i=fe(0,t,n),o=i.sliceRank,a=i.numUpdates,s=i.strides,u=i.outputSize,l=new qi(a,o,t.rank,e.rank,s,[u,1],!1);return this.compileAndRun(l,[e,t,r]).reshape(n)},t.prototype.fft=function(t){return this.fftImpl(t,!1)},t.prototype.ifft=function(t){return this.fftImpl(t,!0)},t.prototype.fftImpl=function(t,e){var n=this.texData.get(t.dataId),r=new ir(nr,t.shape,e),i=new ir(rr,t.shape,e),o=[this.makeComplexComponentTensorHandle(t,n.complexTensors.real),this.makeComplexComponentTensorHandle(t,n.complexTensors.imag)],a=this.compileAndRun(r,o),s=this.compileAndRun(i,o),u=this.complex(a,s).as2D(t.shape[0],t.shape[1]);return a.dispose(),s.dispose(),u},t.prototype.gatherND=function(t,e){var n=e.shape,r=n[n.length-1],i=le(t,e),o=i[0],a=i[1],s=i[2],u=i[3],l=e.reshape([a,r]),c=t.reshape([t.size/s,s]),p=new cr(r,u,[a,s]);return this.compileAndRun(p,[c,l]).reshape(o)},t.prototype.fill=function(t,e,n){if("string"===(n=n||B(e))){var r=T(n,v(t));return r.fill(e),ut.make(t,{values:r},n)}var i=new or(t,e),o=i.getCustomSetupFunc(e),a=this.makeOutputArray(t,n);return this.compileAndRun(i,[],a,o)},t.prototype.onesLike=function(t){if("string"===t.dtype)throw new Error("onesLike is not supported under string dtype");return this.fill(t.shape,1,t.dtype)},t.prototype.zerosLike=function(t){return this.fill(t.shape,"string"===t.dtype?"":0,t.dtype)},t.prototype.makeOutputArray=function(t,e){return ut.make(t,{},e,this)},t.prototype.makePackedTensor=function(t,e){var n=ut.make(t,{},e,this);return this.texData.get(n.dataId).isPacked=!0,n},t.prototype.unpackTensor=function(t){var e=new wo(t.shape);return this.compileAndRun(e,[t],ut.make(e.outputShape,{},t.dtype,this))},t.prototype.packTensor=function(t){var e=new Oi(t.shape);return this.compileAndRun(e,[t],this.makePackedTensor(t.shape,t.dtype))},t.prototype.packedReshape=function(t,e){var n=t.reshape([Xr(t.shape)].concat(Yr(t.shape))),r=[Xr(e)].concat(Yr(e)),i=new zi(r,n.shape);return this.compileAndRun(i,[n]).reshape(e)},t.prototype.compileAndRun=function(t,e,n,r,i){var o=this;if(void 0===i&&(i=!0),null==n&&(n=t.usesPackedTextures?this.makePackedTensor(t.outputShape,e[0].dtype):this.makeOutputArray(t.outputShape,e[0].dtype)),0===n.size)return this.texData.get(n.dataId).values=A(n.dtype,0),n;var a=e.map(function(e){if("complex64"===e.dtype)throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var n=o.texData.get(e.dataId);if(null==n.texture){if(!t.usesPackedTextures&&v(e.shape)<=Bt.get("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:e.shape,texData:null,isUniform:!0,uniformValues:o.readSync(e.dataId)};t.usesPackedTextures&&(n.isPacked=!0,n.shape=e.shape)}else if(!!n.isPacked!=!!t.usesPackedTextures)e=n.isPacked?o.unpackTensor(e):o.packTensor(e),n=o.texData.get(e.dataId);else if(n.isPacked&&!Qr(n.shape,e.shape)){var r=e,i=e.shape;e.shape=n.shape,e=o.packedReshape(e,i),n=o.texData.get(e.dataId),r.shape=i}return o.uploadToGPU(e.dataId),{shape:e.shape,texData:n,isUniform:!1}});this.uploadToGPU(n.dataId);var s,u={shape:n.shape,texData:this.texData.get(n.dataId),isUniform:!1},l=function(t,e,n){var r="";e.concat(n).forEach(function(t){var e=null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0,n=t.isUniform?"uniform":t.texData.texShape;r+=t.shape+"_"+n+"_"+e});var i=t.userCode;return t.constructor.name+"_"+r+"_"+i}(t,a,u),c=this.getAndSaveBinary(l,function(){return function(t,e,n,r){for(var i=e.userCode,o=n.map(function(t,n){var r={logicalShape:t.shape,texShape:t.isUniform?null:t.texData.texShape,isUniform:t.isUniform,isPacked:!t.isUniform&&t.texData.isPacked,flatOffset:null};return null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0&&(r.flatOffset=t.texData.slice.flatOffset),{name:e.variableNames[n],shapeInfo:r}}),a=o.map(function(t){return t.shapeInfo}),s={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},u=hn(o,s,i,e.usesPackedTextures),l=t.createProgram(u),c={},p=0;p<e.variableNames.length;p++){var h=e.variableNames[p];c[h]=t.getUniformLocation(l,h,!1),c["offset"+h]=t.getUniformLocation(l,"offset"+h,!1)}return{program:e,source:u,webGLProgram:l,uniformLocations:c,gpgpu:t,inShapeInfos:a,outShapeInfo:s}}(o.gpgpu,t,a,u)}),p=null!=this.activeTimers;p&&(s=this.startTimer()),function(t,e,n,r){Ci(t.inShapeInfos,e),Ci([t.outShapeInfo],[n]);var i=n.texData.texture,o=n.texData.texShape,a=t.gpgpu;n.texData.isPacked?a.setOutputPackedMatrixTexture(i,o[0],o[1]):a.setOutputMatrixTexture(i,o[0],o[1]),a.setProgram(t.webGLProgram),e.forEach(function(e,n){var r=t.program.variableNames[n],i=t.uniformLocations[r],o=t.uniformLocations["offset"+r];if(null!=i)if(e.isUniform)if(1===v(e.shape))a.gl.uniform1f(i,e.uniformValues[0]);else{var s=e.uniformValues;s instanceof Float32Array||(s=new Float32Array(s)),a.gl.uniform1fv(i,s)}else null!=e.texData.slice&&null!=o&&a.gl.uniform1i(o,e.texData.slice.flatOffset),a.setInputMatrixTexture(e.texData.texture,i,n)}),null!=r&&r(a,t.webGLProgram),a.executeProgram()}(c,a,u,r);var h=1024*Bt.get("WEBGL_NUM_MB_BEFORE_PAGING");if(i&&this.numBytesInGPU>h)for(var f=this.numBytesInGPU-h;f>0&&this.lruDataGPU.length>0;){var d=this.lruDataGPU.shift(),m=this.texData.get(d),g=m.texShape,y=m.dtype;f-=this.computeBytes(g,y),this.read(d)}return p&&(s=this.endTimer(s),this.activeTimers.push({name:t.constructor.name,query:this.getQueryTime(s)})),Bt.get("WEBGL_LAZILY_UNPACK")||!this.texData.get(n.dataId).isPacked||t.isPackShader?n:this.unpackTensor(n)},t.prototype.getAndSaveBinary=function(t,e){return t in this.binaryCache||(this.binaryCache[t]=e()),this.binaryCache[t]},t.prototype.getTextureManager=function(){return this.textureManager},t.prototype.dispose=function(){if(!this.disposed){for(var t in this.binaryCache)this.gpgpu.deleteProgram(this.binaryCache[t].webGLProgram);this.textureManager.dispose(),this.canvas.remove(),null!=this.fromPixels2DContext&&this.fromPixels2DContext.canvas.remove(),this.gpgpuCreatedLocally&&this.gpgpu.dispose(),this.disposed=!0}},t.prototype.floatPrecision=function(){var t=this;return qt(function(){var e=Bt.get("DEBUG");Bt.set("DEBUG",!1);var n=t.abs(Re(1e-8)).dataSync()[0];return Bt.set("DEBUG",e),n>0?32:16})},t.prototype.uploadToGPU=function(t){var e,n=this.texData.get(t),r=n.shape,i=n.dtype,o=n.values,a=n.texture,s=n.usage,u=n.isPacked;if(null==a){var l,c=null!=this.activeTimers;c&&(l=performance.now());var p=Jr(r,u);n.texShape=p;var h=this.acquireTexture(t,p,s,i,u);if(n.texture=h,null!=o){if(u){var f=Xr(r),d=1,m=1;r.length&&(d=(e=Yr(r))[0],m=e[1]),this.gpgpu.uploadMatrixToPackedTexture(h,f,d,m,p[0],p[1],ha(o))}else this.gpgpu.uploadMatrixToTexture(h,p[0],p[1],ha(o));n.values=null,c&&(this.uploadWaitMs+=performance.now()-l)}}else Bt.get("WEBGL_NUM_MB_BEFORE_PAGING")<Number.POSITIVE_INFINITY&&this.lruDataGPU.indexOf(t)>=0&&(this.lruDataGPU.splice(this.lruDataGPU.indexOf(t),1),this.lruDataGPU.push(t))},t.prototype.convertAndCacheOnCPU=function(t,e){var n=this.texData.get(t),r=n.texture,i=n.texShape,o=n.dtype,a=n.usage,s=n.isPacked;return null!=r&&(this.releaseTexture(t,r,i,a,o,s),n.texture=null,n.texShape=null,n.isPacked=!1),n.usage=ur.UPLOAD,null!=e&&(n.values=function(t,e){if("float32"===e||"complex64"===e)return t;if("int32"===e||"bool"===e){for(var n="int32"===e?new Int32Array(t.length):new Uint8Array(t.length),r=0;r<n.length;++r)n[r]=Math.round(t[r]);return n}throw new Error("Unknown dtype "+e)}(e,o)),n.values},t.prototype.releaseTexture=function(t,e,n,r,i,o){if(Bt.get("WEBGL_NUM_MB_BEFORE_PAGING")<Number.POSITIVE_INFINITY){var a=this.lruDataGPU.indexOf(t);a>=0&&this.lruDataGPU.splice(a,1)}this.numBytesInGPU-=this.computeBytes(n,i),this.textureManager.releaseTexture(e,n,r,o)},t.prototype.acquireTexture=function(t,e,n,r,i){return Bt.get("WEBGL_NUM_MB_BEFORE_PAGING")<Number.POSITIVE_INFINITY&&this.lruDataGPU.push(t),this.numBytesInGPU+=this.computeBytes(e,r),this.textureManager.acquireTexture(e,n,i)},t.prototype.computeBytes=function(t,e){return t[0]*t[1]*M(e)},t}();function ha(t){return t instanceof Float32Array?t:new Float32Array(t)}Bt.get("IS_BROWSER")&&Bt.registerBackend("webgl",function(){return new pa},2);var fa=Se({abs_:function(t){var e=xe(t,"x","abs");return"complex64"===e.dtype?Bt.engine.runKernel(function(t){return t.complexAbs(e)},{$x:e}):Bt.engine.runKernel(function(t){return t.abs(e)},{$x:e},function(t){return{$x:function(){return t.mulStrict(e.toFloat().step(-1))}}})}}),da=Se({acos_:function(t){var e=xe(t,"x","acos");return Bt.engine.runKernel(function(t){return t.acos(e)},{$x:e},function(t){return{$x:function(){return t.divStrict(Re(1).sub(e.toFloat().square()).sqrt()).neg()}}})}}),ma=Se({acosh_:function(t){var e=xe(t,"x","acosh");return Bt.engine.runKernel(function(t){return t.acosh(e)},{$x:e},function(t){return{$x:function(){return t.divStrict(e.toFloat().square().sub(1).sqrt())}}})}}),ga=Se({asin_:function(t){var e=xe(t,"x","asin");return Bt.engine.runKernel(function(t){return t.asin(e)},{$x:e},function(t){return{$x:function(){return t.divStrict(Re(1).sub(e.toFloat().square()).sqrt())}}})}}),ya=Se({asinh_:function(t){var e=xe(t,"x","asinh");return Bt.engine.runKernel(function(t){return t.asinh(e)},{$x:e},function(t){return{$x:function(){return t.divStrict(Re(1).add(e.toFloat().square()).sqrt())}}})}}),va=Se({atan_:function(t){var e=xe(t,"x","atan");return Bt.engine.runKernel(function(t){return t.atan(e)},{$x:e},function(t){return{$x:function(){return t.div(e.toFloat().square().add(1))}}})}}),ba=Se({atanh_:function(t){var e=xe(t,"x","atanh");return Bt.engine.runKernel(function(t){return t.atanh(e)},{$x:e},function(t){return{$x:function(){return t.div(Re(1).sub(e.toFloat().square()))}}})}}),wa=Se({ceil_:function(t){var e=xe(t,"x","ceil");return Bt.engine.runKernel(function(t){return t.ceil(e)},{$x:e},function(t){return{$x:function(){return je(t)}}})}}),xa=Se({clipByValue_:function(t,e,n){var r=xe(t,"x","clipByValue");return d(e<=n,function(){return"Error in clip: min ("+e+") must be less than or equal to max ("+n+")."}),Bt.engine.runKernel(function(t){return t.clip(r,e,n)},{$x:r},function(t){return{$x:function(){return t.where(r.greaterEqual(e).logicalAnd(r.lessEqual(n)),je(t))}}})}}),Na=Se({cos_:function(t){var e=xe(t,"x","cos");return Bt.engine.runKernel(function(t){return t.cos(e)},{$x:e},function(t){return{$x:function(){return e.toFloat().sin().neg().mulStrict(t)}}})}}),Sa=Se({cosh_:function(t){var e=xe(t,"x","cosh");return Bt.engine.runKernel(function(t){return t.cosh(e)},{$x:e},function(t){return{$x:function(){return e.toFloat().sinh().mulStrict(t)}}})}}),Ca=Se({erf_:function(t){var e=xe(t,"x","erf");return d("int32"===e.dtype||"float32"===e.dtype,function(){return"Input dtype must be `int32` or `float32`."}),"int32"===e.dtype&&(e=e.toFloat()),Bt.engine.runKernel(function(t){return t.erf(e)},{$x:e},function(t){return{$x:function(){return t.mul(e.square().neg().exp().mul(2/Math.sqrt(Math.PI)))}}})}}),Ea=Se({exp_:function(t){var e=xe(t,"x","exp");return Bt.engine.runKernel(function(t,n){return n(t.exp(e))},{$x:e},function(t,e){var n=e[0];return{$x:function(){return t.mulStrict(n)}}})}}),Ia=Se({expm1_:function(t){var e=xe(t,"x","expm1");return Bt.engine.runKernel(function(t){return t.expm1(e)},{$x:e},function(t){return{$x:function(){return t.mulStrict(e.exp())}}})}}),ka=Se({floor_:function(t){var e=xe(t,"x","floor");return Bt.engine.runKernel(function(t){return t.floor(e)},{$x:e},function(t){return{$x:function(){return je(t)}}})}}),Aa=Se({log_:function(t){var e=xe(t,"x","log");return Bt.engine.runKernel(function(t){return t.log(e)},{$x:e},function(t){return{$x:function(){return t.divStrict(e.toFloat())}}})}}),Ta=Se({log1p_:function(t){var e=xe(t,"x","log1p");return Bt.engine.runKernel(function(t){return t.log1p(e)},{$x:e},function(t){return{$x:function(){return t.div(e.add(1))}}})}}),Ra=Se({logSigmoid_:function(t){var e=xe(t,"x","logSigmoid");return Bt.engine.runKernel(function(t){return t.softplus(e.neg()).neg()},{$x:e},function(t){return{$x:function(){return t.mulStrict(e.neg().sigmoid())}}})}}),Da=Se({neg_:function(t){var e=xe(t,"x","neg");return Bt.engine.runKernel(function(t){return t.neg(e)},{$x:e},function(t){return{$x:function(){return t.neg()}}})}}),Oa=Se({reciprocal_:function(t){var e=xe(t,"x","reciprocal");return Bt.engine.runKernel(function(t){return t.reciprocal(e)},{$x:e},function(t){return{$x:function(){return t.divStrict(e.square().neg())}}})}}),_a=Se({round_:function(t){var e=xe(t,"x","round");return Bt.engine.runKernel(function(t){return t.round(e)},{$x:e},function(t){return{$x:function(){return je(t)}}})}}),Ma=Se({rsqrt_:function(t){var e=xe(t,"x","rsqrt");return Bt.engine.runKernel(function(t){return t.rsqrt(e)},{$x:e},function(t){return{$x:function(){return t.div(e.pow(1.5).mul(2)).neg()}}})}}),La=Se({sigmoid_:function(t){var e=xe(t,"x","sigmoid");return Bt.engine.runKernel(function(t,n){return n(t.sigmoid(e))},{$x:e},function(t,e){var n=e[0];return{$x:function(){return t.mul(n.mul(Re(1).sub(n)))}}})}}),Fa=Se({sign_:function(t){var e=xe(t,"x","sign");return Bt.engine.runKernel(function(t){return t.sign(e)},{$x:e},function(t){return{$x:function(){return je(t)}}})}}),za=Se({sin_:function(t){var e=xe(t,"x","sin");return Bt.engine.runKernel(function(t){return t.sin(e)},{$x:e},function(t){return{$x:function(){return e.toFloat().cos().mulStrict(t)}}})}}),Pa=Se({sinh_:function(t){var e=xe(t,"x","sinh");return Bt.engine.runKernel(function(t){return t.sinh(e)},{$x:e},function(t){return{$x:function(){return e.toFloat().cosh().mulStrict(t)}}})}}),Ba=Se({softplus_:function(t){var e=xe(t,"x","softplus");return Bt.engine.runKernel(function(t){return t.softplus(e)},{$x:e},function(t){return{$x:function(){return t.mulStrict(e.sigmoid())}}})}}),Ua=Se({sqrt_:function(t){var e=xe(t,"x","sqrt");return Bt.engine.runKernel(function(t){return t.sqrt(e)},{$x:e},function(t){return{$x:function(){return t.div(e.toFloat().sqrt().mul(2))}}})}}),Wa=Se({square_:function(t){var e=xe(t,"x","square");return Bt.engine.runKernel(function(t){return t.square(e)},{$x:e},function(t){return{$x:function(){return t.mul(e.toFloat().mul(2))}}})}}),Va=Se({step_:function(t,e){void 0===e&&(e=0);var n=xe(t,"x","step");return Bt.engine.runKernel(function(t){return t.step(n,e)},{$x:n},function(t){return{$x:function(){return je(t)}}})}}),ja=Se({tan_:function(t){var e=xe(t,"x","tan");return Bt.engine.runKernel(function(t){return t.tan(e)},{$x:e},function(t){return{$x:function(){return t.divStrict(e.cos().square())}}})}}),qa=Se({tanh_:function(t){var e=xe(t,"x","tanh");return Bt.engine.runKernel(function(t,n){return n(t.tanh(e))},{$x:e},function(t,e){var n=e[0];return{$x:function(){return Re(1).sub(n.square()).mulStrict(t)}}})}});function Ga(t,e,n,r,i,o){var a,s,u=xe(t,"x","batchNorm"),l=xe(e,"mean","batchNorm"),c=xe(n,"variance","batchNorm");return null!=i&&(a=xe(i,"scale","batchNorm")),null!=r&&(s=xe(r,"offset","batchNorm")),d(2===u.rank,function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."}),d(2===l.rank||1===l.rank,function(){return"Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank "+l.rank+"."}),d(2===c.rank||1===c.rank,function(){return"Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank "+c.rank+"."}),null!=a&&d(2===a.rank||1===a.rank,function(){return"Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank "+a.rank+"."}),null!=s&&d(2===s.rank||1===s.rank,function(){return"Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank "+s.rank+"."}),$a(u,l,c,s,a,o)}function Ha(t,e,n,r,i,o){var a,s,u=xe(t,"x","batchNorm"),l=xe(e,"mean","batchNorm"),c=xe(n,"variance","batchNorm");return null!=i&&(a=xe(i,"scale","batchNorm")),null!=r&&(s=xe(r,"offset","batchNorm")),d(3===u.rank,function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."}),d(3===l.rank||1===l.rank,function(){return"Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank "+l.rank+"."}),d(3===c.rank||1===c.rank,function(){return"Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank "+c.rank+"."}),null!=a&&d(3===a.rank||1===a.rank,function(){return"Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank "+a.rank+"."}),null!=s&&d(3===s.rank||1===s.rank,function(){return"Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank "+s.rank+"."}),$a(u,l,c,s,a,o)}function Ka(t,e,n,r,i,o){var a,s,u=xe(t,"x","batchNorm"),l=xe(e,"mean","batchNorm"),c=xe(n,"variance","batchNorm");return null!=i&&(a=xe(i,"scale","batchNorm")),null!=r&&(s=xe(r,"offset","batchNorm")),d(4===u.rank,function(){return"Error in batchNorm4D: x must be rank 4 but got rank "+u.rank+"."}),d(4===l.rank||1===l.rank,function(){return"Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank "+l.rank+"."}),d(4===c.rank||1===c.rank,function(){return"Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank "+c.rank+"."}),null!=a&&d(4===a.rank||1===a.rank,function(){return"Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank "+a.rank+"."}),null!=s&&d(4===s.rank||1===s.rank,function(){return"Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank "+s.rank+"."}),$a(u,l,c,s,a,o)}function $a(t,e,n,r,i,o){null==o&&(o=.001);var a,s,u,l=xe(t,"x","batchNorm"),c=xe(e,"mean","batchNorm"),p=xe(n,"variance","batchNorm");return null!=i&&(a=xe(i,"scale","batchNorm")),null!=r&&(s=xe(r,"offset","batchNorm")),d(c.rank===p.rank,function(){return"Batch normalization gradient requires mean and variance to have equal ranks."}),d(null==s||c.rank===s.rank,function(){return"Batch normalization gradient requires mean and offset to have equal ranks."}),d(null==a||c.rank===a.rank,function(){return"Batch normalization gradient requires mean and scale to have equal ranks."}),u=0===l.rank||1===l.rank?l.as4D(1,1,1,l.size):2===l.rank?l.as4D(1,1,l.shape[0],l.shape[1]):3===l.rank?l.as4D(1,l.shape[0],l.shape[1],l.shape[2]):l,Bt.engine.runKernel(function(t){return t.batchNormalization(u,Xa(c),Xa(p),o,Xa(a),Xa(s))},{$x:l,$mean:c,$variance:p,$scale:a,$offset:s},function(t){var e=null==a?Re(1):a,n=sn(c.shape,u.shape),r=[];if(1===c.rank){for(var i=0;i<u.shape.length-1;++i)r.push(u.shape[i]);r.push(1)}var s=l.sub(c),h=t.mul(e),f=Ma(p.add(Re(o))),d=f.mul(f).mul(f).mul(Re(-.5));return{$x:function(){return 1===c.rank?t.mul(aa(f.as4D(1,1,1,c.shape[0]),r)).mul(e).reshape(l.shape):t.mul(f).mul(e).reshape(l.shape)},$mean:function(){var t=f.mul(Re(-1)).mul(h);return 1===c.rank&&(t=t.sum(n)),t.reshape(c.shape)},$variance:function(){var t=d.mul(s).mul(h);return 1===c.rank&&(t=t.sum(n)),t.reshape(c.shape)},$scale:function(){var e=s.mul(f),r=t.mul(e);return 1===c.rank&&(r=r.sum(n)),r.reshape(c.shape)},$offset:function(){var e=t;return 1===c.rank&&(e=e.sum(n)),e.reshape(c.shape)}}}).reshape(l.shape)}function Xa(t){return null==t?null:0===t.rank?t.as1D():1===t.rank?t:2===t.rank?t.as4D(1,1,t.shape[0],t.shape[1]):3===t.rank?t.as4D(1,t.shape[0],t.shape[1],t.shape[2]):t}function Ya(){Pt("tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon")}var Ja=Se({batchNormalization2d_:function(t,e,n,r,i,o){return void 0===r&&(r=.001),Ya(),Ga(t,e,n,o,i,r)}}),Za=Se({batchNormalization3d_:function(t,e,n,r,i,o){return void 0===r&&(r=.001),Ya(),Ha(t,e,n,o,i,r)}}),Qa=Se({batchNormalization4d_:function(t,e,n,r,i,o){return void 0===r&&(r=.001),Ya(),Ka(t,e,n,o,i,r)}}),ts=Se({batchNormalization_:function(t,e,n,r,i,o){return void 0===r&&(r=.001),Ya(),$a(t,e,n,o,i,r)}}),es=Se({batchNorm_:$a}),ns=Se({batchNorm2d_:Ga}),rs=Se({batchNorm3d_:Ha}),is=Se({batchNorm4d_:Ka});function os(t,e,n,r,i,o,a){void 0===a&&(a="channelsLast");var s,u=us(e),l=u[0],c=u[1];if("channelsLast"===a)s=[l,c,t[3],t[3]];else{if("channelsFirst"!==a)throw new Error("Unknown dataFormat "+a);s=[l,c,t[1],t[1]]}return as(t,s,n,r,i,o,!1,a)}function as(t,e,n,r,i,o,a,s){void 0===a&&(a=!1),void 0===s&&(s="channelsLast");var u=[-1,-1,-1,-1],l=u[0],c=u[1],p=u[2],h=u[3];if("channelsLast"===s)l=t[0],c=t[1],p=t[2],h=t[3];else{if("channelsFirst"!==s)throw new Error("Unknown dataFormat "+s);l=t[0],h=t[1],c=t[2],p=t[3]}var f,m=e[0],g=e[1],y=e[3],v=us(n),b=v[0],x=v[1],N=us(r),S=N[0],C=N[1],E=cs(m,S),I=cs(g,C),k=function(t,e,n,r,i,o,a,s){var u,l,c;if("number"==typeof t){u={top:t,bottom:t,left:t,right:t,type:0===t?"VALID":"NUMBER"};var p=function(t,e,n,r,i,o){null==i&&(i=function(t,e,n,r){void 0===r&&(r=1);var i=cs(e,r);return Math.floor((t[0]*(n-1)-n+i)/2)}(t,e,r));var a=t[0],s=t[1],u=ps((a-e+2*i)/r+1,o);d(w(u),function(){return"The output # of rows ("+u+") must be an integer. Change the stride and/or zero pad parameters"});var l=ps((s-e+2*i)/r+1,o);return d(w(l),function(){return"The output # of columns ("+l+") must be an integer. Change the stride and/or zero pad parameters"}),[u,l,n]}([e,n,1],o,1,r,t,s);l=p[0],c=p[1]}else if("same"===t){l=Math.ceil(e/r),c=Math.ceil(n/i);var h=Math.max(0,(l-1)*r+o-e),f=Math.max(0,(c-1)*i+a-n),m=Math.floor(h/2),g=h-m,y=Math.floor(f/2);u={top:m,bottom:g,left:y,right:f-y,type:"SAME"}}else{if("valid"!==t)throw Error("Unknown padding parameter: "+t);u={top:0,bottom:0,left:0,right:0,type:"VALID"},l=Math.ceil((e-o+1)/r),c=Math.ceil((n-a+1)/i)}return{padInfo:u,outHeight:l,outWidth:c}}(i,c,p,b,x,E,I,o),A=k.padInfo,T=k.outHeight,R=k.outWidth,D=a?y*h:y;return"channelsFirst"===s?f=[l,D,T,R]:"channelsLast"===s&&(f=[l,T,R,D]),{batchSize:l,dataFormat:s,inHeight:c,inWidth:p,inChannels:h,outHeight:T,outWidth:R,outChannels:D,padInfo:A,strideHeight:b,strideWidth:x,filterHeight:m,filterWidth:g,effectiveFilterHeight:E,effectiveFilterWidth:I,dilationHeight:S,dilationWidth:C,inShape:t,outShape:f,filterShape:e}}function ss(t,e,n,r,i,o,a){void 0===o&&(o=!1),void 0===a&&(a="channelsLast");var s=[-1,-1,-1,-1,-1],u=s[0],l=s[1],c=s[2],p=s[3],h=s[4];if("channelsLast"===a)u=t[0],l=t[1],c=t[2],p=t[3],h=t[4];else{if("channelsFirst"!==a)throw new Error("Unknown dataFormat "+a);u=t[0],h=t[1],l=t[2],c=t[3],p=t[4]}var f,d=e[0],m=e[1],g=e[2],y=e[4],v=ls(n),b=v[0],w=v[1],x=v[2],N=ls(r),S=N[0],C=N[1],E=N[2],I=function(t,e,n,r,i,o,a,s,u,l){var c,p,h,f;if("same"===t){var d=((p=Math.ceil(e/i))-1)*i+s-e,m=((h=Math.ceil(n/o))-1)*o+u-n,g=((f=Math.ceil(r/a))-1)*a+l-r,y=Math.floor(d/2),v=d-y,b=Math.floor(m/2),w=m-b,x=Math.floor(g/2);c={top:b,bottom:w,left:x,right:g-x,front:y,back:v,type:"SAME"}}else{if("valid"!==t)throw Error("Unknown padding parameter: "+t);c={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},p=Math.ceil((e-s+1)/i),h=Math.ceil((n-u+1)/o),f=Math.ceil((r-l+1)/a)}return{padInfo:c,outDepth:p,outHeight:h,outWidth:f}}(i,l,c,p,b,w,x,cs(d,S),cs(m,C),cs(g,E)),k=I.padInfo,A=I.outDepth,T=I.outHeight,R=I.outWidth,D=o?y*h:y;return"channelsFirst"===a?f=[u,D,A,T,R]:"channelsLast"===a&&(f=[u,A,T,R,D]),{batchSize:u,dataFormat:a,inDepth:l,inHeight:c,inWidth:p,inChannels:h,outDepth:A,outHeight:T,outWidth:R,outChannels:D,padInfo:k,strideDepth:b,strideHeight:w,strideWidth:x,filterDepth:d,filterHeight:m,filterWidth:g,dilationDepth:S,dilationHeight:C,dilationWidth:E,inShape:t,outShape:f,filterShape:e}}function us(t){return"number"==typeof t?[t,t]:t}function ls(t){return"number"==typeof t?[t,t,t]:t}function cs(t,e){return e<=1?t:t+(t-1)*(e-1)}function ps(t,e){if(!e)return t;switch(e){case"round":return Math.round(t);case"ceil":return Math.ceil(t);case"floor":return Math.floor(t);default:throw new Error("Unknown roundingMode "+e)}}function hs(t){var e=us(t),n=e[0],r=e[1];return 1===n&&1===r}function fs(t,e){return hs(t)||hs(e)}function ds(t,e,n,r,i,o){d(t.length===e.rank,function(){return"Length of inShape ("+t.length+") and rank of dy ("+e.rank+") must match"});var a=t,s=e,u=!1;3===e.rank&&(u=!0,s=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]),a=[1,t[0],t[1],t[2]]);var l=a[3],c=s.shape[3];d(4===a.length,function(){return"Error in conv2dDerInput: inShape must be length 4, but got length "+a.length+"."}),d(4===s.rank,function(){return"Error in conv2dDerInput: dy must be rank 4, but got rank "+s.rank}),d(4===n.rank,function(){return"Error in conv2dDerInput: filter must be rank 4, but got rank "+n.rank}),d(l===n.shape[2],function(){return"Error in conv2dDerInput: depth of input ("+l+") must match input depth for filter "+n.shape[2]+"."}),d(c===n.shape[3],function(){return"Error in conv2dDerInput: depth of output ("+c+") must match output depth for filter "+n.shape[3]+"."}),null!=o&&d(w(i),function(){return"Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+i+"."});var p=as(a,n.shape,r,1,i,o),h=Bt.engine.runKernel(function(t){return t.conv2dDerInput(s,n,p)},{dy4D:s,filter:n},function(t){return{dy4D:function(){return vs(t,n,r,i,"NHWC",1,o)},filter:function(){return ws(t,s,n.shape,r,i,o)}}});return u?h.as3D(h.shape[1],h.shape[2],h.shape[3]):h}function ms(t,e,n,r,i,o){var a=t;3===t.rank&&(a=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var s=e;3===s.rank&&(s=e.as4D(1,e.shape[0],e.shape[1],e.shape[2])),d(4===a.rank,function(){return"Error in conv2dDerFilter: input must be rank 4, but got shape "+a.shape+"."}),d(4===s.rank,function(){return"Error in conv2dDerFilter: dy must be rank 4, but got shape "+s.shape+"."}),d(4===n.length,function(){return"Error in conv2dDerFilter: filterShape must be length 4, but got "+n+"."}),d(a.shape[3]===n[2],function(){return"Error in conv2dDerFilter: depth of input "+a.shape[3]+") must match input depth in filter ("+n[2]+"."}),d(s.shape[3]===n[3],function(){return"Error in conv2dDerFilter: depth of dy ("+s.shape[3]+") must match output depth for filter ("+n[3]+")."}),null!=o&&d(w(i),function(){return"Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+i+"."});var u=as(a.shape,n,r,1,i,o);return Bt.engine.runKernel(function(t){return t.conv2dDerFilter(a,s,u)},{x4D:a,dy4D:s})}function gs(t){var e=function(t){return"number"==typeof t?[t,t,t]:2===t.length?[t[0],t[1],1]:t}(t),n=e[0],r=e[1],i=e[2];return 1===n&&1===r&&1===i}var ys=Se({conv1d_:function(t,e,n,r,i,o,a){void 0===i&&(i="NWC"),void 0===o&&(o=1);var s=xe(t,"x","conv1d"),u=xe(e,"filter","conv1d"),l=s,c=!1;2===s.rank&&(c=!0,l=s.as3D(1,s.shape[0],s.shape[1])),d(3===l.rank,function(){return"Error in conv1d: input must be rank 3, but got rank "+l.rank+"."}),d(3===u.rank,function(){return"Error in conv1d: filter must be rank 3, but got rank "+u.rank+"."}),null!=a&&d(w(r),function(){return"Error in conv1d: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+r+"."}),d(l.shape[2]===u.shape[1],function(){return"Error in conv1d: depth of input ("+l.shape[2]+") must match input depth for filter "+u.shape[1]+"."}),d(fs(n,o),function(){return"Error in conv1D: Either stride or dilation must be 1. Got stride "+n+" and dilation '"+o+"'"}),d("NWC"===i,function(){return"Error in conv1d: got dataFormat of "+i+" but only NWC is currently supported."});var p=u.as4D(1,u.shape[0],u.shape[1],u.shape[2]),h=l.as4D(l.shape[0],1,l.shape[1],l.shape[2]),f=vs(h,p,[1,n],r,"NHWC",[1,o],a);return c?f.as2D(f.shape[2],f.shape[3]):f.as3D(f.shape[0],f.shape[2],f.shape[3])}}),vs=Se({conv2d_:function(t,e,n,r,i,o,a){void 0===i&&(i="NHWC"),void 0===o&&(o=[1,1]);var s=xe(t,"x","conv2d"),u=xe(e,"filter","conv2d"),l=s,c=!1;3===s.rank&&(c=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),d(4===l.rank,function(){return"Error in conv2d: input must be rank 4, but got rank "+l.rank+"."}),d(4===u.rank,function(){return"Error in conv2d: filter must be rank 4, but got rank "+u.rank+"."}),null!=a&&d(w(r),function(){return"Error in conv2d: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+r+"."}),d(l.shape[3]===u.shape[2],function(){return"Error in conv2d: depth of input ("+l.shape[3]+") must match input depth for filter "+u.shape[2]+"."}),d(fs(n,o),function(){return"Error in conv2D: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+o+"'"}),d("NHWC"===i,function(){return"Error in conv2d: got dataFormat of "+i+" but only NHWC is currently supported."});var p=as(l.shape,u.shape,n,o,r,a),h=Bt.engine.runKernel(function(t){return t.conv2d(l,u,p)},{x:l,$filter:u},function(t){return d(hs(o),function(){return"Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+o+"'"}),{x:function(){return ds(l.shape,t,u,n,r)},$filter:function(){return ms(l,t,u.shape,n,r)}}});return c?h.as3D(h.shape[1],h.shape[2],h.shape[3]):h}}),bs=Se({conv3d_:function(t,e,n,r,i,o){void 0===i&&(i="NHWC"),void 0===o&&(o=[1,1,1]);var a=xe(t,"x","conv3d"),s=xe(e,"filter","conv3d"),u=a,l=!1;4===a.rank&&(l=!0,u=a.as5D(1,a.shape[0],a.shape[1],a.shape[2],a.shape[3])),d(5===u.rank,function(){return"Error in conv3d: input must be rank 5, but got rank "+u.rank+"."}),d(5===s.rank,function(){return"Error in conv3d: filter must be rank 5, but got rank "+s.rank+"."}),d(u.shape[4]===s.shape[3],function(){return"Error in conv3d: depth of input ("+u.shape[4]+") must match input depth for filter "+s.shape[3]+"."}),d(function(t,e){return gs(t)||gs(e)}(n,o),function(){return"Error in conv3D: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+o+"'"}),d("NHWC"===i,function(){return"Error in conv3d: got dataFormat of "+i+" but only NHWC is currently supported."});var c=ss(u.shape,s.shape,n,o,r),p=Bt.engine.runKernel(function(t){return t.conv3d(u,s,c)},{x:u,$filter:s},function(t){return d(gs(o),function(){return"Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+o+"'"}),{x:function(){return function(t,e,n,r,i){d(t.length===e.rank,function(){return"Length of inShape ("+t.length+") and rank of dy ("+e.rank+") must match"});var o=t,a=e,s=!1;4===e.rank&&(s=!0,a=e.as5D(1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]),o=[1,t[0],t[1],t[2],t[3]]);var u=o[4],l=a.shape[4];d(5===o.length,function(){return"Error in conv3dDerInput: inShape must be length 5, but got length "+o.length+"."}),d(5===a.rank,function(){return"Error in conv3dDerInput: dy must be rank 5, but got rank "+a.rank}),d(5===n.rank,function(){return"Error in conv3dDerInput: filter must be rank 5, but got rank "+n.rank}),d(u===n.shape[3],function(){return"Error in conv3dDerInput: depth of input ("+u+") must match input depth for filter "+n.shape[3]+"."}),d(l===n.shape[4],function(){return"Error in conv3dDerInput: depth of output ("+l+") must match output depth for filter "+n.shape[4]+"."});var c=ss(o,n.shape,r,1,i),p=Bt.engine.runKernel(function(t){return t.conv3dDerInput(a,n,c)},{dy5D:a});return s?p.as4D(p.shape[1],p.shape[2],p.shape[3],p.shape[4]):p}(u.shape,t,s,n,r)},$filter:function(){return function(t,e,n,r,i){var o=t;4===t.rank&&(o=t.as5D(1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]));var a=e;4===a.rank&&(a=e.as5D(1,e.shape[0],e.shape[1],e.shape[2],e.shape[3])),d(5===o.rank,function(){return"Error in conv3dDerFilter: input must be rank 5, but got shape "+o.shape+"."}),d(5===a.rank,function(){return"Error in conv3dDerFilter: dy must be rank 5, but got shape "+a.shape+"."}),d(5===n.length,function(){return"Error in conv3dDerFilter: filterShape must be length 5, but got "+n+"."}),d(o.shape[4]===n[3],function(){return"Error in conv3dDerFilter: depth of input "+o.shape[4]+") must match input depth in filter ("+n[3]+"."}),d(a.shape[4]===n[4],function(){return"Error in conv3dDerFilter: depth of dy ("+a.shape[4]+") must match output depth for filter ("+n[4]+")."});var s=ss(o.shape,n,r,1,i);return Bt.engine.runKernel(function(t){return t.conv3dDerFilter(o,a,s)},{x5D:o,dy5D:a})}(u,t,s.shape,n,r)}}});return l?p.as4D(p.shape[1],p.shape[2],p.shape[3],p.shape[4]):p}}),ws=Se({conv2dDerFilter_:ms}),xs=Se({depthwiseConv2d_:function(t,e,n,r,i,o,a){void 0===i&&(i="NHWC"),void 0===o&&(o=[1,1]);var s=xe(t,"x","depthwiseConv2d"),u=xe(e,"filter","depthwiseConv2d"),l=s,c=!1;3===s.rank&&(c=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),d(4===l.rank,function(){return"Error in depthwiseConv2d: input must be rank 4, but got rank "+l.rank+"."}),d(4===u.rank,function(){return"Error in depthwiseConv2d: filter must be rank 4, but got rank "+u.rank+"."}),d(l.shape[3]===u.shape[2],function(){return"Error in depthwiseConv2d: number of input channels ("+l.shape[3]+") must match the inChannels dimension in filter "+u.shape[2]+"."}),null==o&&(o=[1,1]),d(fs(n,o),function(){return"Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+o+"'"}),null!=a&&d(w(r),function(){return"Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+r+"."});var p=as(l.shape,u.shape,n,o,r,a,!0),h=Bt.engine.runKernel(function(t){return t.depthwiseConv2D(l,u,p)},{x:l,$filter:u},function(t){return d(hs(o),function(){return"Error in gradient of depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+o+"'"}),{x:function(){return function(t,e,n,r){var i=e,o=!1;3===e.rank&&(o=!0,i=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var a=Bt.engine.runKernel(function(t){return t.depthwiseConv2DDerInput(i,n,r)},{dy4D:i});return o?a.as3D(a.shape[1],a.shape[2],a.shape[3]):a}(l.shape,t,u,p)},$filter:function(){return function(t,e,n,r){var i=t;3===t.rank&&(i=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var o=e;return 3===o.rank&&(o=e.as4D(1,e.shape[0],e.shape[1],e.shape[2])),Bt.engine.runKernel(function(t){return t.depthwiseConv2DDerFilter(i,o,r)},{x4D:i,dy4D:o})}(l,t,u.shape,p)}}});return c?h.as3D(h.shape[1],h.shape[2],h.shape[3]):h}}),Ns=Se({separableConv2d_:function(t,e,n,r,i,o,a){void 0===o&&(o=[1,1]),void 0===a&&(a="NHWC");var s=xe(t,"x","separableConv2d"),u=xe(e,"depthwiseFilter","separableConv2d"),l=xe(n,"pointwiseFilter","separableConv2d"),c=s,p=!1;if(3===s.rank&&(p=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),"NCHW"===a)throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");d(4===c.rank,function(){return"Error in separableConv2d: input must be rank 4, but got rank "+c.rank+"."}),d(4===u.rank,function(){return"Error in separableConv2d: depthwise filter must be rank 4, but got rank "+u.rank+"."}),d(4===l.rank,function(){return"Error in separableConv2d: pointwise filter must be rank 4, but got rank "+u.rank+"."}),d(1===l.shape[0],function(){return"Error in separableConv2d: the first dimension of pointwise filter must be 1, but got "+l.shape[0]+"."}),d(1===l.shape[1],function(){return"Error in separableConv2d: the second dimension of pointwise filter must be 1, but got "+l.shape[1]+"."});var h=u.shape[2],f=u.shape[3];d(l.shape[2]===h*f,function(){return"Error in separableConv2d: the third dimension of pointwise filter must be "+h*f+", but got "+l.shape[2]+"."});var m=xs(c,u,r,i,a,o),g=vs(m,l,1,"valid",a);return p?g.as3D(g.shape[1],g.shape[2],g.shape[3]):g}}),Ss=Se({conv2dTranspose_:function(t,e,n,r,i,o){return ds(n,xe(t,"x","conv2dTranspose"),xe(e,"filter","conv2dTranspose"),r,i,o)}});var Cs=Se({matMul_:function(t,e,n,r){var i;void 0===n&&(n=!1),void 0===r&&(r=!1);var o=xe(t,"a","matMul"),a=xe(e,"b","matMul");i=bt(o,a),o=i[0],a=i[1];var s=n?o.shape[o.rank-2]:o.shape[o.rank-1],u=r?a.shape[a.rank-1]:a.shape[a.rank-2],l=n?o.shape[o.rank-1]:o.shape[o.rank-2],c=r?a.shape[a.rank-2]:a.shape[a.rank-1],p=o.shape.slice(0,-2),h=a.shape.slice(0,-2),f=v(p),m=v(h);d(o.rank>=2&&a.rank>=2&&o.rank===a.rank,function(){return"Error in matMul: inputs must have the same rank of at least 2, got ranks "+o.rank+" and "+a.rank+"."}),d(b(p,h),function(){return"Error in matMul: outer dimensions ("+p+") and ("+h+") of Tensors with shapes "+o.shape+" and "+a.shape+" must match."}),d(s===u,function(){return"Error in matMul: inner shapes ("+s+") and ("+u+") of Tensors with shapes "+o.shape+" and "+a.shape+" and transposeA="+n+" and transposeB="+r+" must match."});var g=o.shape.slice(0,-2).concat([l,c]),y=n?o.as3D(f,s,l):o.as3D(f,l,s),w=r?a.as3D(m,c,u):a.as3D(m,u,c);return Bt.engine.runKernel(function(t){return t.batchMatMul(y,w,n,r)},{$a:y,$b:w},function(t){return n||r?!n&&r?{$a:function(){return t.matMul(w,!1,!1)},$b:function(){return t.matMul(y,!0,!1)}}:n&&!r?{$a:function(){return w.matMul(t,!1,!0)},$b:function(){return y.matMul(t,!1,!1)}}:{$a:function(){return w.matMul(t,!0,!0)},$b:function(){return t.matMul(y,!0,!0)}}:{$a:function(){return t.matMul(w,!1,!0)},$b:function(){return y.matMul(t,!0,!1)}}}).reshape(g)}}),Es=Se({dot_:function(t,e){var n=xe(t,"t1","dot"),r=xe(e,"t2","dot");d(!(1!==n.rank&&2!==n.rank||1!==r.rank&&2!==r.rank),function(){return"Error in dot: inputs must all be rank 1 or 2, but got ranks "+n.rank+" and "+r.rank+"."});var i=1===n.rank?n.size:n.shape[1],o=1===r.rank?r.size:r.shape[0];return d(i===o,function(){return"Error in dot: inner dimensions of inputs must match, but got "+i+" and "+o+"."}),1===n.rank&&1===r.rank?n.as2D(1,-1).matMul(r.as2D(-1,1)).asScalar():1===n.rank&&2===r.rank?n.as2D(1,-1).matMul(r.as2D(r.shape[0],r.shape[1])).as1D():2===n.rank&&1===r.rank?n.matMul(r.as2D(-1,1)).as1D():n.matMul(r.as2D(r.shape[0],r.shape[1]))}}),Is=Se({outerProduct_:function(t,e){var n=xe(t,"v1","outerProduct"),r=xe(e,"v2","outerProduct");return d(1===n.rank&&1===r.rank,function(){return"Error in outerProduct: inputs must be rank 1, but got ranks "+n.rank+" and "+r.rank+"."}),n.as2D(-1,1).matMul(r.as2D(1,-1))}});var ks=Se({reverse_:function(t,e){var n=xe(t,"x","reverse");if(0===n.rank)return n.clone();var r=I(e,n.shape);return Bt.engine.runKernel(function(t){return t.reverse(n,r)},{$x:n},function(t){return{$x:function(){return t.reverse(r)}}}).reshapeAs(n)}}),As=Se({reverse1d_:function(t){var e=xe(t,"x","reverse");return d(1===e.rank,function(){return"Error in reverse1D: x must be rank 1 but got rank "+e.rank+"."}),ks(e,0)}}),Ts=Se({reverse2d_:function(t,e){var n=xe(t,"x","reverse");return d(2===n.rank,function(){return"Error in reverse2D: x must be rank 2 but got rank "+n.rank+"."}),ks(n,e)}}),Rs=Se({reverse3d_:function(t,e){var n=xe(t,"x","reverse");return d(3===n.rank,function(){return"Error in reverse3D: x must be rank 3 but got rank "+n.rank+"."}),ks(n,e)}}),Ds=Se({reverse4d_:function(t,e){var n=xe(t,"x","reverse");return d(4===n.rank,function(){return"Error in reverse4D: x must be rank 4 but got rank "+n.rank+"."}),ks(n,e)}});function Os(t,e,n,r,i,o){var a=xe(t,"x","maxPool"),s=a,u=!1;3===a.rank&&(u=!0,s=a.as4D(1,a.shape[0],a.shape[1],a.shape[2])),null==r&&(r=[1,1]),d(4===s.rank,function(){return"Error in maxPool: input must be rank 4 but got rank "+s.rank+"."}),d(fs(n,r),function(){return"Error in maxPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'"}),null!=o&&d(w(i),function(){return"Error in maxPool: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+i+"."});var l=os(s.shape,e,n,r,i,o),c=Bt.engine.runKernel(function(t,e){return e(t.maxPool(s,l))},{x:s},function(t,o){var a=o[0];return{x:function(){return function(t,e,n,r,i,o,a,s){var u=xe(t,"dy","maxPoolBackprop"),l=xe(e,"input","maxPoolBackprop"),c=xe(n,"output","maxPoolBackprop");d(l.rank===u.rank,function(){return"Rank of input ("+l.rank+") does not match rank of dy ("+u.rank+")"}),null==o&&(o=[1,1]),d(fs(i,o),function(){return"Error in maxPoolBackProp: Either strides or dilations must be 1. Got strides "+i+" and dilations '"+o+"'"}),d(4===u.rank,function(){return"Error in maxPoolBackprop: dy must be rank 4 but got rank "+u.rank+"."}),d(4===l.rank,function(){return"Error in maxPoolBackprop: input must be rank 4 but got rank "+l.rank+"."}),null!=s&&d(w(a),function(){return"Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode "+s+" but got pad "+a+"."});var p=os(l.shape,r,i,o,a,s);return Bt.engine.runKernel(function(t){return t.maxPoolBackprop(u,l,c,p)},{$dy:u,$input:l})}(t,s,a,e,n,r,i)}}});return u?c.as3D(c.shape[1],c.shape[2],c.shape[3]):c}function _s(t,e,n,r,i,o){var a=xe(t,"x","avgPool","float32");null==r&&(r=[1,1]),d(fs(n,r),function(){return"Error in avgPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'"});var s=a,u=!1;3===a.rank&&(u=!0,s=a.as4D(1,a.shape[0],a.shape[1],a.shape[2])),d(4===s.rank,function(){return"Error in avgPool: x must be rank 4 but got rank "+s.rank+"."}),null!=o&&d(w(i),function(){return"Error in avgPool: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+i+"."});var l=os(s.shape,e,n,r,i,o),c=Bt.engine.runKernel(function(t){return t.avgPool(s,l)},{x:s},function(t){return{x:function(){return function(t,e,n,r,i,o){var a=xe(t,"dy","avgPoolBackprop"),s=xe(e,"input","avgPoolBackprop");d(s.rank===a.rank,function(){return"Rank of input ("+s.rank+") does not match rank of dy ("+a.rank+")"}),null==i&&(i=[1,1]),d(fs(r,i),function(){return"Error in avgPoolBackprop: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+i+"'"});var u=s,l=a,c=!1;3===s.rank&&(c=!0,u=s.as4D(1,s.shape[0],s.shape[1],s.shape[2]),l=a.as4D(1,a.shape[0],a.shape[1],a.shape[2])),d(4===l.rank,function(){return"Error in avgPoolBackprop: dy must be rank 4 but got rank "+l.rank+"."}),d(4===u.rank,function(){return"Error in avgPoolBackprop: input must be rank 4 but got rank "+u.rank+"."});var p=os(u.shape,n,r,i,o),h=Bt.engine.runKernel(function(t){return t.avgPoolBackprop(l,u,p)},{dy4D:l,input4D:u});return c?h.as3D(h.shape[1],h.shape[2],h.shape[3]):h}(t,s,e,n,r,i)}}});return c=c.cast(a.dtype),u?c.as3D(c.shape[1],c.shape[2],c.shape[3]):c}var Ms=Se({maxPool_:function(t,e,n,r,i){return Os(t,e,n,1,r,i)}}),Ls=Se({avgPool_:function(t,e,n,r,i){return _s(t,e,n,1,r,i)}}),Fs=Se({pool_:function(t,e,n,r,i,o){null==i&&(i=[1,1]),null==o&&(o=1),0===r&&(r="valid");var a=xe(t,"x","maxPool"),s=a,u=!1;3===a.rank&&(u=!0,s=a.as4D(1,a.shape[0],a.shape[1],a.shape[2])),d(fs(o,i),function(){return"Error in pool: Either strides or dilations must be 1. Got strides "+o+" and dilations '"+i+"'"});var l,c=os(s.shape,e,o,i,r),p=[c.dilationHeight,c.dilationWidth];l="same"===r?function(t,e){var n=t.map(function(t,n){return t+(t-1)*(e[n]-1)}).map(function(t){return t-1}),r=n.map(function(t){return Math.floor(t/2)}),i=n.map(function(t,e){return t-r[e]});return n.map(function(t,e){return[r[e],i[e]]})}([c.filterHeight,c.filterWidth],p):[[0,0],[0,0]];var h=1===p[0]&&1===p[1],f=function(t,e,n){var r=n.map(function(t){return t[0]}),i=n.map(function(t){return t[1]}),o=t.concat(r,i),a=e.map(function(t,e){return(t-o[e]%t)%t}),s=i.map(function(t,e){return t+a[e]});return[e.map(function(t,e){return[r[e],s[e]]}),e.map(function(t,e){return[0,a[e]]})]}([c.inHeight,c.inWidth],p,l),m=f[0],g=f[1],y=h?r:"valid",v=h?s:ra(s,p,m),b=("avg"===n?function(){return _s(v,e,o,1,y)}:function(){return Os(v,e,o,1,y)})(),w=h?b:Bo(b,p,g);return u?w.as3D(w.shape[1],w.shape[2],w.shape[3]):w}});var zs=Se({slice_:function(t,e,n){var r,i,o=xe(t,"x","slice");if(0===o.rank)throw new Error("Slicing scalar is not possible");r="number"==typeof e?[e].concat(new Array(o.rank-1).fill(0)):e.length<o.rank?e.concat(new Array(o.rank-e.length).fill(0)):e.slice(),i=(i=null==n?new Array(o.rank).fill(-1):"number"==typeof n?[n].concat(new Array(o.rank-1).fill(-1)):n.length<o.rank?n.concat(new Array(o.rank-n.length).fill(-1)):n).map(function(t,e){return t>=0?t:(d(-1===t,function(){return"Bad value in size"}),o.shape[e]-r[e])}),function(t,e,n){d(t.rank===e.length,function(){return"Error in slice"+t.rank+"D: Length of begin "+e+" must match the rank of the array ("+t.rank+")."}),d(t.rank===n.length,function(){return"Error in slice"+t.rank+"D: Length of size "+n+" must match the rank of the array ("+t.rank+")."});for(var r=function(r){d(e[r]+n[r]<=t.shape[r],function(){return"Error in slice"+t.rank+"D: begin["+r+"] + size["+r+"] ("+(e[r]+n[r])+") would overflow input.shape["+r+"] ("+t.shape[r]+")"})},i=0;i<t.rank;++i)r(i)}(o,r,i);var a=o.shape;return Bt.engine.runKernel(function(t){return t.slice(o,r,i)},{$x:o},function(t){for(var e=[],n=0;n<t.rank;n++)e.push([r[n],a[n]-r[n]-i[n]]);return{$x:function(){return t.pad(e)}}})}}),Ps=Se({slice1d_:function(t,e,n){var r=xe(t,"x","slice1d");return d(1===r.rank,function(){return"slice1d expects a rank-1 tensor, but got a rank-"+r.rank+" tensor"}),zs(r,[e],[n])}}),Bs=Se({slice2d_:function(t,e,n){var r=xe(t,"x","slice2d");return d(2===r.rank,function(){return"slice2d expects a rank-2 tensor, but got a rank-"+r.rank+" tensor"}),zs(r,e,n)}}),Us=Se({slice3d_:function(t,e,n){var r=xe(t,"x","slice3d");return d(3===r.rank,function(){return"slice3d expects a rank-3 tensor, but got a rank-"+r.rank+" tensor"}),zs(r,e,n)}}),Ws=Se({slice4d_:function(t,e,n){var r=xe(t,"x","slice4d");return d(4===r.rank,function(){return"slice4d expects a rank-4 tensor, but got a rank-"+r.rank+" tensor"}),zs(r,e,n)}});function Vs(t,e,n,r,i){var o=e[0];return o.rank<n.rank&&(o=o.reshape(re(o.shape,r))),t.rank<n.rank&&(t=t.reshape(re(t.shape,r))),{$x:function(){var e=t.mul(n.equal(o).cast(t.dtype));return null==i?e:e.transpose(i)}}}var js=Se({all_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=xe(t,"x","all","bool"),i=I(e,r.shape),o=i,a=oe(o,r.rank);null!=a&&(r=r.transpose(a),o=se(o.length,r.rank));var s=Bt.engine.runKernel(function(t){return t.all(r,o)},{$x:r});if(n){var u=re(s.shape,i);return s.reshape(u)}return s}}),qs=Se({any_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=xe(t,"x","any","bool"),i=I(e,r.shape),o=i,a=oe(o,r.rank);null!=a&&(r=r.transpose(a),o=se(o.length,r.rank));var s=Bt.engine.runKernel(function(t){return t.any(r,o)},{$x:r});if(n){var u=re(s.shape,i);return s.reshape(u)}return s}}),Gs=Se({argMax_:function(t,e){void 0===e&&(e=0);var n=xe(t,"x","argMax");null==e&&(e=0);var r=I(e,n.shape),i=oe(r,n.rank);return null!=i&&(n=n.transpose(i),r=se(r.length,n.rank)),Bt.engine.runKernel(function(t){return t.argMax(n,r[0])},{$x:n},function(t){return{$x:function(){return je(n)}}})}}),Hs=Se({argMin_:function(t,e){void 0===e&&(e=0);var n=xe(t,"x","argMin");null==e&&(e=0);var r=I(e,n.shape),i=oe(r,n.rank);return null!=i&&(n=n.transpose(i),r=se(r.length,n.rank)),Bt.engine.runKernel(function(t){return t.argMin(n,r[0])},{$x:n},function(t){return{$x:function(){return je(n)}}})}}),Ks=Se({logSumExp_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=xe(t,"x","logSumExp"),i=I(e,r.shape),o=r.max(i,!0),a=r.sub(o).exp().sum(i).log(),s=o.reshape(a.shape).add(a);if(n){var u=re(s.shape,i);return s.reshape(u)}return s}}),$s=Se({max_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=xe(t,"x","max"),i=r,o=I(e,r.shape),a=o,s=oe(a,r.rank);null!=s&&(r=r.transpose(s),a=se(a.length,r.rank));var u=Bt.engine.runKernel(function(t,e){return e(t.max(r,a))},{$x:r},function(t,e){return Vs(t,e,i,o,s)});if(n){var l=re(u.shape,o);u=u.reshape(l)}return u}}),Xs=Se({mean_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=xe(t,"x","mean"),i=I(e,r.shape),o=v(ne(r.shape,i)[1]);return Vt(function(t){var r=Re(o);return{value:(r.dtype===t.dtype?t:t.cast(r.dtype)).div(r).sum(e,n),gradFunc:function(e){var n=t.shape.slice();return i.forEach(function(t){n[t]=1}),e.reshape(n).mul(ze(t.shape,"float32")).div(r)}}})(r)}}),Ys=Se({min_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=xe(t,"x","min"),i=r,o=I(e,r.shape),a=o,s=oe(a,r.rank);null!=s&&(r=r.transpose(s),a=se(a.length,r.rank));var u=Bt.engine.runKernel(function(t,e){return e(t.min(r,a))},{$x:r},function(t,e){return Vs(t,e,i,o,s)});if(n){var l=re(u.shape,o);u=u.reshape(l)}return u}}),Js=Se({moments_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=I(e,(t=xe(t,"x","moments")).shape),i=t.mean(r,n),o=i.shape;return n||(o=re(i.shape,r)),{mean:i,variance:t.toFloat().sub(i.reshape(o)).square().mean(r,n)}}}),Zs=Se({sum_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=xe(t,"x","sum");"bool"===r.dtype&&(r=r.toInt());var i=I(e,r.shape);return Vt(function(t){var e=oe(i,t.rank),r=i,o=t;null!=e&&(o=t.transpose(e),r=se(r.length,t.rank));var a=Bt.engine.runKernel(function(t){return t.sum(o,r)},{permutedX:o});if(n){var s=re(a.shape,i);a=a.reshape(s)}return{value:a,gradFunc:function(e){var n=t.shape.slice();return i.forEach(function(t){n[t]=1}),e.reshape(n).mul(ze(t.shape,"float32"))}}})(r)}}),Qs=Se({prod_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=xe(t,"x","prod");"bool"===r.dtype&&(r=r.toInt());var i=I(e,r.shape),o=oe(i,r.rank),a=i,s=r;null!=o&&(s=r.transpose(o),a=se(a.length,r.rank));var u=Bt.engine.runKernel(function(t){return t.prod(s,a)},{permutedX:s});if(n){var l=re(u.shape,i);u=u.reshape(l)}return u}});var tu=Se({equal_:function(t,e){var n,r=xe(t,"a","equal"),i=xe(e,"b","equal");return n=bt(r,i),r=n[0],i=n[1],un(r.shape,i.shape),Bt.engine.runKernel(function(t){return t.equal(r,i)},{$a:r,$b:i})}}),eu=Se({equalStrict_:function(t,e){var n=xe(t,"a","equalStrict"),r=xe(e,"b","equalStrict");return m(n.shape,r.shape,"Error in equalStrict: "),n.equal(r)}}),nu=Se({greater_:function(t,e){var n,r=xe(t,"a","greater"),i=xe(e,"b","greater");return n=bt(r,i),r=n[0],i=n[1],un(r.shape,i.shape),Bt.engine.runKernel(function(t){return t.greater(r,i)},{$a:r,$b:i})}}),ru=Se({greaterEqual_:function(t,e){var n,r=xe(t,"a","greaterEqual"),i=xe(e,"b","greaterEqual");return n=bt(r,i),r=n[0],i=n[1],un(r.shape,i.shape),Bt.engine.runKernel(function(t){return t.greaterEqual(r,i)},{$a:r,$b:i},function(t){return{$a:function(){return je(r)},$b:function(){return je(i)}}})}}),iu=Se({greaterEqualStrict_:function(t,e){var n=xe(t,"a","greaterEqualStrict"),r=xe(e,"b","greaterEqualStrict");return m(n.shape,r.shape,"Error in greaterEqualStrict: "),n.greaterEqual(r)}}),ou=Se({greaterStrict_:function(t,e){var n=xe(t,"a","greaterStrict"),r=xe(e,"b","greaterStrict");return m(n.shape,r.shape,"Error in greaterStrict: "),n.greater(r)}}),au=Se({less_:function(t,e){var n,r=xe(t,"a","less"),i=xe(e,"b","less");return n=bt(r,i),r=n[0],i=n[1],un(r.shape,i.shape),Bt.engine.runKernel(function(t){return t.less(r,i)},{$a:r,$b:i})}}),su=Se({lessEqual_:function(t,e){var n,r=xe(t,"a","lessEqual"),i=xe(e,"b","lessEqual");return n=bt(r,i),r=n[0],i=n[1],un(r.shape,i.shape),Bt.engine.runKernel(function(t){return t.lessEqual(r,i)},{$a:r,$b:i})}}),uu=Se({lessEqualStrict_:function(t,e){var n=xe(t,"a","lessEqualStrict"),r=xe(e,"b","lessEqualStrict");return m(n.shape,r.shape,"Error in lessEqualStrict: "),n.lessEqual(r)}}),lu=Se({lessStrict_:function(t,e){var n=xe(t,"a","lessStrict"),r=xe(e,"b","lessStrict");return m(n.shape,r.shape,"Error in lessStrict: "),n.less(r)}}),cu=Se({notEqual_:function(t,e){var n,r=xe(t,"a","notEqual"),i=xe(e,"b","notEqual");return n=bt(r,i),r=n[0],i=n[1],un(r.shape,i.shape),Bt.engine.runKernel(function(t){return t.notEqual(r,i)},{$a:r,$b:i})}}),pu=Se({notEqualStrict_:function(t,e){var n=xe(t,"a","notEqualStrict"),r=xe(e,"b","notEqualStrict");return m(n.shape,r.shape,"Error in notEqualStrict: "),n.notEqual(r)}});var hu=Se({add_:function(t,e){var n,r=xe(t,"a","add"),i=xe(e,"b","add");n=bt(r,i),r=n[0],i=n[1];var o=un(r.shape,i.shape);return Bt.engine.runKernel(function(t){return t.add(r,i)},{$a:r,$b:i},function(t){return{$a:function(){var e=t,n=sn(r.shape,o);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},$b:function(){var e=t,n=sn(i.shape,o);return n.length>0&&(e=e.sum(n)),e.reshape(i.shape)}}})}}),fu=Se({addN_:function(t){d(Array.isArray(t),function(){return"The argument passed to tf.addN() must be a list of tensors"}),d(t.length>=1,function(){return"Must pass at least one tensor to tf.addN(), but got "+t.length});var e=t.map(function(t,e){return xe(t,"tensors"+e,"addN")}),n=e[0];e.forEach(function(t){if(t.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),e.forEach(function(t){if(!b(t.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});var r=e;return Bt.engine.runKernel(function(t){return t.addN(e)},r,function(t){var n={};return e.forEach(function(e,r){n[r]=function(){return t.clone()}}),n})}}),du=Se({addStrict_:function(t,e){var n=xe(t,"a","addStrict"),r=xe(e,"b","addStrict");return m(n.shape,r.shape,"Error in addStrict: "),n.add(r)}}),mu=Se({atan2_:function(t,e){var n,r=xe(t,"a","atan2"),i=xe(e,"b","atan2");n=bt(r,i),r=n[0],i=n[1];var o=un(r.shape,i.shape);return Bt.engine.runKernel(function(t){return t.atan2(r,i)},{$a:r,$b:i},function(t){return{$a:function(){var e=hu(r.square(),i.square()),n=t.mul(i.div(e)),a=sn(r.shape,o);return a.length>0&&(n=n.sum(a)),n.reshape(r.shape)},$b:function(){var e=hu(r.square(),i.square()),n=Da(t.mul(r.div(e))),a=sn(i.shape,o);return a.length>0&&(n=n.sum(a)),n.reshape(i.shape)}}})}}),gu=Se({div_:function(t,e){var n,r,i=xe(t,"a","div"),o=xe(e,"b","div");if(n=bt(i,o),i=n[0],o=n[1],"int32"===i.dtype&&"int32"===o.dtype)return vu(i,o);r=function(t){return t.realDivide(i,o)};var a=un(i.shape,o.shape);return Bt.engine.runKernel(r,{$a:i,$b:o},function(t){return{$a:function(){var e=t.div(o.toFloat()),n=sn(i.shape,a);return n.length>0?e.sum(n).reshape(i.shape):e},$b:function(){var e=t.mul(i.toFloat()),n=sn(o.shape,a);n.length>0&&(e=e.sum(n).reshape(o.shape));var r=o.square();return e.div(r.toFloat()).neg()}}})}}),yu=Se({divStrict_:function(t,e){var n=xe(t,"a","div"),r=xe(e,"b","div");return m(n.shape,r.shape,"Error in divideStrict: "),n.div(r)}}),vu=Se({floorDiv_:function(t,e){var n,r=xe(t,"a","floorDiv"),i=xe(e,"b","floorDiv");n=bt(r,i),r=n[0],i=n[1];var o=un(r.shape,i.shape);return Bt.engine.runKernel(function(t){return t.floorDiv(r,i)},{$a:r,$b:i},function(t){return{$a:function(){var e=t.div(i.toFloat()),n=sn(r.shape,o);return n.length>0?e.sum(n).reshape(r.shape):e},$b:function(){var e=t.mul(r.toFloat()),n=sn(i.shape,o);n.length>0&&(e=e.sum(n).reshape(i.shape));var a=i.square();return e.div(a.toFloat()).neg()}}})}}),bu=Se({maximum_:function(t,e){var n,r=xe(t,"a","maximum"),i=xe(e,"b","maximum");return n=bt(r,i),r=n[0],i=n[1],"bool"===r.dtype&&(r=r.toInt(),i=i.toInt()),un(r.shape,i.shape),Bt.engine.runKernel(function(t){return t.maximum(r,i)},{$a:r,$b:i},function(t){return{$a:function(){return t.mul(r.greaterEqual(i).toFloat())},$b:function(){return t.mul(r.less(i).toFloat())}}})}}),wu=Se({maximumStrict_:function(t,e){var n=xe(t,"a","maximumStrict"),r=xe(e,"b","maximumStrict");return m(n.shape,r.shape,"Error in maximumStrict: "),n.maximum(r)}}),xu=Se({minimum_:function(t,e){var n,r=xe(t,"a","minimum"),i=xe(e,"b","minimum");return n=bt(r,i),r=n[0],i=n[1],"bool"===r.dtype&&(r=r.toInt(),i=i.toInt()),un(r.shape,i.shape),Bt.engine.runKernel(function(t){return t.minimum(r,i)},{$a:r,$b:i},function(t){return{$a:function(){return t.mul(r.lessEqual(i).toFloat())},$b:function(){return t.mul(r.greater(i).toFloat())}}})}}),Nu=Se({minimumStrict_:function(t,e){var n=xe(t,"a","minimumStrict"),r=xe(e,"b","minimumStrict");return m(n.shape,r.shape,"Error in minimumStrict: "),n.minimum(r)}}),Su=Se({mod_:function(t,e){var n,r=xe(t,"a","mod"),i=xe(e,"b","mod");n=bt(r,i),r=n[0],i=n[1];var o=un(r.shape,i.shape);return Bt.engine.runKernel(function(t){return t.mod(r,i)},{$a:r,$b:i},function(t){return{$a:function(){var e=sn(r.shape,o);return e.length>0?t.sum(e).reshape(r.shape):t},$b:function(){var e=t.mul(r.div(i).floor().neg()),n=sn(i.shape,o);return n.length>0?e.sum(n).reshape(i.shape):e}}})}}),Cu=Se({modStrict_:function(t,e){var n=xe(t,"a","modStrict"),r=xe(e,"b","modStrict");return m(n.shape,r.shape,"Error in modStrict: "),n.mod(r)}}),Eu=Se({mul_:function(t,e){var n,r=xe(t,"a","mul"),i=xe(e,"b","mul");n=bt(r,i),r=n[0],i=n[1];var o=un(r.shape,i.shape);return Bt.engine.runKernel(function(t){return t.multiply(r,i)},{$a:r,$b:i},function(t){return{$a:function(){var e=t.mul(i.toFloat()),n=sn(r.shape,o);return n.length>0?e.sum(n).reshape(r.shape):e},$b:function(){var e=t.mul(r.toFloat()),n=sn(i.shape,o);return n.length>0?e.sum(n).reshape(i.shape):e}}})}}),Iu=Se({mulStrict_:function(t,e){var n=xe(t,"a","mul"),r=xe(e,"b","mul");return m(n.shape,r.shape,"Error in multiplyStrict: "),n.mul(r)}}),ku=Se({pow_:function(t,e){var n=xe(t,"base","pow"),r=xe(e,"exp","pow"),i=un(n.shape,r.shape);return t=n.cast(yt(n.dtype,r.dtype)),e=r.cast(yt(n.dtype,r.dtype)),Bt.engine.runKernel(function(t,e){return e(t.pow(n,r))},{$base:n,$exp:r},function(t,e){var o=e[0];return{$base:function(){var e=r.toFloat(),o=t.mul(e.mul(n.pow(e.sub(Re(1))))),a=sn(n.shape,i);return a.length>0&&(o=o.sum(a)),o.reshape(n.shape)},$exp:function(){var e=n.greater(0),a=n.log().where(e,je(n)),s=t.mul(o.mul(a)),u=sn(r.shape,i);return u.length>0&&(s=s.sum(u)),s.reshape(r.shape)}}})}}),Au=Se({powStrict_:function(t,e){return m(t.shape,e.shape,"Error in powStrict: "),t.pow(e)}}),Tu=Se({squaredDifference_:function(t,e){var n,r=xe(t,"a","squaredDifference"),i=xe(e,"b","squaredDifference");return n=bt(r,i),r=n[0],i=n[1],un(r.shape,i.shape),Bt.engine.runKernel(function(t){return t.squaredDifference(r,i)},{$a:r,$b:i},function(t){var e=Re(2);return{$a:function(){return t.mul(r.sub(i).mul(e))},$b:function(){return t.mul(i.sub(r).mul(e))}}})}}),Ru=Se({squaredDifferenceStrict_:function(t,e){var n=xe(t,"a","squaredDifferenceStrict"),r=xe(e,"b","squaredDifferenceStrict");return m(n.shape,r.shape,"Error in squaredDifferenceStrict: "),n.squaredDifference(r)}}),Du=Se({sub_:function(t,e){var n,r=xe(t,"a","sub"),i=xe(e,"b","sub");n=bt(r,i),r=n[0],i=n[1];var o=un(r.shape,i.shape);return Bt.engine.runKernel(function(t){return t.subtract(r,i)},{$a:r,$b:i},function(t){return{$a:function(){var e=t,n=sn(r.shape,o);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},$b:function(){var e=t,n=sn(i.shape,o);return n.length>0&&(e=e.sum(n)),e.neg().reshape(i.shape)}}})}}),Ou=Se({subStrict_:function(t,e){var n=xe(t,"a","subStrict"),r=xe(e,"b","subStrict");return m(n.shape,r.shape,"Error in subStrict: "),n.sub(r)}});var _u=Se({logicalAnd_:function(t,e){var n=xe(t,"a","logicalAnd","bool"),r=xe(e,"b","logicalAnd","bool");return un(n.shape,r.shape),Bt.engine.runKernel(function(t){return t.logicalAnd(n,r)},{$a:n,$b:r})}}),Mu=Se({logicalNot_:function(t){var e=xe(t,"x","logicalNot","bool");return Bt.engine.runKernel(function(t){return t.logicalNot(e)},{$x:e})}}),Lu=Se({logicalOr_:function(t,e){var n=xe(t,"a","logicalOr","bool"),r=xe(e,"b","logicalOr","bool");return un(n.shape,r.shape),Bt.engine.runKernel(function(t){return t.logicalOr(n,r)},{$a:n,$b:r})}}),Fu=Se({logicalXor_:function(t,e){var n=xe(t,"a","logicalXor","bool"),r=xe(e,"b","logicalXor","bool");return un(n.shape,r.shape),Lu(t,e).logicalAnd(_u(t,e).logicalNot())}}),zu=Se({where_:function(t,e,n){var r=xe(e,"a","where"),i=xe(n,"b","where"),o=xe(t,"condition","where","bool");return m(r.shape,i.shape,"Error in where: "),1===o.rank?d(o.shape[0]===r.shape[0],function(){return"The first dimension of `a` must match the size of `condition`."}):m(o.shape,i.shape,"Error in where: "),Bt.engine.runKernel(function(t){return t.select(o,r,i)},{$condition:o,$a:r,$b:i},function(t){return{$condition:function(){return je(o).toFloat()},$a:function(){return t.mul(o.cast(t.dtype))},$b:function(){return t.mul(o.logicalNot().cast(t.dtype))}}})}}),Pu=function(t){return i(this,void 0,void 0,function(){var e,n,r;return o(this,function(i){switch(i.label){case 0:return[4,(e=xe(t,"condition","whereAsync","bool")).data()];case 1:return n=i.sent(),r=ca(e.shape,n),t!==e&&e.dispose(),[2,r]}})})};var Bu=Se({elu_:function(t){var e=xe(t,"x","elu");return Bt.engine.runKernel(function(t,n){return n(t.elu(e))},{$x:e},function(t,e){var n=e[0];return{$x:function(){return Bt.engine.runKernel(function(e){return e.eluDer(t,n)},{dy:t,y:n})}}})}}),Uu=Se({leakyRelu_:function(t,e){void 0===e&&(e=.2);var n=xe(t,"x","leakyRelu");return bu(Re(e).mul(n),n)}}),Wu=Se({prelu_:function(t,e){var n=xe(t,"x","prelu"),r=xe(e,"alpha","prelu");return Bt.engine.runKernel(function(t){return t.prelu(n,r)},{$x:n,$alpha:r},function(t){var e=n.greater(0);return{$x:function(){return zu(e,t,t.mul(r))},$alpha:function(){var i=zu(e,je(t),t.mul(n)),o=sn(r.shape,t.shape);return o.length>0&&(i=i.sum(o)),i.reshape(r.shape)}}})}}),Vu=Se({relu_:function(t){var e=xe(t,"x","relu");return"bool"===e.dtype?e.toInt():Bt.engine.runKernel(function(t){return t.relu(e)},{$x:e},function(t){var n=e.step();return{$x:function(){return t.mulStrict(n.toFloat())}}})}}),ju=Se({selu_:function(t){var e=xe(t,"x","selu");return Bt.engine.runKernel(function(t){return t.selu(e)},{$x:e},function(t){return{$x:function(){var n=e.greater(Re(0)),r=Re(ro),i=Re(io),o=t.mul(i),a=t.mul(r).mul(e.toFloat().exp());return zu(n,o,a)}}})}});var qu=Se({transpose_:function(t,e){var n=xe(t,"x","transpose");return null==e&&(e=n.shape.map(function(t,e){return e}).reverse()),d(n.rank===e.length,function(){return"Error in transpose: rank of input "+n.rank+" must match length of perm "+e+"."}),e.forEach(function(t){d(t>=0&&t<n.rank,function(){return"All entries in 'perm' must be between 0 and "+(n.rank-1)+" but got "+e})}),n.rank<=1?n.clone():Bt.engine.runKernel(function(t){return t.transpose(n,e)},{$x:n},function(t){var n=ae(e);return{$x:function(){return t.transpose(n)}}})}});var Gu=Se({localResponseNormalization_:function(t,e,n,r,i){void 0===e&&(e=5),void 0===n&&(n=1),void 0===r&&(r=1),void 0===i&&(i=.5);var o=xe(t,"x","localResponseNormalization");d(4===o.rank||3===o.rank,function(){return"Error in localResponseNormalization: x must be rank 3 or 4 but got\n rank "+o.rank+"."}),d(w(e),function(){return"Error in localResponseNormalization: depthRadius must be an integer but got depthRadius "+e+"."});var a=o,s=!1;3===o.rank&&(s=!0,a=o.as4D(1,o.shape[0],o.shape[1],o.shape[2]));var u=Bt.engine.runKernel(function(t,o){return o(t.localResponseNormalization4D(a,e,n,r,i))},{x4D:a},function(t,o){var s=o[0];return{x4D:function(){return Bt.engine.runKernel(function(o){return o.LRNGrad(t,a,s,e,n,r,i)},{})}}});return s?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}});var Hu=Se({norm_:function(t,e,n,r){void 0===e&&(e="euclidean"),void 0===n&&(n=null),void 0===r&&(r=!1);var i=function t(e,n,r){if(void 0===r&&(r=null),0===e.rank)return e.abs();if(1!==e.rank&&null===r)return t(e.reshape([-1]),n,r);if(1===e.rank||"number"==typeof r||Array.isArray(r)&&1===r.length){if(1===n)return e.abs().sum(r);if(n===1/0)return e.abs().max(r);if(n===-1/0)return e.abs().min(r);if("euclidean"===n||2===n)return e.abs().pow(Re(2,"int32")).sum(r).sqrt();throw new Error("Error in norm: invalid ord value: "+n)}if(Array.isArray(r)&&2===r.length){if(1===n)return e.abs().sum(r[0]).max(r[1]-1);if(n===1/0)return e.abs().sum(r[1]).max(r[0]);if(n===-1/0)return e.abs().sum(r[1]).min(r[0]);if("fro"===n||"euclidean"===n)return e.square().sum(r).sqrt();throw new Error("Error in norm: invalid ord value: "+n)}throw new Error("Error in norm: invalid axis: "+r)}(t=xe(t,"x","norm"),e,n),o=i.shape;if(r){var a=I(n,t.shape);o=re(i.shape,a)}return i.reshape(o)}});function Ku(t,e){for(var n=[],r=t;r<e;++r)n.push(r);return n}function $u(t){for(var e=[],n=0;n<t.length;++n)for(var r=0;r<t[n].length;++r)e.push(t[n][r]);return e}var Xu=Se({gather_:function(t,e,n){void 0===n&&(n=0);var r=xe(t,"x","gather"),i=xe(e,"indices","gather","int32");n=I(n,r.shape)[0];var o=function(t,e,n){for(var r=t.shape[n],i=[],o=1,a=1,s=0;s<n;s++)i.push(t.shape[s]),o*=t.shape[s];for(s=0;s<e.rank;s++)i.push(e.shape[s]);for(s=n+1;s<t.rank;s++)i.push(t.shape[s]),a*=t.shape[s];return{batchSize:o,sliceSize:a,dimSize:r,outputShape:i}}(r,i,n);return Bt.engine.runKernel(function(t){return t.gather(r,i.flatten(),n)},{$x:r},function(t){return{$x:function(){var e=r.shape,o=i.size,a=e.slice(0,n),s=a.length,u=e.slice(n,e.length).slice(1),l=u.length,c=Ku(0,s),p=Ku(s+1,s+1+l),h=$u([a,[o],u]),f=t.reshape(h),d=i.reshape([o]),m=$u([[s],c,p]),g=f.transpose(m),y=Yu(g,d,r.shape[n]),v=ae(m);return y.transpose(v)}}}).reshape(o.outputShape)}}),Yu=Se({unsortedSegmentSum_:function(t,e,n){var r=xe(t,"x","unsortedSegmentSum"),i=xe(e,"segmentIds","unsortedSegmentSum","int32");return d(w(n),function(){return"numSegments must be of dtype int"}),Bt.engine.runKernel(function(t){return t.unsortedSegmentSum(r,i,n)},{$x:r},function(t){return{$x:function(){return function(t,e){for(var n=bu(e,je(e)),r=Xu(t,n),i=ru(e,Re(0,"int32")),o=r.rank-i.rank,a=0;a<o;++a)i=qo(i,a+1);i=_u(i,ze(r.shape,"bool"));var s=je(r);return zu(i,r,s)}(t,i)}}})}});var Ju=Se({basicLSTMCell_:function(t,e,n,r,i,o){var a=xe(t,"forgetBias","basicLSTMCell"),s=xe(e,"lstmKernel","basicLSTMCell"),u=xe(n,"lstmBias","basicLSTMCell"),l=xe(r,"data","basicLSTMCell"),c=xe(i,"c","basicLSTMCell"),p=xe(o,"h","basicLSTMCell"),h=l.concat(p,1).matMul(s).add(u),f=h.shape[0],d=h.shape[1]/4,m=[f,d],g=h.slice([0,0],m),y=h.slice([0,d],m),v=h.slice([0,2*d],m),b=h.slice([0,3*d],m),w=g.sigmoid().mulStrict(y.tanh()).addStrict(c.mulStrict(a.add(v).sigmoid()));return[w,w.tanh().mulStrict(b.sigmoid())]}}),Zu=Se({multiRNNCell_:function(t,e,n,r){for(var i=xe(e,"data","multiRNNCell"),o=Ne(n,"c","multiRNNCell"),a=Ne(r,"h","multiRNNCell"),s=i,u=[],l=0;l<t.length;l++){var c=t[l](s,o[l],a[l]);u.push(c[0]),u.push(c[1]),s=c[1]}var p=[],h=[];for(l=0;l<u.length;l+=2)p.push(u[l]),h.push(u[l+1]);return[p,h]}});var Qu=Se({movingAverage_:function(t,e,n,r,i){void 0===i&&(i=!0);var o=xe(t,"v","movingAverage"),a=xe(e,"x","movingAverage"),s=xe(n,"decay","movingAverage");(function(t,e){d(t.dtype===e.dtype,function(){return"The dtypes of the first("+t.dtype+") and second("+e.dtype+") input must match"})})(o,a),d(b(o.shape,a.shape),function(){return"Shape mismatch in v and x"});var u=Re(1),l=u.sub(s),c=a.sub(o).mul(l);if(i){d(null!=r,function(){return"When using zeroDebias: true, step is required."});var p=xe(r,"step","movingAverage");c=c.div(u.sub(ku(s,p)))}return o.add(c)}});var tl=Se({stridedSlice_:function(t,e,n,r,i,o,a,s,u){if(void 0===i&&(i=0),void 0===o&&(o=0),void 0===a&&(a=0),void 0===s&&(s=0),void 0===u&&(u=0),0!==a)throw new Error("ellipsis mask is not yet supported");if(0!==s)throw new Error("new axis mask is not yet supported");var l=xe(t,"x","stridedSlice");if(r.every(function(t){return 1===t})){var c=de(l.shape,e,n,r,i,o,a,s,u),p=c[0],h=c[1],f=c[2],d=h.filter(function(t,e){return-1===f.indexOf(e)});return zs(l,p,h).reshape(d)}return Bt.engine.runKernel(function(t){return t.stridedSlice(l,e,n,r,i,o,a,s,u)},{$x:l})}});var el=Se({topk_:function(t,e,n){void 0===e&&(e=1),void 0===n&&(n=!0);var r=xe(t,"x","topk");if(0===r.rank)throw new Error("topk() expects the input to be of rank 1 or higher");var i=r.shape[r.shape.length-1];if(e>i)throw new Error("'k' passed to topk() must be <= the last dimension ("+i+") but got "+e);var o=Bt.engine.runKernel(function(t){return t.topk(r,e,n)},{$x:r});return{values:o[0],indices:o[1]}}});var nl=Se({scatterND_:function(t,e,n){var r=xe(t,"indices","scatterND","int32"),i=xe(e,"updates","scatterND");return he(i,r,n),Bt.engine.runKernel(function(t){return t.scatterND(r,i,n)},{$indices:r,$updates:i})}});var rl=Se({fft_:function(t){d("complex64"===t.dtype,function(){return"The dtype for tf.spectral.fft() must be complex64 but got "+t.dtype+"."});var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return Bt.engine.runKernel(function(t){return t.fft(r)},{input:t}).reshape(t.shape)}}),il=Se({ifft_:function(t){d("complex64"===t.dtype,function(){return"The dtype for tf.spectral.ifft() must be complex64 but got "+t.dtype+"."});var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return Bt.engine.runKernel(function(t){return t.ifft(r)},{input:t}).reshape(t.shape)}}),ol=Se({rfft_:function(t){d("float32"===t.dtype,function(){return"The dtype for rfft() must be real value but got "+t.dtype});var e=t.shape[t.shape.length-1],n=t.size/e,r=t.zerosLike(),i=Ie(t,r).as2D(n,e),o=rl(i),a=Math.floor(e/2)+1,s=ke(o),u=Ae(o),l=s.split([a,e-a],s.shape.length-1),c=u.split([a,e-a],u.shape.length-1),p=t.shape.slice();return p[t.shape.length-1]=a,Ie(l[0],c[0]).reshape(p)}}),al=Se({irfft_:function(t){var e=t.shape[t.shape.length-1],n=t.size/e;if(e<=2){var r=t.as2D(n,e),i=il(r);return ke(i)}var o=[n,2*(e-1)],a=ke(t).as2D(n,e),s=Ae(t).as2D(n,e),u=a.slice([0,1],[n,e-2]).reverse(1),l=s.slice([0,1],[n,e-2]).reverse(1).mul(Re(-1)),c=a.concat(u,1),p=s.concat(l,1);return r=Ie(c,p).as2D(o[0],o[1]),i=il(r),ke(i)}}),sl=Object.freeze({fft:rl,ifft:il,rfft:ol,irfft:al});var ul=Se({sparseToDense_:function(t,e,n,r){void 0===r&&(r=0);var i=xe(t,"sparseIndices","sparseToDense","int32"),o=xe(e,"sparseValues","sparseToDense"),a=xe(r,"defaultValue","sparseToDense",o.dtype);return function(t,e,n,r){if("int32"!==t.dtype)throw new Error("tf.sparseToDense() expects the indices to be int32 type, but the dtype was "+t.dtype+".");if(t.rank>2)throw new Error("sparseIndices should be a scalar, vector, or matrix, but got shape "+t.shape+".");var i=t.rank>0?t.shape[0]:1,o=t.rank>1?t.shape[1]:1;if(n.length!==o)throw new Error("outputShape has incorrect number of elements:, "+n.length+", should be: "+o+".");var a=e.size;if(0!==e.rank&&(1!==e.rank||a!==i))throw new Error("sparseValues has incorrect shape "+e.shape+", should be [] or ["+i+"]");if(e.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(i,o,n,a),Bt.engine.runKernel(function(t){return t.sparseToDense(i,o,n,a)},{$sparseIndices:i,$sparseValues:o,$defaultValue:a})}});var ll=Se({gatherND_:function(t,e){var n=xe(e,"indices","gatherND","int32"),r=xe(t,"x","gatherND");return Bt.engine.runKernel(function(t){return t.gatherND(r,n)},{$x:r,$indices:n})}});!function(t){t[t.NONE=0]="NONE",t[t.MEAN=1]="MEAN",t[t.SUM=2]="SUM",t[t.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"}(t.Reduction||(t.Reduction={}));var cl=Se({absoluteDifference_:function(e,n,r,i){void 0===i&&(i=t.Reduction.SUM_BY_NONZERO_WEIGHTS);var o=xe(e,"labels","absoluteDifference"),a=xe(n,"predictions","absoluteDifference"),s=null;null!=r&&(s=xe(r,"weights","absoluteDifference")),m(o.shape,a.shape,"Error in absoluteDifference: ");var u=o.sub(a).abs();return pl(u,s,i)}}),pl=Se({computeWeightedLoss_:function(e,n,r){void 0===r&&(r=t.Reduction.SUM_BY_NONZERO_WEIGHTS);var i=xe(e,"losses","computeWeightedLoss"),o=null;null!=n&&(o=xe(n,"weights","computeWeightedLoss"));var a=null==o?i:i.mul(o);if(r===t.Reduction.NONE)return a;if(r===t.Reduction.SUM)return a.sum();if(r===t.Reduction.MEAN){if(null==o)return a.mean();var s=v(i.shape)/v(o.shape),u=a.sum().div(o.sum());return s>1?u.div(Re(s)):u}if(r===t.Reduction.SUM_BY_NONZERO_WEIGHTS){if(null==o)return a.sum().div(Re(i.size));var l=o.mul(ze(i.shape)).notEqual(Re(0)).sum().toFloat();return a.sum().div(l)}throw Error("Unknown reduction: "+r)}}),hl=Se({cosineDistance_:function(e,n,r,i,o){void 0===o&&(o=t.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=xe(e,"labels","cosineDistance"),s=xe(n,"predictions","cosineDistance"),u=null;null!=i&&(u=xe(i,"weights","cosineDistance")),m(a.shape,s.shape,"Error in cosineDistance: ");var l=Re(1).sub(a.mul(s).sum(r,!0));return pl(l,u,o)}}),fl=Se({hingeLoss_:function(e,n,r,i){void 0===i&&(i=t.Reduction.SUM_BY_NONZERO_WEIGHTS);var o=xe(e,"labels","hingeLoss"),a=xe(n,"predictions","hingeLoss"),s=null;null!=r&&(s=xe(r,"weights","hingeLoss")),m(o.shape,a.shape,"Error in hingeLoss: ");var u=Re(1);o=Re(2).mul(o).sub(u);var l=u.sub(o.mul(a)).relu();return pl(l,s,i)}}),dl=Se({huberLoss_:function(e,n,r,i,o){void 0===i&&(i=1),void 0===o&&(o=t.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=xe(e,"labels","huberLoss"),s=xe(n,"predictions","huberLoss"),u=null;null!=r&&(u=xe(r,"weights","huberLoss")),m(a.shape,s.shape,"Error in huberLoss: ");var l=Re(i),c=s.sub(a).abs(),p=xu(c,l),h=c.sub(p),f=Re(.5).mul(p.square()).add(l.mul(h));return pl(f,u,o)}}),ml=Se({logLoss_:function(e,n,r,i,o){void 0===i&&(i=1e-7),void 0===o&&(o=t.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=xe(e,"labels","logLoss"),s=xe(n,"predictions","logLoss"),u=null;null!=r&&(u=xe(r,"weights","logLoss")),m(a.shape,s.shape,"Error in logLoss: ");var l=Re(1),c=Re(i),p=a.mul(s.add(c).log()).neg().sub(l.sub(a).mul(l.sub(s).add(c).log()));return pl(p,u,o)}}),gl=Se({meanSquaredError_:function(e,n,r,i){void 0===i&&(i=t.Reduction.SUM_BY_NONZERO_WEIGHTS);var o=xe(e,"labels","meanSquaredError"),a=xe(n,"predictions","meanSquaredError"),s=null;null!=r&&(s=xe(r,"weights","meanSquaredError")),m(o.shape,a.shape,"Error in meanSquaredError: ");var u=o.squaredDifference(a);return pl(u,s,i)}}),yl=Se({sigmoidCrossEntropy_:function(e,n,r,i,o){void 0===i&&(i=0),void 0===o&&(o=t.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=xe(e,"multiClassLabels","sigmoidCrossEntropy"),s=xe(n,"logits","sigmoidCrossEntropy"),u=null;if(null!=r&&(u=xe(r,"weights","sigmoidCrossEntropy")),m(a.shape,s.shape,"Error in sigmoidCrossEntropy: "),i>0){var l=Re(i),c=Re(1),p=Re(.5);a=a.mul(c.sub(l)).add(p.mul(l))}var h=function(t,e){var n=xe(t,"labels","sigmoidCrossEntropyWithLogits"),r=xe(e,"logits","sigmoidCrossEntropyWithLogits");m(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var i=r.relu(),o=r.mul(n),a=r.abs().neg().exp().log1p();return i.sub(o).add(a)}(a,s);return pl(h,u,o)}}),vl=Se({softmaxCrossEntropy_:function(e,n,r,i,o){void 0===i&&(i=0),void 0===o&&(o=t.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=xe(e,"onehotLabels","softmaxCrossEntropy"),s=xe(n,"logits","softmaxCrossEntropy"),u=null;if(null!=r&&(u=xe(r,"weights","softmaxCrossEntropy")),m(a.shape,s.shape,"Error in softmaxCrossEntropy: "),i>0){var l=Re(i),c=Re(1),p=Re(a.shape[1]);a=a.mul(c.sub(l)).add(l.div(p))}var h=function(t,e,n){if(void 0===n&&(n=-1),-1===n&&(n=e.rank-1),n!==e.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank "+e.rank+" and dim was "+n);return Vt(function(t,e){var r=e.logSumExp([n],!0),i=e.toFloat().sub(r);return{value:i.mul(t).neg().sum([n]),gradFunc:function(e){var r=re(e.shape,[n]);return[e.reshape(r).mul(t.toFloat().sub(i.exp())),e.reshape(r).mul(i.exp().sub(t.toFloat()))]}}})(t,e)}(a,s);return pl(h,u,o)}}),bl=Object.freeze({get Reduction(){return t.Reduction},absoluteDifference:cl,computeWeightedLoss:pl,cosineDistance:hl,hingeLoss:fl,huberLoss:dl,logLoss:ml,meanSquaredError:gl,sigmoidCrossEntropy:yl,softmaxCrossEntropy:vl});function wl(t,e){return void 0===e&&(e=!1),Bt.engine.tidy(function(){if(2!==t.shape.length)throw new Error("qr2d() requires a 2D Tensor, but got a "+t.shape.length+"D Tensor.");for(var n=t.shape[0],r=t.shape[1],i=Go(n),o=t.clone(),a=Oe([[1]],[1,1]),s=a.clone(),u=n>=r?r:n,l=function(t){var e,u=o,l=s,c=i;e=Bt.engine.tidy(function(){var e=o.slice([t,t],[n-t,1]),u=e.norm(),l=o.slice([t,t],[1,1]),c=l.sign().neg(),p=l.sub(c.mul(u)),h=e.div(p);s=1===h.shape[0]?a.clone():a.concat(h.slice([1,0],[h.shape[0]-1,h.shape[1]]),0);var f=c.matMul(p).div(u).neg(),d=o.slice([t,0],[n-t,r]),m=f.mul(s);o=0===t?d.sub(m.matMul(s.transpose().matMul(d))):o.slice([0,0],[t,r]).concat(d.sub(m.matMul(s.transpose().matMul(d))),0);var g=i.slice([0,t],[n,i.shape[1]-t]);return i=0===t?g.sub(g.matMul(s).matMul(m.transpose())):i.slice([0,0],[n,t]).concat(g.sub(g.matMul(s).matMul(m.transpose())),1),[s,o,i]}),s=e[0],o=e[1],i=e[2],Ht([u,l,c])},c=0;c<u;++c)l(c);return!e&&n>r&&(i=i.slice([0,0],[n,r]),o=o.slice([0,0],[r,r])),[i,o]})}var xl=Se({gramSchmidt_:function(t){var e;if(Array.isArray(t)){e=!1,d(null!=t&&t.length>0,function(){return"Gram-Schmidt process: input must not be null, undefined, or empty"});for(var n=t[0].shape[0],r=function(e){d(t[e].shape[0]===n,function(){return"Gram-Schmidt: Non-unique lengths found in the input vectors: ("+t[e].shape[0]+" vs. "+n+")"})},i=1;i<t.length;++i)r(i)}else e=!0,t=Io(t,t.shape[0],0).map(function(t){return ia(t,[0])});d(t.length<=t[0].shape[0],function(){return"Gram-Schmidt: Number of vectors ("+t.length+") exceeds number of dimensions ("+t[0].shape[0]+")."});var o=[],a=t,s=function(t){o.push(Bt.engine.tidy(function(){var e=a[t];if(t>0)for(var n=0;n<t;++n){var r=Zs(o[n].mulStrict(e)).mul(o[n]);e=e.sub(r)}return e.div(Hu(e,"euclidean"))}))};for(i=0;i<t.length;++i)s(i);return e?oa(o,0):o}}),Nl=Se({qr_:function(t,e){if(void 0===e&&(e=!1),t.rank<2)throw new Error("qr() requires input tensor to have a rank >= 2, but got rank "+t.rank);if(2===t.rank)return wl(t,e);var n=t.shape.slice(0,t.shape.length-2).reduce(function(t,e){return t*e}),r=[],i=[];return ua(t.reshape([n,t.shape[t.shape.length-2],t.shape[t.shape.length-1]]),0).forEach(function(t){var n=wl(t,e),o=n[0],a=n[1];r.push(o),i.push(a)}),[oa(r,0).reshape(t.shape),oa(i,0).reshape(t.shape)]}}),Sl=Object.freeze({gramSchmidt:xl,qr:Nl});function Cl(t,e,n,r,i){null==r&&(r=.5),null==i&&(i=Number.NEGATIVE_INFINITY);var o=t.shape[0];return n=Math.min(n,o),d(0<=r&&r<=1,function(){return"iouThreshold must be in [0, 1], but was '"+r+"'"}),d(2===t.rank,function(){return"boxes must be a 2D tensor, but was of rank '"+t.rank+"'"}),d(4===t.shape[1],function(){return"boxes must have 4 columns, but 2nd dimension was "+t.shape[1]}),d(1===e.rank,function(){return"scores must be a 1D tensor"}),d(e.shape[0]===o,function(){return"scores has incompatible shape with boxes. Expected "+o+", but was "+e.shape[0]}),{maxOutputSize:n,iouThreshold:r,scoreThreshold:i}}var El=Se({resizeBilinear_:function(t,e,n){void 0===n&&(n=!1);var r=xe(t,"images","resizeBilinear");d(3===r.rank||4===r.rank,function(){return"Error in resizeBilinear: x must be rank 3 or 4, but got rank "+r.rank+"."}),d(2===e.length,function(){return"Error in resizeBilinear: new shape must 2D, but got shape "+e+"."});var i=r,o=!1;3===r.rank&&(o=!0,i=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var a=e[0],s=e[1],u=Bt.engine.runKernel(function(t,e){return t.resizeBilinear(i,a,s,n)},{batchImages:i},function(t,e){return{batchImages:function(){return Bt.engine.runKernel(function(e){return e.resizeBilinearBackprop(t,i,n)},{})}}});return o?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Il=Se({resizeNearestNeighbor_:function(t,e,n){void 0===n&&(n=!1);var r=xe(t,"images","resizeNearestNeighbor");d(3===r.rank||4===r.rank,function(){return"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank "+r.rank+"."}),d(2===e.length,function(){return"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+e+"."}),d("float32"===r.dtype||"int32"===r.dtype,function(){return"`images` must have `int32` or `float32` as dtype"});var i=r,o=!1;3===r.rank&&(o=!0,i=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var a=e[0],s=e[1],u=Bt.engine.runKernel(function(t,e){return t.resizeNearestNeighbor(i,a,s,n)},{batchImages:i},function(t,e){return{batchImages:function(){return Bt.engine.runKernel(function(e){return e.resizeNearestNeighborBackprop(t,i,n)},{})}}});return o?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),kl=Se({nonMaxSuppression_:function(t,e,n,r,i){void 0===r&&(r=.5),void 0===i&&(i=Number.NEGATIVE_INFINITY);var o=xe(t,"boxes","nonMaxSuppression"),a=xe(e,"scores","nonMaxSuppression"),s=Cl(o,a,n,r,i);return n=s.maxOutputSize,r=s.iouThreshold,i=s.scoreThreshold,Bt.engine.runKernel(function(t){return t.nonMaxSuppression(o,a,n,r,i)},{$boxes:o})}}),Al=function(t,e,n,r,a){return void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),i(this,void 0,void 0,function(){var i,s,u,l,c,p;return o(this,function(o){switch(o.label){case 0:return i=xe(t,"boxes","nonMaxSuppressionAsync"),s=xe(e,"scores","nonMaxSuppressionAsync"),u=Cl(i,s,n,r,a),n=u.maxOutputSize,r=u.iouThreshold,a=u.scoreThreshold,[4,i.data()];case 1:return l=o.sent(),[4,s.data()];case 2:return c=o.sent(),p=Ze(l,c,n,r,a),i!==t&&i.dispose(),s!==e&&s.dispose(),[2,p]}})})},Tl=Se({cropAndResize_:function(t,e,n,r,i,o){var a=xe(t,"image","cropAndResize","float32"),s=xe(e,"boxes","cropAndResize","float32"),u=xe(n,"boxInd","cropAndResize","int32");i=i||"bilinear",o=o||0;var l=s.shape[0];return d(4===a.rank,function(){return"Error in cropAndResize: image must be rank 4,but got rank "+a.rank+"."}),d(2===s.rank&&4===s.shape[1],function(){return"Error in cropAndResize: boxes must be have size ["+l+",4] but had shape "+s.shape+"."}),d(1===u.rank&&u.shape[0]===l,function(){return"Error in cropAndResize: boxInd must be have size ["+l+"] but had shape "+s.shape+"."}),d(2===r.length,function(){return"Error in cropAndResize: cropSize must be of length 2, but got length "+r.length+"."}),d(r[0]>=1&&r[1]>=1,function(){return"cropSize must be atleast [1,1], but was "+r}),d("bilinear"===i||"nearest"===i,function(){return"method must be bilinear or nearest, but was "+i}),Bt.engine.runKernel(function(t,e){return t.cropAndResize(a,s,u,r,i,o)},{$image:a,$boxes:s})}}),Rl=Object.freeze({resizeBilinear:El,resizeNearestNeighbor:Il,nonMaxSuppression:kl,nonMaxSuppressionAsync:Al,cropAndResize:Tl});var Dl=Se({matMul_:function(t,e,n,r,i,o){var a;void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===o&&(o="linear");var s=xe(t,"a","fused matMul"),u=xe(e,"b","fused matMul");a=bt(s,u),s=a[0],u=a[1];var l=n?s.shape[s.rank-2]:s.shape[s.rank-1],c=r?u.shape[u.rank-1]:u.shape[u.rank-2],p=n?s.shape[s.rank-1]:s.shape[s.rank-2],h=r?u.shape[u.rank-2]:u.shape[u.rank-1],f=s.shape.slice(0,-2),m=u.shape.slice(0,-2),g=v(f),y=v(m);d(s.rank>=2&&u.rank>=2&&s.rank===u.rank,function(){return"Error in fused matMul: inputs must have the same rank of at least 2, got ranks "+s.rank+" and "+u.rank+"."}),d(b(f,m),function(){return"Error in fused matMul: outer dimensions ("+f+") and ("+m+") of Tensors with shapes "+s.shape+" and "+u.shape+" must match."}),d(l===c,function(){return"Error in fused matMul: inner shapes ("+l+") and ("+c+") of Tensors with shapes "+s.shape+" and "+u.shape+" and transposeA="+n+" and transposeB="+r+" must match."});var w,x=s.shape.slice(0,-2).concat([p,h]),N=n?s.as3D(g,l,p):s.as3D(g,p,l),S=r?u.as3D(y,h,c):u.as3D(y,c,h);null!=i&&un(x,(w=bt(w=xe(i,"bias","fused matMul"),s)[0]).shape);var C={$a:N,$b:S};return null!=i&&(C.$bias=w),Bt.engine.runKernel(function(t,e){return e(t.fusedBatchMatMul(N,S,n,r,w,o))},C,function(t,e){var a,s=e[0];if(null==o||"linear"===o)a=t;else{if("relu"!==o)throw new Error("Gradient for activation "+o+" has not been implemented yet.");a=t.mul(s.step())}var u={};return null!=i&&(u={$bias:function(){var t=a,e=sn(w.shape,a.shape);return e.length>0&&(t=t.sum(e)),t.reshape(w.shape)}}),n||r?!n&&r?Object.assign({$a:function(){return a.matMul(S,!1,!1)},$b:function(){return a.matMul(N,!0,!1)}},u):n&&!r?Object.assign({$a:function(){return S.matMul(a,!1,!0)},$b:function(){return N.matMul(a,!1,!1)}},u):Object.assign({$a:function(){return S.matMul(a,!0,!0)},$b:function(){return a.matMul(N,!0,!0)}},u):Object.assign({$a:function(){return a.matMul(S,!1,!0)},$b:function(){return N.matMul(a,!0,!1)}},u)}).reshape(x)}}),Ol=Object.freeze({matMul:Dl}),_l=Object.freeze({image:Rl,linalg:Sl,losses:bl,spectral:sl,fused:Ol,op:Se,batchNormalization2d:Ja,batchNormalization3d:Za,batchNormalization4d:Qa,batchNormalization:ts,batchNorm:es,batchNorm2d:ns,batchNorm3d:rs,batchNorm4d:is,complex:Ie,real:ke,imag:Ae,concat:xo,concat1d:No,concat2d:So,concat3d:Co,concat4d:Eo,split:Io,conv1d:ys,conv2d:vs,conv3d:bs,conv2dDerFilter:ws,depthwiseConv2d:xs,separableConv2d:Ns,conv2dTranspose:Ss,matMul:Cs,dot:Es,outerProduct:Is,reverse:ks,reverse1d:As,reverse2d:Ts,reverse3d:Rs,reverse4d:Ds,maxPool:Ms,avgPool:Ls,pool:Fs,slice:zs,slice1d:Ps,slice2d:Bs,slice3d:Us,slice4d:Ws,abs:fa,acos:da,acosh:ma,asin:ga,asinh:ya,atan:va,atanh:ba,ceil:wa,clipByValue:xa,cos:Na,cosh:Sa,erf:Ca,exp:Ea,expm1:Ia,floor:ka,log:Aa,log1p:Ta,logSigmoid:Ra,neg:Da,reciprocal:Oa,round:_a,rsqrt:Ma,sigmoid:La,sign:Fa,sin:za,sinh:Pa,softplus:Ba,sqrt:Ua,square:Wa,step:Va,tan:ja,tanh:qa,all:js,any:qs,argMax:Gs,argMin:Hs,logSumExp:Ks,max:$s,mean:Xs,min:Ys,moments:Js,sum:Zs,prod:Qs,equal:tu,equalStrict:eu,greater:nu,greaterEqual:ru,greaterEqualStrict:iu,greaterStrict:ou,less:au,lessEqual:su,lessEqualStrict:uu,lessStrict:lu,notEqual:cu,notEqualStrict:pu,add:hu,addN:fu,addStrict:du,atan2:mu,div:gu,divStrict:yu,floorDiv:vu,maximum:bu,maximumStrict:wu,minimum:xu,minimumStrict:Nu,mod:Su,modStrict:Cu,mul:Eu,mulStrict:Iu,pow:ku,powStrict:Au,squaredDifference:Tu,squaredDifferenceStrict:Ru,sub:Du,subStrict:Ou,elu:Bu,leakyRelu:Uu,prelu:Wu,relu:Vu,selu:ju,logicalAnd:_u,logicalNot:Mu,logicalOr:Lu,logicalXor:Fu,where:zu,whereAsync:Pu,buffer:zo,print:Po,batchToSpaceND:Bo,cast:Uo,clone:Wo,cumsum:Vo,depthToSpace:jo,expandDims:qo,eye:Go,multinomial:Ho,oneHot:Ko,pad:$o,pad1d:Xo,pad2d:Yo,pad3d:Jo,pad4d:Zo,rand:Qo,randomNormal:ta,randomUniform:ea,reshape:na,spaceToBatchND:ra,squeeze:ia,stack:oa,tile:aa,truncatedNormal:sa,unstack:ua,setdiff1dAsync:la,fill:Be,linspace:Ue,ones:ze,range:We,scalar:Re,tensor:Te,tensor1d:De,tensor2d:Oe,tensor3d:_e,tensor4d:Me,tensor5d:Le,tensor6d:Fe,zeros:Pe,onesLike:Ve,zerosLike:je,transpose:qu,softmax:Ce,logSoftmax:Ee,localResponseNormalization:Gu,norm:Hu,gather:Xu,unsortedSegmentSum:Yu,basicLSTMCell:Ju,multiRNNCell:Zu,movingAverage:Qu,stridedSlice:tl,topk:el,scatterND:nl,fft:rl,ifft:il,rfft:ol,irfft:al,sparseToDense:ul,gatherND:ll});var Ml=function(){function t(){this.blockSize=48,this.firstUse=!0,Bt.get("IS_BROWSER")&&(this.fromPixels2DContext=document.createElement("canvas").getContext("2d"))}return t.prototype.setDataMover=function(t){this.data=new qe(t)},t.prototype.register=function(t,e,n){if(this.firstUse&&(this.firstUse=!1,Bt.get("IS_NODE")&&Xt("\n============================\nHi there 👋. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.\n============================\n")),this.data.has(t))throw new Error("Data buffer is already registered");this.data.set(t,{dtype:n})},t.prototype.write=function(t,e){if(null==e)throw new Error("MathBackendCPU.write(): values can not be null");this.data.get(t).values=e},t.prototype.fromPixels=function(t,e){if(null==t)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");var n,r;if(Bt.get("IS_NODE")&&null==t.getContext)throw new Error("When running in node, pixels must be an HTMLCanvasElement like the one returned by the `canvas` npm package");if(null!=t.getContext)n=t.getContext("2d").getImageData(0,0,t.width,t.height).data;else if(t instanceof ImageData)n=t.data;else{if(!(t instanceof HTMLImageElement||t instanceof HTMLVideoElement))throw new Error("pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement or ImageData, but was "+t.constructor.name);if(null==this.fromPixels2DContext)throw new Error("Can't read pixels from HTMLImageElement outside the browser.");this.fromPixels2DContext.canvas.width=t.width,this.fromPixels2DContext.canvas.height=t.height,this.fromPixels2DContext.drawImage(t,0,0,t.width,t.height),n=this.fromPixels2DContext.getImageData(0,0,t.width,t.height).data}if(4===e)r=new Int32Array(n);else{var i=t.width*t.height;r=new Int32Array(i*e);for(var o=0;o<i;o++)for(var a=0;a<e;++a)r[o*e+a]=n[4*o+a]}return _e(r,[t.height,t.width,e],"int32")},t.prototype.read=function(t){return i(this,void 0,void 0,function(){return o(this,function(e){return[2,this.readSync(t)]})})},t.prototype.readSync=function(t){var e=this.data.get(t),n=e.dtype,r=e.complexTensors;return"complex64"===n?$e(r.real.dataSync(),r.imag.dataSync()):this.data.get(t).values},t.prototype.disposeData=function(t){if(this.data.has(t)){var e=this.data.get(t).complexTensors;null!=e&&(e.real.dispose(),e.imag.dispose()),this.data.delete(t)}},t.prototype.time=function(t){return i(this,void 0,void 0,function(){var e;return o(this,function(n){return e=K(),t(),[2,{kernelMs:K()-e}]})})},t.prototype.memory=function(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}},t.prototype.complex=function(t,e){var n=ut.make(t.shape,{},"complex64");return this.data.get(n.dataId).complexTensors={real:Bt.engine.keep(t.clone()),imag:Bt.engine.keep(e.clone())},n},t.prototype.real=function(t){return this.data.get(t.dataId).complexTensors.real.clone()},t.prototype.imag=function(t){return this.data.get(t.dataId).complexTensors.imag.clone()},t.prototype.assertNotComplex=function(t,e){Array.isArray(t)||(t=[t]),t.forEach(function(t){null!=t&&d("complex64"!==t.dtype,function(){return e+" does not support complex64 tensors."})})},t.prototype.slice=function(t,e,n){if(this.assertNotComplex(t,"slice"),ye(t.shape,e,n)){var r=ve(e,t.strides),i=v(n);return Te(t.dataSync().subarray(r,r+i),n,t.dtype)}for(var o=zo(n,t.dtype),a=t.bufferSync(),s=0;s<o.size;++s){var u=o.indexToLoc(s).map(function(t,n){return t+e[n]});o.values[s]=a.get.apply(a,u)}return o.toTensor()},t.prototype.stridedSlice=function(t,e,n,r,i,o,a,s,u){this.assertNotComplex(t,"stridedSlice");var l=de(t.shape,e,n,r,i,o,a,s,u),c=l[0],p=l[1],h=l[2],f=p.filter(function(t,e){return-1===h.indexOf(e)});if(f.some(function(t){return 0===t}))return Te([],f);for(var d=zo(p,t.dtype),m=t.bufferSync(),g=0;g<d.size;g++){for(var y=d.indexToLoc(g),v=new Array(y.length),b=0;b<v.length;b++)v[b]=y[b]*r[b]+c[b];d.set.apply(d,[m.get.apply(m,v)].concat(y))}return d.toTensor().reshape(f)},t.prototype.unstack=function(t,e){for(var n=t.shape[e],r=new Array(t.rank-1),i=0,o=0;o<t.rank;o++)o!==e&&(r[i++]=t.shape[o]);var a=new Array(t.rank).fill(0),s=t.shape.slice();s[e]=1;var u=new Array(n);for(o=0;o<u.length;o++)a[e]=o,u[o]=this.slice(t,a,s).reshape(r);return u},t.prototype.reverse=function(t,e){this.assertNotComplex(t,"reverse");for(var n=zo(t.shape,t.dtype),r=t.bufferSync(),i=function(i){var o=n.indexToLoc(i),a=o.slice();e.forEach(function(e){return a[e]=t.shape[e]-1-a[e]}),n.set.apply(n,[r.get.apply(r,a)].concat(o))},o=0;o<n.size;o++)i(o);return n.toTensor()},t.prototype.concat=function(t,e){this.assertNotComplex(t,"concat");var n=t.map(function(t){var n=v(t.shape.slice(e));return t.as2D(-1,n)}),r=ue(n.map(function(t){return t.shape}),1),i=zo(r,t[0].dtype).values;if(1===n[0].shape[0]){var o=0;n.forEach(function(t){i.set(t.dataSync(),o),o+=t.size})}else{var a=0;n.forEach(function(t){for(var e=t.dataSync(),n=0,o=0;o<t.shape[0];++o)for(var s=o*r[1]+a,u=0;u<t.shape[1];++u)i[s+u]=e[n++];a+=t.shape[1]})}var s=ue(t.map(function(t){return t.shape}),e);return Te(i,s,t[0].dtype)},t.prototype.neg=function(t){return this.assertNotComplex(t,"neg"),this.multiply(Re(-1),t)},t.prototype.add=function(t,e){return"complex64"===t.dtype||"complex64"===e.dtype?this.broadcastedBinaryComplexOp(t.cast("complex64"),e.cast("complex64"),function(t,e,n,r){return{real:t+n,imag:e+r}}):this.broadcastedBinaryOp(t,e,yt(t.dtype,e.dtype),function(t,e){return t+e})},t.prototype.addN=function(t){this.assertNotComplex(t,"addN");for(var e=t.map(function(t){return t.dataSync()}),n=zo(t[0].shape,t[0].dtype),r=n.values,i=0;i<t.length;i++)for(var o=e[i],a=0;a<r.length;a++)r[a]+=o[a];return n.toTensor()},t.prototype.subtract=function(t,e){return"complex64"===t.dtype||"complex64"===e.dtype?this.broadcastedBinaryComplexOp(t.cast("complex64"),e.cast("complex64"),function(t,e,n,r){return{real:t-n,imag:e-r}}):this.broadcastedBinaryOp(t,e,yt(t.dtype,e.dtype),function(t,e){return t-e})},t.prototype.pow=function(t,e){return this.assertNotComplex([t,e],"pow"),this.broadcastedBinaryOp(t,e,t.dtype,function(t,e){return Math.pow(t,e)})},t.prototype.batchMatMul=function(t,e,n,r){this.assertNotComplex([t,e],"matMul");for(var i=n?t.shape[1]:t.shape[2],o=n?t.shape[2]:t.shape[1],a=r?e.shape[1]:e.shape[2],s=t.shape[0],u=t.dataSync(),l=e.dataSync(),c=n?[t.strides[0],1,t.strides[1]]:[t.strides[0],t.strides[1],1],p=c[0],h=c[1],f=c[2],d=r?[1,e.strides[1],e.strides[0]]:[e.strides[1],1,e.strides[0]],m=d[0],g=d[1],y=d[2],v=o*a,b=zo([s,o,a],t.dtype),w=b.values,x=this.blockSize,N=0;N<s;N++)for(var S=0;S<o;S+=x)for(var C=0;C<a;C+=x)for(var E=0;E<i;E+=x)for(var I=Math.min(S+x,o),k=Math.min(C+x,a),A=Math.min(E+x,i),T=S;T<I;T++)for(var R=C;R<k;R++){for(var D=0,O=E;O<A;O++)D+=u[N*p+T*h+O*f]*l[O*m+R*g+N*y];w[N*v+(T*a+R)]+=D}return b.toTensor()},t.prototype.fusedBatchMatMul=function(t,e,n,r,i,o){var a=this.batchMatMul(t,e,n,r);return i&&(a=this.add(a,i)),o&&(a=function(t,e,n){if("linear"===e)return t.linear(n);if("relu"===e)return t.relu(n);throw new Error("Activation "+e+" has not been implemented for the CPU backend.")}(this,o,a)),a},t.prototype.multiply=function(t,e){return"complex64"===t.dtype||"complex64"===e.dtype?this.broadcastedBinaryComplexOp(t.cast("complex64"),e.cast("complex64"),function(t,e,n,r){return{real:t*n-e*r,imag:t*r+e*n}}):this.broadcastedBinaryOp(t,e,yt(t.dtype,e.dtype),function(t,e){return t*e})},t.prototype.realDivide=function(t,e){return this.assertNotComplex([t,e],"realDivide"),this.broadcastedBinaryOp(t,e,"float32",function(t,e){return t/e})},t.prototype.floorDiv=function(t,e){return this.assertNotComplex([t,e],"floorDiv"),this.broadcastedBinaryOp(t,e,"int32",function(t,e){return Math.floor(t/e)})},t.prototype.sum=function(t,e){this.assertNotComplex(t,"sum"),ie("sum",e,t.rank);for(var n=ne(t.shape,e),r=n[0],i=n[1],o=Pe(r,yt(t.dtype,"int32")),a=v(i),s=o.dataSync(),u=t.dataSync(),l=0;l<s.length;++l){for(var c=l*a,p=0,h=0;h<a;++h)p+=u[c+h];s[l]=p}return o},t.prototype.prod=function(t,e){this.assertNotComplex(t,"sum");for(var n=ne(t.shape,e),r=n[0],i=n[1],o=Pe(r,yt(t.dtype,"int32")),a=v(i),s=o.dataSync(),u=t.dataSync(),l=0;l<s.length;++l){for(var c=l*a,p=1,h=0;h<a;++h)p*=u[c+h];s[l]=p}return o},t.prototype.unsortedSegmentSum=function(t,e,n){this.assertNotComplex(t,"unsortedSegmentSum");for(var r=[],i=t.rank-e.rank,o=0;o<i;++o)e=e.expandDims(o+1);for(o=0;o<n;++o){var a=Re(o,"int32"),s=tu(a,e).asType("float32").mul(t).sum(0);r.push(s)}return oa(r)},t.prototype.argMin=function(t,e){this.assertNotComplex(t,"argMin");var n=[e];ie("argMin",n,t.rank);for(var r=ne(t.shape,n),i=r[0],o=r[1],a=Pe(i,"int32"),s=v(o),u=a.dataSync(),l=t.dataSync(),c=0;c<u.length;++c){for(var p=c*s,h=l[p],f=0,d=0;d<s;++d){var m=l[p+d];m<h&&(h=m,f=d)}u[c]=f}return a},t.prototype.argMax=function(t,e){this.assertNotComplex(t,"argMax");var n=[e];ie("argMax",n,t.rank);for(var r=ne(t.shape,n),i=r[0],o=r[1],a=Pe(i,"int32"),s=v(o),u=a.dataSync(),l=t.dataSync(),c=0;c<u.length;++c){for(var p=c*s,h=l[p],f=0,d=0;d<s;++d){var m=l[p+d];m>h&&(h=m,f=d)}u[c]=f}return a},t.prototype.cumsum=function(t,e,n,r){if(this.assertNotComplex(t,"cumsum"),e!==t.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(t.rank-1)+" but got axis="+e);for(var i=yt(t.dtype,"int32"),o=Pe(t.shape,i),a=o.dataSync(),s=t.dataSync(),u=t.shape[t.rank-1],l=r?function(t,e){return t+u-e-1}:function(t,e){return t+e},c=0;c<s.length;c+=u)for(var p=0;p<u;p++){var h=l(c,p);if(0===p)a[h]=n?0:s[h];else{var f=l(c,p-1);a[h]=n?s[f]+a[f]:s[h]+a[f]}}return o},t.prototype.equal=function(t,e){return this.assertNotComplex([t,e],"equal"),this.broadcastedBinaryOp(t,e,"bool",function(t,e){return t===e?1:0})},t.prototype.notEqual=function(t,e){return this.assertNotComplex([t,e],"notEqual"),this.broadcastedBinaryOp(t,e,"bool",function(t,e){return t!==e?1:0})},t.prototype.less=function(t,e){return this.assertNotComplex([t,e],"less"),this.broadcastedBinaryOp(t,e,"bool",function(t,e){return t<e?1:0})},t.prototype.lessEqual=function(t,e){return this.assertNotComplex([t,e],"lessEqual"),this.broadcastedBinaryOp(t,e,"bool",function(t,e){return t<=e?1:0})},t.prototype.greater=function(t,e){return this.assertNotComplex([t,e],"greater"),this.broadcastedBinaryOp(t,e,"bool",function(t,e){return t>e?1:0})},t.prototype.greaterEqual=function(t,e){return this.assertNotComplex([t,e],"greaterEqual"),this.broadcastedBinaryOp(t,e,"bool",function(t,e){return t>=e?1:0})},t.prototype.logicalNot=function(t){this.assertNotComplex(t,"logicalNot");for(var e=t.dataSync(),n=new Uint8Array(e.length),r=0;r<e.length;++r)n[r]=e[r]?0:1;return ut.make(t.shape,{values:n},"bool")},t.prototype.logicalAnd=function(t,e){return this.assertNotComplex([t,e],"logicalAnd"),this.broadcastedBinaryOp(t,e,"bool",function(t,e){return t&&e})},t.prototype.logicalOr=function(t,e){return this.assertNotComplex([t,e],"logicalOr"),this.broadcastedBinaryOp(t,e,"bool",function(t,e){return t||e})},t.prototype.select=function(t,e,n){this.assertNotComplex([t,e,n],"select");for(var r=t.dataSync(),i=e.dataSync(),o=n.dataSync(),a=Pe(e.shape,yt(e.dtype,n.dtype)),s=a.dataSync(),u=0,l=0===t.rank||t.rank>1||1===e.rank?1:e.shape[1],c=0;c<r.length;c++)for(var p=0;p<l;p++)1===r[c]?s[u++]=i[c]:s[u++]=o[c];return a},t.prototype.where=function(t){this.assertNotComplex([t],"where");var e=t.dataSync();return ca(t.shape,e)},t.prototype.topk=function(t,e,n){return this.assertNotComplex(t,"topk"),en(t.dataSync(),t.shape,t.dtype,e)},t.prototype.min=function(t,e){this.assertNotComplex(t,"min"),ie("min",e,t.rank);for(var n=ne(t.shape,e),r=n[0],i=n[1],o=Pe(r,t.dtype),a=v(i),s=o.dataSync(),u=t.dataSync(),l=0;l<s.length;++l){for(var c=l*a,p=u[c],h=0;h<a;++h){var f=u[c+h];f<p&&(p=f)}s[l]=p}return o},t.prototype.minimum=function(t,e){return this.assertNotComplex([t,e],"minimum"),this.broadcastedBinaryOp(t,e,t.dtype,function(t,e){return Math.min(t,e)})},t.prototype.mod=function(t,e){return this.assertNotComplex([t,e],"mod"),this.broadcastedBinaryOp(t,e,t.dtype,function(t,e){var n=t%e;return t<0&&e<0||t>=0&&e>=0?n:(n+e)%e})},t.prototype.max=function(t,e){this.assertNotComplex(t,"max"),ie("max",e,t.rank);for(var n=ne(t.shape,e),r=n[0],i=n[1],o=Pe(r,t.dtype),a=v(i),s=o.dataSync(),u=t.dataSync(),l=0;l<s.length;++l){for(var c=l*a,p=u[c],h=0;h<a;++h){var f=u[c+h];f>p&&(p=f)}s[l]=p}return o},t.prototype.maximum=function(t,e){return this.assertNotComplex([t,e],"maximum"),this.broadcastedBinaryOp(t,e,t.dtype,function(t,e){return Math.max(t,e)})},t.prototype.all=function(t,e){this.assertNotComplex(t,"all"),ie("all",e,t.rank);for(var n=ne(t.shape,e),r=n[0],i=n[1],o=Pe(r,t.dtype),a=v(i),s=o.dataSync(),u=t.dataSync(),l=0;l<s.length;++l){for(var c=l*a,p=u[c],h=0;h<a;++h){var f=u[c+h];p=p&&f}s[l]=p}return o},t.prototype.any=function(t,e){this.assertNotComplex(t,"any"),ie("any",e,t.rank);for(var n=ne(t.shape,e),r=n[0],i=n[1],o=Pe(r,t.dtype),a=v(i),s=o.dataSync(),u=t.dataSync(),l=0;l<s.length;++l){for(var c=l*a,p=u[c],h=0;h<a;++h){var f=u[c+h];p=p||f}s[l]=p}return o},t.prototype.squaredDifference=function(t,e){return this.assertNotComplex([t,e],"squaredDifference"),this.broadcastedBinaryOp(t,e,t.dtype,function(t,e){var n=t-e;return n*n})},t.prototype.ceil=function(t){this.assertNotComplex(t,"ceil");for(var e=t.dataSync(),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.ceil(e[r]);return ut.make(t.shape,{values:n})},t.prototype.floor=function(t){this.assertNotComplex(t,"floor");for(var e=t.dataSync(),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.floor(e[r]);return ut.make(t.shape,{values:n})},t.prototype.sign=function(t){this.assertNotComplex(t,"x");for(var e=t.dataSync(),n=new Float32Array(e.length),r=0;r<e.length;++r)e[r]<0?n[r]=-1:e[r]>0?n[r]=1:n[r]=0;return ut.make(t.shape,{values:n})},t.prototype.round=function(t){this.assertNotComplex(t,"round");for(var e=t.dataSync(),n=new Float32Array(e.length),r=0;r<e.length;++r){var i=Math.floor(e[r]);e[r]-i<.5?n[r]=Math.floor(e[r]):e[r]-i>.5?n[r]=Math.ceil(e[r]):n[r]=i%2==0?i:i+1}return ut.make(t.shape,{values:n})},t.prototype.exp=function(t){this.assertNotComplex(t,"exp");for(var e=t.dataSync(),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.exp(e[r]);return ut.make(t.shape,{values:n})},t.prototype.expm1=function(t){this.assertNotComplex(t,"expm1");for(var e=t.dataSync(),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.expm1(e[r]);return ut.make(t.shape,{values:n})},t.prototype.log=function(t){this.assertNotComplex(t,"log");for(var e=t.dataSync(),n=new Float32Array(e.length),r=0;r<e.length;++r){var i=e[r];n[r]=Math.log(i)}return ut.make(t.shape,{values:n})},t.prototype.log1p=function(t){this.assertNotComplex(t,"log1p");for(var e=t.dataSync(),n=new Float32Array(e.length),r=0;r<e.length;++r){var i=e[r];n[r]=Math.log1p(i)}return ut.make(t.shape,{values:n})},t.prototype.sqrt=function(t){this.assertNotComplex(t,"sqrt");for(var e=t.dataSync(),n=new Float32Array(e.length),r=0;r<e.length;++r){var i=e[r];n[r]=Math.sqrt(i)}return ut.make(t.shape,{values:n})},t.prototype.rsqrt=function(t){this.assertNotComplex(t,"rsqrt");for(var e=t.dataSync(),n=new Float32Array(e.length),r=0;r<e.length;++r){var i=e[r];n[r]=1/Math.sqrt(i)}return ut.make(t.shape,{values:n})},t.prototype.square=function(t){this.assertNotComplex(t,"square");for(var e=t.dataSync(),n=new Float32Array(e.length),r=0;r<e.length;++r){var i=e[r];n[r]=i*i}return ut.make(t.shape,{values:n})},t.prototype.reciprocal=function(t){this.assertNotComplex(t,"reciprocal");for(var e=t.dataSync(),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=1/e[r];return ut.make(t.shape,{values:n})},t.prototype.linear=function(t){return t},t.prototype.relu=function(t){this.assertNotComplex(t,"relu");for(var e=Pe(t.shape,t.dtype),n=e.dataSync(),r=t.dataSync(),i=0;i<r.length;++i)n[i]=Math.max(0,r[i]);return e},t.prototype.prelu=function(t,e){return this.assertNotComplex([t,e],"prelu"),this.broadcastedBinaryOp(t,e,t.dtype,function(t,e){return t<0?e*t:t})},t.prototype.elu=function(t){this.assertNotComplex(t,"elu");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r){var i=n[r];e[r]=i>=0?i:Math.exp(i)-1}return ut.make(t.shape,{values:e})},t.prototype.eluDer=function(t,e){this.assertNotComplex([t,e],"eluDer");for(var n=new Float32Array(e.size),r=e.dataSync(),i=t.dataSync(),o=0;o<r.length;++o){var a=r[o];n[o]=a>=1?i[o]:i[o]*(a+1)}return ut.make(e.shape,{values:n})},t.prototype.selu=function(t){this.assertNotComplex(t,"selu");for(var e=ro,n=io,r=new Float32Array(t.size),i=t.dataSync(),o=0;o<i.length;++o){var a=i[o];r[o]=a>=0?n*a:e*(Math.exp(a)-1)}return ut.make(t.shape,{values:r})},t.prototype.clip=function(t,e,n){this.assertNotComplex(t,"clip");for(var r=new Float32Array(t.size),i=t.dataSync(),o=0;o<i.length;++o){var a=i[o];r[o]=a>n?n:a<e?e:a}return ut.make(t.shape,{values:r})},t.prototype.abs=function(t){for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=Math.abs(n[r]);return ut.make(t.shape,{values:e})},t.prototype.complexAbs=function(t){for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<t.size;++r){var i=n[2*r],o=n[2*r+1];e[r]=Math.hypot(i,o)}return ut.make(t.shape,{values:e})},t.prototype.int=function(t){this.assertNotComplex(t,"int");for(var e=new Int32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=n[r];return ut.make(t.shape,{values:e},"int32")},t.prototype.sigmoid=function(t){this.assertNotComplex(t,"sigmoid");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=1/(1+Math.exp(-n[r]));return ut.make(t.shape,{values:e})},t.prototype.softplus=function(t){this.assertNotComplex(t,"softplus");for(var e=Math.log(1.1920928955078125e-7)+2,n=new Float32Array(t.size),r=t.dataSync(),i=0;i<r.length;++i){var o,a=r[i]>-e,s=r[i]<e,u=Math.exp(r[i]);o=s?u:a?r[i]:Math.log(1+u),n[i]=o}return ut.make(t.shape,{values:n})},t.prototype.sin=function(t){this.assertNotComplex(t,"sin");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=Math.sin(n[r]);return ut.make(t.shape,{values:e})},t.prototype.cos=function(t){this.assertNotComplex(t,"cos");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=Math.cos(n[r]);return ut.make(t.shape,{values:e})},t.prototype.tan=function(t){this.assertNotComplex(t,"tan");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=Math.tan(n[r]);return ut.make(t.shape,{values:e})},t.prototype.asin=function(t){this.assertNotComplex(t,"asin");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=Math.asin(n[r]);return ut.make(t.shape,{values:e})},t.prototype.acos=function(t){this.assertNotComplex(t,"acos");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=Math.acos(n[r]);return ut.make(t.shape,{values:e})},t.prototype.atan=function(t){this.assertNotComplex(t,"atan");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=Math.atan(n[r]);return ut.make(t.shape,{values:e})},t.prototype.atan2=function(t,e){return this.assertNotComplex([t,e],"atan2"),this.broadcastedBinaryOp(t,e,t.dtype,function(t,e){return Math.atan2(t,e)})},t.prototype.sinh=function(t){this.assertNotComplex(t,"sinh");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=Math.sinh(n[r]);return ut.make(t.shape,{values:e})},t.prototype.cosh=function(t){this.assertNotComplex(t,"cosh");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=Math.cosh(n[r]);return ut.make(t.shape,{values:e})},t.prototype.tanh=function(t){this.assertNotComplex(t,"tanh");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=x(n[r]);return ut.make(t.shape,{values:e})},t.prototype.asinh=function(t){this.assertNotComplex(t,"asinh");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=Math.asinh(n[r]);return ut.make(t.shape,{values:e})},t.prototype.acosh=function(t){this.assertNotComplex(t,"acosh");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=Math.acosh(n[r]);return ut.make(t.shape,{values:e})},t.prototype.atanh=function(t){this.assertNotComplex(t,"atanh");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r)e[r]=Math.atanh(n[r]);return ut.make(t.shape,{values:e})},t.prototype.erf=function(t){this.assertNotComplex(t,"erf");for(var e=new Float32Array(t.size),n=t.dataSync(),r=0;r<n.length;++r){var i=n[r],o=1/(1+.3275911*i);e[r]=1-((((1.061405429*o-1.453152027)*o+1.421413741)*o-.284496736)*o+.254829592)*o*Math.exp(-i*i)}return ut.make(t.shape,{values:e})},t.prototype.step=function(t,e){void 0===e&&(e=0),this.assertNotComplex(t,"step");for(var n=new Float32Array(t.size),r=t.dataSync(),i=0;i<r.length;++i){var o=r[i];isNaN(o)?n[i]=NaN:n[i]=o>0?1:e}return ut.make(t.shape,{values:n})},t.prototype.conv2d=function(t,e,n){this.assertNotComplex([t,e],"conv2d");for(var r=n.filterHeight,i=n.filterWidth,o=n.dilationHeight,a=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,l=zo(n.outShape,t.dtype),c=t.dataSync(),p=e.dataSync(),h=l.values,f=0;f<n.batchSize;++f)for(var d=f*t.strides[0],m=f*l.strides[0],g=0;g<n.outHeight;++g)for(var y=m+g*l.strides[1],v=g*n.strideHeight-s,b=0;b<r;b++){var w=v+b*o;if(!(w<0||w>=n.inHeight))for(var x=b*e.strides[0],N=d+w*t.strides[1],S=0;S<n.outWidth;++S)for(var C=y+S*n.outChannels,E=S*n.strideWidth-u,I=0;I<i;I++){var k=E+I*a;if(!(k<0||k>=n.inWidth))for(var A=x+I*e.strides[1],T=N+k*n.inChannels,R=A,D=0;D<n.inChannels;++D){for(var O=c[T+D],_=0;_<n.outChannels;++_)h[C+_]+=O*p[R+_];R+=n.outChannels}}}return l.toTensor()},t.prototype.conv3d=function(t,e,n){for(var r=n.filterDepth,i=n.filterHeight,o=n.filterWidth,a=n.dilationDepth,s=n.dilationHeight,u=n.dilationWidth,l=n.padInfo.front,c=n.padInfo.left,p=n.padInfo.top,h=zo(n.outShape,t.dtype),f=t.dataSync(),d=e.dataSync(),m=h.values,g=0;g<n.batchSize;++g)for(var y=g*t.strides[0],v=g*h.strides[0],b=0;b<n.outDepth;++b)for(var w=v+b*h.strides[1],x=b*n.strideDepth-l,N=0;N<r;N++){var S=x+N*a;if(!(S<0||S>=n.inDepth))for(var C=N*e.strides[0],E=y+S*t.strides[1],I=0;I<n.outHeight;++I)for(var k=w+I*h.strides[2],A=I*n.strideHeight-p,T=0;T<i;T++){var R=A+T*s;if(!(R<0||R>=n.inHeight))for(var D=C+T*e.strides[1],O=E+R*t.strides[2],_=0;_<n.outWidth;++_)for(var M=k+_*n.outChannels,L=_*n.strideWidth-c,F=0;F<o;F++){var z=L+F*u;if(!(z<0||z>=n.inWidth))for(var P=D+F*e.strides[2],B=O+z*n.inChannels,U=P,W=0;W<n.inChannels;++W){for(var V=f[B+W],j=0;j<n.outChannels;++j)m[M+j]+=V*d[U+j];U+=n.outChannels}}}}return h.toTensor()},t.prototype.conv2dDerInput=function(t,e,n){this.assertNotComplex([t,e],"conv2dDerInput");for(var r=zo(n.inShape,"float32"),i=r.values,o=r.strides,a=o[0],s=o[1],u=o[2],l=t.dataSync(),c=t.strides,p=c[0],h=c[1],f=c[2],d=e.dataSync(),m=e.strides,g=m[0],y=m[1],v=m[2],b=n.batchSize,w=n.filterHeight,x=n.filterWidth,N=n.inChannels,S=n.inHeight,C=n.inWidth,E=n.outChannels,I=n.outHeight,k=n.outWidth,A=n.strideHeight,T=n.strideWidth,R=w-1-n.padInfo.top,D=x-1-n.padInfo.left,O=0;O<b;++O)for(var _=0;_<N;++_)for(var M=0;M<S;++M)for(var L=M-R,F=Math.max(0,Math.ceil(L/A)),z=Math.min(I,(w+L)/A),P=0;P<C;++P){for(var B=P-D,U=Math.max(0,Math.ceil(B/T)),W=Math.min(k,(x+B)/T),V=0,j=F;j<z;++j)for(var q=j*A-L,G=U;G<W;++G)for(var H=p*O+h*j+f*G,K=g*(w-1-q)+y*(x-1-(G*T-B))+v*_,$=0;$<E;++$)V+=l[H+$]*d[K+$];i[a*O+s*M+u*P+_]=V}return r.toTensor()},t.prototype.conv3dDerInput=function(t,e,n){for(var r=zo(n.inShape,"float32"),i=r.values,o=r.strides,a=o[0],s=o[1],u=o[2],l=o[3],c=t.dataSync(),p=t.strides,h=p[0],f=p[1],d=p[2],m=p[3],g=e.dataSync(),y=e.strides,v=y[0],b=y[1],w=y[2],x=y[3],N=n.batchSize,S=n.filterDepth,C=n.filterHeight,E=n.filterWidth,I=n.inChannels,k=n.inDepth,A=n.inHeight,T=n.inWidth,R=n.outChannels,D=n.outDepth,O=n.outHeight,_=n.outWidth,M=n.strideDepth,L=n.strideHeight,F=n.strideWidth,z=S-1-n.padInfo.front,P=C-1-n.padInfo.top,B=E-1-n.padInfo.left,U=0;U<N;++U)for(var W=0;W<I;++W)for(var V=0;V<k;++V)for(var j=V-z,q=Math.max(0,Math.ceil(j/M)),G=Math.min(D,(S+j)/M),H=0;H<A;++H)for(var K=H-P,$=Math.max(0,Math.ceil(K/L)),X=Math.min(O,(C+K)/L),Y=0;Y<T;++Y){for(var J=Y-B,Z=Math.max(0,Math.ceil(J/F)),Q=Math.min(_,(E+J)/F),tt=0,et=q;et<G;++et)for(var nt=et*M-j,rt=$;rt<X;++rt)for(var it=rt*L-K,ot=Z;ot<Q;++ot)for(var at=h*U+f*et+d*rt+m*ot,st=v*(S-1-nt)+b*(C-1-it)+w*(E-1-(ot*F-J))+x*W,ut=0;ut<R;++ut)tt+=c[at+ut]*g[st+ut];i[a*U+s*V+u*H+l*Y+W]=tt}return r.toTensor()},t.prototype.conv2dDerFilter=function(t,e,n){this.assertNotComplex([t,e],"conv2dDerFilter");for(var r=n.strideHeight,i=n.strideWidth,o=n.filterHeight,a=n.filterWidth,s=zo(n.filterShape,"float32"),u=n.padInfo.left,l=n.padInfo.top,c=t.bufferSync(),p=e.bufferSync(),h=0;h<o;++h)for(var f=Math.max(0,Math.ceil((l-h)/r)),d=Math.min(n.outHeight,(n.inHeight+l-h)/r),m=0;m<a;++m)for(var g=Math.max(0,Math.ceil((u-m)/i)),y=Math.min(n.outWidth,(n.inWidth+u-m)/i),v=0;v<n.inChannels;++v)for(var b=0;b<n.outChannels;++b){for(var w=0,x=0;x<n.batchSize;++x)for(var N=f;N<d;++N)for(var S=h+N*r-l,C=g;C<y;++C){var E=m+C*i-u;w+=c.get(x,S,E,v)*p.get(x,N,C,b)}s.set(w,h,m,v,b)}return s.toTensor()},t.prototype.conv3dDerFilter=function(t,e,n){for(var r=n.strideDepth,i=n.strideHeight,o=n.strideWidth,a=n.filterDepth,s=n.filterHeight,u=n.filterWidth,l=zo(n.filterShape,"float32"),c=l.values,p=l.strides,h=p[0],f=p[1],d=p[2],m=p[3],g=e.dataSync(),y=e.strides,v=y[0],b=y[1],w=y[2],x=y[3],N=t.dataSync(),S=t.strides,C=S[0],E=S[1],I=S[2],k=S[3],A=n.padInfo.front,T=n.padInfo.left,R=n.padInfo.top,D=0;D<a;++D)for(var O=Math.max(0,Math.ceil((A-D)/r)),_=Math.min(n.outDepth,(n.inDepth+A-D)/r),M=D*h,L=0;L<s;++L)for(var F=Math.max(0,Math.ceil((R-L)/i)),z=Math.min(n.outHeight,(n.inHeight+R-L)/i),P=L*f+M,B=0;B<u;++B)for(var U=Math.max(0,Math.ceil((T-B)/o)),W=Math.min(n.outWidth,(n.inWidth+T-B)/o),V=B*d+P,j=0;j<n.inChannels;++j)for(var q=j*m+V,G=0;G<n.outChannels;++G){for(var H=0,K=0;K<n.batchSize;++K)for(var $=K*C,X=K*v,Y=O;Y<_;++Y)for(var J=(D+Y*r-A)*E+$,Z=Y*b+X,Q=F;Q<z;++Q)for(var tt=(L+Q*i-R)*I+J,et=Q*w+Z,nt=U;nt<W;++nt){var rt=nt*x+et;H+=N[(B+nt*o-T)*k+tt+j]*g[rt+G]}c[q+G]=H}return l.toTensor()},t.prototype.depthwiseConv2D=function(t,e,n){this.assertNotComplex([t,e],"depthwiseConv2D");for(var r=n.filterHeight,i=n.filterWidth,o=n.dilationHeight,a=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,l=n.outChannels/n.inChannels,c=zo(n.outShape,t.dtype),p=t.dataSync(),h=e.dataSync(),f=c.values,d=0;d<n.batchSize;++d)for(var m=d*t.strides[0],g=d*c.strides[0],y=0;y<n.outHeight;++y)for(var v=g+y*c.strides[1],b=y*n.strideHeight-s,w=0;w<r;++w){var x=b+w*o;if(!(x<0||x>=n.inHeight))for(var N=w*e.strides[0],S=m+x*t.strides[1],C=0;C<n.outWidth;++C)for(var E=v+C*c.strides[2],I=C*n.strideWidth-u,k=0;k<i;++k){var A=I+k*a;if(!(A<0||A>=n.inWidth))for(var T=N+k*e.strides[1],R=S+A*n.inChannels,D=E,O=T,_=0;_<n.inChannels;++_){for(var M=p[R+_],L=0;L<l;++L)f[D+L]+=M*h[O+L];D+=l,O+=l}}}return c.toTensor()},t.prototype.depthwiseConv2DDerInput=function(t,e,n){this.assertNotComplex([t,e],"depthwiseConv2DDerInput");for(var r=zo(n.inShape,"float32"),i=r.values,o=r.strides,a=o[0],s=o[1],u=o[2],l=t.dataSync(),c=t.strides,p=c[0],h=c[1],f=c[2],d=e.dataSync(),m=e.strides,g=m[0],y=m[1],v=m[2],b=n.batchSize,w=n.filterHeight,x=n.filterWidth,N=n.inChannels,S=n.inHeight,C=n.inWidth,E=n.outChannels,I=n.outHeight,k=n.outWidth,A=n.strideHeight,T=n.strideWidth,R=w-1-n.padInfo.top,D=x-1-n.padInfo.left,O=E/N,_=0;_<b;++_)for(var M=0;M<N;++M)for(var L=0;L<S;++L)for(var F=L-R,z=Math.max(0,Math.ceil(F/A)),P=Math.min(I,(w+F)/A),B=0;B<C;++B){for(var U=B-D,W=Math.max(0,Math.ceil(U/T)),V=Math.min(k,(x+U)/T),j=0,q=z;q<P;++q)for(var G=q*A-F,H=W;H<V;++H)for(var K=p*_+h*q+f*H,$=g*(w-1-G)+y*(x-1-(H*T-U))+v*M,X=0;X<O;++X)j+=l[K+(M*O+X)]*d[$+X];i[a*_+s*L+u*B+M]=j}return r.toTensor()},t.prototype.depthwiseConv2DDerFilter=function(t,e,n){this.assertNotComplex([t,e],"depthwiseConv2DDerFilter");for(var r=n.strideHeight,i=n.strideWidth,o=n.filterHeight,a=n.filterWidth,s=zo(n.filterShape,"float32"),u=n.padInfo.left,l=n.padInfo.top,c=n.outChannels/n.inChannels,p=t.bufferSync(),h=e.bufferSync(),f=0;f<o;++f)for(var d=Math.max(0,Math.ceil((l-f)/r)),m=Math.min(n.outHeight,(n.inHeight+l-f)/r),g=0;g<a;++g)for(var y=Math.max(0,Math.ceil((u-g)/i)),v=Math.min(n.outWidth,(n.inWidth+u-g)/i),b=0;b<n.outChannels;++b){for(var w=Math.trunc(b/c),x=b%c,N=0,S=0;S<n.batchSize;++S)for(var C=d;C<m;++C)for(var E=f+C*r-l,I=y;I<v;++I){var k=g+I*i-u;N+=p.get(S,E,k,w)*h.get(S,C,I,b)}s.set(N,f,g,w,x)}return s.toTensor()},t.prototype.tile=function(t,e){this.assertNotComplex(t,"tile");for(var n=new Array(t.rank),r=0;r<n.length;r++)n[r]=t.shape[r]*e[r];var i=zo(n,t.dtype),o=t.bufferSync();for(r=0;r<i.values.length;++r){for(var a=i.indexToLoc(r),s=new Array(t.rank),u=0;u<s.length;u++)s[u]=a[u]%t.shape[u];var l=o.locToIndex(s);i.values[r]=o.values[l]}return i.toTensor()},t.prototype.pad=function(t,e,n){this.assertNotComplex(t,"pad");var r=e.map(function(e,n){return e[0]+t.shape[n]+e[1]}),i=e.map(function(t){return t[0]}),o=t.bufferSync(),a=zo(r,t.dtype);0!==n&&a.values.fill(n);for(var s=0;s<t.size;s++){var u=o.indexToLoc(s),l=u.map(function(t,e){return t+i[e]});a.set.apply(a,[o.get.apply(o,u)].concat(l))}return a.toTensor()},t.prototype.transpose=function(t,e){this.assertNotComplex(t,"transpose");for(var n=new Array(t.rank),r=0;r<n.length;r++)n[r]=t.shape[e[r]];var i=t.dataSync(),o=zo(n,t.dtype),a=t.bufferSync();for(r=0;r<t.size;++r){for(var s=a.indexToLoc(r),u=new Array(s.length),l=0;l<u.length;l++)u[l]=s[e[l]];var c=o.locToIndex(u);o.values[c]=i[r]}return o.toTensor()},t.prototype.gather=function(t,e,n){this.assertNotComplex([t,e],"gather");var r=t.shape.slice(),i=e.dataSync();r[n]=i.length;for(var o=zo(r,t.dtype),a=t.bufferSync(),s=0;s<o.size;++s){var u=o.indexToLoc(s),l=u.slice();l[n]=i[u[n]];var c=a.locToIndex(l);o.values[s]=a.values[c]}return o.toTensor()},t.prototype.batchToSpaceND=function(t,e,n){this.assertNotComplex([t],"batchToSpaceND");var r=e.reduce(function(t,e){return t*e}),i=Yt(t.shape,e,r),o=Jt(i.length,e.length),a=Zt(t.shape,e,r),s=Qt(n,e.length),u=te(a,n,e.length);return t.reshape(i).transpose(o).reshape(a).slice(s,u)},t.prototype.spaceToBatchND=function(t,e,n){this.assertNotComplex([t],"spaceToBatchND");var r=e.reduce(function(t,e){return t*e}),i=[[0,0]];i.push.apply(i,n);for(var o=1+e.length;o<t.shape.length;++o)i.push([0,0]);var a=t.pad(i),s=Yt(a.shape,e,r,!1),u=Jt(s.length,e.length,!1),l=Zt(a.shape,e,r,!1);return a.reshape(s).transpose(u).reshape(l)},t.prototype.pool=function(t,e,n){this.assertNotComplex(t,"pool");for(var r=e.strideHeight,i=e.strideWidth,o=e.dilationHeight,a=e.dilationWidth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,l=e.padInfo.top,c=e.padInfo.left,p="max"===n?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,h=t.dataSync(),f=zo(e.outShape,t.dtype),d=f.values,m=e.outShape[1]*e.outShape[2]*e.outShape[3],g=e.outShape[2]*e.outShape[3],y=e.outShape[3],v=0;v<e.batchSize;++v)for(var b=v*m,w=v*t.strides[0],x=0;x<e.inChannels;++x)for(var N=0;N<e.outHeight;++N)for(var S=N*r-l,C=Math.max(0,S),E=Math.min(e.inHeight,s+S),I=b+N*g,k=0;k<e.outWidth;++k){for(var A=k*i-c,T=Math.max(0,A),R=Math.min(e.inWidth,u+A),D=p,O=0,_=0,M=C;M<E;M+=o){for(var L=w+M*t.strides[1],F=T;F<R;F+=a){var z=h[L+F*t.strides[2]+x];"max"===n&&z>D?D=z:"avg"===n&&(O+=z,_++)}if(isNaN(D))break}d[I+k*y+x]="avg"===n?O/_:D}return f.toTensor()},t.prototype.maxPool=function(t,e){return this.pool(t,e,"max")},t.prototype.maxPoolPositions=function(t,e){for(var n=zo(e.outShape,"int32"),r=e.strideHeight,i=e.strideWidth,o=e.dilationHeight,a=e.dilationWidth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,l=e.padInfo.top,c=e.padInfo.left,p=t.bufferSync(),h=0;h<e.batchSize;++h)for(var f=0;f<e.inChannels;++f)for(var d=0;d<e.outHeight;++d){for(var m=d*r-l,g=m;g<0;)g+=o;for(var y=Math.min(e.inHeight,s+m),v=0;v<e.outWidth;++v){for(var b=v*i-c,w=b;w<0;)w+=a;for(var x=Math.min(e.inWidth,u+b),N=Number.NEGATIVE_INFINITY,S=-1,C=g;C<y;C+=o)for(var E=C-m,I=w;I<x;I+=a){var k=I-b,A=p.get(h,C,I,f);A>N&&(N=A,S=E*u+k)}n.set(S,h,d,v,f)}}return n.toTensor()},t.prototype.maxPoolBackprop=function(t,e,n,r){this.assertNotComplex([e,n],"maxPoolBackprop");for(var i=this.maxPoolPositions(e,r),o=r.strideHeight,a=r.strideWidth,s=r.dilationHeight,u=r.dilationWidth,l=r.effectiveFilterHeight,c=r.effectiveFilterWidth,p=c-1-r.padInfo.left,h=l-1-r.padInfo.top,f=zo(e.shape,"float32"),d=i.bufferSync(),m=t.bufferSync(),g=0;g<r.batchSize;++g)for(var y=0;y<r.inChannels;++y)for(var v=0;v<r.inHeight;++v)for(var b=0;b<r.inWidth;++b){for(var w=v-h,x=b-p,N=0,S=0;S<l;S+=s){var C=(w+S)/o;if(!(C<0||C>=r.outHeight||Math.floor(C)!==C))for(var E=0;E<c;E+=u){var I=(x+E)/a;if(!(I<0||I>=r.outWidth||Math.floor(I)!==I)){var k=l*c-1-d.get(g,C,I,y)===S*c+E?1:0;0!==k&&(N+=m.get(g,C,I,y)*k)}}}f.set(N,g,v,b,y)}return f.toTensor()},t.prototype.avgPoolBackprop=function(t,e,n){this.assertNotComplex([t,e],"avgPoolBackprop");for(var r=n.strideHeight,i=n.strideWidth,o=n.filterHeight,a=n.filterWidth,s=n.dilationHeight,u=n.dilationWidth,l=n.effectiveFilterHeight,c=n.effectiveFilterWidth,p=c-1-n.padInfo.left,h=l-1-n.padInfo.top,f=zo(e.shape,"float32"),d=1/(o*a),m=t.bufferSync(),g=0;g<n.batchSize;++g)for(var y=0;y<n.inChannels;++y)for(var v=0;v<n.inHeight;++v)for(var b=0;b<n.inWidth;++b){for(var w=v-h,x=b-p,N=0,S=0;S<l;S+=s){var C=(w+S)/r;if(!(C<0||C>=n.outHeight||Math.floor(C)!==C))for(var E=0;E<c;E+=u){var I=(x+E)/i;I<0||I>=n.outWidth||Math.floor(I)!==I||(N+=m.get(g,C,I,y))}}f.set(N*d,g,v,b,y)}return f.toTensor()},t.prototype.cast=function(t,e){return He(t,e,this)},t.prototype.reshape=function(t,e){return Ke(t,e)},t.prototype.avgPool=function(t,e){return this.assertNotComplex(t,"avgPool"),this.pool(t,e,"avg").toFloat()},t.prototype.resizeBilinear=function(t,e,n,r){this.assertNotComplex(t,"resizeBilinear");for(var i=t.shape,o=i[0],a=i[1],s=i[2],u=i[3],l=t.dataSync(),c=new Float32Array(v([o,e,n,u])),p=[r&&e>1?a-1:a,r&&n>1?s-1:s],h=[r&&e>1?e-1:e,r&&n>1?n-1:n],f=0,d=p[0]/h[0],m=p[1]/h[1],g=0;g<o;g++)for(var y=0;y<e;y++)for(var b=d*y,w=Math.floor(b),x=b-w,N=Math.min(a-1,Math.ceil(b)),S=g*t.strides[0]+w*t.strides[1],C=g*t.strides[0]+N*t.strides[1],E=0;E<n;E++)for(var I=m*E,k=Math.floor(I),A=I-k,T=Math.min(s-1,Math.ceil(I)),R=S+k*t.strides[2],D=C+k*t.strides[2],O=S+ +T*t.strides[2],_=C+T*t.strides[2],M=0;M<u;M++){var L=l[R+M],F=l[D+M],z=L+(l[O+M]-L)*A,P=z+(F+(l[_+M]-F)*A-z)*x;c[f++]=P}return Te(c,[o,e,n,u])},t.prototype.resizeBilinearBackprop=function(t,e,n){this.assertNotComplex([t,e],"resizeBilinearBackprop");for(var r=e.shape,i=r[0],o=r[1],a=r[2],s=r[3],u=t.shape,l=u[1],c=u[2],p=new Float32Array(i*o*a*s),h=[n&&l>1?o-1:o,n&&c>1?a-1:a],f=[n&&l>1?l-1:l,n&&c>1?c-1:c],d=h[0]/f[0],m=h[1]/f[1],g=t.dataSync(),y=0,v=0;v<i;v++)for(var b=v*e.strides[0],w=0;w<l;w++)for(var x=w*d,N=Math.floor(x),S=Math.min(Math.ceil(x),o-1),C=b+N*e.strides[1],E=b+S*e.strides[1],I=x-N,k=1-I,A=0;A<c;A++)for(var T=A*m,R=Math.floor(T),D=Math.min(Math.ceil(T),a-1),O=T-R,_=1-O,M=C+R*e.strides[2],L=C+D*e.strides[2],F=E+R*e.strides[2],z=E+D*e.strides[2],P=k*_,B=k*O,U=I*_,W=I*O,V=0;V<s;V++){var j=g[y++];p[M+V]+=j*P,p[L+V]+=j*B,p[F+V]+=j*U,p[z+V]+=j*W}return Me(p,[i,a,o,s],e.dtype)},t.prototype.resizeNearestNeighbor=function(t,e,n,r){this.assertNotComplex(t,"resizeNearestNeighbor");for(var i=t.shape,o=i[0],a=i[1],s=i[2],u=i[3],l=t.dataSync(),c=new Float32Array(o*e*n*u),p=[r&&e>1?a-1:a,r&&n>1?s-1:s],h=[r&&e>1?e-1:e,r&&n>1?n-1:n],f=p[0]/h[0],d=p[1]/h[1],m=0,g=0;g<o;g++)for(var y=g*t.strides[0],v=0;v<e;v++)for(var b=f*v,w=y+Math.min(a-1,r?Math.round(b):Math.floor(b))*t.strides[1],x=0;x<n;x++)for(var N=d*x,S=w+Math.min(s-1,r?Math.round(N):Math.floor(N))*t.strides[2],C=0;C<u;C++){var E=l[S+C];c[m++]=E}return Te(c,[o,e,n,u],t.dtype)},t.prototype.resizeNearestNeighborBackprop=function(t,e,n){this.assertNotComplex([t,e],"resizeNearestNeighborBackprop");for(var r=e.shape,i=r[0],o=r[1],a=r[2],s=r[3],u=t.shape,l=u[1],c=u[2],p=new Float32Array(i*o*a*s),h=t.dataSync(),f=[n&&l>1?o-1:o,n&&c>1?a-1:a],d=[n&&l>1?l-1:l,n&&c>1?c-1:c],m=f[0]/d[0],g=f[1]/d[1],y=1/m,v=1/g,b=2*Math.ceil(y)+2,w=2*Math.ceil(v)+2,x=0;x<i;x++)for(var N=x*e.strides[0],S=0;S<o;S++)for(var C=N+S*e.strides[1],E=Math.floor(S*y),I=Math.floor(E-b/2),k=0;k<a;k++)for(var A=C+k*e.strides[2],T=Math.floor(k*v),R=Math.floor(T-w/2),D=0;D<s;D++){for(var O=0,_=0;_<b;_++){var M=_+I;if(!(M<0||M>=l)){var L=N+M*t.strides[1],F=M*m;if(S===Math.min(o-1,n?Math.round(F):Math.floor(F)))for(var z=0;z<w;z++){var P=z+R;if(!(P<0||P>=c)){var B=L+P*t.strides[2],U=P*g;k===Math.min(a-1,n?Math.round(U):Math.floor(U))&&(O+=h[B+D])}}}}p[A+D]=O}return Me(p,e.shape,e.dtype)},t.prototype.batchNormalization=function(t,e,n,r,i,o){this.assertNotComplex([t,e,n,i,o],"batchNorm");for(var a=t.dataSync(),s=e.dataSync(),u=n.dataSync(),l=i?i.dataSync():new Float32Array([1]),c=o?o.dataSync():new Float32Array([0]),p=new Float32Array(a.length),h=c.length,f=l.length,d=u.length,m=s.length,g=0,y=0,v=0,b=0,w=0;w<a.length;++w)p[w]=c[g++]+(a[w]-s[y++])*l[v++]/Math.sqrt(u[b++]+r),g>=h&&(g=0),y>=m&&(y=0),v>=f&&(v=0),b>=d&&(b=0);return Me(p,t.shape)},t.prototype.localResponseNormalization4D=function(t,e,n,r,i){this.assertNotComplex(t,"localResponseNormalization4D");var o=t.shape[3],a=o-1,s=t.dataSync(),u=v(t.shape),l=new Float32Array(u);function c(t){for(var n=t%o,r=t-n+Math.max(0,n-e),i=t-n+Math.min(n+e,a),u=0;r<=i;r++){var l=s[r];u+=l*l}return u}for(var p=0;p<u;p++){var h=c(p),f=s[p]*Math.pow(n+r*h,-i);l[p]=f}return Me(l,t.shape)},t.prototype.LRNGrad=function(t,e,n,r,i,o,a){this.assertNotComplex(t,"LRNGrad");for(var s=t.shape[3],u=t.dataSync(),l=e.dataSync(),c=n.dataSync(),p=new Float32Array(v(t.shape)),h=v(t.shape),f=0;f<h;f++){for(var d=f%s,m=f-d+Math.max(0,d-r),g=f-d+Math.min(s,d+r+1),y=0,b=m;b<g;b++)y+=Math.pow(l[b],2);for(y=o*y+i,b=m;b<g;b++){var w=-2*o*a*l[b]*c[f]/y;f===b&&(w+=Math.pow(y,-a)),w*=u[f],p[b]+=w}}return Me(p,t.shape)},t.prototype.multinomial=function(t,e,n,r){this.assertNotComplex(t,"multinomial");for(var i=e?t:Ce(t),o=i.shape[0],a=i.shape[1],s=Pe([o,n],"int32"),u=s.dataSync(),l=i.dataSync(),c=0;c<o;++c){var p=c*a,h=new Float32Array(a-1);h[0]=l[p];for(var f=1;f<h.length;++f)h[f]=h[f-1]+l[p+f];for(var d=Lo(r.toString()),m=c*n,g=0;g<n;++g){var y=d();u[m+g]=h.length;for(var v=0;v<h.length;v++)if(y<h[v]){u[m+g]=v;break}}}return s},t.prototype.oneHot=function(t,e,n,r){this.assertNotComplex(t,"oneHot");var i=new Float32Array(t.size*e);i.fill(r);for(var o=t.dataSync(),a=0;a<t.size;++a)o[a]>=0&&o[a]<e&&(i[a*e+o[a]]=n);return Oe(i,[t.size,e],"int32")},t.prototype.nonMaxSuppression=function(t,e,n,r,i){return this.assertNotComplex(t,"nonMaxSuppression"),Ze(t.dataSync(),e.dataSync(),n,r,i)},t.prototype.fft=function(t){return this.fftBatch(t,!1)},t.prototype.ifft=function(t){return this.fftBatch(t,!0)},t.prototype.fftBatch=function(t,e){for(var n=t.shape[0],r=t.shape[1],i=zo(t.shape,"float32"),o=zo(t.shape,"float32"),a=ke(t).as2D(n,r),s=Ae(t).as2D(n,r),u=0;u<n;u++)for(var l=a.slice([u,0],[1,r]),c=s.slice([u,0],[1,r]),p=Ie(l,c),h=this.fftImpl(p,e).dataSync(),f=0;f<r;f++){var d=Xe(h,f);i.values[u*r+f]=d.real,o.values[u*r+f]=d.imag}return Ie(i.toTensor(),o.toTensor()).as2D(n,r)},t.prototype.fftImpl=function(t,e){var n=t.as1D(),r=n.size;if(this.isExponentOf2(r)){var i=this.fftRadix2(n,r,e).as2D(t.shape[0],t.shape[1]);return e&&(i=Ie(ke(i).div(Re(r)),Ae(i).div(Re(r)))),i}var o=t.dataSync(),a=function(t){for(var e=new Float32Array(t.length/2),n=new Float32Array(t.length/2),r=0;r<t.length;r+=2)e[r/2]=t[r],n[r/2]=t[r+1];return{real:e,imag:n}}(this.fourierTransformByMatmul(o,r,e));return Ie(a.real,a.imag).as2D(t.shape[0],t.shape[1])},t.prototype.isExponentOf2=function(t){return 0==(t&t-1)},t.prototype.fftRadix2=function(t,e,n){if(1===e)return t;var r=t.dataSync(),i=e/2,o=function(t){for(var e=Math.ceil(t.length/4),n=new Float32Array(e),r=new Float32Array(e),i=0;i<t.length;i+=4)n[Math.floor(i/4)]=t[i],r[Math.floor(i/4)]=t[i+1];return{real:n,imag:r}}(r),a=Ie(o.real,o.imag).as1D(),s=function(t){for(var e=Math.floor(t.length/4),n=new Float32Array(e),r=new Float32Array(e),i=2;i<t.length;i+=4)n[Math.floor(i/4)]=t[i],r[Math.floor(i/4)]=t[i+1];return{real:n,imag:r}}(r),u=Ie(s.real,s.imag).as1D();a=this.fftRadix2(a,i,n),u=this.fftRadix2(u,i,n);var l=function(t,e){for(var n=new Float32Array(t/2),r=new Float32Array(t/2),i=0;i<Math.ceil(t/2);i++){var o=(e?2:-2)*Math.PI*(i/t);n[i]=Math.cos(o),r[i]=Math.sin(o)}return{real:n,imag:r}}(e,n),c=Ie(l.real,l.imag).mul(u),p=a.add(c),h=a.sub(c),f=ke(p).concat(ke(h)),d=Ae(p).concat(Ae(h));return Ie(f,d).as1D()},t.prototype.fourierTransformByMatmul=function(t,e,n){for(var r=new Float32Array(2*e),i=0;i<e;i++){for(var o=0,a=0,s=0;s<e;s++){var u=Je(i*s,e,n),l=Xe(t,s);o+=l.real*u.real-l.imag*u.imag,a+=l.real*u.imag+l.imag*u.real}n&&(o/=e,a/=e),Ye(r,o,a,i)}return r},t.prototype.depthToSpace=function(t,e,n){d("NHWC"===n,function(){return"Only NHWC dataFormat supported on CPU for depthToSpace. Got "+n}),d(e>1,function(){return"blockSize should be > 1 for depthToSpace, but was: "+e});for(var r=t.shape[0],i=t.shape[1],o=t.shape[2],a=t.shape[3],s=i*e,u=o*e,l=a/(e*e),c=t.dataSync(),p=new Float32Array(r*s*u*l),h=0,f=0;f<r;++f)for(var m=0;m<s;++m)for(var g=Math.floor(m/e),y=m%e,v=0;v<u;++v)for(var b=Math.floor(v/e),w=(y*e+v%e)*l,x=0;x<l;++x){var N=x+w+a*(b+o*(g+i*f));p[h++]=c[N]}return Me(p,[r,s,u,l])},t.prototype.broadcastedBinaryOp=function(t,e,n,r){var i=un(t.shape,e.shape),o=zo(i,n),a=t.dataSync(),s=e.dataSync(),u=an(t.shape,i),l=an(e.shape,i),c=o.values;if(u.length+l.length===0)for(var p=0;p<c.length;++p)c[p]=r(a[p%a.length],s[p%s.length]);else{var h=t.bufferSync(),f=e.bufferSync(),d=function(n){var i=o.indexToLoc(n),p=i.slice(-t.rank);u.forEach(function(t){return p[t]=0});var d=h.locToIndex(p),m=i.slice(-e.rank);l.forEach(function(t){return m[t]=0});var g=f.locToIndex(m);c[n]=r(a[d],s[g])};for(p=0;p<c.length;++p)d(p)}return o.toTensor()},t.prototype.broadcastedBinaryComplexOp=function(t,e,n){var r=un(t.shape,e.shape),i=zo(r,"float32"),o=zo(r,"float32"),a=t.dataSync(),s=e.dataSync(),u=an(t.shape,r),l=an(e.shape,r),c=i.values,p=o.values;if(u.length+l.length===0)for(var h=0;h<c.length;h++){var f=h%a.length,d=h%s.length,m=n(a[2*f],a[2*f+1],s[2*d],s[2*d+1]);c[h]=m.real,p[h]=m.imag}else{var g=this.data.get(t.dataId).complexTensors.real.bufferSync(),y=this.data.get(e.dataId).complexTensors.real.bufferSync(),v=function(r){var o=i.indexToLoc(r),h=o.slice(-t.rank);u.forEach(function(t){return h[t]=0});var f=g.locToIndex(h),d=o.slice(-e.rank);l.forEach(function(t){return d[t]=0});var m=y.locToIndex(d),v=n(a[2*f],a[2*f+1],s[2*m],s[2*m+1]);c[r]=v.real,p[r]=v.imag};for(h=0;h<c.length;h++)v(h)}return this.complex(i.toTensor(),o.toTensor())},t.prototype.split=function(t,e,n){return tn(t,e,n)},t.prototype.dispose=function(){},t.prototype.floatPrecision=function(){return 32},t.prototype.cropAndResize=function(t,e,n,r,i,o){for(var a=t.shape,s=a[0],u=a[1],l=a[2],c=a[3],p=e.shape[0],h=r[0],f=r[1],d=zo([p,h,f,c],t.dtype),m=e.dataSync(),g=n.dataSync(),y=t.dataSync(),v=t.strides,b=d.strides,w=0;w<p;w++){var x=4*w,N=m[x],S=m[x+1],C=m[x+2],E=m[x+3],I=g[w];if(!(I>=s))for(var k=h>1?(C-N)*(u-1)/(h-1):0,A=f>1?(E-S)*(l-1)/(f-1):0,T=0;T<h;T++){var R=h>1?N*(u-1)+T*k:.5*(N+C)*(u-1);if(R<0||R>u-1)for(var D=0;D<f;D++)for(var O=0;O<c;O++){var _=O+D*b[2]+T*b[1]+w*b[0];d.values[_]=o}else if("bilinear"===i){var M=Math.floor(R),L=Math.ceil(R),F=R-M;for(D=0;D<f;D++)if((G=f>1?S*(l-1)+D*A:.5*(S+E)*(l-1))<0||G>l-1)for(O=0;O<c;O++)_=O+D*b[2]+T*b[1]+w*b[0],d.values[_]=o;else{var z=Math.floor(G),P=Math.ceil(G),B=G-z;for(O=0;O<c;O++){var U=y[_=O+z*v[2]+M*v[1]+I*v[0]],W=y[_=O+P*v[2]+M*v[1]+I*v[0]],V=y[_=O+z*v[2]+L*v[1]+I*v[0]],j=U+(W-U)*B,q=V+(y[_=O+P*v[2]+L*v[1]+I*v[0]]-V)*B;_=O+D*b[2]+T*b[1]+w*b[0],d.values[_]=j+(q-j)*F}}}else for(D=0;D<f;++D){var G;if((G=f>1?S*(l-1)+D*A:.5*(S+E)*(l-1))<0||G>l-1)for(O=0;O<c;O++)_=O+D*b[2]+T*b[1]+w*b[0],d.values[_]=o;else{var H=Math.round(G),K=Math.round(R);for(O=0;O<c;O++){var $=O+H*v[2]+K*v[1]+I*v[0],X=O+D*b[2]+T*b[1]+w*b[0];d.values[X]=y[$]}}}}}return d.toTensor()},t.prototype.sparseToDense=function(t,e,n,r){var i=fe(0,t,n),o=i.sliceRank,a=i.numUpdates,s=i.sliceSize,u=i.strides,l=i.outputSize;return this.scatter(t,e,n,l,s,a,o,u,r,!1)},t.prototype.gatherND=function(t,e){var n=e.shape,r=n[n.length-1],i=le(t,e),o=i[0],a=i[1],s=i[2],u=i[3];if(0===a)return Te([],o,t.dtype);for(var l=new it([a,s],t.dtype),c=e.dataSync(),p=t.dataSync(),h=0;h<a;h++){for(var f=[],d=0,m=0;m<r;m++){var g=c[h*r+m];d+=g*u[m],f.push(g)}if(d<0||d>=t.size/s)throw new Error("Invalid indices: "+f+" does not index into "+t.shape);for(var y=0;y<s;y++)l.values[h*s+y]=p[d*s+y]}return l.toTensor().reshape(o)},t.prototype.scatterND=function(t,e,n){var r=fe(0,t,n),i=r.sliceRank,o=r.numUpdates,a=r.sliceSize,s=r.strides,u=r.outputSize,l=Re(0);return this.scatter(t,e,n,u,a,o,i,s,l,!0)},t.prototype.fill=function(t,e,n){var r=T(n=n||B(e),v(t));return r.fill(e),ut.make(t,{values:r},n)},t.prototype.onesLike=function(t){if("string"===t.dtype)throw new Error("onesLike is not supported for string tensors");return this.fill(t.shape,1,t.dtype)},t.prototype.zerosLike=function(t){var e=T(t.dtype,v(t.shape));return ut.make(t.shape,{values:e},t.dtype)},t.prototype.scatter=function(t,e,n,r,i,o,a,s,u,l){var c=[r/i,i],p=t.dataSync(),h=e.dataSync();if(0===r)return Te([],n,e.dtype);var f=new it(c,e.dtype);f.values.fill(u.dataSync()[0]);for(var d=0;d<o;d++){for(var m=[],g=0,y=0;y<a;y++){var v=p[d*a+y];m.push(v),g+=v*s[y]}if(g<0||g>=r/i)throw new Error("Invalid indices: "+m+" does not index into "+n);for(var b=0;b<i;b++)l?f.values[g*i+b]+=h[d*i+b]:f.values[g*i+b]=0===e.rank?h[0]:h[d*i+b]}return f.toTensor().reshape(n)},t}();Bt.registerBackend("cpu",function(){return new Ml},1);var Ll="undefined"!=typeof requestAnimationFrame?requestAnimationFrame:"undefined"!=typeof setImmediate?setImmediate:function(t){return t()};function Fl(){return new Promise(function(t){return Ll(function(){return t()})})}var zl={float32:4,int32:4,uint16:2,uint8:1,bool:1};function Pl(t,e){for(var n={},r=0,i=function(e){var i=e.name,o=e.dtype,a=e.shape,s=v(a),u=void 0;if("quantization"in e){var l=e.quantization;if("uint8"!==l.dtype&&"uint16"!==l.dtype)throw new Error("Weight "+e.name+" has unknown quantization dtype "+l.dtype+". Supported quantization dtypes are: 'uint8' and 'uint16'.");var c=zl[l.dtype],p=t.slice(r,r+s*c),h="uint8"===l.dtype?new Uint8Array(p):new Uint16Array(p);if("float32"===o)u=Float32Array.from(h,function(t){return t*l.scale+l.min});else{if("int32"!==o)throw new Error("Unsupported dtype in weight '"+i+"': "+o);u=Int32Array.from(h,function(t){return Math.round(t*l.scale+l.min)})}r+=s*c}else{var f=zl[o];if(p=t.slice(r,r+s*f),"float32"===o)u=new Float32Array(p);else if("int32"===o)u=new Int32Array(p);else{if("bool"!==o)throw new Error("Unsupported dtype in weight '"+i+"': "+o);u=new Uint8Array(p)}r+=s*f}var d=void 0;if("float32"===o)d=Te(u,a,"float32");else if("int32"===o)d=Te(u,a,"int32");else{if("bool"!==o)throw new Error("Unsupported dtype in weight '"+i+"': "+o);d=Te(u,a,"bool")}n[i]=d},o=0,a=e;o<a.length;o++)i(a[o]);return n}var Bl="undefined"!=typeof Buffer&&("undefined"==typeof Blob||"undefined"==typeof atob||"undefined"==typeof btoa);function Ul(t){return Bl?Buffer.byteLength(t):new Blob([t]).size}function Wl(t){var e=0;t.forEach(function(t){e+=t.byteLength});var n=new Uint8Array(e),r=0;return t.forEach(function(t){n.set(new Uint8Array(t),r),r+=t.byteLength}),n.buffer}function Vl(t){for(t=t.trim();t.endsWith("/");)t=t.slice(0,t.length-1);var e=t.split("/");return e[e.length-1]}function jl(t){if(t.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:null==t.modelTopology?0:Ul(JSON.stringify(t.modelTopology)),weightSpecsBytes:null==t.weightSpecs?0:Ul(JSON.stringify(t.weightSpecs)),weightDataBytes:null==t.weightData?0:t.weightData.byteLength}}var ql=function(){function t(){this.saveRouters=[],this.loadRouters=[]}return t.getInstance=function(){return null==t.instance&&(t.instance=new t),t.instance},t.registerSaveRouter=function(e){t.getInstance().saveRouters.push(e)},t.registerLoadRouter=function(e){t.getInstance().loadRouters.push(e)},t.getSaveHandlers=function(e){return t.getHandlers(e,"save")},t.getLoadHandlers=function(e,n){return t.getHandlers(e,"load",n)},t.getHandlers=function(e,n,r){var i=[];return("load"===n?t.getInstance().loadRouters:t.getInstance().saveRouters).forEach(function(t){var n=t(e,r);null!==n&&i.push(n)}),i},t}(),Gl="://",Hl=function(){function t(){this.managers={}}return t.getInstance=function(){return null==t.instance&&(t.instance=new t),t.instance},t.registerManager=function(e,n){d(null!=e,function(){return"scheme must not be undefined or null."}),e.endsWith(Gl)&&(e=e.slice(0,e.indexOf(Gl))),d(e.length>0,function(){return"scheme must not be an empty string."});var r=t.getInstance();d(null==r.managers[e],function(){return"A model store manager is already registered for scheme '"+e+"'."}),r.managers[e]=n},t.getManager=function(t){var e=this.getInstance().managers[t];if(null==e)throw new Error("Cannot find model manager for scheme '"+t+"'");return e},t.getSchemes=function(){return Object.keys(this.getInstance().managers)},t}();function Kl(t){if(-1===t.indexOf(Gl))throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+Hl.getSchemes().join(","));return{scheme:t.split(Gl)[0],path:t.split(Gl)[1]}}function $l(t,e,n){return void 0===n&&(n=!1),i(this,void 0,void 0,function(){var r,i,a,s,u,l,c,p,h;return o(this,function(o){switch(o.label){case 0:return d(t!==e,function(){return"Old path and new path are the same: '"+t+"'"}),d((r=ql.getLoadHandlers(t)).length>0,function(){return"Copying failed because no load handler is found for source URL "+t+"."}),d(r.length<2,function(){return"Copying failed because more than one ("+r.length+") load handlers for source URL "+t+"."}),i=r[0],d((a=ql.getSaveHandlers(e)).length>0,function(){return"Copying failed because no save handler is found for destination URL "+e+"."}),d(a.length<2,function(){return"Copying failed because more than one ("+r.length+") save handlers for destination URL "+e+"."}),s=a[0],u=Kl(t).scheme,l=Kl(t).path,c=u===Kl(t).scheme,[4,i.load()];case 1:return p=o.sent(),n&&c?[4,Hl.getManager(u).removeModel(l)]:[3,3];case 2:o.sent(),o.label=3;case 3:return[4,s.save(p)];case 4:return h=o.sent(),!n||c?[3,6]:[4,Hl.getManager(u).removeModel(l)];case 5:o.sent(),o.label=6;case 6:return[2,h.modelArtifactsInfo]}})})}var Xl="models_store",Yl="model_info_store";function Jl(){if(!Bt.get("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var t=window,e=t.indexedDB||t.mozIndexedDB||t.webkitIndexedDB||t.msIndexedDB||t.shimIndexedDB;if(null==e)throw new Error("The current browser does not appear to support IndexedDB.");return e}function Zl(t){var e=t.result;e.createObjectStore(Xl,{keyPath:"modelPath"}),e.createObjectStore(Yl,{keyPath:"modelPath"})}var Ql=function(){function t(t){if(this.indexedDB=Jl(),null==t||!t)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=t}return t.prototype.save=function(t){return i(this,void 0,void 0,function(){return o(this,function(e){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,t)]})})},t.prototype.load=function(){return i(this,void 0,void 0,function(){return o(this,function(t){return[2,this.databaseAction(this.modelPath)]})})},t.prototype.databaseAction=function(t,e){var n=this;return new Promise(function(t,r){var i=n.indexedDB.open("tensorflowjs",1);i.onupgradeneeded=function(){return Zl(i)},i.onsuccess=function(){var o=i.result;if(null==e){var a=o.transaction(Xl,"readonly"),s=a.objectStore(Xl).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return o.close(),r(new Error("Cannot find model with path '"+n.modelPath+"' in IndexedDB."));t(s.result.modelArtifacts)},s.onerror=function(t){return o.close(),r(s.error)},a.oncomplete=function(){return o.close()}}else{var u,l=jl(e),c=o.transaction(Yl,"readwrite"),p=c.objectStore(Yl),h=p.put({modelPath:n.modelPath,modelArtifactsInfo:l});h.onsuccess=function(){var i=(u=o.transaction(Xl,"readwrite")).objectStore(Xl).put({modelPath:n.modelPath,modelArtifacts:e,modelArtifactsInfo:l});i.onsuccess=function(){return t({modelArtifactsInfo:l})},i.onerror=function(t){var e=(p=c.objectStore(Yl)).delete(n.modelPath);e.onsuccess=function(){return o.close(),r(i.error)},e.onerror=function(t){return o.close(),r(i.error)}}},h.onerror=function(t){return o.close(),r(h.error)},c.oncomplete=function(){null==u?o.close():u.oncomplete=function(){return o.close()}}}},i.onerror=function(t){return r(i.error)}})},t.URL_SCHEME="indexeddb://",t}(),tc=function(t){return Bt.get("IS_BROWSER")&&!Array.isArray(t)&&t.startsWith(Ql.URL_SCHEME)?function(t){return new Ql(t)}(t.slice(Ql.URL_SCHEME.length)):null};ql.registerSaveRouter(tc),ql.registerLoadRouter(tc);var ec=function(){function t(){this.indexedDB=Jl()}return t.prototype.listModels=function(){return i(this,void 0,void 0,function(){var t=this;return o(this,function(e){return[2,new Promise(function(e,n){var r=t.indexedDB.open("tensorflowjs",1);r.onupgradeneeded=function(){return Zl(r)},r.onsuccess=function(){var t=r.result,i=t.transaction(Yl,"readonly"),o=i.objectStore(Yl).getAll();o.onsuccess=function(){for(var t={},n=0,r=o.result;n<r.length;n++){var i=r[n];t[i.modelPath]=i.modelArtifactsInfo}e(t)},o.onerror=function(e){return t.close(),n(o.error)},i.oncomplete=function(){return t.close()}},r.onerror=function(t){return n(r.error)}})]})})},t.prototype.removeModel=function(t){return i(this,void 0,void 0,function(){var e=this;return o(this,function(n){return t=function(t){return t.startsWith(Ql.URL_SCHEME)?t.slice(Ql.URL_SCHEME.length):t}(t),[2,new Promise(function(n,r){var i=e.indexedDB.open("tensorflowjs",1);i.onupgradeneeded=function(){return Zl(i)},i.onsuccess=function(){var e,o=i.result,a=o.transaction(Yl,"readwrite"),s=a.objectStore(Yl),u=s.get(t);u.onsuccess=function(){if(null==u.result)return o.close(),r(new Error("Cannot find model with path '"+t+"' in IndexedDB."));var i=s.delete(t),a=function(){var i=(e=o.transaction(Xl,"readwrite")).objectStore(Xl).delete(t);i.onsuccess=function(){return n(u.result.modelArtifactsInfo)},i.onerror=function(t){return r(u.error)}};i.onsuccess=a,i.onerror=function(t){return a(),o.close(),r(u.error)}},u.onerror=function(t){return o.close(),r(u.error)},a.oncomplete=function(){null==e?o.close():e.oncomplete=function(){return o.close()}}},i.onerror=function(t){return r(i.error)}})]})})},t}();if(Bt.get("IS_BROWSER"))try{Hl.registerManager(Ql.URL_SCHEME,new ec)}catch(dt){}var nc="/",rc="tensorflowjs_models",ic="info",oc="model_topology",ac="weight_specs",sc="weight_data",uc="model_metadata";function lc(t){return{info:[rc,t,ic].join(nc),topology:[rc,t,oc].join(nc),weightSpecs:[rc,t,ac].join(nc),weightData:[rc,t,sc].join(nc),modelMetadata:[rc,t,uc].join(nc)}}function cc(t){var e=t.split(nc);if(e.length<3)throw new Error("Invalid key format: "+t);return e.slice(1,e.length-1).join(nc)}var pc=function(){function t(t){if(!Bt.get("IS_BROWSER")||void 0===window.localStorage)throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,null==t||!t)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=t,this.keys=lc(this.modelPath)}return t.prototype.save=function(t){return i(this,void 0,void 0,function(){var e,n,r,i;return o(this,function(o){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");e=JSON.stringify(t.modelTopology),n=JSON.stringify(t.weightSpecs),r=jl(t);try{return this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,e),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,function(t){return Bl?Buffer.from(t).toString("base64"):btoa(String.fromCharCode.apply(null,new Uint8Array(t)))}(t.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy})),[2,{modelArtifactsInfo:r}]}catch(t){for(i in this.keys)this.LS.removeItem(this.keys[i]);throw new Error("Failed to save model '"+this.modelPath+"' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes="+r.modelTopologyBytes+", weightSpecsBytes="+r.weightSpecsBytes+", weightDataBytes="+r.weightDataBytes+".")}return[2]})})},t.prototype.load=function(){return i(this,void 0,void 0,function(){var t,e,n,r,i,a,s;return o(this,function(o){if(null==(t=JSON.parse(this.LS.getItem(this.keys.info))))throw new Error("In local storage, there is no model with name '"+this.modelPath+"'");if("JSON"!==t.modelTopologyType)throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");if(e={},null==(n=JSON.parse(this.LS.getItem(this.keys.topology))))throw new Error("In local storage, the topology of model '"+this.modelPath+"' is missing.");if(e.modelTopology=n,null==(r=JSON.parse(this.LS.getItem(this.keys.weightSpecs))))throw new Error("In local storage, the weight specs of model '"+this.modelPath+"' are missing.");if(e.weightSpecs=r,null!=(i=this.LS.getItem(this.keys.modelMetadata))&&(a=JSON.parse(i),e.format=a.format,e.generatedBy=a.generatedBy,e.convertedBy=a.convertedBy),null==(s=this.LS.getItem(this.keys.weightData)))throw new Error("In local storage, the binary weight values of model '"+this.modelPath+"' are missing.");return e.weightData=function(t){if(Bl){var e=Buffer.from(t,"base64");return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}for(var n=atob(t),r=new Uint8Array(n.length),i=0;i<n.length;++i)r.set([n.charCodeAt(i)],i);return r.buffer}(s),[2,e]})})},t.URL_SCHEME="localstorage://",t}(),hc=function(t){return Bt.get("IS_BROWSER")&&!Array.isArray(t)&&t.startsWith(pc.URL_SCHEME)?function(t){return new pc(t)}(t.slice(pc.URL_SCHEME.length)):null};ql.registerSaveRouter(hc),ql.registerLoadRouter(hc);var fc=function(){function t(){d(Bt.get("IS_BROWSER"),function(){return"Current environment is not a web browser"}),d(void 0!==window.localStorage,function(){return"Current browser does not appear to support localStorage"}),this.LS=window.localStorage}return t.prototype.listModels=function(){return i(this,void 0,void 0,function(){var t,e,n,r,i,a;return o(this,function(o){for(t={},e=rc+nc,n=nc+ic,r=0;r<this.LS.length;++r)(i=this.LS.key(r)).startsWith(e)&&i.endsWith(n)&&(a=cc(i),t[a]=JSON.parse(this.LS.getItem(i)));return[2,t]})})},t.prototype.removeModel=function(t){return i(this,void 0,void 0,function(){var e,n;return o(this,function(r){if(t=function(t){return t.startsWith(pc.URL_SCHEME)?t.slice(pc.URL_SCHEME.length):t}(t),e=lc(t),null==this.LS.getItem(e.info))throw new Error("Cannot find model at path '"+t+"'");return n=JSON.parse(this.LS.getItem(e.info)),this.LS.removeItem(e.info),this.LS.removeItem(e.topology),this.LS.removeItem(e.weightSpecs),this.LS.removeItem(e.weightData),[2,n]})})},t}();if(Bt.get("IS_BROWSER"))try{Hl.registerManager(pc.URL_SCHEME,new fc)}catch(dt){}var dc="model",mc=".json",gc=".weights.bin",yc=function(){function t(e){if(!Bt.get("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(t.URL_SCHEME)&&(e=e.slice(t.URL_SCHEME.length)),null!=e&&0!==e.length||(e=dc),this.modelTopologyFileName=e+mc,this.weightDataFileName=e+gc}return t.prototype.save=function(t){return i(this,void 0,void 0,function(){var e,n,r,i,a,s;return o(this,function(o){if(e=window.URL.createObjectURL(new Blob([t.weightData],{type:"application/octet-stream"})),t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");return n=[{paths:["./"+this.weightDataFileName],weights:t.weightSpecs}],r={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,weightsManifest:n},i=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),(a=null==this.jsonAnchor?document.createElement("a"):this.jsonAnchor).download=this.modelTopologyFileName,a.href=i,a.click(),null!=t.weightData&&((s=null==this.weightDataAnchor?document.createElement("a"):this.weightDataAnchor).download=this.weightDataFileName,s.href=e,s.click()),[2,{modelArtifactsInfo:jl(t)}]})})},t.URL_SCHEME="downloads://",t}(),vc=function(){function t(t){if(null==t||t.length<1)throw new Error("When calling browserFiles, at least 1 file is required, but received "+t);this.files=t}return t.prototype.load=function(){return i(this,void 0,void 0,function(){var t,e,n=this;return o(this,function(r){return t=this.files[0],e=this.files.slice(1),[2,new Promise(function(r,i){var o=new FileReader;o.onload=function(o){var a=JSON.parse(o.target.result),s=a.modelTopology;if(null!=s){0===e.length&&r({modelTopology:s});var u=a.weightsManifest;if(null!=u){var l;try{l=n.checkManifestAndWeightFiles(u,e)}catch(t){return void i(t)}var c=[],p=[],h=[];u.forEach(function(t){t.paths.forEach(function(t){p.push(t),h.push(null)}),c.push.apply(c,t.weights)}),u.forEach(function(t){t.paths.forEach(function(t){var e=new FileReader;e.onload=function(e){var n=e.target.result,i=p.indexOf(t);h[i]=n,-1===h.indexOf(null)&&r({modelTopology:s,weightSpecs:c,weightData:Wl(h)})},e.onerror=function(e){return i("Failed to weights data from file of path '"+t+"'.")},e.readAsArrayBuffer(l[t])})})}else i(new Error("weightManifest field is missing from file "+t.name))}else i(new Error("modelTopology field is missing from file "+t.name))},o.onerror=function(e){return i("Failed to read model topology and weights manifest JSON from file '"+t.name+"'. BrowserFiles supports loading Keras-style tf.Model artifacts only.")},o.readAsText(t)})]})})},t.prototype.checkManifestAndWeightFiles=function(t,e){for(var n=[],r=e.map(function(t){return Vl(t.name)}),i={},o=0,a=t;o<a.length;o++)a[o].paths.forEach(function(t){var o=Vl(t);if(-1!==n.indexOf(o))throw new Error("Duplicate file basename found in weights manifest: '"+o+"'");if(n.push(o),-1===r.indexOf(o))throw new Error("Weight file with basename '"+o+"' is not provided.");i[t]=e[r.indexOf(o)]});if(n.length!==e.length)throw new Error("Mismatch in the number of files in weights manifest ("+n.length+") and the number of weight files provided ("+e.length+").");return i},t}();function bc(t,e,n,r){!function(t){d(null!=t&&Array.isArray(t)&&t.length>0,function(){return"promises must be a none empty array"})}(t),function(t,e){d(t>=0&&t<=1,function(){return"Progress fraction must be in range [0, 1], but got startFraction "+t}),d(e>=0&&e<=1,function(){return"Progress fraction must be in range [0, 1], but got endFraction "+e}),d(e>=t,function(){return"startFraction must be no more than endFraction, but got startFraction "+t+" and endFraction "+e})}(n=null==n?0:n,r=null==r?1:r);var i=0;return Promise.all(t.map(function(o){return o.then(function(o){var a=n+ ++i/t.length*(r-n);return e(a),o}),o}))}function wc(t,e){return i(this,void 0,void 0,function(){var n,r,i,a,s,u,l,c,p;return o(this,function(o){switch(o.label){case 0:return null==e&&(e={}),n=null==e.fetchFunc?fetch:e.fetchFunc,r=t.map(function(t){return n(t,e.requestInit)}),i=0,a=.5,null!=e.onProgress?[3,2]:[4,Promise.all(r)];case 1:return s=o.sent(),[3,4];case 2:return[4,bc(r,e.onProgress,i,a)];case 3:s=o.sent(),o.label=4;case 4:return u=s.map(function(t){return t.arrayBuffer()}),l=.5,c=1,null!=e.onProgress?[3,6]:[4,Promise.all(u)];case 5:return p=o.sent(),[3,8];case 6:return[4,bc(u,e.onProgress,l,c)];case 7:p=o.sent(),o.label=8;case 8:return[2,p]}})})}function xc(t){var e=this;return function(n,r,a){return void 0===r&&(r=""),i(e,void 0,void 0,function(){var e,i,s,u,l,c,p,h,f,d;return o(this,function(o){switch(o.label){case 0:if(e=n.map(function(){return!1}),i={},s=null!=a?a.map(function(){return!1}):[],u=[],n.forEach(function(t,n){var r=0;t.weights.forEach(function(t){var o="quantization"in t?t.quantization.dtype:t.dtype,l=zl[o]*v(t.shape),c=function(){e[n]=!0,null==i[n]&&(i[n]=[]),i[n].push({manifestEntry:t,groupOffset:r,sizeBytes:l})};null!=a?a.forEach(function(e,n){e===t.name&&(c(),s[n]=!0)}):c(),u.push(t.name),r+=l})}),!s.every(function(t){return t}))throw l=a.filter(function(t,e){return!s[e]}),new Error("Could not find weights in manifest with names: "+l.join(", ")+". \nManifest JSON has weights with names: "+u.join(", ")+".");return c=e.reduce(function(t,e,n){return e&&t.push(n),t},[]),p=[],c.forEach(function(t){n[t].paths.forEach(function(t){var e=r+(r.endsWith("/")?"":"/")+t;p.push(e)})}),[4,t(p)];case 1:return h=o.sent(),f={},d=0,c.forEach(function(t){for(var e=n[t].paths.length,r=0,o=0;o<e;o++)r+=h[d+o].byteLength;for(var a=new ArrayBuffer(r),s=new Uint8Array(a),u=0,l=0;l<e;l++){var c=new Uint8Array(h[d+l]);s.set(c,u),u+=c.byteLength}i[t].forEach(function(t){var e=Pl(a.slice(t.groupOffset,t.groupOffset+t.sizeBytes),[t.manifestEntry]);for(var n in e)f[n]=e[n]}),d+=e}),[2,f]}})})}}ql.registerSaveRouter(function(t){return Bt.get("IS_BROWSER")&&!Array.isArray(t)&&t.startsWith(yc.URL_SCHEME)?function(t){return void 0===t&&(t="model"),new yc(t)}(t.slice(yc.URL_SCHEME.length)):null});var Nc=function(){function t(t,e){if(this.DEFAULT_METHOD="POST",null==e&&(e={}),this.weightPathPrefix=e.weightPathPrefix,this.onProgress=e.onProgress,null==e.fetchFunc){if("undefined"==typeof fetch)throw new Error("browserHTTPRequest is not supported outside the web browser without a fetch polyfill.");e.fetchFunc=fetch.bind("undefined"==typeof window?null:window)}else d("function"==typeof e.fetchFunc,function(){return"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"});if(this.fetchFunc=function(t,n){return e.fetchFunc(t,n).catch(function(e){throw new Error("Request for "+t+" failed due to error: "+e)})},d(null!=t&&t.length>0,function(){return"URL path for browserHTTPRequest must not be null, undefined or empty."}),Array.isArray(t)&&d(2===t.length,function(){return"URL paths for browserHTTPRequest must have a length of 2, (actual length is "+t.length+")."}),this.path=t,null!=e.requestInit&&null!=e.requestInit.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=e.requestInit||{}}return t.prototype.save=function(t){return i(this,void 0,void 0,function(){var e,n,r,i;return o(this,function(o){switch(o.label){case 0:if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return(e=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:t.weightSpecs}],r={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,weightsManifest:n},e.body.append("model.json",new Blob([JSON.stringify(r)],{type:"application/json"}),"model.json"),null!=t.weightData&&e.body.append("model.weights.bin",new Blob([t.weightData],{type:"application/octet-stream"}),"model.weights.bin"),[4,this.getFetchFunc()(this.path,e)];case 1:if((i=o.sent()).ok)return[2,{modelArtifactsInfo:jl(t),responses:[i]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+i.status+".")}})})},t.prototype.load=function(){return i(this,void 0,void 0,function(){var t,e,n,r,i,a,s,u;return o(this,function(o){switch(o.label){case 0:return[4,this.getFetchFunc()(this.path,this.requestInit)];case 1:if(!(t=o.sent()).ok)throw new Error("Request to "+this.path+" failed with status code "+t.status+". Please verify this URL points to the model JSON of the model to load.");o.label=2;case 2:return o.trys.push([2,4,,5]),[4,t.json()];case 3:return e=o.sent(),[3,5];case 4:throw o.sent(),n="Failed to parse model JSON of response from "+this.path+".",this.path.endsWith(".pb")?n+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":n+=" Please make sure the server is serving valid JSON for this request.",new Error(n);case 5:if(r=e.modelTopology,i=e.weightsManifest,null==r&&null==i)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return null==i?[3,7]:[4,this.loadWeights(i)];case 6:u=o.sent(),a=u[0],s=u[1],o.label=7;case 7:return[2,{modelTopology:r,weightSpecs:a,weightData:s}]}})})},t.prototype.loadWeights=function(t){return i(this,void 0,void 0,function(){var e,n,r,i,a,s,u,l,c,p,h;return o(this,function(o){switch(o.label){case 0:for(e=Array.isArray(this.path)?this.path[1]:this.path,n=function(t){var e=t.lastIndexOf("/"),n=t.lastIndexOf("?");return[t.substring(0,e)+"/",n>e?t.substring(n):""]}(e),r=n[0],i=n[1],a=this.weightPathPrefix||r,s=[],u=0,l=t;u<l.length;u++)c=l[u],s.push.apply(s,c.weights);return p=[],t.forEach(function(t){t.paths.forEach(function(t){p.push(a+t+i)})}),[4,wc(p,{requestInit:this.requestInit,fetchFunc:this.getFetchFunc(),onProgress:this.onProgress})];case 1:return h=o.sent(),[2,[s,Wl(h)]]}})})},t.prototype.getFetchFunc=function(){return this.fetchFunc},t.URL_SCHEME_REGEX=/^https?:\/\//,t}();function Sc(t){return null!=t.match(Nc.URL_SCHEME_REGEX)}var Cc=function(t,e){return"undefined"==typeof fetch?null:(Array.isArray(t)?t.every(function(t){return Sc(t)}):Sc(t))?Ec(t,{onProgress:e}):null};function Ec(t,e){return new Nc(t,e)}ql.registerSaveRouter(Cc),ql.registerLoadRouter(Cc);var Ic=function(){function t(t,e,n){this.modelTopology=t,this.weightSpecs=e,this.weightData=n}return t.prototype.load=function(){return i(this,void 0,void 0,function(){var t;return o(this,function(e){return t={},null!=this.modelTopology&&(t=r({modelTopology:this.modelTopology},t)),null!=this.weightSpecs&&this.weightSpecs.length>0&&(t=r({weightSpecs:this.weightSpecs},t)),null!=this.weightData&&this.weightData.byteLength>0&&(t=r({weightData:this.weightData},t)),[2,t]})})},t}(),kc=function(){function t(t){this.saveHandler=t}return t.prototype.save=function(t){return i(this,void 0,void 0,function(){return o(this,function(e){return[2,this.saveHandler(t)]})})},t}();var Ac=Object.freeze({browserFiles:function(t){return new vc(t)},browserHTTPRequest:Ec,concatenateArrayBuffers:Wl,decodeWeights:Pl,encodeWeights:function(t){return i(this,void 0,void 0,function(){var e,n,r,i;return o(this,function(o){switch(o.label){case 0:for(r in e=[],n=[],t){if("float32"!==(i=t[r]).dtype&&"int32"!==i.dtype&&"bool"!==i.dtype)throw new Error("Unsupported dtype in weight '"+r+"': "+i.dtype);e.push({name:r,shape:i.shape,dtype:i.dtype}),n.push(i.data())}return[4,Promise.all(n)];case 1:return[2,{data:function(t){if(null===t)throw new Error("Invalid input value: "+JSON.stringify(t));var e=0,n=[];t.forEach(function(t){if(e+=t.byteLength,n.push(t.byteLength===t.buffer.byteLength?t:new t.constructor(t)),!(t instanceof Float32Array||t instanceof Int32Array||t instanceof Uint8Array))throw new Error("Unsupported TypedArray subtype: "+t.constructor.name)});var r=new Uint8Array(e),i=0;return n.forEach(function(t){r.set(new Uint8Array(t.buffer),i),i+=t.byteLength}),r.buffer}(o.sent()),specs:e}]}})})},fromMemory:function(t,e,n){return new Ic(t,e,n)},getLoadHandlers:function(t,e){return ql.getLoadHandlers(t)},getModelArtifactsInfoForJSON:jl,getSaveHandlers:function(t){return ql.getSaveHandlers(t)},isHTTPScheme:Sc,loadWeights:function(t,e,n,r){return void 0===e&&(e=""),i(this,void 0,void 0,function(){return o(this,function(i){return[2,xc(function(t){return wc(t,{requestInit:r})})(t,e,n)]})})},registerLoadRouter:function(t){return ql.registerLoadRouter(t)},registerSaveRouter:function(t){return ql.registerSaveRouter(t)},weightsLoaderFactory:xc,withSaveHandler:function(t){return new kc(t)},copyModel:function(t,e){return i(this,void 0,void 0,function(){return o(this,function(n){switch(n.label){case 0:return[4,$l(t,e,!1)];case 1:return[2,n.sent()]}})})},listModels:function(){return i(this,void 0,void 0,function(){var t,e,n,r,i,a,s;return o(this,function(o){switch(o.label){case 0:t=Hl.getSchemes(),e={},n=0,r=t,o.label=1;case 1:return n<r.length?(i=r[n],[4,Hl.getManager(i).listModels()]):[3,4];case 2:for(s in a=o.sent())e[i+Gl+s]=a[s];o.label=3;case 3:return n++,[3,1];case 4:return[2,e]}})})},moveModel:function(t,e){return i(this,void 0,void 0,function(){return o(this,function(n){switch(n.label){case 0:return[4,$l(t,e,!0)];case 1:return[2,n.sent()]}})})},removeModel:function(t){return i(this,void 0,void 0,function(){var e;return o(this,function(n){switch(n.label){case 0:return e=Kl(t),[4,Hl.getManager(e.scheme).removeModel(e.path)];case 1:return[2,n.sent()]}})})}});var Tc=Se({confusionMatrix_:function(t,e,n){var r=xe(t,"labels","confusionMatrix"),i=xe(e,"predictions","confusionMatrix");d(null==n||n>0&&Number.isInteger(n),function(){return"If provided, numClasses must be a positive integer, but got "+n}),d(1===r.rank,function(){return"Expected the rank of labels to be 1, but got "+r.rank}),d(1===i.rank,function(){return"Expected the rank of predictions to be 1, but got "+i.rank}),d(r.shape[0]===i.shape[0],function(){return"Mismatch in the number of examples: "+r.shape[0]+" vs. "+i.shape[0]+". Labels and predictions should have the same number of elements."}),d(n>0&&Number.isInteger(n),function(){return"numClasses is required to be a positive integer, but got "+n});var o=Ko(r.asType("int32"),n),a=Ko(i.asType("int32"),n);return o.transpose().matMul(a).asType("int32")}}),Rc=Object.freeze({confusionMatrix:Tc});var Dc=Se({fromPixels_:function(t,e){if(void 0===e&&(e=3),e>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");return Bt.engine.fromPixels(t,e)}}),Oc=Object.freeze({toPixels:function(t,e){return i(this,void 0,void 0,function(){var n,r,i,a,s,u,l,c,p,h,f,d,m,g,y,v,b,w,x,N;return o(this,function(o){switch(o.label){case 0:if(n=xe(t,"img","toPixels"),t instanceof ut||(n=n.toInt()),2!==n.rank&&3!==n.rank)throw new Error("toPixels only supports rank 2 or 3 tensors, got rank "+n.rank+".");if(r=n.shape.slice(0,2),i=r[0],a=r[1],(s=2===n.rank?1:n.shape[2])>4||2===s)throw new Error("toPixels only supports depth of size 1, 3 or 4 but got "+s);return u=n.min(),l=n.max(),[4,u.data()];case 1:return c=o.sent()[0],[4,l.data()];case 2:if(p=o.sent()[0],u.dispose(),l.dispose(),"float32"===n.dtype){if(c<0||p>1)throw new Error("Tensor values for a float32 Tensor must be in the range [0 - 1] but got range ["+c+" - "+p+"].")}else{if("int32"!==n.dtype)throw new Error("Unsupported type for toPixels: "+n.dtype+". Please use float32 or int32 tensors.");if(c<0||p>255)throw new Error("Tensor values for a int32 Tensor must be in the range [0 - 255] but got range ["+c+" - "+p+"].")}return[4,n.data()];case 3:for(h=o.sent(),f="float32"===n.dtype?255:1,d=new Uint8ClampedArray(a*i*4),m=0;m<i*a;++m)g=void 0,y=void 0,v=void 0,b=void 0,1===s?(g=h[m]*f,y=h[m]*f,v=h[m]*f,b=255):3===s?(g=h[3*m]*f,y=h[3*m+1]*f,v=h[3*m+2]*f,b=255):4===s&&(g=h[4*m]*f,y=h[4*m+1]*f,v=h[4*m+2]*f,b=h[4*m+3]*f),d[0+(w=4*m)]=Math.round(g),d[w+1]=Math.round(y),d[w+2]=Math.round(v),d[w+3]=Math.round(b);return null!=e&&(e.width=a,e.height=i,x=e.getContext("2d"),N=new ImageData(d,a,i),x.putImageData(N,0,0)),n!==t&&n.dispose(),[2,d]}})})},fromPixels:Dc}),_c=function(){function t(){}return t.prototype.getClassName=function(){return this.constructor.className},t.fromConfig=function(t,e){return new t(e)},t}(),Mc=function(){function t(){this.classNameMap={}}return t.getMap=function(){return null==t.instance&&(t.instance=new t),t.instance},t.register=function(e){t.getMap().classNameMap[e.className]=[e,e.fromConfig]},t}();function Lc(t){d(null!=t.className,function(){return"Class being registered does not have the static className property defined."}),d("string"==typeof t.className,function(){return"className is required to be a string, but got type "+typeof t.className}),d(t.className.length>0,function(){return"Class being registered has an empty-string as its className, which is disallowed."}),Mc.register(t)}var Fc=Object.freeze({Serializable:_c,SerializationMap:Mc,registerClass:Lc});function zc(t,e,n){return null==n&&(n=Bt.get("TEST_EPSILON")),Pc(t,"number"==typeof e||"boolean"==typeof e?[e]:e,function(t,e){return Bc(t,Number(e),n)})}function Pc(t,e,n){if(t instanceof ut||e instanceof ut){if(t instanceof ut&&e instanceof ut){if(t.dtype!==e.dtype)throw new Error("Arrays are of different type actual: "+t.dtype+" vs expected: "+e.dtype+".");if(!b(t.shape,e.shape))throw new Error("Arrays are of different shape actual: "+t.shape+" vs expected: "+e.shape+".")}}else{var r=t.constructor.name,i=e.constructor.name;if(r!==i)throw new Error("Arrays are of different type actual: "+r+" vs expected: "+i)}var o,a;if(o=t instanceof ut?t.dataSync():t,a=e instanceof ut?e.dataSync():e,o.length!==a.length)throw new Error("Arrays have different lengths actual: "+o.length+" vs expected: "+a.length+".\nActual: "+o+".\nExpected: "+a+".");for(var s=0;s<a.length;++s){var u=o[s],l=a[s];if(!n(u,l))throw new Error("Arrays differ: actual["+s+"] = "+u+", expected["+s+"] = "+l+".\nActual: "+o+".\nExpected: "+a+".")}}function Bc(t,e,n){return!(!isNaN(t)||!isNaN(e))||!(isNaN(t)||isNaN(e)||Math.abs(t-e)>n)}var Uc=Object.freeze({WEBGL_ENVS:{HAS_WEBGL:!0},PACKED_ENVS:{WEBGL_PACK:!0},NODE_ENVS:{IS_NODE:!0},CHROME_ENVS:{IS_CHROME:!0},BROWSER_ENVS:{IS_BROWSER:!0},CPU_ENVS:{HAS_WEBGL:!1},ALL_ENVS:{},expectArraysClose:zc,expectPromiseToFail:function(t,e){t().then(function(){return e.fail()},function(){return e()})},expectArraysEqual:function(t,e){var n="string"==typeof e||"number"==typeof e||"boolean"==typeof e?[e]:e;return t instanceof ut&&"string"===t.dtype||e instanceof ut&&"string"===e.dtype||Array.isArray(t)&&F(t[0])||Array.isArray(e)&&F(e[0])?Pc(t,n,function(t,e){return t==e}):zc(t,e,0)},expectNumbersClose:function(t,e,n){if(null==n&&(n=Bt.get("TEST_EPSILON")),!Bc(t,e,n))throw new Error("Numbers differ: actual === "+t+", expected === "+e)},expectValuesInRange:function(t,e,n){var r;r=t instanceof ut?t.dataSync():t;for(var i=0;i<r.length;i++)if(r[i]<e||r[i]>n)throw new Error("Value out of range:"+r[i]+" low: "+e+", high: "+n)},expectArrayBuffersEqual:function(t,e){expect(new Float32Array(t)).toEqual(new Float32Array(e))}}),Wc=Object.freeze({gpgpu_util:Ni,webgl_util:ti,MathBackendWebGL:pa,GPGPUContext:Si}),Vc=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.minimize=function(t,e,n){void 0===e&&(e=!1);var r=this.computeGradients(t,n),i=r.value,o=r.grads;return this.applyGradients(o),Object.keys(o).forEach(function(t){return o[t].dispose()}),e?i:(i.dispose(),null)},e.prototype.computeGradients=function(t,e){return Wt(t,e)},e.prototype.dispose=function(){},e}(_c);Object.defineProperty(Vc,Symbol.hasInstance,{value:function(t){return null!=t.minimize&&null!=t.computeGradients&&null!=t.applyGradients}});var jc=function(t){function e(e,n,r){void 0===r&&(r=null);var i=t.call(this)||this;return i.learningRate=e,i.rho=n,i.epsilon=r,i.accumulatedGrads={},i.accumulatedUpdates={},i.c=Gt(Re(-e)),i.rhoScalar=Gt(Re(n)),i.oneMinusRho=Gt(Re(1-n)),null===r&&(r=Bt.get("EPSILON")),i.epsilonScalar=Gt(Re(r)),i}return n(e,t),e.prototype.applyGradients=function(t){var e=this,n=function(n){var i=Bt.engine.registeredVariables[n];null==r.accumulatedGrads[n]&&qt(function(){e.accumulatedGrads[n]=je(i).variable(!1)}),null==r.accumulatedUpdates[n]&&qt(function(){e.accumulatedUpdates[n]=je(i).variable(!1)});var o=t[n],a=r.accumulatedGrads[n],s=r.accumulatedUpdates[n];qt(function(){var t=e.rhoScalar.mul(a).add(e.oneMinusRho.mul(o.square())),r=s.add(e.epsilonScalar).sqrt().div(a.add(e.epsilonScalar).sqrt()).mul(o),u=e.rhoScalar.mul(s).add(e.oneMinusRho.mul(r.square()));e.accumulatedGrads[n].assign(t),e.accumulatedUpdates[n].assign(u);var l=e.c.mul(r).add(i);i.assign(l)})},r=this;for(var i in t)n(i)},e.prototype.dispose=function(){var t=this;this.c.dispose(),this.epsilonScalar.dispose(),this.rhoScalar.dispose(),this.oneMinusRho.dispose(),null!=this.accumulatedUpdates&&(Object.keys(this.accumulatedUpdates).forEach(function(e){return t.accumulatedUpdates[e].dispose()}),Object.keys(this.accumulatedGrads).forEach(function(e){return t.accumulatedGrads[e].dispose()}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},e.fromConfig=function(t,e){return new t(e.learningRate,e.rho,e.epsilon)},e.className="AdadeltaOptimizer",e}(Vc);Lc(jc);var qc=function(t){function e(e,n){void 0===n&&(n=.1);var r=t.call(this)||this;return r.learningRate=e,r.initialAccumulatorValue=n,r.accumulatedGrads={},r.c=Gt(Re(-e)),r.epsilon=Gt(Re(Bt.get("EPSILON"))),r}return n(e,t),e.prototype.applyGradients=function(t){var e=this,n=function(n){var i=Bt.engine.registeredVariables[n];null==r.accumulatedGrads[n]&&qt(function(){e.accumulatedGrads[n]=Be(i.shape,e.initialAccumulatorValue).variable(!1)});var o=t[n],a=r.accumulatedGrads[n];qt(function(){var t=a.add(o.square());e.accumulatedGrads[n].assign(t);var r=e.c.mul(o.div(t.add(e.epsilon).sqrt())).add(i);i.assign(r)})},r=this;for(var i in t)n(i)},e.prototype.dispose=function(){var t=this;this.epsilon.dispose(),this.c.dispose(),null!=this.accumulatedGrads&&Object.keys(this.accumulatedGrads).forEach(function(e){return t.accumulatedGrads[e].dispose()})},e.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},e.fromConfig=function(t,e){return new t(e.learningRate,e.initialAccumulatorValue)},e.className="AdagradOptimizer",e}(Vc);Lc(qc);var Gc=function(t){function e(e,n,r,i){void 0===i&&(i=null);var o=t.call(this)||this;return o.learningRate=e,o.beta1=n,o.beta2=r,o.epsilon=i,o.accumulatedFirstMoment={},o.accumulatedSecondMoment={},o.c=Gt(Re(-e)),o.beta1Scalar=Gt(Re(n)),o.beta2Scalar=Gt(Re(r)),qt(function(){o.accBeta1=Re(n).variable(),o.accBeta2=Re(r).variable()}),o.oneMinusBeta1=Gt(Re(1-n)),o.oneMinusBeta2=Gt(Re(1-r)),o.one=Gt(Re(1)),null===i&&(i=Bt.get("EPSILON")),o.epsScalar=Gt(Re(i)),o}return n(e,t),e.prototype.applyGradients=function(t){var e=this;qt(function(){var n=e.one.sub(e.accBeta1),r=e.one.sub(e.accBeta2);for(var i in t){var o=Bt.engine.registeredVariables[i];if(null==e.accumulatedFirstMoment[i]){var a=!1;e.accumulatedFirstMoment[i]=je(o).variable(a)}null==e.accumulatedSecondMoment[i]&&(a=!1,e.accumulatedSecondMoment[i]=je(o).variable(a));var s=t[i],u=e.accumulatedFirstMoment[i],l=e.accumulatedSecondMoment[i],c=e.beta1Scalar.mul(u).add(e.oneMinusBeta1.mul(s)),p=e.beta2Scalar.mul(l).add(e.oneMinusBeta2.mul(s.square())),h=c.div(n),f=p.div(r);e.accumulatedFirstMoment[i].assign(c),e.accumulatedSecondMoment[i].assign(p);var d=e.c.mul(h.div(e.epsScalar.add(f.sqrt()))).add(o);o.assign(d)}e.accBeta1.assign(e.accBeta1.mul(e.beta1Scalar)),e.accBeta2.assign(e.accBeta2.mul(e.beta2Scalar))})},e.prototype.dispose=function(){var t=this;this.c.dispose(),this.epsScalar.dispose(),this.beta1Scalar.dispose(),this.beta2Scalar.dispose(),this.accBeta1.dispose(),this.accBeta2.dispose(),this.oneMinusBeta1.dispose(),this.oneMinusBeta2.dispose(),this.one.dispose(),null!=this.accumulatedFirstMoment&&Object.keys(this.accumulatedFirstMoment).forEach(function(e){return t.accumulatedFirstMoment[e].dispose()}),null!=this.accumulatedSecondMoment&&Object.keys(this.accumulatedSecondMoment).forEach(function(e){return t.accumulatedSecondMoment[e].dispose()})},e.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},e.fromConfig=function(t,e){return new t(e.learningRate,e.beta1,e.beta2,e.epsilon)},e.className="AdamOptimizer",e}(Vc);Lc(Gc);var Hc=function(t){function e(e,n,r,i,o){void 0===i&&(i=null),void 0===o&&(o=0);var a=t.call(this)||this;return a.learningRate=e,a.beta1=n,a.beta2=r,a.epsilon=i,a.decay=o,a.accumulatedFirstMoment={},a.accumulatedWeightedInfNorm={},a.c=Gt(Re(-e)),a.beta1Scalar=Gt(Re(n)),a.beta2Scalar=Gt(Re(r)),a.decayScalar=Gt(Re(o)),qt(function(){a.iteration=Re(0).variable(),a.accBeta1=Re(n).variable()}),a.oneMinusBeta1=Gt(Re(1-n)),a.one=Gt(Re(1)),null===i&&(i=Bt.get("EPSILON")),a.epsScalar=Gt(Re(i)),a}return n(e,t),e.prototype.applyGradients=function(t){var e=this;qt(function(){var n=e.one.sub(e.accBeta1),r=e.c.div(e.one.add(e.decayScalar.mul(e.iteration)));for(var i in t){var o=Bt.engine.registeredVariables[i];if(null==e.accumulatedFirstMoment[i]){var a=!1;e.accumulatedFirstMoment[i]=je(o).variable(a)}null==e.accumulatedWeightedInfNorm[i]&&(a=!1,e.accumulatedWeightedInfNorm[i]=je(o).variable(a));var s=t[i],u=e.accumulatedFirstMoment[i],l=e.accumulatedWeightedInfNorm[i],c=e.beta1Scalar.mul(u).add(e.oneMinusBeta1.mul(s)),p=e.beta2Scalar.mul(l),h=s.abs(),f=p.maximum(h);e.accumulatedFirstMoment[i].assign(c),e.accumulatedWeightedInfNorm[i].assign(f);var d=r.div(n).mul(c.div(e.epsScalar.add(f))).add(o);o.assign(d)}e.iteration.assign(e.iteration.add(e.one)),e.accBeta1.assign(e.accBeta1.mul(e.beta1Scalar))})},e.prototype.dispose=function(){var t=this;this.c.dispose(),this.epsScalar.dispose(),this.accBeta1.dispose(),this.beta1Scalar.dispose(),this.beta2Scalar.dispose(),this.oneMinusBeta1.dispose(),this.decayScalar.dispose(),this.iteration.dispose(),this.one.dispose(),null!=this.accumulatedFirstMoment&&Object.keys(this.accumulatedFirstMoment).forEach(function(e){return t.accumulatedFirstMoment[e].dispose()}),null!=this.accumulatedWeightedInfNorm&&Object.keys(this.accumulatedWeightedInfNorm).forEach(function(e){return t.accumulatedWeightedInfNorm[e].dispose()})},e.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},e.fromConfig=function(t,e){return new t(e.learningRate,e.beta1,e.beta2,e.epsilon,e.decay)},e.className="AdamaxOptimizer",e}(Vc);Lc(Hc);var Kc=function(t){function e(e){var n=t.call(this)||this;return n.learningRate=e,n.setLearningRate(e),n}return n(e,t),e.prototype.applyGradients=function(t){var e=this;Object.keys(t).forEach(function(n){var r=t[n],i=Bt.engine.registeredVariables[n];qt(function(){var t=e.c.mul(r).add(i);i.assign(t)})})},e.prototype.setLearningRate=function(t){this.learningRate=t,null!=this.c&&this.c.dispose(),this.c=Gt(Re(-t))},e.prototype.dispose=function(){this.c.dispose()},e.prototype.getConfig=function(){return{learningRate:this.learningRate}},e.fromConfig=function(t,e){return new t(e.learningRate)},e.className="SGDOptimizer",e}(Vc);Lc(Kc);var $c=function(t){function e(e,n,r){void 0===r&&(r=!1);var i=t.call(this,e)||this;return i.learningRate=e,i.momentum=n,i.useNesterov=r,i.m=Re(i.momentum),i.accumulations={},i}return n(e,t),e.prototype.applyGradients=function(t){var e=this,n=function(n){var i=Bt.engine.registeredVariables[n];null==r.accumulations[n]&&qt(function(){e.accumulations[n]=je(i).variable(!1)});var o=r.accumulations[n],a=t[n];qt(function(){var t,r=e.m.mul(o).add(a);t=e.useNesterov?e.c.mul(a.add(r.mul(e.m))).add(i):e.c.mul(r).add(i),e.accumulations[n].assign(r),i.assign(t)})},r=this;for(var i in t)n(i)},e.prototype.dispose=function(){if(t.prototype.dispose.call(this),this.m.dispose(),null!=this.accumulations)for(var e in this.accumulations)this.accumulations[e].dispose()},e.prototype.setMomentum=function(t){this.momentum=t},e.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},e.fromConfig=function(t,e){return new t(e.learningRate,e.momentum,e.useNesterov)},e.className="MomentumOptimizer",e}(Kc);Lc($c);var Xc=function(t){function e(e,n,r,i,o){void 0===n&&(n=.9),void 0===r&&(r=0),void 0===i&&(i=null),void 0===o&&(o=!1);var a=t.call(this)||this;return a.learningRate=e,a.decay=n,a.momentum=r,a.epsilon=i,a.accumulatedMeanSquares={},a.accumulatedMeanGrads={},a.accumulatedMoments={},a.c=Gt(Re(e)),a.decayScalar=Gt(Re(n)),a.momentumScalar=Gt(Re(r)),a.oneMinusDecay=Gt(Re(1-n)),a.centered=o,null===i&&(i=Bt.get("EPSILON")),a.epsilonScalar=Gt(Re(i)),a}return n(e,t),e.prototype.applyGradients=function(t){var e=this,n=function(n){var i=Bt.engine.registeredVariables[n];null==r.accumulatedMeanSquares[n]&&qt(function(){e.accumulatedMeanSquares[n]=je(i).variable(!1)}),null==r.accumulatedMeanGrads[n]&&r.centered&&qt(function(){e.accumulatedMeanGrads[n]=je(i).variable(!1)}),null==r.accumulatedMoments[n]&&qt(function(){e.accumulatedMoments[n]=je(i).variable(!1)});var o=r.accumulatedMeanSquares[n],a=r.accumulatedMeanGrads[n],s=r.accumulatedMoments[n],u=t[n];qt(function(){var t=e.decayScalar.mul(o).add(e.oneMinusDecay.mul(u.square()));if(e.centered){var r=e.decayScalar.mul(a).add(e.oneMinusDecay.mul(u)),l=e.momentumScalar.mul(s).add(e.c.mul(u).div(t.sub(r.square().add(e.epsilonScalar)).sqrt()));e.accumulatedMeanSquares[n].assign(t),e.accumulatedMeanGrads[n].assign(r),e.accumulatedMoments[n].assign(l);var c=i.sub(l);i.assign(c)}else{var p=e.decayScalar.mul(o).add(e.oneMinusDecay.mul(u.square()));l=e.momentumScalar.mul(s).add(e.c.mul(u).div(p.add(e.epsilonScalar).sqrt())),e.accumulatedMeanSquares[n].assign(p),e.accumulatedMoments[n].assign(l),c=i.sub(l),i.assign(c)}})},r=this;for(var i in t)n(i)},e.prototype.dispose=function(){var t=this;this.c.dispose(),this.epsilonScalar.dispose(),this.decayScalar.dispose(),this.momentumScalar.dispose(),this.oneMinusDecay.dispose(),null!=this.accumulatedMeanSquares&&Object.keys(this.accumulatedMeanSquares).forEach(function(e){return t.accumulatedMeanSquares[e].dispose()}),null!=this.accumulatedMeanGrads&&this.centered&&Object.keys(this.accumulatedMeanGrads).forEach(function(e){return t.accumulatedMeanGrads[e].dispose()}),null!=this.accumulatedMoments&&Object.keys(this.accumulatedMoments).forEach(function(e){return t.accumulatedMoments[e].dispose()})},e.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},e.fromConfig=function(t,e){return new t(e.learningRate,e.decay,e.momentum,e.epsilon,e.centered)},e.className="RMSPropOptimizer",e}(Vc);Lc(Xc);var Yc=function(){function t(){}return t.sgd=function(t){return new Kc(t)},t.momentum=function(t,e,n){return void 0===n&&(n=!1),new $c(t,e,n)},t.rmsprop=function(t,e,n,r,i){return void 0===e&&(e=.9),void 0===n&&(n=0),void 0===r&&(r=null),void 0===i&&(i=!1),new Xc(t,e,n,r,i)},t.adam=function(t,e,n,r){return void 0===t&&(t=.001),void 0===e&&(e=.9),void 0===n&&(n=.999),void 0===r&&(r=null),new Gc(t,e,n,r)},t.adadelta=function(t,e,n){return void 0===t&&(t=.001),void 0===e&&(e=.95),void 0===n&&(n=null),new jc(t,e,n)},t.adamax=function(t,e,n,r,i){return void 0===t&&(t=.002),void 0===e&&(e=.9),void 0===n&&(n=.999),void 0===r&&(r=null),void 0===i&&(i=0),new Hc(t,e,n,r,i)},t.adagrad=function(t,e){return void 0===e&&(e=.1),new qc(t,e)},t}(),Jc={sgd:Yc.sgd,momentum:Yc.momentum,adadelta:Yc.adadelta,adagrad:Yc.adagrad,rmsprop:Yc.rmsprop,adamax:Yc.adamax,adam:Yc.adam},Zc=_t.setBackend,Qc=_t.getBackend,tp=_t.disposeVariables,ep=_t.memory;!function(t){at=t}(_l);var np=function(t,e){return(np=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function rp(t,e){function n(){this.constructor=t}np(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var ip,op=function(){return(op=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)};function ap(t,e,n,r){return new(n||(n=Promise))(function(i,o){function a(t){try{u(r.next(t))}catch(t){o(t)}}function s(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(a,s)}u((r=r.apply(t,e||[])).next())})}function sp(t,e){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=e.call(t,a)}catch(t){o=[6,t],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}}function up(){return null==ip&&(ip=Bt.get("EPSILON")),ip}var lp=0;function cp(){return lp++}var pp={};function hp(t){return void 0===t&&(t=""),t in pp||(pp[t]=0),pp[t]+=1,t+pp[t].toString()}var fp={},dp="float32";function mp(t,e){return void 0===e&&(e=dp),null==fp[e]&&(fp[e]={}),null==fp[e][t]&&(fp[e][t]=Re(t,e),Gt(fp[e][t])),fp[e][t]}var gp=function(t){function e(n){var r=t.call(this,n)||this;return Object.setPrototypeOf(r,e.prototype),r}return rp(e,t),e}(Error),yp=function(t){function e(n){var r=t.call(this,n)||this;return Object.setPrototypeOf(r,e.prototype),r}return rp(e,t),e}(Error),vp=function(t){function e(n){var r=t.call(this,n)||this;return Object.setPrototypeOf(r,e.prototype),r}return rp(e,t),e}(Error),bp=function(t){function e(n){var r=t.call(this,n)||this;return Object.setPrototypeOf(r,e.prototype),r}return rp(e,t),e}(Error),wp=function(t){function e(n){var r=t.call(this,n)||this;return Object.setPrototypeOf(r,e.prototype),r}return rp(e,t),e}(Error);!function(t){function e(n){var r=t.call(this,n)||this;return Object.setPrototypeOf(r,e.prototype),r}rp(e,t)}(Error);function xp(t,e){if(Array.isArray(t)){for(var n=[],r=0;r<e;r++)n=n.concat(t);return n}return(n=new Array(e)).fill(t),n}function Np(t,e){if(!t)throw new wp(e)}function Sp(t,e){for(var n=0,r=0,i=t;r<i.length;r++)i[r]===e&&n++;return n}function Cp(t){return 1===t.length?t[0]:t}function Ep(t){return Array.isArray(t)?t:[t]}function Ip(t){var e=t.replace(/(.)([A-Z][a-z0-9]+)/g,"$1_$2").replace(/([a-z])([A-Z])/g,"$1_$2").toLowerCase();return"_"!==e[0]?e:"private"+e}function kp(t){return t.length<=1?t:-1===t.indexOf("_")?t:t.replace(/[_]+(\w|$)/g,function(t,e){return e.toUpperCase()})}var Ap={};function Tp(t){if(null===t||void 0===t)return null;var e={};return e.className=t.getClassName(),e.config=t.getConfig(),e}function Rp(t,e,n,r,i){var o,a,s;if(void 0===e&&(e={}),void 0===n&&(n={}),void 0===r&&(r="object"),void 0===i&&(i=!1),"string"==typeof t){var u=t,l=void 0;if(u in n)l=n[u];else if(u in Ap)l=Ap[u];else if(null==(l=e[u]))throw new vp("Unknown "+r+": "+t+". This may be due to one of the following reasons:\n1. The "+r+" is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code.\n2. The custom "+r+" is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().");return l}var c=t;if(null==c.className||null==c.config)throw new vp(r+": Improper config format: "+JSON.stringify(c)+".\n'className' and 'config' must set.");var p=c.className,h=void 0,f=void 0;if(p in n?(h=(o=n.get(p))[0],f=o[1]):p in Ap?(h=(a=Ap.className)[0],f=a[1]):p in e&&(h=(s=e[p])[0],f=s[1]),null==h)throw new vp("Unknown "+r+": "+p+". This may be due to one of the following reasons:\n1. The "+r+" is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code.\n2. The custom "+r+" is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().");if(null!=f){for(var d={},m=0,g=Object.keys(Ap);m<g.length;m++)d[N=g[m]]=Ap[N];for(var y=0,v=Object.keys(n);y<v.length;y++)d[N=v[y]]=n[N];c.config.customObjects=d;for(var b=op({},Ap),w=0,x=Object.keys(n);w<x.length;w++){var N=x[w];Ap[N]=n[N]}!function t(e){if(null!=e&&"object"==typeof e)if(Array.isArray(e))e.forEach(function(e){return t(e)});else for(var n=0,r=Object.keys(e);n<r.length;n++){var i=r[n],o=e[i];null!=o&&"object"==typeof o&&(Array.isArray(o)||"ndarray"!==o.type||"number"!=typeof o.value?t(o):e[i]=o.value)}}(c.config);var S=f(h,c.config,n,i);return Ap=op({},b),S}b=op({},Ap);for(var C=0,E=Object.keys(n);C<E.length;C++)N=E[C],Ap[N]=n[N];return S=new h(c.config),Ap=op({},b),S}function Dp(t,e){return-1*function(t,e){return t<e?-1:t>e?1:0}(t,e)}function Op(t){if(null==t)return t;for(var e=[],n=0,r=t;n<r.length;n++){var i=r[n];-1===e.indexOf(i)&&e.push(i)}return e}function _p(t){if(null==t)throw new vp("Invalid value in obj: "+JSON.stringify(t));for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function Mp(t,e,n){if(null!=n&&t.indexOf(n)<0)throw new vp(n+" is not a valid "+e+". Valid values are "+t+" or null/undefined.")}function Lp(t,e,n,r){return void 0===n&&(n=0),void 0===r&&(r=1/0),Np(n>=0),Np(r>=n),Array.isArray(t)&&t.length>=n&&t.length<=r&&t.every(function(t){return typeof t===e})}function Fp(t,e){Array.isArray(t)?(X.assert(t.length>0,function(){return e+" is unexpectedly an empty array."}),t.forEach(function(t,n){return Fp(t,"element "+(n+1)+" of "+e)})):X.assert(Number.isInteger(t)&&t>0,function(){return"Expected "+e+" to be a positive integer, but got "+function t(e){return null===e?"null":Array.isArray(e)?"["+e.map(function(e){return t(e)}).join(",")+"]":"string"==typeof e?'"'+e+'"':""+e}(t)+"."})}function zp(t,e){return qt(function(){return Ua(Zs(Iu(t,t),e,!0))})}var Pp=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.getConfig=function(){return{}},e}(Fc.Serializable),Bp=function(t){function e(e){var n=t.call(this)||this;return n.defaultMaxValue=2,n.defaultAxis=0,n.maxValue=null!=e.maxValue?e.maxValue:n.defaultMaxValue,n.axis=null!=e.axis?e.axis:n.defaultAxis,n}return rp(e,t),e.prototype.apply=function(t){var e=this;return qt(function(){var n=zp(t,e.axis),r=xa(n,0,e.maxValue);return Eu(t,gu(r,hu(mp(up()),n)))})},e.prototype.getConfig=function(){return{maxValue:this.maxValue,axis:this.axis}},e.className="MaxNorm",e}(Pp);Fc.registerClass(Bp);var Up=function(t){function e(e){var n=t.call(this)||this;return n.defaultAxis=0,n.axis=null!=e.axis?e.axis:n.defaultAxis,n}return rp(e,t),e.prototype.apply=function(t){var e=this;return qt(function(){return gu(t,hu(mp(up()),zp(t,e.axis)))})},e.prototype.getConfig=function(){return{axis:this.axis}},e.className="UnitNorm",e}(Pp);Fc.registerClass(Up);var Wp=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t){return Vu(t)},e.className="NonNeg",e}(Pp);Fc.registerClass(Wp);var Vp=function(t){function e(e){var n=t.call(this)||this;return n.defaultMinValue=0,n.defaultMaxValue=1,n.defaultRate=1,n.defaultAxis=0,n.minValue=null!=e.minValue?e.minValue:n.defaultMinValue,n.maxValue=null!=e.maxValue?e.maxValue:n.defaultMaxValue,n.rate=null!=e.rate?e.rate:n.defaultRate,n.axis=null!=e.axis?e.axis:n.defaultAxis,n}return rp(e,t),e.prototype.apply=function(t){var e=this;return qt(function(){var n=zp(t,e.axis),r=hu(Eu(mp(e.rate),xa(n,e.minValue,e.maxValue)),Eu(mp(1-e.rate),n));return Eu(t,gu(r,hu(mp(up()),n)))})},e.prototype.getConfig=function(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}},e.className="MinMaxNorm",e}(Pp);Fc.registerClass(Vp);var jp={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function qp(t){return Tp(t)}function Gp(t,e){return void 0===e&&(e={}),Rp(t,Fc.SerializationMap.getMap().classNameMap,e,"constraint")}function Hp(t){return null==t?null:"string"==typeof t?Gp({className:t in jp?jp[t]:t,config:{}}):t instanceof Pp?t:Gp(t)}var Kp=Object.freeze({maxNorm:function(t){return new Bp(t)},unitNorm:function(t){return new Up(t)},nonNeg:function(){return new Wp},minMaxNorm:function(t){return new Vp(t)}}),$p=["channelsFirst","channelsLast"],Xp=["valid","same","causal"],Yp=["max","avg"],Jp=["sum","mul","concat","ave"],Zp=new Map;function Qp(t){Mp($p,"DataFormat",t)}function th(t){Mp(Xp,"PaddingMode",t)}var eh=[],nh="/";function rh(t,e){eh.push(t);try{var n=e();return eh.pop(),n}catch(t){throw eh.pop(),t}}function ih(t){if(!sh(t))throw new Error("Not a valid tensor name: '"+t+"'");return(0===eh.length?"":eh.join(nh)+nh)+t}function oh(t){if(!sh(t))throw new Error("Not a valid tensor name: '"+t+"'");Zp.has(t)||Zp.set(t,0);var e=Zp.get(t);if(Zp.set(t,Zp.get(t)+1),e>0){var n=t+"_"+e;return Zp.set(n,1),n}return t}var ah=new RegExp(/^[A-Za-z][-A-Za-z0-9\._\/]*$/);function sh(t){return!!t.match(ah)}function uh(t){return t===parseInt(t.toString(),10)}function lh(t,e,n){null==e&&(e=0),null==n&&(n=t.length);for(var r=1,i=e;i<n;++i)r*=t[i];return r}function ch(t){return De(t=Array.isArray(t)?new Float32Array(t):t)}function ph(t){return Ys(ch(t)).dataSync()[0]}function hh(t){return $s(ch(t)).dataSync()[0]}function fh(t,e){if(e<t)throw new vp("end ("+e+") < begin ("+t+") is forbidden.");for(var n=[],r=t;r<e;++r)n.push(r);return n}function dh(t,e){return t.asType(e)}function mh(t,e){void 0===e&&(e=-1);var n=t.shape.slice();return e<0&&(e=n.length+e+1),n.splice(e,0,1),t.reshape(n)}function gh(t,e,n){return qt(function(){switch(t.rank){case 1:return Ps(t,e,n);case 2:return Bs(t,[e,0],[n,t.shape[1]]);case 3:return Us(t,[e,0,0],[n,t.shape[1],t.shape[2]]);case 4:return Ws(t,[e,0,0,0],[n,t.shape[1],t.shape[2],t.shape[3]]);default:throw new vp("sliceAlongFirstAxis() received an unsupported tensor rank: "+t.rank)}})}function yh(t,e,n){return qt(function(){switch(t.rank){case 1:return Ps(t,e,n);case 2:return Bs(t,[0,e],[t.shape[0],n]);case 3:return Us(t,[0,0,e],[t.shape[0],t.shape[1],n]);case 4:return Ws(t,[0,0,0,e],[t.shape[0],t.shape[1],t.shape[2],n]);default:throw new vp("sliceAlongLastAxis() received an unsupported tensor rank: "+t.rank)}})}function vh(t,e,n,r){return qt(function(){switch(t.rank){case 1:return Ps(t,e,n);case 2:switch(r){case 1:return gh(t,e,n);case 2:return yh(t,e,n);default:throw new vp("The axis is not within the rank of the tensor "+r)}case 3:switch(r){case 1:return gh(t,e,n);case 2:return Us(t,[0,e,0],[t.shape[0],n,t.shape[2]]);case 3:return yh(t,e,n);default:throw new vp("The axis is not within the rank of the tensor "+r)}case 4:switch(r){case 1:return gh(t,e,n);case 2:return Ws(t,[0,e,0,0],[t.shape[0],n,t.shape[2],t.shape[3]]);case 3:return Ws(t,[0,0,e,0],[t.shape[0],t.shape[1],n,t.shape[3]]);case 4:return yh(t,e,n);default:throw new vp("The axis is not within the rank of the tensor "+r)}default:throw new vp("sliceAlongLastAxis() received an unsupported tensor rank: "+t.rank)}})}function bh(t,e){var n;return void 0===e&&(e=-1),e<0&&(e=0!==(n=t[0].rank)?n:0),e===t[0].rank&&(e=-1),xo(t,e)}function wh(t,e){switch(t.rank){case 1:return No([t,e]);case 2:return So([t,e],0);case 3:return Co([t,e],0);case 4:return Eo([t,e],0);default:throw new vp("concatAlongFirstAxis() received an unsupported tensor rank: "+t.rank)}}function xh(t,e){if(Array.isArray(e)||(e=[e]),t.rank!==e.length)throw new vp("The length of input n ("+e.length+") does not match the number of dimensions in input x ("+t.rank+")");return aa(t,e)}function Nh(t,e,n,r,i){return void 0===e&&(e=0),void 0===n&&(n=1),ta(t,e,n,r,i)}function Sh(t,e){if(t.rank<2||e.rank<2)throw new bp("dot requires both inputs to be rank >= 2 but got x shape = "+t.shape+" and y shape = "+e.shape);if(e.rank>=3&&(r=t.shape.slice(-1)[0])!==(a=e.shape.slice(-2)[0]))throw new bp("If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = "+t.shape+" and y shape = "+e.shape);if(2===t.rank&&2===e.rank)return Cs(t,e);var n=t.shape.slice(),r=n.pop();t=t.reshape([-1,r]);var i=e.shape.slice(),o=i.pop(),a=i.pop(),s=i.concat([o]),u=Array.from({length:e.rank},function(t,n){return 0===n?e.rank-2:n<=e.rank-2?n-1:n});e=e.transpose(u).reshape([a,-1]);var l=n.concat(s);return Cs(t,e).reshape(l)}function Ch(t,e,n){return qt(function(){return e=Array.isArray(e)?De(e,"int32"):e.toInt(),Xu(t,e,n)})}function Eh(t){return Iu(t,t)}function Ih(t,e,n){return qt(function(){if(null==n&&(n="channelsLast"),Qp(n),1!==e.rank&&e.rank!==t.rank)throw new vp("Unexpected bias dimensions: "+e.rank+"; expected it to be 1 or "+t.rank);var r,i=e.shape;if(5===t.rank)"channelsFirst"===n?r=1===i.length?t.add(e.reshape([1,i[0],1,1,1])):t.add(e.reshape([1,i[3],i[0],i[1],i[2]])):"channelsLast"===n&&(r=1===i.length?t.add(e.reshape([1,1,1,1,i[0]])):t.add(e.reshape([1].concat(i))));else if(4===t.rank)"channelsFirst"===n?r=1===i.length?t.add(e.reshape([1,i[0],1,1])):t.add(e.reshape([1,i[2],i[0],i[1]])):"channelsLast"===n&&(r=1===i.length?t.add(e.reshape([1,1,1,i[0]])):t.add(e.reshape([1].concat(i))));else if(3===t.rank)"channelsFirst"===n?r=1===i.length?t.add(e.reshape([1,i[0],1])):t.add(e.reshape([1,i[1],i[0]])):"channelsLast"===n&&(r=1===i.length?t.add(e.reshape([1,1,i[0]])):t.add(e.reshape([1].concat(i))));else{if(!(t.rank<3))throw new vp("Unsupported input rank by biasAdd: "+t.rank);r=t.add(e)}return r})}function kh(t,e,n,r){return qt(function(){if(null!=n&&!X.arraysEqual(t.shape,n))throw new bp("Non-default noise shape is not implemented yet: "+JSON.stringify(n));if(null!=r)throw new bp("seed is not implemented for dropout yet.");var i=Va(hu(Da(e),ea(t.shape,0,1,"float32")));return i=Eu(gu(mp(1),Du(mp(1),e)),i),Eu(t,i)})}function Ah(t,e,n){return void 0===n&&(n=!1),n?t():e()}var Th=["fanIn","fanOut","fanAvg"],Rh=["normal","uniform"];var Dh=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.fromConfigUsesCustomObjects=function(){return!1},e.prototype.getConfig=function(){return{}},e}(Fc.Serializable),Oh=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t,e){return Pe(t,e)},e.className="Zeros",e}(Dh);Fc.registerClass(Oh);var _h=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t,e){return ze(t,e)},e.className="Ones",e}(Dh);Fc.registerClass(_h);var Mh=function(t){function e(e){var n=t.call(this)||this;if("object"!=typeof e)throw new vp("Expected argument of type ConstantConfig but got "+e);if(void 0===e.value)throw new vp("config must have value set but got "+e);return n.value=e.value,n}return rp(e,t),e.prototype.apply=function(t,e){var n=this;return qt(function(){return Eu(Re(n.value),ze(t,e))})},e.prototype.getConfig=function(){return{value:this.value}},e.className="Constant",e}(Dh);Fc.registerClass(Mh);var Lh=function(t){function e(e){var n=t.call(this)||this;return n.DEFAULT_MINVAL=-.05,n.DEFAULT_MAXVAL=.05,n.minval=e.minval||n.DEFAULT_MINVAL,n.maxval=e.maxval||n.DEFAULT_MAXVAL,n.seed=e.seed,n}return rp(e,t),e.prototype.apply=function(t,e){return ea(t,this.minval,this.maxval,e)},e.prototype.getConfig=function(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}},e.className="RandomUniform",e}(Dh);Fc.registerClass(Lh);var Fh=function(t){function e(e){var n=t.call(this)||this;return n.DEFAULT_MEAN=0,n.DEFAULT_STDDEV=.05,n.mean=e.mean||n.DEFAULT_MEAN,n.stddev=e.stddev||n.DEFAULT_STDDEV,n.seed=e.seed,n}return rp(e,t),e.prototype.apply=function(t,e){if("float32"!==(e=e||"float32")&&"int32"!==e)throw new bp("randomNormal does not support dType "+e+".");return Nh(t,this.mean,this.stddev,e,this.seed)},e.prototype.getConfig=function(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}},e.className="RandomNormal",e}(Dh);Fc.registerClass(Fh);var zh=function(t){function e(e){var n=t.call(this)||this;return n.DEFAULT_MEAN=0,n.DEFAULT_STDDEV=.05,n.mean=e.mean||n.DEFAULT_MEAN,n.stddev=e.stddev||n.DEFAULT_STDDEV,n.seed=e.seed,n}return rp(e,t),e.prototype.apply=function(t,e){if("float32"!==(e=e||"float32")&&"int32"!==e)throw new bp("truncatedNormal does not support dType "+e+".");return sa(t,this.mean,this.stddev,e,this.seed)},e.prototype.getConfig=function(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}},e.className="TruncatedNormal",e}(Dh);Fc.registerClass(zh);var Ph=function(t){function e(e){var n=t.call(this)||this;return n.gain=null!=e.gain?Re(e.gain):mp(1),n}return rp(e,t),e.prototype.apply=function(t,e){var n=this;return qt(function(){if(2!==t.length||t[0]!==t[1])throw new vp("Identity matrix initializer can only be used for 2D square matrices.");return Eu(n.gain,Go(t[0]))})},e.prototype.getConfig=function(){return{gain:this.gain.dataSync()[0]}},e.className="Identity",e}(Dh);Fc.registerClass(Ph);var Bh=function(t){function e(e){var n=t.call(this)||this;if(e.scale<0)throw new vp("scale must be a positive float. Got: "+e.scale);return n.scale=null==e.scale?1:e.scale,n.mode=e.mode,function(t){Mp(Th,"FanMode",t)}(n.mode),n.distribution=e.distribution,function(t){Mp(Rh,"Distribution",t)}(n.distribution),n.seed=e.seed,n}return rp(e,t),e.prototype.apply=function(t,e){var n=function(t,e){var n,r;if(void 0===e&&(e="channelsLast"),Qp(e),2===t.length)n=t[0],r=t[1];else if(-1!==[3,4,5].indexOf(t.length))if("channelsFirst"===e){var i=lh(t,2);n=t[1]*i,r=t[0]*i}else"channelsLast"===e&&(i=lh(t,0,t.length-2),n=t[t.length-2]*i,r=t[t.length-1]*i);else{var o=lh(t);n=Math.sqrt(o),r=Math.sqrt(o)}return[n,r]}(t),r=n[0],i=n[1],o=this.scale;if("fanIn"===this.mode?o/=Math.max(1,r):"fanOut"===this.mode?o/=Math.max(1,i):o/=Math.max(1,(r+i)/2),"normal"===this.distribution){var a=Math.sqrt(o);if("float32"!==(e=e||"float32")&&"int32"!==e)throw new bp(this.getClassName()+" does not support dType "+e+".");return sa(t,0,a,e,this.seed)}var s=Math.sqrt(3*o);return ea(t,-s,s,e)},e.prototype.getConfig=function(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}},e.className="VarianceScaling",e}(Dh);Fc.registerClass(Bh);var Uh=function(t){function e(e){return t.call(this,{scale:1,mode:"fanAvg",distribution:"uniform",seed:null==e?null:e.seed})||this}return rp(e,t),e.prototype.getClassName=function(){return Bh.className},e.className="GlorotUniform",e}(Bh);Fc.registerClass(Uh);var Wh=function(t){function e(e){return t.call(this,{scale:1,mode:"fanAvg",distribution:"normal",seed:null==e?null:e.seed})||this}return rp(e,t),e.prototype.getClassName=function(){return Bh.className},e.className="GlorotNormal",e}(Bh);Fc.registerClass(Wh);var Vh=function(t){function e(e){return t.call(this,{scale:2,mode:"fanIn",distribution:"normal",seed:null==e?null:e.seed})||this}return rp(e,t),e.prototype.getClassName=function(){return Bh.className},e.className="HeNormal",e}(Bh);Fc.registerClass(Vh);var jh=function(t){function e(e){return t.call(this,{scale:2,mode:"fanIn",distribution:"uniform",seed:null==e?null:e.seed})||this}return rp(e,t),e.prototype.getClassName=function(){return Bh.className},e.className="HeUniform",e}(Bh);Fc.registerClass(jh);var qh=function(t){function e(e){return t.call(this,{scale:1,mode:"fanIn",distribution:"normal",seed:null==e?null:e.seed})||this}return rp(e,t),e.prototype.getClassName=function(){return Bh.className},e.className="LeCunNormal",e}(Bh);Fc.registerClass(qh);var Gh=function(t){function e(e){return t.call(this,{scale:1,mode:"fanIn",distribution:"uniform",seed:null==e?null:e.seed})||this}return rp(e,t),e.prototype.getClassName=function(){return Bh.className},e.className="LeCunNormal",e}(Bh);Fc.registerClass(Gh);var Hh=function(t){function e(e){var n=t.call(this)||this;if(n.DEFAULT_GAIN=1,n.gain=null==e.gain?n.DEFAULT_GAIN:e.gain,n.seed=e.seed,null!=n.seed)throw new bp("Random seed is not implemented for Orthogonal Initializer yet.");return n}return rp(e,t),e.prototype.apply=function(t,e){var n=this;return qt(function(){if(2!==t.length)throw new bp("The Orthogonal Initializer does not support non-2D shapes yet.");t[0]*t[1]>2e3&&console.warn("Orthogonal initializer is being called on a matrix with more than 2000 ("+t[0]*t[1]+") elements: Slowness may result.");var e=Nh(t[0]>t[1]?[t[1],t[0]]:t,0,1,"float32"),r=Sl.gramSchmidt(e);return t[0]>t[1]&&(r=r.transpose()),Eu(mp(n.gain),r)})},e.prototype.getConfig=function(){return{gain:this.gain,seed:this.seed}},e.className="Orthogonal",e}(Dh);Fc.registerClass(Hh);var Kh={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function $h(t,e){return void 0===e&&(e={}),Rp(t,Fc.SerializationMap.getMap().classNameMap,e,"initializer")}function Xh(t){return Tp(t)}function Yh(t){if("string"==typeof t){var e=t in Kh?Kh[t]:t;if("GlorotNormal"===e)return new Wh;if("GlorotUniform"===e)return new Uh;if("HeNormal"===e)return new Vh;if("HeUniform"===e)return new jh;if("LeCunNormal"===e)return new qh;if("LeCunUniform"===e)return new Gh;var n={};return n.className=e,n.config={},$h(n)}return t instanceof Dh?t:$h(t)}var Jh=Object.freeze({zeros:function(){return new Oh},ones:function(){return new _h},constant:function(t){return new Mh(t)},randomUniform:function(t){return new Lh(t)},randomNormal:function(t){return new Fh(t)},truncatedNormal:function(t){return new zh(t)},identity:function(t){return new Ph(t)},varianceScaling:function(t){return new Bh(t)},glorotUniform:function(t){return new Uh(t)},glorotNormal:function(t){return new Wh(t)},heNormal:function(t){return new Vh(t)},heUniform:function(t){return new jh(t)},leCunNormal:function(t){return new qh(t)},leCunUniform:function(t){return new Gh(t)},orthogonal:function(t){return new Hh(t)}});function Zh(t){return Array.isArray(t)&&Array.isArray(t[0])}function Qh(t){return 0===t.length?[]:Array.isArray(t[0])?t:[t]}function tf(t){var e;if(Array.isArray(t)){if(1!==t.length)throw new vp("Expected Tensor length to be 1; got "+t.length);e=t[0]}else e=t;return e}function ef(t){if(Array.isArray(t)&&Array.isArray(t[0])){if(1===t.length)return(t=t)[0];throw new vp("Expected exactly 1 Shape; got "+t.length)}return t}function nf(t){for(var e=0,n=0,r=t;n<r.length;n++){var i=r[n];0===i.shape.length?e+=1:e+=i.shape.reduce(function(t,e){return t*e})}return e}var rf="Variable",of=function(){function t(t,e,n,r,i){void 0===e&&(e="float32"),void 0===n&&(n=rf),void 0===r&&(r=!0),void 0===i&&(i=null),this.dtype=null==e?"float32":e,this.shape=t.shape,this.id=cp(),n=null==n?rf:n,this.originalName=ih(n),this.name=oh(this.originalName),this.trainable_=r,this.constraint=i,this.val=mt(t,this.trainable_,this.name,this.dtype)}return t.prototype.read=function(){return this.assertNotDisposed(),this.val},t.prototype.write=function(t){return this.assertNotDisposed(),function(t,e){if(t.shape.toString()!==e.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(t.shape)+" vs. "+JSON.stringify(e.shape))}(this.val,t),this.val.id!==t.id&&(this.val.assign(t),null!=this.constraint&&this.val.assign(this.constraint.apply(this.val))),this},t.prototype.dispose=function(){this.assertNotDisposed(),this.val.dispose()},t.prototype.assertNotDisposed=function(){if(this.val.isDisposed)throw new Error("LayersVariable "+this.name+" is already disposed.")},Object.defineProperty(t.prototype,"trainable",{get:function(){return this.trainable_},set:function(t){this.trainable_=t,this.val.trainable=t},enumerable:!0,configurable:!0}),t}();function af(t){return t.map(function(t){return t.read()})}function sf(t){t.forEach(function(t){t[0].write(t[1])})}var uf=function(t){this.dtype=t.dtype,this.shape=t.shape,null!=t.shape?this.ndim=t.shape.length:this.ndim=t.ndim,this.maxNDim=t.maxNDim,this.minNDim=t.minNDim,this.axes=t.axes||{}},lf=function(t,e,n,r,i,o,a){this.dtype=t,this.shape=e,this.sourceLayer=n,this.inputs=r,this.callArgs=i,this.outputTensorIndex=a,this.id=cp(),null!=o&&(this.originalName=ih(o),this.name=oh(this.originalName)),this.rank=e.length},cf=0,pf=function(){function t(t,e){this.callArgs=e,this.id=cf++,this.outboundLayer=t.outboundLayer,this.inboundLayers=t.inboundLayers,this.nodeIndices=t.nodeIndices,this.tensorIndices=t.tensorIndices,this.inputTensors=t.inputTensors,this.outputTensors=t.outputTensors,this.inputMasks=t.inputMasks,this.outputMasks=t.outputMasks,this.inputShapes=t.inputShapes,this.outputShapes=t.outputShapes;for(var n=0,r=t.inboundLayers;n<r.length;n++){var i=r[n];null!=i&&i.outboundNodes.push(this)}t.outboundLayer.inboundNodes.push(this)}return t.prototype.getConfig=function(){for(var t=[],e=0,n=this.inboundLayers;e<n.length;e++){var r=n[e];null!=r?t.push(r.name):t.push(null)}return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:t,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}},t}(),hf=0,ff=function(t){function e(e){var n=t.call(this)||this;n._callHook=null,n._addedWeightNames=[],n._stateful=!1,n.id=hf++,n.activityRegularizer=null,n.inputSpec=null,n.supportsMasking=!1,n._trainableWeights=[],n._nonTrainableWeights=[],n._losses=[],n._updates=[],n._built=!1,n.inboundNodes=[],n.outboundNodes=[];var r=e.name;if(!r){var i=n.getClassName();r=Ip(i)+"_"+hp(i)}if(n.name=r,n.trainable_=null==e.trainable||e.trainable,n.updatable=null==e.updatable||e.updatable,null!=e.inputShape||null!=e.batchInputShape){var o=void 0;if(null!=e.batchInputShape)o=e.batchInputShape;else if(null!=e.inputShape){var a=null;null!=e.batchSize&&(a=e.batchSize),o=[a].concat(e.inputShape)}n.batchInputShape=o;var s=e.dtype;null==s&&(s=e.inputDType),null==s&&(s="float32"),n.dtype=s}return null!=e.weights?n.initialWeights=e.weights:n.initialWeights=null,n._refCount=null,n.fastWeightInitDuringBuild=!1,n}return rp(e,t),e.nodeKey=function(t,e){return t.name+"_ib-"+e.toString()},e.prototype.getNodeAtIndex=function(t,e){if(0===this.inboundNodes.length)throw new yp("The layer has never been called and thus has no defined "+e+".");if(this.inboundNodes.length<=t)throw new vp("Asked to get "+e+" at node "+t+", but the layer has only "+this.inboundNodes.length+" inbound nodes.");return this.inboundNodes[t]},e.prototype.getInputAt=function(t){return Cp(this.getNodeAtIndex(t,"input").inputTensors)},e.prototype.getOutputAt=function(t){return Cp(this.getNodeAtIndex(t,"output").outputTensors)},Object.defineProperty(e.prototype,"input",{get:function(){if(this.inboundNodes.length>1)throw new gp("Layer "+this.name+' has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use `getInputAt(nodeIndex)` instead.');if(0===this.inboundNodes.length)throw new gp("Layer "+this.name+" is not connected, no input to return.");return Cp(this.getNodeAtIndex(0,"input").inputTensors)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"output",{get:function(){if(0===this.inboundNodes.length)throw new gp("Layer "+this.name+" has no inbound nodes.");if(this.inboundNodes.length>1)throw new gp("Layer "+this.name+' has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use `getOutputAt(nodeIndex)` instead.');return Cp(this.getNodeAtIndex(0,"output").outputTensors)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"losses",{get:function(){return this._losses},enumerable:!0,configurable:!0}),e.prototype.calculateLosses=function(){return this.losses.map(function(t){return t()})},Object.defineProperty(e.prototype,"updates",{get:function(){return this._updates},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"built",{get:function(){return this._built},set:function(t){this._built=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"trainable",{get:function(){return this.trainable_},set:function(t){this._trainableWeights.forEach(function(e){e.trainable=t}),this.trainable_=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"trainableWeights",{get:function(){return this.trainable_?this._trainableWeights:[]},set:function(t){this._trainableWeights=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nonTrainableWeights",{get:function(){return this.trainable_?this._nonTrainableWeights:this._trainableWeights.concat(this._nonTrainableWeights)},set:function(t){this._nonTrainableWeights=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"weights",{get:function(){return this.trainableWeights.concat(this.nonTrainableWeights)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"stateful",{get:function(){return this._stateful},enumerable:!0,configurable:!0}),e.prototype.resetStates=function(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")},e.prototype.assertInputCompatibility=function(t){if(t=Ep(t),null!=this.inputSpec&&0!==this.inputSpec.length){var e=Ep(this.inputSpec);if(t.length!==e.length)throw new vp("Layer "+this.name+" expects "+e.length+" inputs, but it received "+t.length+" input tensors. Input received: "+t);for(var n=0;n<t.length;n++){var r=t[n],i=e[n];if(null!=i){var o=r.rank;if(null!=i.ndim&&o!==i.ndim)throw new vp("Input "+n+" is incompatible with layer "+this.name+": expected ndim="+i.ndim+", found ndim="+o);if(null!=i.maxNDim&&o>i.maxNDim)throw new vp("Input "+n+" is incompatible with layer "+this.name+": expected max_ndim="+i.maxNDim+", found ndim="+o);if(null!=i.minNDim&&o<i.minNDim)throw new vp("Input "+n+" is incompatible with layer "+this.name+": expected min_ndim="+i.minNDim+", found ndim="+o+".");if(null!=i.dtype&&r.dtype!==i.dtype)throw new vp("Input "+n+" is incompatible with layer "+this.name+" : expected dtype="+i.dtype+", found dtype="+r.dtype+".");if(i.axes){var a=r.shape;for(var s in i.axes){var u=Number(s),l=i.axes[s],c=u>=0?a[u]:a[a.length+u];if(null!=l&&-1===[l,null].indexOf(c))throw new vp("Input "+n+" is incompatible with layer "+this.name+": expected axis "+u+" of input shape to have value "+l+" but got shape "+a+".")}}if(null!=i.shape)for(var p=0;p<i.shape.length;++p){var h=i.shape[p],f=r.shape[p];if(null!=h&&null!=f&&h!==f)throw new vp("Input "+n+" is incompatible with layer "+this.name+": expected shape="+i.shape+", found shape=${xShape}.")}}}}},e.prototype.call=function(t,e){return t},e.prototype.invokeCallHook=function(t,e){null!=this._callHook&&this._callHook(t,e)},e.prototype.setCallHook=function(t){this._callHook=t},e.prototype.clearCallHook=function(){this._callHook=null},e.prototype.apply=function(t,e){var n=this;e=e||{},this.assertNotDisposed();for(var r=Ep(t),i=!0,o=0,a=r;o<a.length;o++)if(!(a[o]instanceof lf)){i=!1;break}for(var s=!0,u=0,l=r;u<l.length;u++)if(l[u]instanceof lf){s=!1;break}if(i===s)throw new vp("Arguments to apply() must be all SymbolicTensors or all Tensors");return rh(this.name,function(){if(!n.built){n.assertInputCompatibility(t);for(var i=[],o=0,a=Ep(t);o<a.length;o++){var u=a[o];i.push(u.shape)}n.build(Cp(i)),n.built=!0,n.initialWeights&&n.setWeights(n.initialWeights),null===n._refCount&&s&&(n._refCount=1)}if(n.assertInputCompatibility(t),s){for(var l=[],c=0,p=Ep(m=n.call(t,e));c<p.length;c++){var h=p[c];-1!==r.indexOf(h)&&(h=h.clone()),l.push(h)}if(m=Cp(l),null!=n.activityRegularizer)throw new bp("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return m}var f=function(t){for(var e=[],n=0,r=t=Ep(t);n<r.length;n++){var i=r[n];e.push(i.shape)}return Cp(e)}(t),d=n.computeOutputShape(f),m=void 0,g="float32";if(n.warnOnIncompatibleInputShape(Array.isArray(t)?f[0]:f),m=null!=d&&d.length>0&&Array.isArray(d[0])?d.map(function(r,i){return new lf(g,r,n,Ep(t),e,n.name,i)}):new lf(g,d,n,Ep(t),e,n.name),n.addInboundNode(t,m,null,null,f,d,e),n._refCount++,null!=n.activityRegularizer)throw new bp("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return m})},e.prototype.warnOnIncompatibleInputShape=function(t){if(null!=this.batchInputShape)if(t.length!==this.batchInputShape.length)console.warn("The rank of the input tensor provided (shape: "+JSON.stringify(t)+") does not match that of the batchInputShape ("+JSON.stringify(this.batchInputShape)+") of the layer "+this.name);else{var e=!1;this.batchInputShape.forEach(function(n,r){null!=n&&null!=t[r]&&t[r]!==n&&(e=!0)}),e&&console.warn("The shape of the input tensor ("+JSON.stringify(t)+") does not match the expectation of layer "+this.name+": "+JSON.stringify(this.batchInputShape))}},Object.defineProperty(e.prototype,"outputShape",{get:function(){if(null==this.inboundNodes||0===this.inboundNodes.length)throw new gp("The layer "+this.name+" has never been called and thus has no defined output shape.");for(var t=[],e=0,n=this.inboundNodes;e<n.length;e++){var r=n[e],i=JSON.stringify(r.outputShapes);-1===t.indexOf(i)&&t.push(i)}if(1===t.length){var o=this.inboundNodes[0].outputShapes;return Array.isArray(o)&&Array.isArray(o[0])&&1===o.length?o[0]:o}throw new gp("The layer "+this.name+' has multiple inbound nodes with different output shapes. Hence the notion of "outut shape" is ill-defined for the layer.')},enumerable:!0,configurable:!0}),e.prototype.countParams=function(){if(!this.built)throw new yp("You tried to call countParams() on "+this.name+", but the layer is not built yet. Build it first by calling build(batchInputShape).");return nf(this.weights)},e.prototype.build=function(t){this.built=!0},e.prototype.getWeights=function(t){return void 0===t&&(t=!1),af(t?this.trainableWeights:this.weights)},e.prototype.setWeights=function(t){var e=this;qt(function(){var n=e.weights;if(n.length!==t.length)throw new vp('You called setWeights(weights) on layer "'+e.name+'" with a weight list of length '+t.length+", but the layer was expecting "+n.length+" weights. Provided weights: "+t+"...");if(0!==n.length){for(var r=[],i=af(n),o=0;o<i.length;++o){var a=i[o],s=n[o],u=t[o];if(!X.arraysEqual(a.shape,u.shape))throw new vp("Layer weight shape "+a.shape+" not compatible with provided weight shape "+u.shape);r.push([s,u])}sf(r)}})},e.prototype.addWeight=function(t,e,n,r,i,o,a){if(-1!==this._addedWeightNames.indexOf(t))throw new vp("Duplicate weight name "+t+" for layer "+this.name);this._addedWeightNames.push(t),null==n&&(n="float32"),this.fastWeightInitDuringBuild&&(r=Yh("zeros"));var s=r.apply(e,n),u=new of(s,n,t,o,a);return s.dispose(),null!=i&&this.addLoss(function(){return i.apply(u.read())}),null==o&&(o=!0),o?this._trainableWeights.push(u):this._nonTrainableWeights.push(u),u},e.prototype.setFastWeightInitDuringBuild=function(t){this.fastWeightInitDuringBuild=t},e.prototype.addLoss=function(t){var e;null==t||Array.isArray(t)&&0===t.length||(t=Ep(t),void 0!==this._losses&&null!==this._losses&&(e=this.losses).push.apply(e,t))},e.prototype.computeOutputShape=function(t){return t},e.prototype.computeMask=function(t,e){var n=this;if(!this.supportsMasking){if(null!=e){if(!Array.isArray(e))throw new TypeError("Layer "+this.name+" does not support masking, but was passed an inputMask.");e.forEach(function(t){if(null!=t)throw new TypeError("Layer "+n.name+" does not support masking, but was passed an inputMask.")})}return null}return e},e.prototype.addInboundNode=function(t,e,n,r,i,o,a){void 0===a&&(a=null);var s=Ep(t);e=Ep(e),n=Ep(n),r=Ep(r),i=Qh(i),o=Qh(o);for(var u=[],l=[],c=[],p=0,h=s;p<h.length;p++){var f=h[p];u.push(f.sourceLayer),l.push(f.nodeIndex),c.push(f.tensorIndex)}new pf({outboundLayer:this,inboundLayers:u,nodeIndices:l,tensorIndices:c,inputTensors:s,outputTensors:e,inputMasks:n,outputMasks:r,inputShapes:i,outputShapes:o},a);for(var d=0;d<e.length;d++)e[d].sourceLayer=this,e[d].nodeIndex=this.inboundNodes.length-1,e[d].tensorIndex=d},e.prototype.getConfig=function(){var t={name:this.name,trainable:this.trainable};return null!=this.batchInputShape&&(t.batchInputShape=this.batchInputShape),null!=this.dtype&&(t.dtype=this.dtype),t},e.prototype.disposeWeights=function(){return this.weights.forEach(function(t){return t.dispose()}),this.weights.length},e.prototype.assertNotDisposed=function(){if(0===this._refCount)throw new Error("Layer '"+this.name+"' is already disposed.")},e.prototype.dispose=function(){if(!this.built)throw new Error("Cannot dispose Layer "+this.name+" because it has not been built yet.");if(null===this._refCount)throw new Error("Cannot dispose Layer "+this.name+" because it has not been used yet.");this.assertNotDisposed();var t=0;return 0==--this._refCount&&(t=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:t}},e}(Fc.Serializable);var df,mf=function(t){function e(e){var n=t.call(this,{dtype:e.dtype,name:null!=e.name?e.name:hp("input").toString()})||this;if(null==e.batchSize&&(e.batchSize=null),null==e.sparse&&(e.sparse=!1),n.trainable=!1,n.built=!0,n.sparse=e.sparse,null!=e.inputShape&&null!=e.batchInputShape)throw new vp("Only provide the inputShape OR batchInputShape argument to inputLayer, not both at the same time.");var r=e.batchInputShape;if(null==r){if(null==e.inputShape)throw new vp("An InputLayer should be passed either a `batchInputShape` or an `inputShape`.");r=[e.batchSize].concat(e.inputShape)}else if(null!=e.batchSize)throw new vp("Cannot specify batchSize if batchInputShape is specified when creating an InputLayer.");var i=e.dtype||"float32";n.batchInputShape=r,n.dtype=i,n.inputSpec=[{shape:r}];var o=new lf(n.dtype,n.batchInputShape,n,[],{},n.name);return o.nodeIndex=0,o.tensorIndex=0,new pf({outboundLayer:n,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:[o],outputTensors:[o],inputMasks:[null],outputMasks:[null],inputShapes:[r],outputShapes:[r]}),n}return rp(e,t),e.prototype.apply=function(t,e){throw new vp("Cannot pass any input to an InputLayer's apply() method. InputLayer name: "+this.name)},e.prototype.dispose=function(){return{refCountAfterDispose:this._refCount,numDisposedVariables:0}},e.prototype.getConfig=function(){return{batchInputShape:this.batchInputShape,dtype:this.dtype,sparse:this.sparse,name:this.name}},e.className="InputLayer",e}(ff);function gf(t){if(null==t.batchShape&&null==t.shape)throw new Error("Please provide to Input either a `shape` or a `batchShape` argument. Note that `shape` does not include the batch dimension.");if(null!=t.batchShape&&null!=t.shape)throw new vp("Please provide either a `shape` or `batchShape` argument to Input, but not both.");var e=t.batchShape;null!=t.shape&&null==e&&(e=[null].concat(t.shape));var n=t.dtype;return null==n&&(n="float32"),new mf({batchInputShape:e,name:t.name,dtype:n,sparse:t.sparse}).inboundNodes[0].outputTensors[0]}function yf(t){return ap(this,void 0,void 0,function(){var e,n,r,i,o,a,s,u;return sp(this,function(l){switch(l.label){case 0:if(null==t)return[2];for(i in e=[],n=[],r=[],t)"number"!=typeof(o=t[i])&&(a=o,e.push(a.data()),n.push(i),r.push(a));return[4,Promise.all(e)];case 1:for(s=l.sent(),u=0;u<s.length;++u)t[n[u]]=s[u][0];return Ht(r),[2]}})})}function vf(t){if(null!=t)for(var e in t){var n=t[e];"number"!=typeof n&&n.dispose()}}Fc.registerClass(mf),function(t){t[t.SILENT=0]="SILENT",t[t.VERBOSE=1]="VERBOSE"}(df||(df={}));var bf=function(){function t(){this.validationData=null}return t.prototype.setParams=function(t){this.params=t},t.prototype.onEpochBegin=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(t){return[2]})})},t.prototype.onEpochEnd=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(t){return[2]})})},t.prototype.onBatchBegin=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(t){return[2]})})},t.prototype.onBatchEnd=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(t){return[2]})})},t.prototype.onTrainBegin=function(t){return ap(this,void 0,void 0,function(){return sp(this,function(t){return[2]})})},t.prototype.onTrainEnd=function(t){return ap(this,void 0,void 0,function(){return sp(this,function(t){return[2]})})},t.prototype.setModel=function(t){},t}(),wf=function(){function t(t,e){void 0===e&&(e=10),null==t&&(t=[]),this.callbacks=t,this.queueLength=e}return t.prototype.append=function(t){this.callbacks.push(t)},t.prototype.setParams=function(t){for(var e=0,n=this.callbacks;e<n.length;e++)n[e].setParams(t)},t.prototype.setModel=function(t){for(var e=0,n=this.callbacks;e<n.length;e++)n[e].setModel(t)},t.prototype.onEpochBegin=function(t,e){return ap(this,void 0,void 0,function(){var n,r;return sp(this,function(i){switch(i.label){case 0:null==e&&(e={}),n=0,r=this.callbacks,i.label=1;case 1:return n<r.length?[4,r[n].onEpochBegin(t,e)]:[3,4];case 2:i.sent(),i.label=3;case 3:return n++,[3,1];case 4:return[2]}})})},t.prototype.onEpochEnd=function(t,e){return ap(this,void 0,void 0,function(){var n,r;return sp(this,function(i){switch(i.label){case 0:null==e&&(e={}),n=0,r=this.callbacks,i.label=1;case 1:return n<r.length?[4,r[n].onEpochEnd(t,e)]:[3,4];case 2:i.sent(),i.label=3;case 3:return n++,[3,1];case 4:return[2]}})})},t.prototype.onBatchBegin=function(t,e){return ap(this,void 0,void 0,function(){var n,r;return sp(this,function(i){switch(i.label){case 0:null==e&&(e={}),n=0,r=this.callbacks,i.label=1;case 1:return n<r.length?[4,r[n].onBatchBegin(t,e)]:[3,4];case 2:i.sent(),i.label=3;case 3:return n++,[3,1];case 4:return[2]}})})},t.prototype.onBatchEnd=function(t,e){return ap(this,void 0,void 0,function(){var n,r;return sp(this,function(i){switch(i.label){case 0:null==e&&(e={}),n=0,r=this.callbacks,i.label=1;case 1:return n<r.length?[4,r[n].onBatchEnd(t,e)]:[3,4];case 2:i.sent(),i.label=3;case 3:return n++,[3,1];case 4:return[2]}})})},t.prototype.onTrainBegin=function(t){return ap(this,void 0,void 0,function(){var e,n;return sp(this,function(r){switch(r.label){case 0:null==t&&(t={}),e=0,n=this.callbacks,r.label=1;case 1:return e<n.length?[4,n[e].onTrainBegin(t)]:[3,4];case 2:r.sent(),r.label=3;case 3:return e++,[3,1];case 4:return[2]}})})},t.prototype.onTrainEnd=function(t){return ap(this,void 0,void 0,function(){var e,n;return sp(this,function(r){switch(r.label){case 0:null==t&&(t={}),e=0,n=this.callbacks,r.label=1;case 1:return e<n.length?[4,n[e].onTrainEnd(t)]:[3,4];case 2:r.sent(),r.label=3;case 3:return e++,[3,1];case 4:return[2]}})})},t}(),xf=function(){function t(t){this.yieldEvery=t,this.batchCount=0,this.batchDurationsMillis=[],this.autoYieldEveryBatches=null,this.batchStartMillis=X.now()}return t.prototype.maybeYieldOnBatch=function(e){return ap(this,void 0,void 0,function(){var e,n;return sp(this,function(r){switch(r.label){case 0:return"auto"!==this.yieldEvery?[3,5]:(this.batchCount++,null!=this.autoYieldEveryBatches?[3,2]:(e=X.now(),[4,Fl()]));case 1:return r.sent(),this.batchCount>t.SKIP_FIRST_BATCHES&&(this.batchDurationsMillis.push(e-this.batchStartMillis),this.batchDurationsMillis.length>=t.DECISION_BATCH_COUNT&&(n=this.batchDurationsMillis.reduce(function(t,e){return t+e})/this.batchDurationsMillis.length,this.autoYieldEveryBatches=Math.round(t.THRESHOLD_MILLIS/n),this.autoYieldEveryBatches<1&&(this.autoYieldEveryBatches=1))),this.batchStartMillis=X.now(),this.lastYieldBatchCount=this.batchCount,[3,4];case 2:return this.batchCount-this.lastYieldBatchCount>=this.autoYieldEveryBatches?[4,Fl()]:[3,4];case 3:r.sent(),this.lastYieldBatchCount=this.batchCount,r.label=4;case 4:return[3,7];case 5:return"batch"!==this.yieldEvery?[3,7]:[4,Fl()];case 6:r.sent(),r.label=7;case 7:return[2]}})})},t.prototype.maybeYieldOnEpoch=function(){return ap(this,void 0,void 0,function(){return sp(this,function(t){switch(t.label){case 0:return"epoch"!==this.yieldEvery?[3,2]:[4,Fl()];case 1:t.sent(),t.label=2;case 2:return[2]}})})},t.SKIP_FIRST_BATCHES=1,t.DECISION_BATCH_COUNT=2,t.THRESHOLD_MILLIS=16,t}(),Nf=function(t){function e(e){var n=t.call(this)||this;return n.yieldEvery=e||"auto",n}return rp(e,t),e.prototype.onTrainBegin=function(t){return ap(this,void 0,void 0,function(){return sp(this,function(t){return this.autoYielder=new xf(this.yieldEvery),[2]})})},e.prototype.onEpochBegin=function(t){return ap(this,void 0,void 0,function(){return sp(this,function(t){return this.seen=0,this.totals={},[2]})})},e.prototype.onBatchEnd=function(t,e){return ap(this,void 0,void 0,function(){var t,n,r,i,o=this;return sp(this,function(a){switch(a.label){case 0:return[4,this.autoYielder.maybeYieldOnBatch(e)];case 1:for(i in a.sent(),null==e&&(e={}),t=null==e.size?0:e.size,this.seen+=t,n=function(n){var i=e[n];if("number"==typeof i)r.totals.hasOwnProperty(n)||(r.totals[n]=0),r.totals[n]=r.totals[n]+i*t;else{var a=void 0;n in r.totals?a=r.totals[n]:r.totals[n]=mp(0),r.totals[n]=qt(function(){return hu(o.totals[n],Eu(i,mp(t)))}),null!=a&&a.dispose()}},r=this,e)n(i);return[2]}})})},e.prototype.onEpochEnd=function(t,e){return ap(this,void 0,void 0,function(){var t,n,r,i,o,a=this;return sp(this,function(s){switch(s.label){case 0:return[4,this.autoYielder.maybeYieldOnEpoch()];case 1:if(s.sent(),null!=e)for(t=function(t){if(null==n.totals[t])return"continue";"number"==typeof n.totals[t]?e[t]=n.totals[t]/n.seen:qt(function(){e[t]=Eu(gu(mp(1),mp(a.seen)),a.totals[t]),a.totals[t].dispose(),Gt(e[t])})},n=this,r=0,i=this.params.metrics;r<i.length;r++)o=i[r],t(o);return[2]}})})},e}(bf),Sf=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.onTrainBegin=function(t){return ap(this,void 0,void 0,function(){return sp(this,function(t){return this.epoch=[],this.history={},[2]})})},e.prototype.onEpochEnd=function(t,e){return ap(this,void 0,void 0,function(){var n;return sp(this,function(r){for(n in null==e&&(e={}),this.epoch.push(t),e)null==this.history[n]&&(this.history[n]=[]),this.history[n].push(e[n]);return[2]})})},e.prototype.syncData=function(){return ap(this,void 0,void 0,function(){var t,e,n,r,i,o,a,s,u;return sp(this,function(l){switch(l.label){case 0:for(r in t=[],e=[],n=[],this.history)for(i=this.history[r],o=0;o<i.length;++o)"number"!=typeof i[o]&&(a=i[o],t.push(a.data()),e.push(r),n.push(o));return[4,Promise.all(t)];case 1:for(s=l.sent(),u=0;u<s.length;++u)this.history[e[u]][n[u]].dispose(),this.history[e[u]][n[u]]=s[u][0];return[2]}})})},e}(bf),Cf=function(t){function e(e){var n=t.call(this)||this;return n.trainBegin=e.onTrainBegin,n.trainEnd=e.onTrainEnd,n.epochBegin=e.onEpochBegin,n.epochEnd=e.onEpochEnd,n.batchBegin=e.onBatchBegin,n.batchEnd=e.onBatchEnd,n}return rp(e,t),e.prototype.onEpochBegin=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(n){switch(n.label){case 0:return null==this.epochBegin?[3,3]:[4,yf(e)];case 1:return n.sent(),[4,this.epochBegin(t,e)];case 2:n.sent(),n.label=3;case 3:return[2]}})})},e.prototype.onEpochEnd=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(n){switch(n.label){case 0:return null==this.epochEnd?[3,3]:[4,yf(e)];case 1:return n.sent(),[4,this.epochEnd(t,e)];case 2:n.sent(),n.label=3;case 3:return[2]}})})},e.prototype.onBatchBegin=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(n){switch(n.label){case 0:return null==this.batchBegin?[3,3]:[4,yf(e)];case 1:return n.sent(),[4,this.batchBegin(t,e)];case 2:n.sent(),n.label=3;case 3:return[2]}})})},e.prototype.onBatchEnd=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(n){switch(n.label){case 0:return null==this.batchEnd?[3,3]:[4,yf(e)];case 1:return n.sent(),[4,this.batchEnd(t,e)];case 2:n.sent(),n.label=3;case 3:return[2]}})})},e.prototype.onTrainBegin=function(t){return ap(this,void 0,void 0,function(){return sp(this,function(e){switch(e.label){case 0:return null==this.trainBegin?[3,3]:[4,yf(t)];case 1:return e.sent(),[4,this.trainBegin(t)];case 2:e.sent(),e.label=3;case 3:return[2]}})})},e.prototype.onTrainEnd=function(t){return ap(this,void 0,void 0,function(){return sp(this,function(e){switch(e.label){case 0:return null==this.trainEnd?[3,3]:[4,yf(t)];case 1:return e.sent(),[4,this.trainEnd(t)];case 2:e.sent(),e.label=3;case 3:return[2]}})})},e}(bf);function Ef(t){return null==t?null:t instanceof bf?[t]:Array.isArray(t)&&t[0]instanceof bf?t:Ep(t).map(function(t){return new Cf(t)})}var If=function(){function t(){}return t.registerCallbackConstructor=function(e,n){X.assert(e>=0&&Number.isInteger(e),function(){return"Verbosity level is expected to be an integer >= 0, but got "+e}),t.checkForDuplicate(n),null==t.constructors[e]&&(t.constructors[e]=[]),t.constructors[e].push(n)},t.checkForDuplicate=function(e){for(var n in t.constructors)t.constructors[+n].forEach(function(t){if(t===e)throw new vp("Duplicate callback constructor.")})},t.clear=function(){t.constructors={}},t.createCallbacks=function(e){var n=[];for(var r in t.constructors){var i=+r;e>=i&&n.push.apply(n,t.constructors[i])}return n.map(function(t){return new t})},t.constructors={},t}();function kf(t,e,n,r,i,o,a,s,u,l){var c=new Sf,p=[new Nf(e)].concat(If.createCallbacks(n));null!=t&&p.push.apply(p,t),p.push(c);var h=new wf(p);return h.setParams({epochs:r,initialEpoch:i,samples:o,steps:a,batchSize:s,verbose:n,doValidation:u,metrics:l}),{callbackList:h,history:c}}function Af(t,e){return qt(function(){var n=Zs(Eh(t),e,!0),r=Eu(Re(up()),Ve(t)),i=Ua(bu(n,r));return gu(t,i)})}function Tf(t,e){return qt(function(){return Xs(Eh(Du(e,t)),-1)})}function Rf(t,e){return qt(function(){return Xs(fa(Du(e,t)),-1)})}function Df(t,e){return qt(function(){var n=Du(t,e),r=xa(fa(t),up(),Number.MAX_VALUE),i=fa(gu(n,r));return Eu(mp(100),Xs(i,-1))})}function Of(t,e){return qt(function(){var n=mp(1),r=xa(e,up(),Number.MAX_VALUE),i=Aa(hu(n,r)),o=xa(t,up(),Number.MAX_VALUE),a=Aa(hu(n,o));return Xs(Eh(Du(i,a)),-1)})}function _f(t,e){return qt(function(){var n=mp(0),r=mp(1),i=bu(n,Du(r,Eu(t,e)));return Xs(Eh(i),-1)})}function Mf(t,e){return qt(function(){var n=mp(0),r=mp(1),i=bu(n,Du(r,Eu(t,e)));return Xs(i,-1)})}function Lf(t,e){return qt(function(){var n=mp(0),r=mp(1),i=Zs(Eu(t,e),-1),o=$s(Eu(Du(r,t),e),-1);return bu(n,hu(r,Du(o,i)))})}function Ff(t,e){return qt(function(){var n=mp(Math.log(2)),r=Du(e,t),i=Du(hu(r,Ba(Eu(mp(-2),r))),n);return Xs(i,-1)})}function zf(t,e,n){return void 0===n&&(n=!1),qt(function(){if(n)e=Ce(e);else{var r=Zs(e,e.shape.length-1,!0);e=gu(e,r)}return e=xa(e,up(),1-up()),Da(Zs(Eu(t.toFloat(),Aa(e)),e.shape.length-1))})}function Pf(t,e){return qt(function(){var n=ka(function(t){var e=[lh(t.shape)];return t.reshape(e)}(t)).toInt(),r=(e=xa(e,up(),1-up())).shape;return zf(Ko(n,r[r.length-1]).reshape(r),e,!1)})}function Bf(t,e){return qt(function(){var n;return n=xa(e,up(),1-up()),n=Aa(gu(n,Du(mp(1),n))),Xs(function(t,e){if(!X.arraysEqual(t.shape,e.shape))throw new vp("logits and labels must have the same shape, but got shapes "+JSON.stringify(t.shape)+" and "+JSON.stringify(e.shape));return qt(function(){var n=e.relu(),r=e.abs().neg();return n.sub(e.mul(t)).add(r.exp().log1p())})}(t,n),-1)})}function Uf(t,e){return qt(function(){var n=xa(t,up(),1),r=xa(e,up(),1);return Zs(Eu(t,Aa(gu(n,r))),-1)})}function Wf(t,e){return qt(function(){var n=Aa(hu(mp(up()),e));return Xs(Du(e,Eu(t,n)),-1)})}function Vf(t,e){return qt(function(){var n=Af(t,-1),r=Af(e,-1),i=Eu(n,r);return Da(Zs(i,-1))})}function jf(t){var e={meanSquaredError:Tf,meanAbsoluteError:Rf,meanAbsolutePercentageError:Df,meanSquaredLogarithmicError:Of,squaredHinge:_f,hinge:Mf,categoricalHinge:Lf,logcosh:Ff,categoricalCrossentropy:zf,sparseCategoricalCrossentropy:Pf,binaryCrossentropy:Bf,kullbackLeiblerDivergence:Uf,poisson:Wf,cosineProximity:Vf};if("string"==typeof t){if(t in e)return e[t];var n="Unknown loss "+t;throw t.toLowerCase().includes("softmaxcrossentropy")&&(n="Unknown loss "+t+'. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy'),new vp(n)}return t}function qf(t,e){return qt(function(){var n=Eu(mp(.5),Ve(e)),r=dh(nu(e,n),t.dtype);return Xs(tu(t,r),-1)})}function Gf(t,e){return qt(function(){return dh(tu(Gs(t,-1),Gs(e,-1)),"float32")})}function Hf(t,e){return qt(function(){var n=mp(1);return _u(t.equal(n),e.equal(n)).sum().cast("float32")})}function Kf(t,e){return qt(function(){var n=mp(0),r=Hf(t,e),i=function(t,e){return qt(function(){var n=mp(1),r=mp(0);return _u(t.equal(r),e.equal(n)).sum().cast("float32")})}(t,e),o=r.add(i);return zu(nu(o,n),r.div(o),n).cast("float32")})}function $f(t,e){return qt(function(){var n=mp(0),r=Hf(t,e),i=function(t,e){return qt(function(){var n=mp(1),r=mp(0);return _u(t.equal(n),e.equal(r)).sum().cast("float32")})}(t,e),o=r.add(i);return zu(nu(o,n),r.div(o),n).cast("float32")})}function Xf(t,e){return Bf(t,e)}function Yf(t,e){return t.rank===e.rank&&(t=t.squeeze([t.rank-1])),(e=e.argMax(-1)).dtype!==t.dtype&&(e=e.asType(t.dtype)),tu(t,e).asType("float32")}var Jf=Tf,Zf=Tf,Qf=Rf,td=Rf,ed=Df,nd=Df,rd=zf,id=Vf,od=Pf;function ad(t,e,n,r){void 0===r&&(r=console.log);var i,o=function(t){var e=!0,n=[],r=[];for(var i in t.nodesByDepth)n.push(t.nodesByDepth[i]);for(var o=0,a=n;o<a.length;o++){var s=a[o];if(s.length>1||1===s.length&&s[0].inboundLayers.length>1){e=!1;break}r.push.apply(r,s)}if(e)for(var u=0,l=t.layers;u<l.length;u++){for(var c=!1,p=0,h=l[u].inboundNodes;p<h.length;p++){var f=h[p];if(-1!==r.indexOf(f)){if(c){e=!1;break}c=!0}}if(!e)break}return e}(t),a=["Layer (type)","Output shape","Param #"];if(o?(e=e||65,n=n||[.45,.85,1]):(e=e||98,n=n||[.33,.55,.67,1]),n[n.length-1]<=1&&(n=n.map(function(t){return Math.floor(e*t)})),!o)for(var s in a.push("Receives inputs"),i=[],t.nodesByDepth)i.push.apply(i,t.nodesByDepth[s]);r("_".repeat(e)),sd(a,n,r),r("=".repeat(e));for(var u=t.layers,l=0;l<u.length;++l)o?ud(u[l],n,r):ld(u[l],n,i,r),r((l===u.length-1?"=":"_").repeat(e));t.checkTrainableWeightsConsistency();var c=function(t){return null!=t.collectedTrainableWeights?nf(t.collectedTrainableWeights):nf(t.trainableWeights)}(t),p=nf(t.nonTrainableWeights);r("Total params: "+(c+p)),r("Trainable params: "+c),r("Non-trainable params: "+p),r("_".repeat(e))}function sd(t,e,n){void 0===n&&(n=console.log);for(var r="",i=0;i<t.length;++i)i>0&&(r=r.slice(0,r.length-1)+" "),r=(r+=t[i]).slice(0,e[i]),r+=" ".repeat(e[i]-r.length);n(r)}function ud(t,e,n){var r;try{r=JSON.stringify(t.outputShape)}catch(t){r="multiple"}sd([t.name+" ("+t.getClassName()+")",r,t.countParams().toString()],e,n)}function ld(t,e,n,r){var i;try{i=JSON.stringify(t.outputShape)}catch(t){i="multiple"}for(var o=[],a=0,s=t.inboundNodes;a<s.length;a++){var u=s[a];if(!(null!=n&&n.length>0&&-1===n.indexOf(u)))for(var l=0;l<u.inboundLayers.length;++l){var c=u.inboundLayers[l].name,p=u.nodeIndices[l],h=u.tensorIndices[l];o.push(c+"["+p+"]["+h+"]")}}var f=t.name,d=t.getClassName(),m=0===o.length?"":o[0];for(sd([f+" ("+d+")",i,t.countParams().toString(),m],e,r),l=1;l<o.length;++l)sd(["","","",o[l]],e,r)}function cd(t,e,n){return void 0===e&&(e={}),void 0===n&&(n=!1),Rp(t,Fc.SerializationMap.getMap().classNameMap,e,"layer",n)}function pd(t,e,n){return("inboundNodes"===t||"outputLayers"===t||"inputLayers"===t)&&0===e&&"string"==typeof n}function hd(t,e){if(null===t)return null;if("string"==typeof t)return kp(t);if("number"==typeof t||"boolean"==typeof t)return t;if(t instanceof Array){for(var n=[],r=t.length,i=0;i<r;++i){var o=t[i];pd(e,i,o)?n.push(o):n.push(hd(o,e))}return n}for(var a={},s=0,u=Object.keys(t);s<u.length;s++){var l=u[s],c=t[l];if("name"===l&&"string"==typeof c)a[l]=c;else{var p=kp(l);a[p]=hd(c,p)}}return a}var fd=function(){function t(e){if(this.id2Value={},this.id2Mask={},this.name2Id={},e instanceof t)for(var n in e.id2Value)this.id2Value[n]=e.id2Value[n],n in e.id2Mask&&(this.id2Mask[n]=e.id2Mask[n]);else{if(null==e)return;for(var r=0,i=e;r<i.length;r++){var o=i[r];this.add(o.key,o.value)}}}return t.prototype.add=function(t,e,n){if(null!=this.id2Value[t.id])throw new vp("Duplicate key: name="+t.name+", id="+t.id);return this.id2Value[t.id]=function(t,e){if(null==t.dtype||t.dtype===e.dtype)return e;try{return Uo(e,t.dtype)}catch(n){throw new vp("The dtype of the feed ("+e.dtype+") can not be cast to the dtype of the key '"+t.name+"' ("+t.dtype+").")}}(t,e),this.name2Id[t.name]=t.id,null!=n&&(this.id2Mask[t.id]=n),this},t.prototype.addFeed=function(t){this.add(t.key,t.value)},t.prototype.hasKey=function(t){return null!=this.id2Value[t.id]},t.prototype.names=function(){return Object.keys(this.name2Id)},t.prototype.getValue=function(t){if(t instanceof lf){if(null==this.id2Value[t.id])throw new vp("Nonexistent key: "+t.name);return this.id2Value[t.id]}var e=this.name2Id[t];if(null==e)throw new vp("Feed dict has no SymbolicTensor name: "+t);return this.id2Value[e]},t.prototype.getMask=function(t){if(t instanceof lf){if(null==this.id2Value[t.id])throw new vp("Nonexistent key: "+t.name);return this.id2Mask[t.id]}var e=this.name2Id[t];if(null==e)throw new vp("Feed dict has no SymbolicTensor name: "+t);return this.id2Mask[e]},t.prototype.disposeMasks=function(){null!=this.id2Mask&&Ht(this.id2Mask)},t}(),dd={},md={};function gd(t,e,n,r){for(var i=null!=n&&n.training,o=Array.isArray(t),a=o?t:[t],s=a.map(function(t){return t.name}),u=[],l=e.names(),c=0,p=s;c<p.length;c++){var h=p[c];-1!==l.indexOf(h)?u.push(e.getValue(h)):u.push(null)}null!=r&&(r.maxNumTensors=-1/0,r.minNumTensors=1/0);var f,d,m=s.join(",")+"|"+e.names().join(",");if(null==dd[m]){var g=function(t,e){X.assert(null!=t&&t.length>0,function(){return"Expected at least one fetch, got none"});var n=[],r={};if(1===t.length){var i=yd(t[0],e);n=i.sorted,r=i.recipientMap}else for(var o=new Set,a=0,s=t;a<s.length;a++){for(var u=yd(s[a],e),l=u.sorted,c=u.recipientMap,p=0,h=l;p<h.length;p++){var f=h[p];o.has(f.name)||(n.push(f),o.add(f.name))}var d=function(t){null==r[t]&&(r[t]=new Set),c[t].forEach(function(e){return r[t].add(e)})};for(var m in c)d(m)}return{sorted:n,recipientCounts:function(t){var e={};for(var n in t)e[n]=t[n].size;return e}(r)}}(a,e);f=g.sorted,d=g.recipientCounts,dd[m]=f,md[m]=d}f=dd[m],d={},i||Object.assign(d,md[m]);for(var y=new fd(e),v=0;v<f.length;++v){if(null!=r){var b=ep().numTensors;b>r.maxNumTensors&&(r.maxNumTensors=b),b<r.minNumTensors&&(r.minNumTensors=b)}var w=f[v],x=w.sourceLayer;if(!(x instanceof mf)){for(var N=[],S=[],C=[],E=!1,I=0,k=w.inputs;I<k.length;I++){var A=k[I],T=y.getValue(A),R=y.getMask(A);N.push(T),S.push(R),null!=R&&(E=!0),i||(d[A.name]--,0!==d[A.name]||e.hasKey(A)||-1!==s.indexOf(A.name)||T.isDisposed||C.push(T))}E&&((n=n||{}).mask=S[0]);var D=Ep(x.apply(N,n)),O=null;x.supportsMasking&&(O=x.computeMask(N,S));for(var _=vd(w),M=Array.isArray(_)?_:[_],L=0;L<M.length;++L){y.hasKey(M[L])||y.add(M[L],D[L],Array.isArray(O)?O[0]:O);var F=s.indexOf(M[L].name);-1!==F&&(u[F]=D[L])}i||Ht(C)}}return y.disposeMasks(),o?u:u[0]}function yd(t,e){for(var n=new Set,r=[],i={},o=0,a=e.names();o<a.length;o++){var s=a[o];n.add(s)}var u=[],l=[];for(u.push(t);u.length>0;){var c=u[u.length-1];if(n.has(c.name))u.pop();else{var p=l[l.length-1]===u.length-1;if(0===c.inputs.length||p)u.pop(),r.push(c),n.add(c.name),p&&l.pop();else{l.push(u.length-1);for(var h=0,f=c.inputs;h<f.length;h++){var d=f[h];null==i[d.name]&&(i[d.name]=new Set),i[d.name].add(c.name),n.has(d.name)||u.push(d)}}}}return{sorted:r,recipientMap:i}}function vd(t){var e;if(1===t.sourceLayer.inboundNodes.length)e=t.sourceLayer.output;else{for(var n=null,r=0;r<t.sourceLayer.inboundNodes.length;++r)for(var i=0,o=t.sourceLayer.inboundNodes[r].outputTensors;i<o.length;i++)if(o[i].id===t.id){n=r;break}e=t.sourceLayer.getOutputAt(n)}return e}var bd=32;function wd(t,e){var n,r,i=e;n=i.xs,r=i.ys,X.assert(null!=n&&null!=r,function(){return"A Dataset iterator for fitDataset() is expected to generate objects of the form `{xs: xVal, ys: yVal}`, where the two values may be `tf.Tensor`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates "+e});var o=xd("input",t.inputNames,n),a=xd("output",t.outputNames,r),s=o[0].shape[0];for(var u in X.assert(o.length===t.inputs.length,function(){return"LayersModel has "+t.inputs.length+" inputs, but the dataset provides "+o.length+" inputs. (Expected input keys: "+JSON.stringify(t.inputNames)+")"}),X.assert(a.length===t.outputs.length,function(){return"LayersModel has "+t.outputs.length+" outputs, but the dataset provides "+a.length+" outputs. (Expected output keys: "+JSON.stringify(t.outputNames)+")"}),o)X.assert(o[u].shape[0]===s,function(){return"Batch size mismatch: input "+t.inputNames[u]+" has "+o[u].shape[0]+"; expected "+s+" based on input "+t.inputNames[0]+"."});for(var l in a)X.assert(a[l].shape[0]===s,function(){return"Batch size mismatch: output "+t.outputNames[l]+" has "+a[l].shape[0]+"; expected "+s+" based on input "+t.inputNames[0]+"."});return o.concat(a)}function xd(t,e,n){if(n instanceof ut)return[n];if(Array.isArray(n))return X.assert(n.length===e.length,function(){return"Received an array of "+n.length+" Tensors, but expected "+e.length+" to match the "+t+" keys "+e+"."}),n;for(var r=[],i=0,o=e;i<o.length;i++){var a=o[i];if(null==n[a])throw new vp("The feature data generated by the dataset lacks the required "+t+" key '"+a+"'.");r.push(n[a])}return r}function Nd(t,e,n){return ap(this,void 0,void 0,function(){var r,i,o,a,s,u,l,c,p,h,f,d,m,g,y,v,b,w,x,N,S,C,E,I,k,A,T;return sp(this,function(R){switch(R.label){case 0:if(r=null!=n.batchesPerEpoch,X.assert(null!=t.optimizer,function(){return"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."}),X.assert(null!=n,function(){return"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."}),X.assert(null!=n.epochs&&n.epochs>0&&Number.isInteger(n.epochs),function(){return"For fitDataset(), config.epochs is expected to be a positive integer, but got "+n.epochs}),X.assert(!r||n.batchesPerEpoch>0&&Number.isInteger(n.batchesPerEpoch),function(){return"For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got "+n.batchesPerEpoch}),X.assert(null==n.validationSplit,function(){return"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."}),t.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");t.isTraining=!0,R.label=1;case 1:return R.trys.push([1,,22,23]),i=null!=n.validationData,o=void 0,a=void 0,i&&(Sd(n.validationData)?X.assert(null==n.validationBatches||n.validationBatches>0&&Number.isInteger(n.validationBatches),function(){return"For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got "+n.validationBatches}):(s=function(t){if(3===t.length)throw new bp("Validation with sample weights is not implemented yet.");return{xs:t[0],ys:t[1]}}(n.validationData),o=s.xs,a=s.ys)),u=t.makeTrainFunction(),l=t.getDedupedMetricsNames(),c=void 0,c=i?l.slice().concat(l.map(function(t){return"val_"+t})):l.slice(),p=Ef(n.callbacks),h=null==n.verbose?1:n.verbose,f=kf(p,n.yieldEvery,h,n.epochs,null,null,function(t,e){var n=null;return null!=e.batchesPerEpoch?n=e.batchesPerEpoch:Number.isFinite(t.size)&&(n=t.size),n}(e,n),null,i,c),d=f.callbackList,m=f.history,d.setModel(t),t.history=m,[4,d.onTrainBegin()];case 2:return R.sent(),t.stopTraining_=!1,g=null==n.initialEpoch?0:n.initialEpoch,[4,e.iterator()];case 3:y=R.sent(),R.label=4;case 4:return g<n.epochs?(v={},[4,d.onEpochBegin(g)]):[3,19];case 5:return R.sent(),b=0,w=0,r?[3,7]:[4,e.iterator()];case 6:y=R.sent(),R.label=7;case 7:return!r||b<n.batchesPerEpoch?[4,y.next()]:[3,17];case 8:return x=R.sent(),r&&x.done?(console.warn("You provided `batchesPerEpoch` as "+n.batchesPerEpoch+", but your dataset iterator ran out of data after "+b+" batches; interrupting training. Make sure that your dataset can generate at least `batchesPerEpoch * epochs` batches (in this case, "+n.batchesPerEpoch*n.epochs+" batches). You may need to use the repeat() function when building your dataset."),[3,17]):null==x.value?[3,11]:(N=wd(t,x.value),(S={}).batch=w,S.size=N[0].shape[0],[4,d.onBatchBegin(w,S)]);case 9:for(R.sent(),C=u(N),Ht(N),T=0;T<l.length;++T)E=l[T],I=C[T],S[E]=I,Gt(I);return[4,d.onBatchEnd(w,S)];case 10:R.sent(),vf(S),w++,b++,R.label=11;case 11:return(r?b>=n.batchesPerEpoch:x.done)?i?(k=void 0,Sd(n.validationData)?(A=Ep,[4,t.evaluateDataset(n.validationData,{batches:n.validationBatches})]):[3,13]):[3,15]:[3,16];case 12:return k=A.apply(void 0,[R.sent()]),[3,14];case 13:k=Ep(t.evaluate(o,a,{batchSize:null==n.validationBatchSize?bd:n.validationBatchSize,verbose:0})),R.label=14;case 14:for(T=0;T<t.metricsNames.length;++T)v["val_"+t.metricsNames[T]]=k[T];R.label=15;case 15:return[3,17];case 16:return t.stopTraining_?[3,17]:[3,7];case 17:return[4,d.onEpochEnd(g,v)];case 18:return R.sent(),g++,t.stopTraining_?[3,19]:[3,4];case 19:return[4,d.onTrainEnd()];case 20:return R.sent(),[4,t.history.syncData()];case 21:return R.sent(),[2,t.history];case 22:return t.isTraining=!1,[7];case 23:return[2]}})})}function Sd(t){return"function"==typeof t.iterator}function Cd(t){X.assert(t>0&&Number.isInteger(t),function(){return"batchSize is required to be a positive integer, but got "+t})}function Ed(t,e,n){return null==t?[null]:Array.isArray(t)?t.map(function(t){return gh(t,e,n-e)}):gh(t,e,n-e)}function Id(t,e){return qt(function(){return null==t?null:Array.isArray(t)?t.map(function(t){return Id(t,e)}):Ch(t,"int32"===e.dtype?e:e.toInt())})}function kd(t,e){for(var n=[],r=0,i=null;r<t;)(i=r+e)>=t&&(i=t),n.push([r,i]),r=i;return n}function Ad(t,e,n,r){return void 0===r&&(r={}),ap(this,void 0,void 0,function(){var i,o,a,s,u,l,c,p,h,f,d,m,g,y,v,b,w,x,N;return sp(this,function(S){switch(S.label){case 0:if(t.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");t.isTraining=!0,S.label=1;case 1:if(S.trys.push([1,,3,4]),Cd(c=null==r.batchSize?32:r.batchSize),p=t.standardizeUserData(e,n,!1,c),i=p[0],o=p[1],h=!1,f=void 0,null!=r.validationData&&r.validationData.length>0){if(h=!0,2!==r.validationData.length)throw 3===r.validationData.length?new bp("validationData including sample weights is not supported yet."):new vp("When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; "+r.validationData+" is invalid.");a=r.validationData[0],s=r.validationData[1],d=t.standardizeUserData(a,s,!0,c),u=d[0],l=d[1],f=u.concat(l)}else null!=r.validationSplit&&r.validationSplit>0&&r.validationSplit<1?(h=!0,m=Math.floor(i[0].shape[0]*(1-r.validationSplit)),g=i[0].shape[0],u=Ed(i,m,g),i=Ed(i,0,m),l=Ed(o,m,g),o=Ed(o,0,m),f=u.concat(l)):null!=r.validationSteps&&(h=!0);return y=i.concat(o),t.checkTrainableWeightsConsistency(),v=t.makeTrainFunction(),b=t.getDedupedMetricsNames(),w=void 0,x=void 0,h?(t.makeTestFunction(),w=t.testFunction,x=b.slice().concat(b.map(function(t){return"val_"+t}))):(w=null,f=[],x=b.slice()),N=Ef(r.callbacks),[4,function(t,e,n,r,i,o,a,s,u,l,c,p,h,f,d,m){return ap(this,void 0,void 0,function(){var g,y,v,b,w,x,N,S;return sp(this,function(C){switch(C.label){case 0:if(null==i&&(i=32),null==o&&(o=1),null==c&&(c=!0),null==h&&(h=0),g=!1,null!=u&&null!=l&&(g=!0),null!=d&&(g=!0,null==f))throw new vp("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");return null!=(y=t.checkNumSamples(n,i,f,"steps_per_epoch"))&&(v=fh(0,y)),null==a&&(a=1),b=kf(s,m,a,o,h,y,f,i,g,p),w=b.callbackList,x=b.history,w.setModel(t),t.history=x,[4,w.onTrainBegin()];case 1:C.sent(),t.stopTraining_=!1,N=function(o){var a,s,p,h,d;return sp(this,function(m){switch(m.label){case 0:return[4,w.onEpochBegin(o)];case 1:if(m.sent(),a={},null==f)return[3,2];throw new bp("stepsPerEpoch mode is not implemented yet.");case 2:if("batch"===c)throw new bp("batch shuffling is not implemneted yet");c&&X.shuffle(v),s=De(v),p=kd(y,i),h=function(o){var c;return sp(this,function(h){switch(h.label){case 0:return c={},[4,w.onBatchBegin(o,c)];case 1:return h.sent(),qt(function(){var h=p[o][0],f=p[o][1],d=gh(s,h,f-h);c.batch=o,c.size=f-h;for(var m=Id(n,d),y=e(m),v=0;v<r.length;++v){var b=r[v],w=y[v];c[b]=w,Gt(w)}if(o===p.length-1&&g){var x=t.testLoop(u,l,i);for(v=0;v<r.length;++v)b=r[v],w=x[v],Gt(w),a["val_"+b]=w}}),[4,w.onBatchEnd(o,c)];case 2:return h.sent(),vf(c),t.stopTraining_?[2,"break"]:[2]}})},d=0,m.label=3;case 3:return d<p.length?[5,h(d)]:[3,6];case 4:if("break"===m.sent())return[3,6];m.label=5;case 5:return++d,[3,3];case 6:s.dispose(),m.label=7;case 7:return[4,w.onEpochEnd(o,a)];case 8:return m.sent(),t.stopTraining_?[2,"break"]:[2]}})},S=h,C.label=2;case 2:return S<o?[5,N(S)]:[3,5];case 3:if("break"===C.sent())return[3,5];C.label=4;case 4:return++S,[3,2];case 5:return[4,w.onTrainEnd()];case 6:return C.sent(),[4,t.history.syncData()];case 7:return C.sent(),[2,t.history]}})})}(t,v,y,b,c,r.epochs,r.verbose,N,w,f,r.shuffle,x,r.initialEpoch,null,null,r.yieldEvery)];case 2:return[2,S.sent()];case 3:return t.isTraining=!1,Rd(i,e),Rd(o,n),Rd(u,a),Rd(l,s),[7];case 4:return[2]}})})}function Td(t){var e=[];t instanceof ut&&(t=[t]);for(var n=0;n<t.length;++n){var r=t[n];if(1===r.rank)e.push(mh(r,1));else{if(0===r.rank)throw new Error("Expected tensor to be at least 1D, but received a 0D tensor (scalar).");e.push(r)}}return e}function Rd(t,e){if(null!=t){var n=[];if(e instanceof ut)n.push(e.id);else if(Array.isArray(e))e.forEach(function(t){return n.push(t.id)});else if(null!=e)for(var r in e){var i=e[r];n.push(i.id)}var o=[];if(t instanceof ut)-1===n.indexOf(t.id)&&o.push(t);else if(Array.isArray(t))t.forEach(function(t){-1===n.indexOf(t.id)&&o.push(t)});else if(null!=t)for(var a in t){var s=t[a];-1===n.indexOf(s.id)&&o.push(s)}o.forEach(function(t){t.isDisposed||t.dispose()})}}function Dd(t){return Array.isArray(t)}function Od(t){return!function(t){return t instanceof ut}(t)&&!Dd(t)}function _d(t,e,n,r,i){if(void 0===r&&(r=!0),void 0===i&&(i=""),null==e||0===e.length){if(null!=t){var o=!1;if(Dd(t)&&t.length>0)o=!0;else if(Od(t)){for(var a in t)if(t.hasOwnProperty(a)){o=!0;break}}else o=!0;if(o)throw new vp("Error when checking model "+i+" expected no data, but got "+t)}return[]}if(null==t)return e.map(function(t){return null});var s;if(Od(t)){t=t,s=[];for(var u=0,l=e;u<l.length;u++){var c=l[u];if(null==t[c])throw new vp('No data provided for "'+c+'". Need data for each key in: '+e);s.push(t[c])}}else if(Dd(t)){if((t=t).length!==e.length)throw new vp("Error when checking model "+i+": the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see "+e.length+" Tensor(s), but instead got the following list of Tensor(s): "+t);s=t}else{if(t=t,e.length>1)throw new vp("The model "+i+" expects "+e.length+" Tensor(s), but only received one Tensor. Found: Tensor with shape "+t.shape);s=[t]}if(s=Td(s),null!=n)for(var p=0;p<e.length;++p)if(null!=n[p]){var h=s[p];if(h.shape.length!==n[p].length)throw new vp("Error when checking "+i+": expected "+e[p]+" to have "+n[p].length+" dimension(s). but got array with shape "+h.shape);for(var f=0;f<n[p].length;++f)if(0!==f||r){var d=h.shape[f],m=n[p][f];if(null!=m&&m>=0&&d!==m)throw new vp("Error when checking "+i+": expected "+e[p]+" to have shape ["+n[p]+"], but got array with shape ["+h.shape+"].")}}return s}function Md(t,e,n,r,i){var o;if(void 0===r&&(r=!0),void 0===i&&(i=""),Array.isArray(t)){if(t.length!==e.length)throw new vp("Error when checking model "+i+": the Array of Tensors that you are passing to your model is not the size the the model expected. Expected to see "+e.length+" Tensor(s), but instead got "+t.length+" Tensors(s).");o=t}else{if(e.length>1)throw new vp("The model expects "+e.length+" "+i+" Tensors, but only received one Tensor. Found: array with shape "+JSON.stringify(t.shape)+".");o=[t]}if(null!=n)for(var a=0;a<e.length;++a)if(null!=n[a]){var s=o[a];if(s.shape.length!==n[a].length)throw new vp("Error when checking "+i+": expected "+e[a]+" to have "+n[a].length+" dimension(s), but got array with shape "+JSON.stringify(s.shape));for(var u=0;u<n[a].length;++u)if(0!==u||r){var l=s.shape[u],c=n[a][u];if(null!=c&&c!==l)throw new vp("Error when checking "+i+": expected "+e[a]+" to have shape "+JSON.stringify(n[a])+" but got array with shape "+JSON.stringify(s.shape)+".")}}}var Ld=function(t){function e(e){var n=t.call(this,e)||this;return n.isTraining=!1,n}return rp(e,t),e.prototype.summary=function(t,e,n){if(void 0===n&&(n=console.log),!this.built)throw new vp("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");ad(this,t,e,n)},e.prototype.compile=function(t){var e=this;if(null==t.loss&&(t.loss=[]),this.loss=t.loss,"string"==typeof t.optimizer)this.optimizer=function(t){var e={Adagrad:function(){return Jc.adagrad(.01)},Adadelta:function(){return Jc.adadelta(1,.95,up())},Adam:function(){return Jc.adam(.001,.9,.999,up())},Adamax:function(){return Jc.adamax(.002,.9,.999,up(),0)},RMSProp:function(){return Jc.rmsprop(.001,.9,0,up())},SGD:function(){return Jc.sgd(.01)}};if(e.adagrad=e.Adagrad,e.adadelta=e.Adadelta,e.adam=e.Adam,e.adamax=e.Adamax,e.rmsprop=e.RMSProp,e.sgd=e.SGD,t in e)return e[t]();throw new vp("Unknown Optimizer "+t)}(t.optimizer);else{if(!(t.optimizer instanceof Vc))throw new vp("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer=t.optimizer}var n=[];if(Array.isArray(t.loss)||"string"==typeof t.loss||"function"==typeof t.loss)if(Array.isArray(t.loss)){if(t.loss.length!==this.outputs.length)throw new vp("When passing an Array as loss, it should have one entry per model output. The model has "+this.outputs.length+" output(s), but you passed loss="+t.loss+".");var r=t.loss;n=r.map(function(t){return jf(t)})}else{var i=jf(t.loss);this.outputs.forEach(function(t){n.push(i)})}else{for(var o in t.loss=t.loss,t.loss)if(-1===this.outputNames.indexOf(o))throw new vp('Unknown entry in loss dictionary: "'+o+'". Only expected the following keys: '+this.outputNames);for(var a=0,s=this.outputNames;a<s.length;a++){var u=s[a];null==t.loss[u]&&console.warn('Output "'+u+'" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to '+u+" during training"),n.push(jf(t.loss[u]))}}this.lossFunctions=n,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(var l=0;l<this.outputs.length;++l){var c=this.internalOutputShapes[l],p=this.outputNames[l];this.feedOutputNames.push(p),this.feedOutputShapes.push(c),this.feedLossFns.push(this.lossFunctions[l])}var h=[];this.metrics=t.metrics,this.metricsNames=["loss"],this.metricsTensors=[],rh("loss",function(){for(var t=0;t<e.outputs.length;++t)if(-1===h.indexOf(t)){var n=e.lossFunctions[t];e.outputs.length>1&&(e.metricsTensors.push([n,t]),e.metricsNames.push(e.outputNames[t]+"_loss"))}});var f=function(t,e){if(null==t||Array.isArray(t)&&0===t.length)return e.map(function(t){return[]});if(Array.isArray(t))return e.map(function(e){return t});if(null!=t){for(var n=[],r=0,i=e;r<i.length;r++){var o=i[r],a=t.hasOwnProperty(o)?t[o]:[];Array.isArray(a)||(a=[a]),n.push(a)}return n}throw new TypeError("Type of metrics argument not understood. Expected an Array or Object, found: "+t)}(t.metrics,this.outputNames);rh("metric",function(){for(var t=function(t){if(-1!==h.indexOf(t))return"continue";!function(n){for(var r,i,o,a=function(n){if(-1!==["accuracy","acc","crossentropy","ce"].indexOf(n)){var a=e.internalOutputShapes[t];1===a[a.length-1]||e.lossFunctions[t]===Bf?-1!==["accuracy","acc"].indexOf(n)?i=qf:-1!==["crossentropy","ce"].indexOf(n)&&(i=Xf):e.lossFunctions[t]===Pf?-1!==["accuracy","acc"].indexOf(n)?i=Yf:-1!==["crossentropy","ce"].indexOf(n)&&(i=od):-1!==["accuracy","acc"].indexOf(n)?i=Gf:-1!==["crossentropy","ce"].indexOf(n)&&(i=rd);var s=void 0;-1!==["accuracy","acc"].indexOf(n)?s="acc":-1!==["crossentropy","ce"].indexOf(n)&&(s="ce"),o=i,r=""+s}else{var u=function(t){var e={binaryAccuracy:qf,categoricalAccuracy:Gf,precision:Kf,categoricalCrossentropy:rd,sparseCategoricalCrossentropy:od,mse:Jf,MSE:Zf,mae:Qf,MAE:td,mape:ed,MAPE:nd,cosine:id};if("string"==typeof t&&t in e)return e[t];if("string"!=typeof t&&null!=t)return t;throw new vp("Unknown metric "+t)}(n);o=u,r=""+n}var l;rh(r,function(){l=o}),function(t,n,r){e.outputNames.length>1&&(n=e.outputNames[t]+"_"+n),e.metricsNames.push(n),e.metricsTensors.push([r,t])}(t,r,l)},s=0,u=f[t];s<u.length;s++)a(u[s])}()},n=0;n<e.outputs.length;++n)t(n)}),this.collectedTrainableWeights=this.trainableWeights},e.prototype.checkTrainableWeightsConsistency=function(){null!=this.collectedTrainableWeights&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")},e.prototype.evaluate=function(t,e,n){void 0===n&&(n={});var r=null==n.batchSize?32:n.batchSize;Cd(r);var i=this.standardizeUserData(t,e,!0,r);try{var o=i[0].concat(i[1]);this.makeTestFunction();var a=this.testFunction;return Cp(this.testLoop(a,o,r,n.verbose,n.steps))}finally{Rd(i[0],t),Rd(i[1],e)}},e.prototype.evaluateDataset=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(n){return this.makeTestFunction(),[2,function(t,e,n){return ap(this,void 0,void 0,function(){var r,i,o,a,s,u,l,c,p,h;return sp(this,function(f){switch(f.label){case 0:if(r=null!=(n=n||{}).batches,i=t.testFunction,o=[],n.verbose>0)throw new bp("Verbose mode is not implemented yet.");return X.assert(!r||n.batches>0&&Number.isInteger(n.batches),function(){return"Test loop expects `batches` to be a positive integer, but received "+JSON.stringify(n.batches)}),function(t){return"function"==typeof t.next}(e)?(s=e,[3,3]):[3,1];case 1:return[4,e.iterator()];case 2:s=f.sent(),f.label=3;case 3:a=s,u=0,l=0,c=function(){var e,s,c,p,h,f;return sp(this,function(d){switch(d.label){case 0:return[4,a.next()];case 1:if((e=d.sent()).value){if(s=wd(t,e.value),c=qt(function(){return i(s)}),Ht(s),0===l)for(f=0;f<c.length;++f)o.push(mp(0));for(p=s[0].shape[0],h=function(t){var e=c[t],n=o[t];o[t]=qt(function(){return hu(o[t],Eu(mp(p),e))}),l>0&&Ht(n)},f=0;f<c.length;++f)h(f);Ht(c),u+=p,++l}return e.done?(r&&console.warn("Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least `batches` batches (in this case, "+n.batches+" batches). You may need to use the repeat() function when building your dataset."),[2,"break"]):[2]}})},f.label=4;case 4:return!r||l<n.batches?[5,c()]:[3,6];case 5:return"break"===f.sent()?[3,6]:[3,4];case 6:for(p=function(t){var e=o[t];o[t]=qt(function(){return gu(o[t],mp(u))}),Ht(e)},h=0;h<o.length;++h)p(h);return[2,Cp(o)]}})})}(this,t,e)]})})},e.prototype.checkNumSamples=function(t,e,n,r){var i;if(void 0===r&&(r="steps"),null!=n){if(i=null,null!=e)throw new vp("If "+r+" is set, batchSize must be null or undefined.Got batchSize = "+e)}else{if(null==t)throw new vp("Either the input data should have a defined shape, or "+r+" shoud be specified.");i=Array.isArray(t)?t[0].shape[0]:t.shape[0]}return i},e.prototype.execute=function(t,e){if(Array.isArray(e)&&0===e.length)throw new vp("`outputs` is an empty Array, which is not allowed.");var n=Array.isArray(e),r=n?e:[e],i=this.retrieveSymbolicTensors(r),o=new fd;if(t instanceof ut&&(t=[t]),Array.isArray(t)){if(t.length!==this.inputs.length)throw new vp("The number of inputs provided ("+t.length+") does not match the number of inputs of this model ("+this.inputs.length+").");for(var a=0;a<this.inputs.length;++a)o.add(this.inputs[a],t[a])}else for(var s=0,u=this.inputs;s<u.length;s++){var l=u[s],c=t[l.name];if(null==c)throw new vp("No value is provided for the model's input "+l.name);o.add(l,c)}var p=gd(i,o);return n?p:p[0]},e.prototype.retrieveSymbolicTensors=function(t){for(var e=xp(null,t.length),n=t.length,r=0,i=this.layers;r<i.length;r++){for(var o=i[r],a=Array.isArray(o.output)?o.output:[o.output],s=a.map(function(t){return t.name}),u=0;u<t.length;++u){var l=s.indexOf(t[u]);if(-1!==l&&(e[u]=a[l],n--),0===n)break}if(0===n)break}if(n>0){var c=[];throw e.forEach(function(e,n){null==e&&c.push(t[n])}),new vp("Cannot find SymbolicTensors for output name(s): "+JSON.stringify(c))}return e},e.prototype.predictLoop=function(t,e,n){var r=this;return void 0===e&&(e=32),void 0===n&&(n=!1),qt(function(){var i=r.checkNumSamples(t);if(n)throw new bp("Verbose predictLoop() is not implemented yet.");for(var o=kd(i,e),a=r.outputs.map(function(t){return[]}),s=function(e){qt(function(){var n=o[e][0],i=o[e][1],a=Ed(t,n,i),s=[];if(Array.isArray(a))for(var u=0;u<a.length;++u)s.push({key:r.inputs[u],value:a[u]});else s.push({key:r.inputs[0],value:a});var l=new fd(s);return gd(r.outputs,l)}).forEach(function(t,e){return a[e].push(t)})},u=0;u<o.length;++u)s(u);return Cp(a.map(function(t){return xo(t,0)}))})},e.prototype.predict=function(t,e){void 0===e&&(e={});var n=Td(t);Md(n,this.inputNames,this.feedInputShapes,!1);try{var r=null==e.batchSize?32:e.batchSize;return Cd(r),this.predictLoop(n,r)}finally{Rd(n,t)}},e.prototype.predictOnBatch=function(t){return Md(t,this.inputNames,this.feedInputShapes,!0),this.predictLoop(t,t.shape[0])},e.prototype.standardizeUserData=function(t,e,n,r){if(void 0===n&&(n=!0),null==this.optimizer)throw new yp("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");for(var i=[],o=0;o<this.feedOutputShapes.length;++o){var a=this.feedOutputShapes[o];this.feedLossFns[o]===Pf?i.push(a.slice(0,a.length-1).concat([1])):i.push(a)}if(function(t,e,n){var r=Op(t.map(function(t){return t.shape[0]}));r.sort();var i=Op(e.map(function(t){return t.shape[0]}));if(i.sort(),r.length>1)throw new vp("All input Tensors (x) should have the same number of samples. Got array shapes: "+JSON.stringify(t.map(function(t){return t.shape})));if(i.length>1)throw new vp("All target Tensors (y) should have the same number of samples. Got array shapes: "+JSON.stringify(e.map(function(t){return t.shape})));if(r.length>0&&i.length>0&&!X.arraysEqual(r,i))throw new vp("Input Tensors should have the same number of samples as target Tensors. Found "+r[0]+" input sample(s) and "+i[0]+" target sample(s).")}(t=_d(t,this.feedInputNames,this.feedInputShapes,!1,"input"),e=_d(e,this.feedOutputNames,i,!1,"target")),function(t,e,n){for(var r=[Tf,Bf,zf],i=0;i<t.length;++i){var o=t[i],a=e[i],s=n[i];if(null!=a){if(a===zf&&1===o.shape[o.shape.length-1])throw new vp("You are passing a target array of shape "+o.shape+" while using a loss 'categorical_crossentropy'. 'categorical_crossentropy'expects targets to be binary matrices (1s and 0s) of shape [samples, classes].");if(-1!==r.indexOf(a))for(var u=o.shape.slice(1),l=s.slice(1),c=0;c<u.length;++c){var p=u[c],h=l[c];if(null!=h&&p!==h)throw new vp("A target Tensor with shape "+o.shape+" was passed for an output of shape "+s+", while using a loss function that expects targets to have the same shape as the output.")}}}}(e,this.feedLossFns,this.feedOutputShapes),this.stateful&&null!=r&&r>0&&t[0].shape[0]%r!=0)throw new vp("In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size "+r+". Found: "+t[0].shape[0]+" sample(s).");return[t,e,null]},e.prototype.testLoop=function(t,e,n,r,i){var o=this;return void 0===r&&(r=0),qt(function(){var a=o.checkNumSamples(e,n,i,"steps"),s=[];if(r>0)throw new bp("Verbose mode is not implemented yet.");if(null!=i)throw new bp("steps mode in testLoop() is not implemented yet");for(var u=kd(a,n),l=De(fh(0,a)),c=0;c<u.length;++c){var p=u[c][0],h=u[c][1],f=gh(l,p,h-p),d=Id(e,f),m=t(d);if(0===c)for(var g=0;g<m.length;++g)s.push(mp(0));for(g=0;g<m.length;++g){var y=m[g];s[g]=hu(s[g],Eu(mp(h-p),y))}}for(g=0;g<s.length;++g)s[g]=gu(s[g],mp(a));return s})},e.prototype.getDedupedMetricsNames=function(){for(var t=this.metricsNames,e=[],n=0;n<t.length;++n){var r=t[n],i=r;Sp(t,r)>1&&(i+="_"+Sp(t.slice(0,n),r)),e.push(i)}return e},e.prototype.makeTrainFunction=function(){var t=this;return function(e){var n=e.slice(0,t.inputs.length),r=e.slice(t.inputs.length,t.inputs.length+t.outputs.length),i=[],o=t.collectedTrainableWeights.map(function(t){return t.read()});return[t.optimizer.minimize(function(){for(var e=[],o=0;o<t.inputs.length;++o)e.push({key:t.inputs[o],value:n[o]});var a,s=new fd(e),u=gd(t.outputs,s,{training:!0});for(o=0;o<t.lossFunctions.length;++o){var l=(0,t.lossFunctions[o])(r[o],u[o]);Xs(l),a=0===o?l:hu(a,l)}for(o=0;o<t.metricsTensors.length;++o){var c=t.metricsTensors[o][0],p=t.metricsTensors[o][1],h=Xs(c(r[p],u[p]));Gt(h),i.push(h)}return a=Xs(a),t.calculateLosses().forEach(function(t){a=hu(a,t)}),a},!0,o)].concat(i)}},e.prototype.makeTestFunction=function(){var t=this;this.testFunction=function(e){return qt(function(){for(var n,r=[],i=e.slice(0,t.inputs.length),o=e.slice(t.inputs.length,t.inputs.length+t.outputs.length),a=[],s=0;s<t.inputs.length;++s)a.push({key:t.inputs[s],value:i[s]});var u=new fd(a),l=gd(t.outputs,u);for(s=0;s<t.lossFunctions.length;++s){var c=t.lossFunctions[s],p=Xs(c(o[s],l[s]));n=0===s?p:hu(n,p),r.push(n)}for(s=0;s<t.metricsTensors.length;++s){var h=t.metricsTensors[s][0],f=t.metricsTensors[s][1],d=Xs(h(o[f],l[f]));r.push(d)}return r})}},e.prototype.fit=function(t,e,n){return void 0===n&&(n={}),ap(this,void 0,void 0,function(){return sp(this,function(r){return[2,Ad(this,t,e,n)]})})},e.prototype.fitDataset=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(n){return[2,Nd(this,t,e)]})})},e.prototype.trainOnBatch=function(t,e){return ap(this,void 0,void 0,function(){var n,r,i,o,a,s,u,l,c;return sp(this,function(p){switch(p.label){case 0:n=this.standardizeUserData(t,e),r=n[0],i=n[1],o=this.makeTrainFunction(),a=o(r.concat(i)),s=[],u=0,l=a,p.label=1;case 1:return u<l.length?[4,l[u].data()]:[3,4];case 2:c=p.sent(),s.push(c[0]),p.label=3;case 3:return u++,[3,1];case 4:return Ht(a),[2,Cp(s)]}})})},e.prototype.getNamedWeights=function(t){for(var e={},n=null!=t&&t.trainableOnly,r=n?this.trainableWeights:this.weights,i=this.getWeights(n),o=0;o<r.length;++o)n&&!r[o].trainable||(e[r[o].originalName]=i[o]);return e},Object.defineProperty(e.prototype,"stopTraining",{set:function(t){this.stopTraining_=t},enumerable:!0,configurable:!0}),e.prototype.save=function(t,e){return ap(this,void 0,void 0,function(){var n,r,i,o,a;return sp(this,function(s){switch(s.label){case 0:if("string"==typeof t){if(0===(n=Ac.getSaveHandlers(t)).length)throw new vp("Cannot find any save handlers for URL '"+t+"'");if(n.length>1)throw new vp("Found more than one ("+n.length+") save handlers for URL '"+t+"'");t=n[0]}if(null==t.save)throw new vp("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return[4,Ac.encodeWeights(this.getNamedWeights(e))];case 1:return r=s.sent(),i=!1,o=null,a=this.toJSON(o,i),[2,t.save({modelTopology:a,weightData:r.data,weightSpecs:r.specs,format:"layers-model",generatedBy:"TensorFlow.js tfjs-layers v1.0.0",convertedBy:null})]}})})},e.className="Model",e}(function(t){function e(n){var r=t.call(this,{})||this;if(r.containerNodes=new Set,r.name=n.name,null==r.name){var i=r.getClassName().toLowerCase();r.name=hp(i)}if(r.supportsMasking=!1,r.trainable_=!0,r.updatable=!0,Array.isArray(n.inputs)?r.inputs=n.inputs.slice():r.inputs=[n.inputs],Array.isArray(n.outputs)?r.outputs=n.outputs.slice():r.outputs=[n.outputs],Op(r.inputs).length!==r.inputs.length)throw new vp("The list of inputs passed to the model is redundant. All inputs should only appear once. Found: "+r.inputs.map(function(t){return t.name}));Op(r.outputs).length!==r.outputs.length&&console.warn("The list of outputs passed to the model is redundant. All outputs should only appear once. Found: "+r.outputs.map(function(t){return t.name})),r.inputLayers=[],r.inputLayersNodeIndices=[],r.inputLayersTensorIndices=[],r.outputLayers=[],r.outputLayersNodeIndices=[],r.outputLayersTensorIndices=[],r.layers=[];for(var o=0,a=r.outputs;o<a.length;o++){var s=(I=a[o]).sourceLayer,u=I.nodeIndex,l=I.tensorIndex;r.outputLayers.push(s),r.outputLayersNodeIndices.push(u),r.outputLayersTensorIndices.push(l)}for(var c=0,p=r.inputs;c<p.length;c++)s=(I=p[c]).sourceLayer,u=I.nodeIndex,l=I.tensorIndex,Np(0===u,"input layer has >1 nodes"),Np(0===l,"input layer has >1 tensors"),r.inputLayers.push(s),r.inputLayersNodeIndices.push(u),r.inputLayersTensorIndices.push(l);r.inputNames=[],r.outputNames=[],r.feedInputShapes=[],r.feedInputNames=[],r.feedOutputNames=[];for(var h=0;h<r.inputLayers.length;h++){if(!((s=r.inputLayers[h])instanceof mf))throw new TypeError("Input layers to a LayersModel must be InputLayer objects. Received inputs: "+n.inputs+". Input "+h+" (0-based) originates from layer type "+s.getClassName()+".");r.inputNames.push(s.name),r.feedInputShapes.push(s.batchInputShape),r.feedInputNames.push(s.name)}for(var f=0,d=r.outputLayers;f<d.length;f++)s=d[f],r.outputNames.push(s.name);r.internalInputShapes=r.inputs.map(function(t){return t.shape}),r.internalOutputShapes=r.outputs.map(function(t){return t.shape});for(var m={},g={},y={},v={},b={},w=[],x=function(t,n,i,o,a,s){null!=o&&null!=a&&null!=s||(o=t.sourceLayer,a=t.nodeIndex,s=t.tensorIndex);var u=o.inboundNodes[a];if(-1!==i.indexOf(u))throw new yp("The tensor "+t.name+' at layer "'+o.name+'" is part of a cycle.');if(-1===n.indexOf(u)){r.containerNodes.add(e.nodeKey(o,a)),o.id in b||(b[o.id]=Object.keys(b).length),-1===i.indexOf(u)&&i.push(u);for(var l=u.inboundLayers.length,c=0;c<l;c++){var p=u.inputTensors[c],h=u.inboundLayers[c],f=u.nodeIndices[c],d=u.tensorIndices[c];x(p,n,i,h,f,d)}for(n.push(u);i.indexOf(u)>=0;)i.splice(i.indexOf(u),1);w.push(u)}},N=[],S=[],C=0,E=r.outputs;C<E.length;C++){var I=E[C];x(I,N,S)}for(var k=0,A=w.slice().reverse();k<A.length;k++){g[(Y=A[k]).id]=Y,Y.id in m||(m[Y.id]=0);var T=m[Y.id],R=null==y[Y.outboundLayer.id]?0:y[Y.outboundLayer.id];for(T=Math.max(T,R),y[Y.outboundLayer.id]=T,v[Y.outboundLayer.id]=Y.outboundLayer,m[Y.id]=T,h=0;h<Y.inboundLayers.length;h++){var D=Y.inboundLayers[h],O=(u=Y.nodeIndices[h],D.inboundNodes[u]),_=null==m[O.id]?0:m[O.id];m[O.id]=Math.max(T+1,_),g[O.id]=O}}var M={};for(var L in m)(T=m[L])in M||(M[T]=[]),M[T].push(g[L]);var F={};for(var z in y)(T=y[z])in F||(F[T]=[]),F[T].push(v[z]);var P=Object.keys(F).map(function(t){return parseInt(t,10)}).sort(Dp);r.layers=[];for(var B=0,U=P;B<U.length;B++){var W=F[T=U[B]];W.sort(function(t,e){var n=b[t.id],r=b[e.id];return n<r?-1:n>r?1:0});for(var V=0,j=W;V<j.length;V++)s=j[V],r.layers.push(s)}r.layersByDepth=F,P=Object.keys(M).map(function(t){return parseInt(t,10)}).sort(Dp);for(var q=r.inputs.slice(),G=[],H=0,K=P;H<K.length;H++)for(var $=0,X=M[T=K[H]];$<X.length;$++){var Y;if(null!=(s=(Y=X[$]).outboundLayer)){for(var J=0,Z=Y.inputTensors;J<Z.length;J++)if(I=Z[J],-1===q.indexOf(I))throw new yp("Graph disconnected: cannot obtain value for tensor "+I+' at layer "'+s.name+'". The following previous layers were accessed without issue: '+G);for(var Q=0,tt=Y.outputTensors;Q<tt.length;Q++)I=tt[Q],q.push(I);G.push(s.name)}}r.nodesByDepth=M;for(var et=r.layers.map(function(t){return t.name}),nt=function(t){var e=et.filter(function(e){return e===t}).length;if(1!==e)throw new yp('The name "'+t+'" is used '+e+" times in the model. All layer names should be unique. Layer names: "+JSON.stringify(et))},rt=0,it=et;rt<it.length;rt++)nt(it[rt]);return r.outboundNodes=[],r.inboundNodes=[],new pf({outboundLayer:r,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:r.inputs,outputTensors:r.outputs,inputMasks:r.inputs.map(function(t){return null}),outputMasks:r.outputs.map(function(t){return null}),inputShapes:r.inputs.map(function(t){return t.shape}),outputShapes:r.outputs.map(function(t){return t.shape})}),r.built=!0,r._refCount=1,r}return rp(e,t),e.prototype.assertNotDisposed=function(){if(0===this._refCount)throw new Error("Container '"+this.name+"' is already disposed.")},e.prototype.dispose=function(){this.assertNotDisposed();var t={refCountAfterDispose:null,numDisposedVariables:0};if(0==--this._refCount)for(var e=0,n=this.layers;e<n.length;e++){var r=n[e];t.numDisposedVariables+=r.dispose().numDisposedVariables}return t.refCountAfterDispose=this._refCount,t},Object.defineProperty(e.prototype,"trainableWeights",{get:function(){if(this._trainableWeights.length>0)throw new vp("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];for(var t=[],e=0,n=this.layers;e<n.length;e++){var r=n[e];t=t.concat(r.trainableWeights)}return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nonTrainableWeights",{get:function(){for(var t=[],e=0,n=this.layers;e<n.length;e++){var r=n[e];t.push.apply(t,r.nonTrainableWeights)}if(!this.trainable){for(var i=[],o=0,a=this.layers;o<a.length;o++)r=a[o],i.push.apply(i,r.trainableWeights);return i.concat(t)}return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"weights",{get:function(){return this.trainableWeights.concat(this.nonTrainableWeights)},enumerable:!0,configurable:!0}),e.prototype.loadWeights=function(t,e){void 0===e&&(e=!0);for(var n={},r=0,i=0,o=this.layers;i<o.length;i++)for(var a=0,s=o[i].weights;a<s.length;a++){var u=s[a];if(null!=n[u.originalName])throw new vp("Duplicate weight name: "+u.originalName);n[u.originalName]=u,r++}var l=[];for(var c in t){if(null!=n[c])l.push([n[c],t[c]]);else if(e)throw new vp("Provided weight data has no target variable: "+c);delete n[c]}if(e){var p=[];for(var h in n)p.push(h);if(p.length>0)throw new vp(p.length+" of "+r+" weights are not set: "+p)}sf(l)},e.prototype.updatedConfig=function(){var t=this.getConfig(),e={};return e.className=this.getClassName(),e.config=t,e.kerasVersion="tfjs-layers 1.0.0",e.backend="TensorFlow.js",e},e.prototype.toJSON=function(t,e){void 0===e&&(e=!0);var n=function t(e,n){if(null===e||void 0===e)return null;if("string"==typeof e)return Ip(e);if("number"==typeof e||"boolean"==typeof e)return e;if(e instanceof Array){for(var r=[],i=e.length,o=0;o<i;++o){var a=e[o];pd(n,o,a)?r.push(a):r.push(t(a,n))}return r}for(var s={},u=0,l=Object.keys(e);u<l.length;u++){var c=l[u],p=e[c];s[Ip(c)]="name"!==c&&"className"!==c||"string"!=typeof p?t(p,c):p}return s}(this.updatedConfig());return e?JSON.stringify(n):n},e.prototype.call=function(t,e){var n=this;return qt(function(){t=Ep(t);for(var r=new fd,i=0;i<n.inputs.length;++i)r.add(n.inputs[i],t[i]);return gd(n.outputs,r,e)})},e.prototype.computeMask=function(t,e){var n=this;return qt(function(){var r;return t=Ep(t),r=null==e?xp(null,t.length):Ep(e),n.runInternalGraph(t,r)[1]})},e.prototype.computeOutputShape=function(t){var e=Qh(t);if(e.length!==this.inputLayers.length)throw new vp("Invalid inputShape argument "+t+": model has "+this.inputLayers.length+" tensor inputs.");for(var n={},r=0;r<e.length;r++){var i=this.inputLayers[r],o=e[r];n[S=i.name+"_0_0"]=o}var a=Object.keys(this.nodesByDepth).map(function(t){return parseInt(t,10)}).sort(Dp);if(a.length>1)for(var s=0,u=a;s<u.length;s++)for(var l=u[s],c=0,p=this.nodesByDepth[l];c<p.length;c++){var h=p[c];if(i=h.outboundLayer,-1===this.inputLayers.map(function(t){return t.id}).indexOf(i.id)){for(var f=[],d=0;d<h.inboundLayers.length;d++){var m=h.inboundLayers[d],g=h.nodeIndices[d],y=h.tensorIndices[d],v=n[S=m.name+"_"+g+"_"+y];f.push(v)}var b=Qh(i.computeOutputShape(Cp(f))),w=i.inboundNodes.indexOf(h);for(d=0;d<b.length;d++)n[S=i.name+"_"+w+"_"+d]=b[d]}}var x=[],N=[];for(r=0;r<this.outputLayers.length;r++){i=this.outputLayers[r],w=this.outputLayersNodeIndices[r],y=this.outputLayersTensorIndices[r];var S=i.name+"_"+w+"_"+y;N.push(S)}for(r=0;r<N.length;r++){var C=N[r];Np(C in n),x.push(n[C])}return Cp(x)},e.prototype.runInternalGraph=function(t,e){null==e&&(e=xp(null,t.length));for(var n={},r=0;r<this.inputs.length;++r){var i=this.inputs[r],o=t[r],a=e[r];n[i.id]=[o,a]}for(var s=0,u=Object.keys(this.nodesByDepth).map(function(t){return parseInt(t,10)}).sort(Dp);s<u.length;s++)for(var l=u[s],c=0,p=this.nodesByDepth[l];c<p.length;c++){for(var h=p[c],f=h.outboundLayer,d=h.inputTensors,m=h.outputTensors,g=new Array,y=0,v=d;y<v.length;y++)(i=v[y]).id in n&&g.push(n[i.id]);if(g.length===d.length){var b={},w=void 0,x=void 0,N=void 0,S=void 0;if(null!=h.callArgs&&(b=h.callArgs),1===g.length){var C=g[0],E=C[0],I=C[1];null==b.mask&&(b.mask=I),N=Ep(f.call(E,b)),S=Ep(f.computeMask(E,I)),w=[E],x=[I]}else w=g.map(function(t){return t[0]}),x=g.map(function(t){return t[1]}),null==b.mask&&(b.mask=x),N=Ep(f.call(w,b)),S=Ep(f.computeMask(w,x));if(f.activityRegularizer)throw new bp("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(r=0;r<m.length;++r)i=m[r],o=N[r],a=S[r],n[i.id]=[o,a]}}for(var k=[],A=[],T=[],R=0,D=this.outputs;R<D.length;R++){Np((i=D[R]).id in n,"Could not compute output "+i.name+" : "+i.id);var O=n[i.id],_=O[0];a=O[1],T.push(_.shape),k.push(_),A.push(a)}return[k,A,T]},e.prototype.buildNodeConversionMap=function(t){for(var n,r={},i=0,o=this.layers;i<o.length;i++){var a=o[i];n=a instanceof e?1:0;for(var s=0;s<a.inboundNodes.length;s++){var u=e.nodeKey(a,s);this.containerNodes.has(u)&&(r[u]=n,n+=1)}}return r},e.prototype.getLayer=function(t,e){if(null!=e){if(this.layers.length<=e)throw new vp("Was asked to retrieve layer at index "+e+", but model only has "+this.layers.length+" layer(s).");return this.layers[e]}if(null==t)throw new vp("Provide either a layer name or layer index");for(var n=0,r=this.layers;n<r.length;n++){var i=r[n];if(i.name===t)return i}throw new vp("No such layer: "+t)},e.prototype.calculateLosses=function(){var t=this;return qt(function(){for(var n=[],r=0,i=t.layers;r<i.length;r++)for(var o=i[r],a=0;a<o.inboundNodes.length;++a){var s=e.nodeKey(o,a);t.containerNodes.has(s)&&n.push.apply(n,o.calculateLosses())}return n})},e.prototype.getConfig=function(){for(var t={name:this.name},n=this.buildNodeConversionMap(this.layers),r=[],i=0,o=this.layers;i<o.length;i++){for(var a=(w=o[i]).getClassName(),s=w.getConfig(),u=[],l=0;l<w.inboundNodes.length;l++){var c=w.inboundNodes[l],p=e.nodeKey(w,l),h={};if(this.containerNodes.has(p)){if(c.callArgs)try{JSON.stringify(c.callArgs),h=c.callArgs}catch(t){console.warn("Layer "+w.name+" was passed non-serializable keyword arguments: "+c.callArgs+". They will not be included in the serialized model (and thus will be missing at deserialization time)."),h={}}if(c.inboundLayers.length>0){for(var f=[],d=0;d<c.inboundLayers.length;d++){var m=c.inboundLayers[d],g=c.nodeIndices[d],y=c.tensorIndices[d];null==(N=n[e.nodeKey(m,g)])&&(N=0),f.push([m.name,N,y,h])}u.push(f)}}}var v={};v.name=w.name,v.className=a,v.config=s,v.inboundNodes=u,r.push(v)}t.layers=r;var b=[];for(d=0;d<this.inputLayers.length;d++){var w=this.inputLayers[d];g=this.inputLayersNodeIndices[d],p=e.nodeKey(w,g),this.containerNodes.has(p)&&(null!==(N=n[p])&&void 0!==N||(N=0),y=this.inputLayersTensorIndices[d],b.push([w.name,N,y]))}t.inputLayers=b;var x=[];for(d=0;d<this.outputLayers.length;d++){var N;if(w=this.outputLayers[d],g=this.outputLayersNodeIndices[d],p=e.nodeKey(w,g),this.containerNodes.has(p))null!==(N=n[p])&&void 0!==N||(N=0),y=this.outputLayersTensorIndices[d],x.push([w.name,N,y])}return t.outputLayers=x,t},e.fromConfig=function(t,e,n,r){void 0===n&&(n={}),void 0===r&&(r=!1);var i={},o={};function a(t,e){t.name in o?o[t.name].push(e):o[t.name]=[e]}function s(t,e){for(var n,r=[],o=0,s=e;o<s.length;o++){var u=s[o],l=u[0],c=u[1],p=u[2];if(3===u.length)n={};else{if(4!==u.length)throw new vp("Improperly formatted model config for layer "+JSON.stringify(t)+": "+JSON.stringify(u));n=u[3]}if(!(l in i))return void a(t,e);var h=i[l];if(h.inboundNodes.length<=c)return void a(t,e);var f=h.inboundNodes[c];r.push(f.outputTensors[p])}r.length>0&&t.apply(Cp(r),n)}function u(t){var n=t.name,o=cd(t,null!=e.customObjects?e.customObjects:{});o.setFastWeightInitDuringBuild(r),i[n]=o;for(var s=0,u=t.inboundNodes;s<u.length;s++){var l=u[s];if(!(l instanceof Array))throw new vp("Corrupted configuration, expected array for nodeData: "+l);a(o,l)}}for(var l=e.name,c=e.layers,p=0,h=c;p<h.length;p++)u(m=h[p]);for(;!_p(o);)for(var f=0,d=c;f<d.length;f++){var m=d[f];if((T=i[m.name]).name in o){var g=o[T.name];delete o[T.name];for(var y=0,v=g;y<v.length;y++)s(T,v[y])}}for(var b=[],w=[],x=0,N=e.inputLayers;x<N.length;x++){var S=(m=N[x])[0],C=m[1],E=m[2];Np(S in i);var I=(T=i[S]).inboundNodes[C].outputTensors;b.push(I[E])}for(var k=0,A=e.outputLayers;k<A.length;k++){var T;S=(m=A[k])[0],C=m[1],E=m[2],Np(S in i),I=(T=i[S]).inboundNodes[C].outputTensors,w.push(I[E])}return new t({inputs:b,outputs:w,name:l})},Object.defineProperty(e.prototype,"stateful",{get:function(){if(this._stateful)throw new vp("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(var t=0,e=this.layers;t<e.length;t++)if(e[t].stateful)return!0;return!1},enumerable:!0,configurable:!0}),e.prototype.resetStates=function(){var t=this;qt(function(){t.layers.forEach(function(t){t.stateful&&t.resetStates()})})},e}(ff));function Fd(t,e){return ap(this,void 0,void 0,function(){var n;return sp(this,function(r){if(null==e&&(e={}),"string"==typeof t){if(0===(n=Ac.getLoadHandlers(t)).length)n.push(Ac.browserHTTPRequest(t,e));else if(n.length>1)throw new vp("Found more than one ("+n.length+") load handlers for URL '"+t+"'");t=n[0]}return[2,function(t,e,n){return ap(this,void 0,void 0,function(){var r,i,o,a,s,u;return sp(this,function(l){switch(l.label){case 0:if(null==n&&(n={}),null==t.load)throw new vp("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");return[4,t.load()];case 1:if(r=l.sent(),null!=(i=r.modelTopology).model_config&&(i=i.model_config),o=null==n.strict||n.strict,a=null!=r.weightData&&null!=r.weightSpecs&&o,s=cd(hd(i),e,a),null!=r.weightData){if(null==r.weightSpecs)throw new vp("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");u=Ac.decodeWeights(r.weightData,r.weightSpecs),s.loadWeights(u,o),Ht(u)}return[2,s]}})})}(t,void 0,e)]})})}Fc.registerClass(Ld);var zd=function(t){function e(e){var n=t.call(this,{inputs:[],outputs:[]})||this;if(e=e||{},n.trainable=!0,n._updatable=!0,n.built=!1,n.name=null!=e.name?e.name:hp("sequential_"),null!=e.layers)for(var r=0,i=e.layers;r<i.length;r++){var o=i[r];n.add(o)}return n}return rp(e,t),e.prototype.checkShape=function(t){if(t.inboundNodes[0].outputTensors[0].shape.some(function(t){return t<0}))throw new vp("Negative dimension size caused by adding layer "+t.name+" with input shape ["+t.inboundNodes[0].inputTensors[0].shape+"]")},e.prototype.add=function(t){var n,r=t instanceof e||t instanceof Ld;if(r){if(1!==(n=t).outputs.length)throw new vp("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(1!==n.inputs.length)throw new vp("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(0===this.outputs.length){if(0===t.inboundNodes.length){if(null==t.batchInputShape)throw new vp("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");var i=gf({batchShape:t.batchInputShape,dtype:t.dtype,name:t.name+"_input"});t.apply(i)}if(r)this.outputs=n.outputs,this.inputs=n.inputs;else{if(1!==t.inboundNodes.length)throw new vp("A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer "+t.name+" which has "+t.inboundNodes.length+" pre-existing inbound connections.");if(1!==t.inboundNodes[0].outputTensors.length)throw new vp("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(t),this.outputs=[t.inboundNodes[0].outputTensors[0]],this.inputs=function t(e,n,r){if((null==n||null!=r&&r>0)&&(n=e.sourceLayer,r=e.nodeIndex),0===n.inboundNodes.length)return[e];var i=n.inboundNodes[r];if(0===i.inboundLayers.length)return i.inputTensors;for(var o=[],a=0;a<i.inboundLayers.length;a++)for(var s=0,u=t(i.inputTensors[a],i.inboundLayers[a],i.nodeIndices[a]);s<u.length;s++){var l=u[s];-1===o.indexOf(l)&&o.push(l)}return o}(this.outputs[0])}this.inboundNodes=[],new pf({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:xp(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(function(t){return t.shape}),outputShapes:this.outputs[0].shape})}else{var o=t.apply(this.outputs[0]);if(Array.isArray(o))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(t),this.outputs=[o],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(t),this.built=!1},e.prototype.pop=function(){if(0===this.layers.length)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),0===this.layers.length)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{var t=this.layers.length-1;this.layers[t].outboundNodes=[],this.outputs=[this.layers[t].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}},e.prototype.call=function(t,e){return null==this.model&&this.build(),this.model.call(t,e)},e.prototype.build=function(t){if(ef(t),0===this.inputs.length||0===this.outputs.length)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new Ld({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.model.updatable=this.updatable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0},e.prototype.countParams=function(){return this.built||this.build(),t.prototype.countParams.call(this)},e.prototype.summary=function(e,n,r){void 0===r&&(r=console.log),this.built||this.build(),t.prototype.summary.call(this,e,n,r)},e.prototype.setWeights=function(t){null==this.model&&this.build(),this.model.setWeights(t)},Object.defineProperty(e.prototype,"updatable",{get:function(){return this._updatable},set:function(t){this.built&&(this.model.updatable=t),this._updatable=t},enumerable:!0,configurable:!0}),e.prototype.evaluate=function(t,e,n){if(void 0===n&&(n={}),!this.built)throw new yp("The model needs to be compiled before being used.");return this.model.evaluate(t,e,n)},e.prototype.evaluateDataset=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(n){if(!this.built)throw new yp("The model needs to be compiled before being used.");return[2,this.model.evaluateDataset(t,e)]})})},e.prototype.predict=function(t,e){return void 0===e&&(e={}),null==this.model&&this.build(),this.model.predict(t,e)},e.prototype.predictOnBatch=function(t){return null==this.model&&this.build(),this.model.predictOnBatch(t)},e.prototype.compile=function(t){this.build(),this.model.compile(t),this.optimizer=this.model.optimizer,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames},e.prototype.fit=function(t,e,n){return void 0===n&&(n={}),ap(this,void 0,void 0,function(){return sp(this,function(r){if(!this.built)throw new yp("The model needs to be compiled before being used.");return[2,this.model.fit(t,e,n)]})})},e.prototype.fitDataset=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(n){if(!this.built)throw new yp("The model needs to be compiled before being used.");return[2,this.model.fitDataset(t,e)]})})},e.prototype.trainOnBatch=function(t,e){return ap(this,void 0,void 0,function(){return sp(this,function(n){return[2,this.model.trainOnBatch(t,e)]})})},e.fromConfig=function(t,n,r,i){var o;void 0===r&&(r={}),void 0===i&&(i=!1);var a={};if(n instanceof Array){if(null==n[0].className||"Merge"===n[0].className)throw new vp("Legacy serialization format not supported yet.");o=n}else X.assert(null!=n.layers,function(){return"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."}),o=n.layers,delete n.layers,a=n;var s=new t(a);if(!(s instanceof e))throw new bp("Sequential.fromConfig called on non-Sequential input: "+s);for(var u=0,l=o;u<l.length;u++){var c=cd(l[u],void 0,i);i&&c.setFastWeightInitDuringBuild(!0),s.add(c)}return s},Object.defineProperty(e.prototype,"stopTraining",{set:function(t){this.model.stopTraining=t},enumerable:!0,configurable:!0}),e.prototype.getConfig=function(){for(var t=[],e=0,n=this.layers;e<n.length;e++){var r=n[e],i={};i.className=r.getClassName(),i.config=r.getConfig(),t.push(i)}return t},e.className="Sequential",e}(Ld);function Pd(t){return gf(t)}Fc.registerClass(zd);var Bd=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.getConfig=function(){return{}},e}(Fc.Serializable),Ud=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t,e){return void 0===e&&(e=1),function(t,e){if(void 0===e&&(e=1),1!==e)throw new bp("Support for alpha values other than 1 ("+e+") is not implemented yet.");return Bu(t)}(t,e)},e.className="elu",e}(Bd);Fc.registerClass(Ud);var Wd=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t){return ju(t)},e.className="selu",e}(Bd);Fc.registerClass(Wd);var Vd=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t){return Vu(t)},e.className="relu",e}(Bd);Fc.registerClass(Vd);var jd=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t){return qt(function(){return xu(mp(6),Vu(t))})},e.className="relu6",e}(Bd);Fc.registerClass(jd);var qd=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t){return t},e.className="linear",e}(Bd);Fc.registerClass(qd);var Gd=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t){return La(t)},e.className="sigmoid",e}(Bd);Fc.registerClass(Gd);var Hd=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t){return function(t){return qt(function(){var e=hu(mp(.5),Eu(mp(.2),t));return xa(e,0,1)})}(t)},e.className="hardSigmoid",e}(Bd);Fc.registerClass(Hd);var Kd=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t){return Ba(t)},e.className="softplus",e}(Bd);Fc.registerClass(Kd);var $d=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t){return function(t){return qt(function(){return gu(t,hu(mp(1),fa(t)))})}(t)},e.className="softsign",e}(Bd);Fc.registerClass($d);var Xd=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t){return qa(t)},e.className="tanh",e}(Bd);Fc.registerClass(Xd);var Yd=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t,e){return void 0===e&&(e=-1),Ce(t,e)},e.className="softmax",e}(Bd);function Jd(t){return t.getClassName()}function Zd(t,e){return void 0===e&&(e={}),Rp(t,Fc.SerializationMap.getMap().classNameMap,e,"activation")}function Qd(t){var e;return null==t?Zd(e={className:"linear",config:{}}):"string"==typeof t?((e={}).className=t,e.config={},Zd(e)):t instanceof Bd?t:Zd(t)}Fc.registerClass(Yd);var tm=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e}(Fc.Serializable),em=function(t){function e(e){var n=t.call(this)||this,r=null==e||null==e.l1?.01:e.l1,i=null==e||null==e.l2?.01:e.l2;return n.hasL1=0!==r,n.hasL2=0!==i,n.l1=mp(r),n.l2=mp(i),n}return rp(e,t),e.prototype.apply=function(t){var e=this;return qt(function(){var n=Pe([1]);return e.hasL1&&(n=hu(n,Zs(Eu(e.l1,fa(t))))),e.hasL2&&(n=hu(n,Zs(Eu(e.l2,Eh(t))))),n.asScalar()})},e.prototype.getConfig=function(){return{l1:this.l1.dataSync()[0],l2:this.l2.dataSync()[0]}},e.fromConfig=function(t,e){return new t({l1:e.l1,l2:e.l2})},e.className="L1L2",e}(tm);Fc.registerClass(em);var nm={l1l2:"L1L2"};function rm(t){return Tp(t)}function im(t,e){return void 0===e&&(e={}),Rp(t,Fc.SerializationMap.getMap().classNameMap,e,"regularizer")}function om(t){return null==t?null:"string"==typeof t?im({className:t in nm?nm[t]:t,config:{}}):t instanceof tm?t:im(t)}var am=function(t){function e(e){var n=t.call(this,null==e?{}:e)||this;return n.supportsMasking=!0,null!=e&&(n.maxValue=e.maxValue),n}return rp(e,t),e.prototype.call=function(t,e){t=tf(t);var n=Vu(t);return null!=this.maxValue&&(n=xa(n,0,this.maxValue)),n},e.prototype.computeOutputShape=function(t){return t},e.prototype.getConfig=function(){var e={maxValue:this.maxValue},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="ReLU",e}(ff);Fc.registerClass(am);var sm=function(t){function e(e){var n=t.call(this,null==e?{}:e)||this;return n.DEFAULT_ALPHA=.3,null==e&&(e={}),n.alpha=null==e.alpha?n.DEFAULT_ALPHA:e.alpha,n}return rp(e,t),e.prototype.call=function(t,e){var n=tf(t);return Uu(n,this.alpha)},e.prototype.computeOutputShape=function(t){return t},e.prototype.getConfig=function(){var e={alpha:this.alpha},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="LeakyReLU",e}(ff);Fc.registerClass(sm);var um=function(t){function e(e){var n=t.call(this,null==e?{}:e)||this;if(n.DEFAULT_ALPHA_INITIALIZER="zeros",null==e&&(e={}),n.supportsMasking=!0,n.alphaInitializer=Yh(e.alphaInitializer||n.DEFAULT_ALPHA_INITIALIZER),n.alphaRegularizer=om(e.alphaRegularizer),n.alphaConstraint=Hp(e.alphaConstraint),null==e.sharedAxes)n.sharedAxes=null;else if(Array.isArray(e.sharedAxes))n.sharedAxes=e.sharedAxes;else{if("number"!=typeof e.sharedAxes)throw new vp("Expected sharedAxes to be a number or an array of numbers, but got "+e.sharedAxes);n.sharedAxes=[e.sharedAxes]}return n}return rp(e,t),e.prototype.build=function(t){var e=(t=ef(t)).slice(1);if(null!=this.sharedAxes)for(var n=0,r=this.sharedAxes;n<r.length;n++)e[(o=r[n])-1]=1;this.alpha=this.addWeight("alpha",e,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);var i={};if(null!=this.sharedAxes)for(var o=1;o<t.length;++o)i[o]=t[o];this.inputSpec=[new uf({ndim:t.length,axes:i})],this.built=!0},e.prototype.call=function(t,e){return t=tf(t),Wu(t,this.alpha.read())},e.prototype.getConfig=function(){var e={alphaInitializer:Xh(this.alphaInitializer),alphaRegularizer:rm(this.alphaRegularizer),alphaConstraint:qp(this.alphaConstraint),sharedAxes:this.sharedAxes},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="PReLU",e}(ff);Fc.registerClass(um);var lm=function(t){function e(e){var n=t.call(this,null==e?{}:e)||this;if(n.DEFAULT_ALPHA=1,null==e&&(e={}),null!=e.alpha&&e.alpha!==n.DEFAULT_ALPHA)throw new bp("Non-default alpha value ("+e.alpha+") is not supported by the ELU layer yet.");return n.alpha=null==e.alpha?n.DEFAULT_ALPHA:e.alpha,n}return rp(e,t),e.prototype.call=function(t,e){var n=tf(t);return Bu(n)},e.prototype.computeOutputShape=function(t){return t},e.prototype.getConfig=function(){var e={alpha:this.alpha},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="ELU",e}(ff);Fc.registerClass(lm);var cm=function(t){function e(e){var n=t.call(this,null==e?{}:e)||this;return n.DEFAULT_THETA=1,null==e&&(e={}),n.theta=null==e.theta?n.DEFAULT_THETA:e.theta,n.thetaTensor=mp(n.theta),n}return rp(e,t),e.prototype.call=function(t,e){var n=tf(t);return n.mul(dh(n.greater(this.thetaTensor),"float32"))},e.prototype.computeOutputShape=function(t){return t},e.prototype.getConfig=function(){var e={theta:this.theta},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="ThresholdedReLU",e}(ff);Fc.registerClass(cm);var pm=function(t){function e(e){var n=t.call(this,null==e?{}:e)||this;return n.DEFAULT_AXIS=1,null==e&&(e={}),n.softmax=(new Yd).apply,n.axis=null==e.axis?n.DEFAULT_AXIS:e.axis,n}return rp(e,t),e.prototype.call=function(t,e){var n=tf(t);return this.softmax(n,this.axis)},e.prototype.computeOutputShape=function(t){return t},e.prototype.getConfig=function(){var e={axis:this.axis},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="Softmax",e}(ff);function hm(t,e,n){if("number"==typeof t)return xp(t,e);if(t.length!==e)throw new vp("The "+n+" argument must be a tuple of "+e+" integers. Received: "+t.length+" elements.");for(var r=0;r<e;++r){var i=t[r];if(!uh(i))throw new vp("The "+n+" argument must be a tuple of "+e+" integers. Received: "+JSON.stringify(t)+" including a non-integer number "+i)}return t}function fm(t,e,n,r,i){return void 0===i&&(i=1),null==t?t:(o="same"===n?t:t-(e+(e-1)*(i-1))+1,Math.floor((o+r-1)/r));var o}function dm(t,e,n,r){if(null==t)return null;if("valid"===r)t=t*e+hh([n-e,0]);else{if("same"!==r)throw new vp("Unsupport padding mode: "+r+".");t*=e}return t}function mm(t,e){return qt(function(){return Qp(e),"channelsFirst"===e?qu(t,[0,2,3,1]):t})}Fc.registerClass(pm);var gm=function(t){function e(n,r){var i=t.call(this,r)||this;if(i.bias=null,i.DEFAULT_KERNEL_INITIALIZER="glorotNormal",i.DEFAULT_BIAS_INITIALIZER="zeros",e.verifyArgs(r),i.rank=n,Fp(i.rank,"rank"),1!==i.rank&&2!==i.rank)throw new bp("Convolution layer for rank other than 1 or 2 ("+i.rank+") is not implemented yet.");if(i.kernelSize=hm(r.kernelSize,n,"kernelSize"),i.strides=hm(null==r.strides?1:r.strides,n,"strides"),i.padding=null==r.padding?"valid":r.padding,th(i.padding),i.dataFormat=null==r.dataFormat?"channelsLast":r.dataFormat,Qp(i.dataFormat),i.activation=Qd(r.activation),i.useBias=null==r.useBias||r.useBias,i.biasInitializer=Yh(r.biasInitializer||i.DEFAULT_BIAS_INITIALIZER),i.biasConstraint=Hp(r.biasConstraint),i.biasRegularizer=om(r.biasRegularizer),i.activityRegularizer=om(r.activityRegularizer),i.dilationRate=hm(null==r.dilationRate?1:r.dilationRate,n,"dilationRate"),1===i.rank&&Array.isArray(i.dilationRate)&&1!==i.dilationRate.length)throw new vp("dilationRate must be a number or an array of a single number for 1D convolution, but received "+JSON.stringify(i.dilationRate));if(2===i.rank)if("number"==typeof i.dilationRate)i.dilationRate=[i.dilationRate,i.dilationRate];else if(2!==i.dilationRate.length)throw new vp("dilationRate must be a number or array of two numbers for 2D convolution, but received "+JSON.stringify(i.dilationRate));return i}return rp(e,t),e.verifyArgs=function(t){if(Np("kernelSize"in t,"required key 'kernelSize' not in config"),"number"!=typeof t.kernelSize&&!Lp(t.kernelSize,"number",1,2))throw new vp("BaseConv expects config.kernelSize to be number or number[] with length 1 or 2, but received "+JSON.stringify(t.kernelSize)+".")},e.prototype.getConfig=function(){var e={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:Jd(this.activation),useBias:this.useBias,biasInitializer:Xh(this.biasInitializer),biasRegularizer:rm(this.biasRegularizer),activityRegularizer:rm(this.activityRegularizer),biasConstraint:qp(this.biasConstraint)},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e}(ff),ym=function(t){function e(n,r){var i=t.call(this,n,r)||this;return i.kernel=null,e.verifyArgs(r),i.filters=r.filters,Fp(i.filters,"filters"),i.kernelInitializer=Yh(r.kernelInitializer||i.DEFAULT_KERNEL_INITIALIZER),i.kernelConstraint=Hp(r.kernelConstraint),i.kernelRegularizer=om(r.kernelRegularizer),i}return rp(e,t),e.prototype.build=function(t){var e;t=ef(t);var n="channelsFirst"===this.dataFormat?1:t.length-1;if(null==t[n])throw new vp("The channel dimension of the input should be defined. Found "+t[n]);var r=t[n],i=this.kernelSize.concat([r,this.filters]);this.kernel=this.addWeight("kernel",i,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:(e={},e[n]=r,e)}],this.built=!0},e.prototype.call=function(t,e){var n=this;return qt(function(){var e;t=tf(t);var r=null==n.bias?null:n.bias.read();if(1===n.rank)e=function(t,e,n,r,i,o,a){return void 0===r&&(r=1),void 0===i&&(i="valid"),void 0===a&&(a=1),qt(function(){if(null==o&&(o="channelsLast"),Qp(o),3!==t.shape.length)throw new vp("The input of a conv1dWithBias operation should be 3, but is "+t.shape.length+" instead.");if(3!==e.shape.length)throw new vp("The kernel for a conv1dWithBias operation should be 3, but is "+e.shape.length+" instead");if(null!=n&&1!==n.shape.length)throw new vp("The bias for a conv1dWithBias operation should be 1, but is "+e.shape.length+" instead");if("channelsFirst"===o&&(t=qu(t,[0,2,1])),"causal"===i)throw new bp("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");var s=ys(t,e,r,"same"===i?"same":"valid","NWC",a);return null!=n&&(s=Ih(s,n)),s})}(t,n.kernel.read(),r,n.strides[0],n.padding,n.dataFormat,n.dilationRate[0]);else if(2===n.rank)e=function(t,e,n,r,i,o,a){return void 0===r&&(r=[1,1]),void 0===i&&(i="valid"),qt(function(){if(null==o&&(o="channelsLast"),Qp(o),3!==t.rank&&4!==t.rank)throw new vp("conv2dWithBias expects input to be of rank 3 or 4, but received "+t.rank+".");if(3!==e.rank&&4!==e.rank)throw new vp("conv2dWithBias expects kernel to be of rank 3 or 4, but received "+t.rank+".");var s=mm(t,o);if("causal"===i)throw new bp("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return s=vs(s,e,r,"same"===i?"same":"valid","NHWC",a),null!=n&&(s=Ih(s,n)),"channelsFirst"===o&&(s=qu(s,[0,3,1,2])),s})}(t,n.kernel.read(),r,n.strides,n.padding,n.dataFormat,n.dilationRate);else if(3===n.rank)throw new bp("3D convolution is not implemented yet.");return null!=n.activation&&(e=n.activation.apply(e)),e})},e.prototype.computeOutputShape=function(t){t=ef(t);for(var e=[],n="channelsLast"===this.dataFormat?t.slice(1,t.length-1):t.slice(2),r=0;r<n.length;++r){var i=fm(n[r],this.kernelSize[r],this.padding,this.strides[r],"number"==typeof this.dilationRate?this.dilationRate:this.dilationRate[r]);e.push(i)}var o=[t[0]];return"channelsLast"===this.dataFormat?(o=o.concat(e)).push(this.filters):(o.push(this.filters),o=o.concat(e)),o},e.prototype.getConfig=function(){var e={filters:this.filters,kernelInitializer:Xh(this.kernelInitializer),kernelRegularizer:rm(this.kernelRegularizer),kernelConstraint:qp(this.kernelConstraint)},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.verifyArgs=function(t){if(!("filters"in t)||"number"!=typeof t.filters||t.filters<1)throw new vp("Convolution layer expected config.filters to be a 'number' > 0 but got "+JSON.stringify(t.filters))},e}(gm),vm=function(t){function e(n){var r=t.call(this,2,n)||this;return e.verifyArgs(n),r}return rp(e,t),e.prototype.getConfig=function(){var e=t.prototype.getConfig.call(this);return delete e.rank,e},e.verifyArgs=function(t){if("number"!=typeof t.kernelSize&&!Lp(t.kernelSize,"number",1,2))throw new vp("Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received "+JSON.stringify(t.kernelSize)+".")},e.className="Conv2D",e}(ym);Fc.registerClass(vm);var bm=function(t){function e(e){var n=t.call(this,e)||this;if(n.inputSpec=[new uf({ndim:4})],"same"!==n.padding&&"valid"!==n.padding)throw new vp("Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode "+n.padding);return n}return rp(e,t),e.prototype.build=function(t){var e;if(4!==(t=ef(t)).length)throw new vp("Input should have rank 4; Received input shape: "+JSON.stringify(t));var n="channelsFirst"===this.dataFormat?1:t.length-1;if(null==t[n])throw new vp("The channel dimension of the inputs should be defined. Found `None`.");var r=t[n],i=this.kernelSize.concat([this.filters,r]);this.kernel=this.addWeight("kernel",i,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new uf({ndim:4,axes:(e={},e[n]=r,e)})],this.built=!0},e.prototype.call=function(t,e){var n=this;return qt(function(){var e=tf(t);if(4!==e.shape.length)throw new vp("Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-"+e.shape.length);var r,i,o=e.shape,a=o[0];"channelsFirst"===n.dataFormat?(r=2,i=3):(r=1,i=2);var s=o[r],u=o[i],l=n.kernelSize[0],c=n.kernelSize[1],p=n.strides[0],h=n.strides[1],f=[a,dm(s,p,l,n.padding),dm(u,h,c,n.padding),n.filters];"channelsLast"!==n.dataFormat&&(e=qu(e,[0,2,3,1]));var d=Ss(e,n.kernel.read(),f,n.strides,n.padding);return"channelsLast"!==n.dataFormat&&(d=qu(d,[0,3,1,2])),null!=n.bias&&(d=Ih(d,n.bias.read(),n.dataFormat)),null!=n.activation&&(d=n.activation.apply(d)),d})},e.prototype.computeOutputShape=function(t){var e,n,r,i=(t=ef(t)).slice();"channelsFirst"===this.dataFormat?(e=1,n=2,r=3):(e=3,n=1,r=2);var o=this.kernelSize[0],a=this.kernelSize[1],s=this.strides[0],u=this.strides[1];return i[e]=this.filters,i[n]=dm(i[n],s,o,this.padding),i[r]=dm(i[r],u,a,this.padding),i},e.prototype.getConfig=function(){var e=t.prototype.getConfig.call(this);return delete e.dilationRate,e},e.className="Conv2DTranspose",e}(vm);Fc.registerClass(bm);var wm=function(t){function e(e){return t.call(this,2,e)||this}return rp(e,t),e.className="SeparableConv2D",e}(function(t){function e(e,n){var r=t.call(this,e,n)||this;if(r.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",r.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",r.depthwiseKernel=null,r.pointwiseKernel=null,null==n.filters)throw new vp("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(null!=n.kernelInitializer||null!=n.kernelRegularizer||null!=n.kernelConstraint)throw new vp("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(null!=n.padding&&"same"!==n.padding&&"valid"!==n.padding)throw new vp("SeparableConv"+r.rank+"D supports only padding modes: 'same' and 'valid', but received "+JSON.stringify(n.padding));return r.depthMultiplier=null==n.depthMultiplier?1:n.depthMultiplier,r.depthwiseInitializer=Yh(n.depthwiseInitializer||r.DEFAULT_DEPTHWISE_INITIALIZER),r.depthwiseRegularizer=om(n.depthwiseRegularizer),r.depthwiseConstraint=Hp(n.depthwiseConstraint),r.pointwiseInitializer=Yh(n.depthwiseInitializer||r.DEFAULT_POINTWISE_INITIALIZER),r.pointwiseRegularizer=om(n.pointwiseRegularizer),r.pointwiseConstraint=Hp(n.pointwiseConstraint),r}return rp(e,t),e.prototype.build=function(t){var e;if((t=ef(t)).length<this.rank+2)throw new vp("Inputs to SeparableConv"+this.rank+"D should have rank "+(this.rank+2)+", but received input shape: "+JSON.stringify(t));var n="channelsFirst"===this.dataFormat?1:t.length-1;if(null==t[n]||t[n]<0)throw new vp("The channel dimension of the inputs should be defined, but found "+JSON.stringify(t[n]));for(var r=t[n],i=this.kernelSize.concat([r,this.depthMultiplier]),o=[],a=0;a<this.rank;++a)o.push(1);o.push(r*this.depthMultiplier,this.filters),this.depthwiseKernel=this.addWeight("depthwise_kernel",i,"float32",this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.pointwiseKernel=this.addWeight("pointwise_kernel",o,"float32",this.pointwiseInitializer,this.pointwiseRegularizer,!0,this.pointwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.inputSpec=[new uf({ndim:this.rank+2,axes:(e={},e[n]=r,e)})],this.built=!0},e.prototype.call=function(t,e){var n=this;return qt(function(){var e;if(t=tf(t),1===n.rank)throw new bp("1D separable convolution is not implemented yet.");return 2===n.rank&&("channelsFirst"===n.dataFormat&&(t=qu(t,[0,2,3,1])),e=Ns(t,n.depthwiseKernel.read(),n.pointwiseKernel.read(),n.strides,n.padding,n.dilationRate,"NHWC")),n.useBias&&(e=Ih(e,n.bias.read(),n.dataFormat)),null!=n.activation&&(e=n.activation.apply(e)),"channelsFirst"===n.dataFormat&&(e=qu(e,[0,3,1,2])),e})},e.prototype.getConfig=function(){var e=t.prototype.getConfig.call(this);return delete e.rank,delete e.kernelInitializer,delete e.kernelRegularizer,delete e.kernelConstraint,e.depthwiseInitializer=Xh(this.depthwiseInitializer),e.pointwiseInitializer=Xh(this.pointwiseInitializer),e.depthwiseRegularizer=rm(this.depthwiseRegularizer),e.pointwiseRegularizer=rm(this.pointwiseRegularizer),e.depthwiseConstraint=qp(this.depthwiseConstraint),e.pointwiseConstraint=qp(this.pointwiseConstraint),e},e.className="SeparableConv",e}(ym));Fc.registerClass(wm);var xm=function(t){function e(n){var r=t.call(this,1,n)||this;return e.verifyArgs(n),r.inputSpec=[{ndim:3}],r}return rp(e,t),e.prototype.getConfig=function(){var e=t.prototype.getConfig.call(this);return delete e.rank,delete e.dataFormat,e},e.verifyArgs=function(t){if("number"!=typeof t.kernelSize&&!Lp(t.kernelSize,"number",1,1))throw new vp("Conv1D expects config.kernelSize to be number or number[] with length 1, but received "+JSON.stringify(t.kernelSize)+".")},e.className="Conv1D",e}(ym);Fc.registerClass(xm);var Nm=function(t){function e(e){var n=t.call(this,e)||this;return"number"==typeof e.cropping?n.cropping=[[e.cropping,e.cropping],[e.cropping,e.cropping]]:"number"==typeof e.cropping[0]?n.cropping=[[e.cropping[0],e.cropping[0]],[e.cropping[1],e.cropping[1]]]:n.cropping=e.cropping,n.dataFormat=void 0===e.dataFormat?"channelsLast":e.dataFormat,n.inputSpec=[{ndim:4}],n}return rp(e,t),e.prototype.computeOutputShape=function(t){return"channelsFirst"===this.dataFormat?[t[0],t[1],t[2]-this.cropping[0][0]-this.cropping[0][1],t[3]-this.cropping[1][0]-this.cropping[1][1]]:[t[0],t[1]-this.cropping[0][0]-this.cropping[0][1],t[2]-this.cropping[1][0]-this.cropping[1][1],t[3]]},e.prototype.call=function(t,e){var n=this;return qt(function(){return t=tf(t),"channelsLast"===n.dataFormat?vh(vh(t,n.cropping[0][0],t.shape[1]-n.cropping[0][0]-n.cropping[0][1],2),n.cropping[1][0],t.shape[2]-n.cropping[1][1]-n.cropping[1][0],3):vh(vh(t,n.cropping[0][0],t.shape[2]-n.cropping[0][0]-n.cropping[0][1],3),n.cropping[1][0],t.shape[3]-n.cropping[1][1]-n.cropping[1][0],4)})},e.prototype.getConfig=function(){var e={cropping:this.cropping,dataFormat:this.dataFormat},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="Cropping2D",e}(ff);Fc.registerClass(Nm);var Sm=function(t){function e(e){var n=t.call(this,e)||this;return n.DEFAULT_SIZE=[2,2],n.inputSpec=[{ndim:4}],n.size=null==e.size?n.DEFAULT_SIZE:e.size,n.dataFormat=null==e.dataFormat?"channelsLast":e.dataFormat,n}return rp(e,t),e.prototype.computeOutputShape=function(t){if("channelsFirst"===this.dataFormat){var e=null==t[2]?null:this.size[0]*t[2],n=null==t[3]?null:this.size[1]*t[3];return[t[0],t[1],e,n]}return e=null==t[1]?null:this.size[0]*t[1],n=null==t[2]?null:this.size[1]*t[2],[t[0],e,n,t[3]]},e.prototype.call=function(t,e){var n=this;return qt(function(){var e=tf(t),r=e.shape;if("channelsFirst"===n.dataFormat){e=qu(e,[0,2,3,1]);var i=n.size[0]*r[2],o=n.size[1]*r[3],a=e.resizeNearestNeighbor([i,o]);return qu(a,[0,3,1,2])}return i=n.size[0]*r[1],o=n.size[1]*r[2],e.resizeNearestNeighbor([i,o])})},e.prototype.getConfig=function(){var e={size:this.size,dataFormat:this.dataFormat},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="UpSampling2D",e}(ff);Fc.registerClass(Sm);var Cm=function(t){function e(e){var n=t.call(this,2,e)||this;return n.depthwiseKernel=null,n.depthMultiplier=null==e.depthMultiplier?1:e.depthMultiplier,n.depthwiseInitializer=Yh(e.depthwiseInitializer||n.DEFAULT_KERNEL_INITIALIZER),n.depthwiseConstraint=Hp(e.depthwiseConstraint),n.depthwiseRegularizer=om(e.depthwiseRegularizer),n}return rp(e,t),e.prototype.build=function(t){if((t=ef(t)).length<4)throw new vp("Inputs to DepthwiseConv2D should have rank 4. Received input shape: "+JSON.stringify(t)+".");var e="channelsFirst"===this.dataFormat?1:3;if(null==t[e]||t[e]<0)throw new vp("The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not ("+t[e]+").");var n=t[e],r=[this.kernelSize[0],this.kernelSize[1],n,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",r,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[n*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0},e.prototype.call=function(t,e){var n=this;return qt(function(){var e=function(t,e,n,r,i,o){return void 0===n&&(n=[1,1]),void 0===r&&(r="valid"),qt(function(){null==i&&(i="channelsLast"),Qp(i);var a=mm(t,i);if(4!==t.rank)throw new vp("Input for depthwiseConv2d is required to be 4-D, but is instead "+t.rank+"-D");if(4!==e.rank)throw new vp("depthwiseKernel is required to be 4-D, but is instead "+e.rank+"-D");return a=xs(a,e,n,"same"===r?"same":"valid","NHWC",o),"channelsFirst"===i&&(a=qu(a,[0,3,1,2])),a})}(t=tf(t),n.depthwiseKernel.read(),n.strides,n.padding,n.dataFormat,null);return n.useBias&&(e=Ih(e,n.bias.read(),n.dataFormat)),null!=n.activation&&(e=n.activation.apply(e)),e})},e.prototype.computeOutputShape=function(t){t=ef(t);var e="channelsFirst"===this.dataFormat?t[2]:t[1],n="channelsFirst"===this.dataFormat?t[3]:t[2],r="channelsFirst"===this.dataFormat?t[1]*this.depthMultiplier:t[3]*this.depthMultiplier,i=fm(e,this.kernelSize[0],this.padding,this.strides[0]),o=fm(n,this.kernelSize[1],this.padding,this.strides[1]);return"channelsFirst"===this.dataFormat?[t[0],r,i,o]:[t[0],i,o,r]},e.prototype.getConfig=function(){var e=t.prototype.getConfig.call(this);return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=Xh(this.depthwiseInitializer),e.depthwiseRegularizer=rm(this.depthwiseRegularizer),e.depthwiseConstraint=qp(this.depthwiseRegularizer),e},e.className="DepthwiseConv2D",e}(gm);Fc.registerClass(Cm);var Em=function(t){function e(e){var n=t.call(this,e)||this;if(n.rate=Math.max(Math.min(e.rate,1),0),n.rateScalar=mp(n.rate),n.noiseShape=e.noiseShape,n.seed=e.seed,null!=n.seed)throw new bp("Non-default seed is not implemented in Dropout layer yet: "+n.seed);return n.supportsMasking=!0,n}return rp(e,t),e.prototype.getNoiseShape=function(t){if(null==this.noiseShape)return this.noiseShape;for(var e=t.shape,n=[],r=0;r<this.noiseShape.length;++r)n.push(null==this.noiseShape[r]?e[r]:this.noiseShape[r]);return n},e.prototype.call=function(t,e){var n=this;return qt(function(){n.invokeCallHook(t,e);var r=tf(t);if(null!=n.noiseShape&&!X.arraysEqual(r.shape,n.noiseShape))throw new bp("Non-default noise shape is not implemented in Dropout layer yet: "+JSON.stringify(n.noiseShape));if(0<n.rate&&n.rate<1){var i=null!=e.training&&e.training,o=n.getNoiseShape(r);return Ah(function(){return kh(r,n.rateScalar,o,n.seed)},function(){return r},i)}return t})},e.prototype.getConfig=function(){var e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.prototype.dispose=function(){var e=t.prototype.dispose.call(this);return this.rateScalar.isDisposed||(this.rateScalar.dispose(),e.numDisposedVariables++),e},e.className="Dropout",e}(ff);Fc.registerClass(Em);var Im=function(t){function e(e){var n=t.call(this,e)||this;if(n.activation=null,n.useBias=!0,n.kernel=null,n.bias=null,n.DEFAULT_KERNEL_INITIALIZER="glorotNormal",n.DEFAULT_BIAS_INITIALIZER="zeros",null==e.batchInputShape&&null==e.inputShape&&null!=e.inputDim){var r=null;null!=e.batchSize&&(r=e.batchSize),n.batchInputShape=[r,e.inputDim]}return n.units=e.units,Fp(n.units,"units"),n.activation=Qd(e.activation),null!=e.useBias&&(n.useBias=e.useBias),n.kernelInitializer=Yh(e.kernelInitializer||n.DEFAULT_KERNEL_INITIALIZER),n.biasInitializer=Yh(e.biasInitializer||n.DEFAULT_BIAS_INITIALIZER),n.kernelConstraint=Hp(e.kernelConstraint),n.biasConstraint=Hp(e.biasConstraint),n.kernelRegularizer=om(e.kernelRegularizer),n.biasRegularizer=om(e.biasRegularizer),n.activityRegularizer=om(e.activityRegularizer),n.supportsMasking=!0,n.inputSpec=[{minNDim:2}],n}return rp(e,t),e.prototype.build=function(t){var e,n=(t=ef(t))[t.length-1];null==this.kernel&&(this.kernel=this.addWeight("kernel",[n,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:(e={},e[-1]=n,e)}],this.built=!0},e.prototype.computeOutputShape=function(t){var e=(t=ef(t)).slice();return e[e.length-1]=this.units,e},e.prototype.call=function(t,e){var n=this;return qt(function(){n.invokeCallHook(t,e);var r=Sh(tf(t),n.kernel.read());return null!=n.bias&&(r=Ih(r,n.bias.read())),null!=n.activation&&(r=n.activation.apply(r)),r})},e.prototype.getConfig=function(){var e={units:this.units,activation:Jd(this.activation),useBias:this.useBias,kernelInitializer:Xh(this.kernelInitializer),biasInitializer:Xh(this.biasInitializer),kernelRegularizer:rm(this.kernelRegularizer),biasRegularizer:rm(this.biasRegularizer),activityRegularizer:rm(this.activityRegularizer),kernelConstraint:qp(this.kernelConstraint),biasConstraint:qp(this.biasConstraint)},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="Dense",e}(ff);Fc.registerClass(Im);var km=function(t){function e(e){var n=t.call(this,e||{})||this;return n.inputSpec=[{minNDim:3}],n}return rp(e,t),e.prototype.computeOutputShape=function(t){for(var e=0,n=(t=ef(t)).slice(1);e<n.length;e++)if(null==n[e])throw new vp('The shape of the input to "Flatten" is not fully defined (got '+t.slice(1)+'). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.');return[t[0],lh(t,1)]},e.prototype.call=function(t,e){var n=this;return qt(function(){return n.invokeCallHook(t,e),function(t){if(t.rank<=1)throw new vp("batchFlatten requires a minimum rank of 2. Got rank: "+t.rank+".");var e=[t.shape[0],lh(t.shape,1)];return t.reshape(e)}(tf(t))})},e.className="Flatten",e}(ff);Fc.registerClass(km);var Am=function(t){function e(e){var n=t.call(this,e)||this;return n.supportsMasking=!0,n.activation=Qd(e.activation),n}return rp(e,t),e.prototype.call=function(t,e){var n=this;return qt(function(){n.invokeCallHook(t,e);var r=tf(t);return n.activation.apply(r)})},e.prototype.getConfig=function(){var e={activation:Jd(this.activation)},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="Activation",e}(ff);Fc.registerClass(Am);var Tm=function(t){function e(e){var n=t.call(this,e)||this;return n.n=e.n,n.inputSpec=[{ndim:2}],n}return rp(e,t),e.prototype.computeOutputShape=function(t){return[t[0],this.n,t[1]]},e.prototype.call=function(t,e){var n=this;return qt(function(){return function(t,e){return qt(function(){if(2!==t.shape.length)throw new vp("repeat() expects a rank-2 tensor, but received a rank-"+t.shape.length+" tensor.");return xh(mh(t,1),[1,e,1])})}(t=tf(t),n.n)})},e.prototype.getConfig=function(){var e={n:this.n},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="RepeatVector",e}(ff);Fc.registerClass(Tm);var Rm=function(t){function e(e){var n=t.call(this,e)||this;n.targetShape=e.targetShape;for(var r=0;r<n.targetShape.length;++r)n.isUnknown(n.targetShape[r])&&(n.targetShape[r]=null);return n}return rp(e,t),e.prototype.isUnknown=function(t){return t<0||null==t},e.prototype.fixUnknownDimension=function(t,e){for(var n="Total size of new array must be unchanged.",r=e.slice(),i=1,o=null,a=0;a<r.length;++a){var s=r[a];if(this.isUnknown(s)){if(null!==o)throw new vp("Can only specifiy one unknown dimension.");o=a}else i*=s}var u=lh(t);if(null!==o){if(0===i||u%i!=0)throw new vp(n);r[o]=u/i}else if(u!==i)throw new vp(n);return r},e.prototype.computeOutputShape=function(t){for(var e=!1,n=0;n<t.length;++n)if(this.isUnknown(t[n])){e=!0;break}return e?t.slice(0,1).concat(this.targetShape):t.slice(0,1).concat(this.fixUnknownDimension(t.slice(1),this.targetShape))},e.prototype.call=function(t,e){var n=this;return qt(function(){n.invokeCallHook(t,e);var r=tf(t),i=r.shape,o=i.slice(0,1).concat(n.fixUnknownDimension(i.slice(1),n.targetShape));return r.reshape(o)})},e.prototype.getConfig=function(){var e={targetShape:this.targetShape},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="Reshape",e}(ff);Fc.registerClass(Rm);var Dm=function(t){function e(e){var n=t.call(this,e)||this;if(null==e.dims)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error("Permute constructor requires `dims` to be an Array, but received "+e.dims+" instead.");var r=fh(1,e.dims.length+1);if(!X.arraysEqual(e.dims.slice().sort(),r))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");return n.dims=e.dims,n.dimsIncludingBatch=[0].concat(n.dims),n.inputSpec=[new uf({ndim:n.dims.length+1})],n}return rp(e,t),e.prototype.computeOutputShape=function(t){var e=(t=ef(t)).slice();return this.dims.forEach(function(n,r){e[r+1]=t[n]}),e},e.prototype.call=function(t,e){return qu(tf(t),this.dimsIncludingBatch)},e.prototype.getConfig=function(){var e={dims:this.dims},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="Permute",e}(ff);Fc.registerClass(Dm);var Om=function(t){function e(e){var n=t.call(this,e)||this;if(n.embeddings=null,n.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",null==e.batchInputShape&&null==e.inputShape){var r=null;null!=e.batchSize&&(r=e.batchSize),null==e.inputLength?n.batchInputShape=[r,null]:n.batchInputShape=[r].concat(Ep(e.inputLength))}return n.inputDim=e.inputDim,Fp(n.inputDim,"inputDim"),n.outputDim=e.outputDim,Fp(n.outputDim,"outputDim"),n.embeddingsInitializer=Yh(e.embeddingsInitializer||n.DEFAULT_EMBEDDINGS_INITIALIZER),n.embeddingsRegularizer=om(e.embeddingsRegularizer),n.activityRegularizer=om(e.activityRegularizer),n.embeddingsConstraint=Hp(e.embeddingsConstraint),n.maskZero=e.maskZero,n.supportsMasking=e.maskZero,n.inputLength=e.inputLength,n}return rp(e,t),e.prototype.build=function(t){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0},e.prototype.warnOnIncompatibleInputShape=function(t){},e.prototype.computeMask=function(t,e){var n=this;return qt(function(){return n.maskZero?(t=tf(t),cu(t,je(t))):null})},e.prototype.computeOutputShape=function(t){if(t=ef(t),null==this.inputLength)return t.concat([this.outputDim]);var e=Ep(this.inputLength);if(e.length!==t.length-1)throw new vp('"inputLength" is '+this.inputLength+", but received input shape has shape "+t);for(var n=0,r=0;r<e.length;++r){var i=e[r],o=t[r+1];if(null!=i&&null!=o&&i!==o)throw new vp('"inputLength" is '+this.inputLength+", but received input shape has shape "+t);null==i&&(e[n]=o),n++}return[t[0]].concat(e,[this.outputDim])},e.prototype.call=function(t,e){var n=this;return qt(function(){n.invokeCallHook(t,e);var r=tf(t);return"int32"!==r.dtype&&(r=dh(r,"int32")),Ch(n.embeddings.read(),r.as1D()).reshape(ef(n.computeOutputShape(r.shape)))})},e.prototype.getConfig=function(){var e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:Xh(this.embeddingsInitializer),embeddingsRegularizer:rm(this.embeddingsRegularizer),activityRegularizer:rm(this.activityRegularizer),embeddingsConstraint:qp(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="Embedding",e}(ff);Fc.registerClass(Om);var _m=function(t){function e(e){var n=t.call(this,e||{})||this;return n.supportsMasking=!0,n}return rp(e,t),e.prototype.mergeFunction=function(t){throw new bp},e.prototype.computeElementwiseOpOutputShape=function(t,e){if(null==t||null==e)return null;if(t.length<e.length)return this.computeElementwiseOpOutputShape(e,t);if(0===e.length)return t;for(var n=t.slice(0,t.length-e.length),r=0;r<e.length;++r){var i=t[t.length-e.length+r],o=e[r];if(null==i||null==o||i<0||o<0)n.push(null);else if(1===i)n.push(o);else if(1===o)n.push(i);else{if(i!==o)throw new vp("Operands could not be broadcast together with shapes "+JSON.stringify(t)+" "+JSON.stringify(e));n.push(i)}}return n},e.prototype.build=function(t){if(Array.isArray(t)&&!Array.isArray(t[0])&&(t=[ef(t)]),(t=t).length<2)throw new vp("A merge layer should be called on an Array of at least 2 inputs. Got "+t.length+" input(s).");for(var e=[],n=0,r=t;n<r.length;n++)null!=(a=r[n])&&null!==a[0]&&e.push(a[0]);if((e=Op(e)).length>1)throw new vp("Can not merge tensors with different batch sizes. Got tensors with shapes: "+JSON.stringify(t)+".");for(var i=null==t[0]?null:t[0].slice(1),o=1;o<t.length;++o){var a=null==t[o]?null:t[o].slice(1);i=this.computeElementwiseOpOutputShape(i,a)}var s=t.map(function(t){return t.length});-1===t.indexOf(null)&&1===Op(s).length?this.reshapeRequired=!1:this.reshapeRequired=!0},e.prototype.call=function(t,e){var n=this;return qt(function(){if(t=t,n.reshapeRequired){var e=[],r=t.map(function(t){return t.rank});if(-1===r.indexOf(null)){for(var i=hh(r),o=0,a=t;o<a.length;o++){for(var s=(h=a[o]).rank,u=0;u<i-s;++u)h=mh(h,1);e.push(h)}return n.mergeFunction(e)}for(var l=!1,c=0,p=t;c<p.length;c++){var h;if(null==(s=(h=p[c]).rank)){var f=h.shape,d=f[0],m=f.slice(1).concat([d]),g=h.reshape([d].concat(lh(f.slice(1))));g=(g=qu(g,[1,0])).reshape(m),e.push(g),l=!0}else if(s>1){var y=fh(1,s).concat([0]);e.push(qu(h,y)),l=!0}else e.push(h)}var v=n.mergeFunction(e),b=v.rank;if(l)if(null==b){var w=v.shape;m=[d=w[w.length-1]].concat(w.slice(0,w.length-1)),v=qu(v.reshape([-1,d]),[1,0]).reshape(m)}else b>1&&(y=[b-1].concat(fh(0,b-1)),v=qu(v,y));return v}return n.mergeFunction(t)})},e.prototype.computeOutputShape=function(t){var e;e=null==(t=t)[0]?null:t[0].slice(1);for(var n=1;n<t.length;++n){var r=null==t[n]?null:t[n].slice(1);e=this.computeElementwiseOpOutputShape(e,r)}for(var i=[],o=0,a=t;o<a.length;o++)null!=(r=a[o])&&null!==r[0]&&i.push(r[0]);return 1===(i=Op(i)).length?i.concat(e):[null].concat(e)},e.prototype.computeMask=function(t,e){return qt(function(){if(null==e)return null;if(!Array.isArray(e))throw new vp("`mask` should be an Array");if(!Array.isArray(t))throw new vp("`inputs` should be an Array");if(e.length!==t.length)throw new vp("The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths ("+t.length+" vs "+e.length+")");if(e.every(function(t){return null==t}))return null;for(var n=(e=e.map(function(t){return null==t?t:qo(t,0)}))[0],r=1;r<e.length-1;++r)n=_u(n,e[r]);return n})},e}(ff),Mm=function(t){function e(e){return t.call(this,e)||this}return rp(e,t),e.prototype.mergeFunction=function(t){return qt(function(){for(var e=t[0].clone(),n=1;n<t.length;++n)e=hu(e,t[n]);return e})},e.className="Add",e}(_m);Fc.registerClass(Mm);var Lm=function(t){function e(e){return t.call(this,e)||this}return rp(e,t),e.prototype.mergeFunction=function(t){return qt(function(){for(var e=t[0].clone(),n=1;n<t.length;++n)e=Eu(e,t[n]);return e})},e.className="Multiply",e}(_m);Fc.registerClass(Lm);var Fm=function(t){function e(e){return t.call(this,e)||this}return rp(e,t),e.prototype.mergeFunction=function(t){return qt(function(){for(var e=t[0].clone(),n=1;n<t.length;++n)e=hu(e,t[n]);return Eu(mp(1/t.length),e)})},e.className="Average",e}(_m);Fc.registerClass(Fm);var zm=function(t){function e(e){return t.call(this,e)||this}return rp(e,t),e.prototype.mergeFunction=function(t){return qt(function(){for(var e=t[0],n=1;n<t.length;++n)e=bu(e,t[n]);return e})},e.className="Maximum",e}(_m);Fc.registerClass(zm);var Pm=function(t){function e(e){return t.call(this,e)||this}return rp(e,t),e.prototype.mergeFunction=function(t){return qt(function(){for(var e=t[0],n=1;n<t.length;++n)e=xu(e,t[n]);return e})},e.className="Minimum",e}(_m);Fc.registerClass(Pm);var Bm=function(t){function e(e){var n=t.call(this,e)||this;return n.DEFAULT_AXIS=-1,null==e&&(e={}),n.axis=null==e.axis?n.DEFAULT_AXIS:e.axis,n.supportsMasking=!0,n.reshapeRequired=!1,n}return rp(e,t),e.prototype.build=function(t){if(!Array.isArray(t)||!Array.isArray(t[0])||1===t.length)throw new vp("A `Concatenate` layer should be called on a list of at least 2 inputs");for(var e=!0,n=0,r=t=t;n<r.length;n++)if(null!=(c=r[n])){e=!1;break}if(!e){for(var i=[],o=0;o<t.length;++o){var a=t[o].slice();a.splice(this.axis,1);for(var s=!1,u=0,l=i;u<l.length;u++){var c=l[u];if(X.arraysEqual(c,a)){s=!0;break}}s||i.push(a)}if(i.length>1)throw new vp("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(t))}},e.prototype.mergeFunction=function(t){var e=this;return qt(function(){return bh(t,e.axis)})},e.prototype.computeOutputShape=function(t){if(!Array.isArray(t)||!Array.isArray(t[0]))throw new vp("A `Concatenate` layer should be called on a list of inputs.");for(var e=t,n=e[0].slice(),r=this.axis<0?n.length+this.axis:this.axis,i=0,o=e.slice(1);i<o.length;i++){var a=o[i];if(null==n[r]||null==a[r]){n[r]=null;break}n[r]+=a[r]}return n},e.prototype.computeMask=function(t,e){var n=this;if(null==e)return null;if(!Array.isArray(e))throw new vp("`mask` should be an array for Concatenate");if(!Array.isArray(t))throw new vp("`inputs` should be an array for Concatenate");if(e.length!==t.length)throw new vp("Mismatch in the length of mask ("+e.length+") and the legnth of inputs ("+t.length+")");return qt(function(){var r=!0;if(e.forEach(function(t){null==t||(r=!1)}),r)return null;for(var i=[],o=0;o<t.length;++o)null==e[o]?i.push(Ve(t[o]).asType("bool")):e[o].rank<t[o].rank?i.push(qo(e[o],-1)):i.push(e[o]);var a=xo(i,n.axis);return js(a,-1,!1)})},e.prototype.getConfig=function(){var e={axis:this.axis},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="Concatenate",e}(_m);function Um(t,e){for(;t<0;)t+=e;return t}Fc.registerClass(Bm);var Wm=function(t){function e(e){var n=t.call(this,e)||this;return n.axes=e.axes,n.normalize=null!=e.normalize&&e.normalize,n.supportsMasking=!0,n.reshapeRequired=!1,n}return rp(e,t),e.prototype.build=function(t){X.assert(Array.isArray(t)&&2===t.length&&Array.isArray(t[0])&&Array.isArray(t[1]),function(){return"A `Dot` layer should be called on a list of exactly 2 inputs."});var e=t[0],n=t[1];if(e.length>3||n.length>3)throw new bp("Dot layer does not support tensors of 4D or higher rank yet.");var r=this.interpretAxes(e,n);if(e[r[0]]!==n[r[1]])throw new vp("Dimension incompatibility: "+e[r[0]]+" !== "+n[r[1]])},e.prototype.mergeFunction=function(t){if(2!==t.length)throw new vp("A `Dot` layer must be called on exactly 2 inputs, but received "+t.length+" input(s).");var e,n=t[0],r=t[1];return e=Array.isArray(this.axes)?this.axes.map(function(e,n){return Um(e,t[n].shape.length)}):[Um(this.axes,n.shape.length),Um(this.axes,r.shape.length)],this.normalize&&(n=Af(n,e[0]),r=Af(r,e[1])),function(t,e,n){if(t.shape.length>3||e.shape.length>3)throw new bp("batchDot is not implemented for tensors of 4D or higher rank yet");if(X.assert(t.shape.length>=2,function(){return"batchDot requires the rank of x to be >= 2, but got "+t.shape.length}),X.assert(t.shape.length>=2,function(){return"batchDot requires the rank of y to be >= 2, but got "+e.shape.length}),"number"==typeof n&&(n=[n,n]),"complex64"===t.dtype||"complex64"===e.dtype)throw new bp("batchDot is not implemented for complex64-type Tensors yet.");var r=t.shape.length,i=e.shape.length;null==n&&(n=[r-1,i-2]);var o=n;return qt(function(){var n,a;if(r>i){n=r-i;for(var s=[],u=0;u<n;++u)s.push(1);e=e.reshape(e.shape.concat(s))}else if(i>r){for(n=i-r,s=[],u=0;u<n;++u)s.push(1);t=t.reshape(t.shape.concat(s))}else n=0;if(2===t.shape.length&&2===e.shape.length)a=o[0]===o[1]?t.mulStrict(e).sum(o[0]):t.transpose([1,0]).mulStrict(e).sum(o[1]);else{var l=o[0]!==t.shape.length-1,c=o[1]===e.shape.length-1;a=t.matMul(e,l,c)}if(n>0){var p,h=[];for(u=p=r>i?r+i-3:r-1;u<p+n;++u)h.push(u);a=a.squeeze(h)}return 1===a.shape.length&&(a=a.expandDims(1)),a})}(n,r,e)},e.prototype.interpretAxes=function(t,e){return Array.isArray(this.axes)?this.axes:[Um(this.axes,t.length),Um(this.axes,e.length)]},e.prototype.computeOutputShape=function(t){X.assert(Array.isArray(t)&&2===t.length&&Array.isArray(t[0])&&Array.isArray(t[1]),function(){return"A `Dot` layer should be called on a list of exactly 2 inputs."});var e=t[0].slice(),n=t[1].slice();if(e.length>3||n.length>3)throw new bp("Dot layer does not support tensors of 4D or higher rank yet.");var r=this.interpretAxes(e,n);e.splice(r[0],1),n.splice(r[1],1),n.splice(0,1);var i=e.concat(n);return 1===i.length&&i.push(1),i},e.prototype.computeMask=function(t,e){return null},e.prototype.getConfig=function(){var e={axes:this.axes,normalize:this.normalize},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="Dot",e}(_m);function Vm(t,e,n,r,i,o){var a;if(void 0===o&&(o=.001),2===t.rank)a=ns(t,e,n,r,i,o);else if(3===t.rank)a=rs(t,e,n,r,i,o);else{if(4!==t.rank)throw new bp("batchNormalization is not implemented for array of rank "+t.rank+" yet");a=is(t,e,n,r,i,o)}return a}function jm(t,e,n,r,i){return void 0===i&&(i=.001),X.arraysEqual(r.slice().sort(),fh(0,t.rank-1))?function(t,e,n,r,i){return void 0===i&&(i=.001),qt(function(){var o=Js(t,r),a=o.mean,s=o.variance;return[Vm(t,a,s,n,e,i),a,s]})}(t,e,n,r,i):function(t,e,n,r,i){return void 0===i&&(i=.001),qt(function(){for(var o=Js(t,r),a=o.mean,s=o.variance,u=[],l=0,c=fh(0,t.rank);l<c.length;l++){var p=c[l];-1!==r.indexOf(p)?u.push(1):u.push(t.shape[p])}var h=a.reshape(u),f=s.reshape(u),d=null==e?null:e.reshape(u),m=null==n?null:n.reshape(u);return[Vm(t,h,f,m,d,i),a,s]})}(t,e,n,r,i)}Fc.registerClass(Wm);var qm=function(t){function e(e){var n=this;return null==e&&(e={}),(n=t.call(this,e)||this).supportsMasking=!0,n.axis=null==e.axis?-1:e.axis,n.momentum=null==e.momentum?.99:e.momentum,n.epsilon=null==e.epsilon?.001:e.epsilon,n.center=null==e.center||e.center,n.scale=null==e.scale||e.scale,n.betaInitializer=Yh(e.betaInitializer||"zeros"),n.gammaInitializer=Yh(e.gammaInitializer||"ones"),n.movingMeanInitializer=Yh(e.movingMeanInitializer||"zeros"),n.movingVarianceInitializer=Yh(e.movingVarianceInitializer||"ones"),n.betaConstraint=Hp(e.betaConstraint),n.gammaConstraint=Hp(e.gammaConstraint),n.betaRegularizer=om(e.betaRegularizer),n.gammaRegularizer=om(e.gammaRegularizer),n}return rp(e,t),e.prototype.build=function(t){var e;t=ef(t);var n=this.axis>=0?this.axis:this.axis+t.length,r=t[n];if(null==r)throw new vp("Axis "+n+" of input tensor should have a defined dimension but the layer received an input with shape "+JSON.stringify(t)+".");this.inputSpec=[new uf({ndim:t.length,axes:(e={},e[n]=r,e)})];var i=[r];this.scale&&(this.gamma=this.addWeight("gamma",i,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",i,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",i,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",i,null,this.movingVarianceInitializer,null,!1),this.built=!0},e.prototype.call=function(t,e){var n=this;return qt(function(){var r=null!=e.training&&e.training,i=tf(t),o=i.shape,a=o.length,s=fh(0,a),u=n.axis>=0?n.axis:n.axis+a;s.splice(u,1);var l=xp(1,a);l[u]=o[u];var c=s.slice();c.sort();var p=!X.arraysEqual(c,fh(0,a).slice(0,a-1));if(!r)return function(){if(p){var t=n.movingMean.read().reshape(l),e=n.movingVariance.read().reshape(l),r=n.center?n.beta.read().reshape(l):null,o=n.scale?n.gamma.read().reshape(l):null;return Vm(i,t,e,r,o,n.epsilon)}return Vm(i,n.movingMean.read(),n.movingVariance.read(),null==n.beta?null:n.beta.read(),null==n.gamma?null:n.gamma.read(),n.epsilon)}();var h=jm(i,n.gamma.read(),n.beta.read(),s,n.epsilon),f=h[0],d=h[1],m=h[2],g=function(t,e,n){qt(function(){var r=mp(1).sub(mp(n)),i=t.read(),o=i.sub(e).mul(r);t.write(i.sub(o))})};return g(n.movingMean,d,n.momentum),g(n.movingVariance,m,n.momentum),f})},e.prototype.getConfig=function(){var e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:Xh(this.betaInitializer),gammaInitializer:Xh(this.gammaInitializer),movingMeanInitializer:Xh(this.movingMeanInitializer),movingVarianceInitializer:Xh(this.movingVarianceInitializer),betaRegularizer:rm(this.betaRegularizer),gammaRegularizer:rm(this.gammaRegularizer),betaConstraint:qp(this.betaConstraint),gammaConstraint:qp(this.gammaConstraint)},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="BatchNormalization",e}(ff);Fc.registerClass(qm);var Gm=function(t){function e(e){var n=this;if(null==e&&(e={}),(n=t.call(this,e)||this).dataFormat=null==e.dataFormat?"channelsLast":e.dataFormat,null==e.padding)n.padding=[[1,1],[1,1]];else if("number"==typeof e.padding)n.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,2!==e.padding.length)throw new vp("ZeroPadding2D expects padding to be a length-2 array, but received a length-"+e.padding.length+" array.");var r=void 0,i=void 0;if("number"==typeof e.padding[0])r=[e.padding[0],e.padding[0]],i=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,2!==e.padding[0].length)throw new vp("ZeroPadding2D expects height padding to be a length-2 array, but received a length-"+e.padding[0].length+" array.");if(r=e.padding[0],2!==e.padding[1].length)throw new vp("ZeroPadding2D expects width padding to be a length-2 array, but received a length-"+e.padding[1].length+" array.");i=e.padding[1]}n.padding=[r,i]}return n.inputSpec=[new uf({ndim:4})],n}return rp(e,t),e.prototype.computeOutputShape=function(t){var e,n;return t=ef(t),"channelsFirst"===this.dataFormat?(e=null!=t[2]&&t[2]>=0?t[2]+this.padding[0][0]+this.padding[0][1]:null,n=null!=t[3]&&t[3]>=0?t[3]+this.padding[1][0]+this.padding[1][1]:null,[t[0],t[1],e,n]):(e=null!=t[1]&&t[1]>=0?t[1]+this.padding[0][0]+this.padding[0][1]:null,n=null!=t[2]&&t[2]>=0?t[2]+this.padding[1][0]+this.padding[1][1]:null,[t[0],e,n,t[3]])},e.prototype.call=function(t,e){var n=this;return qt(function(){return function(t,e,n){return qt(function(){if(4!==t.rank)throw new vp("temporalPadding expects input tensor to be 4-D, but received a "+t.rank+"-D tensor.");if(null==e&&(e=[[1,1],[1,1]]),2!==e.length||2!==e[0].length||2!==e[1].length)throw new vp("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(null==n&&(n="channelsLast"),"channelsLast"!==n&&"channelsFirst"!==n)throw new vp("Unknown data format: "+n+". Supported data formats are 'channelsLast' and 'channelsFirst.");var r;return r="channelsFirst"===n?[[0,0],[0,0],e[0],e[1]]:[[0,0],e[0],e[1],[0,0]],$o(t,r)})}(tf(t),n.padding,n.dataFormat)})},e.prototype.getConfig=function(){var e={padding:this.padding,dataFormat:this.dataFormat},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="ZeroPadding2D",e}(ff);function Hm(t,e,n,r,i,o){return qt(function(){var a;Qp(i),function(t){Mp(Yp,"PoolMode",t)}(o),th(r),null==n&&(n=[1,1]),null==r&&(r="valid"),null==i&&(i="channelsLast"),null==o&&(o="max"),t=mm(t,i);var s="same"===r?"same":"valid";return a="max"===o?Ms(t,e,n,s):Ls(t,e,n,s),"channelsFirst"===i&&(a=qu(a,[0,3,1,2])),a})}Fc.registerClass(Gm);var Km=function(t){function e(e){var n=this;if(null==e.poolSize&&(e.poolSize=2),n=t.call(this,e)||this,"number"==typeof e.poolSize)n.poolSize=[e.poolSize];else{if(!Array.isArray(e.poolSize)||1!==e.poolSize.length||"number"!=typeof e.poolSize[0])throw new vp("poolSize for 1D convolutional layer must be a number or an Array of a single number, but received "+JSON.stringify(e.poolSize));n.poolSize=e.poolSize}if(Fp(n.poolSize,"poolSize"),null==e.strides)n.strides=n.poolSize;else if("number"==typeof e.strides)n.strides=[e.strides];else{if(!Array.isArray(e.strides)||1!==e.strides.length||"number"!=typeof e.strides[0])throw new vp("strides for 1D convolutional layer must be a number or an Array of a single number, but received "+JSON.stringify(e.strides));n.strides=e.strides}return Fp(n.strides,"strides"),n.padding=null==e.padding?"valid":e.padding,th(n.padding),n.inputSpec=[new uf({ndim:3})],n}return rp(e,t),e.prototype.computeOutputShape=function(t){var e=fm((t=ef(t))[1],this.poolSize[0],this.padding,this.strides[0]);return[t[0],e,t[2]]},e.prototype.call=function(t,e){var n=this;return qt(function(){n.invokeCallHook(t,e),t=mh(tf(t),2);var r=n.poolingFunction(tf(t),[n.poolSize[0],1],[n.strides[0],1],n.padding,"channelsLast");return ia(r,[2])})},e.prototype.getConfig=function(){var e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e}(ff),$m=function(t){function e(e){return t.call(this,e)||this}return rp(e,t),e.prototype.poolingFunction=function(t,e,n,r,i){return Qp(i),th(r),Hm(t,e,n,r,i,"max")},e.className="MaxPooling1D",e}(Km);Fc.registerClass($m);var Xm=function(t){function e(e){return t.call(this,e)||this}return rp(e,t),e.prototype.poolingFunction=function(t,e,n,r,i){return Qp(i),th(r),Hm(t,e,n,r,i,"avg")},e.className="AveragePooling1D",e}(Km);Fc.registerClass(Xm);var Ym=function(t){function e(e){var n=this;if(null==e.poolSize&&(e.poolSize=[2,2]),(n=t.call(this,e)||this).poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],null==e.strides)n.strides=n.poolSize;else if(Array.isArray(e.strides)){if(2!==e.strides.length)throw new vp("If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length "+e.strides.length+".");n.strides=e.strides}else n.strides=[e.strides,e.strides];return Fp(n.poolSize,"poolSize"),Fp(n.strides,"strides"),n.padding=null==e.padding?"valid":e.padding,n.dataFormat=null==e.dataFormat?"channelsLast":e.dataFormat,Qp(n.dataFormat),th(n.padding),n.inputSpec=[new uf({ndim:4})],n}return rp(e,t),e.prototype.computeOutputShape=function(t){t=ef(t);var e="channelsFirst"===this.dataFormat?t[2]:t[1],n="channelsFirst"===this.dataFormat?t[3]:t[2];return e=fm(e,this.poolSize[0],this.padding,this.strides[0]),n=fm(n,this.poolSize[1],this.padding,this.strides[1]),"channelsFirst"===this.dataFormat?[t[0],t[1],e,n]:[t[0],e,n,t[3]]},e.prototype.call=function(t,e){var n=this;return qt(function(){return n.invokeCallHook(t,e),n.poolingFunction(tf(t),n.poolSize,n.strides,n.padding,n.dataFormat)})},e.prototype.getConfig=function(){var e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e}(ff),Jm=function(t){function e(e){return t.call(this,e)||this}return rp(e,t),e.prototype.poolingFunction=function(t,e,n,r,i){return Qp(i),th(r),Hm(t,e,n,r,i,"max")},e.className="MaxPooling2D",e}(Ym);Fc.registerClass(Jm);var Zm=function(t){function e(e){return t.call(this,e)||this}return rp(e,t),e.prototype.poolingFunction=function(t,e,n,r,i){return Qp(i),th(r),Hm(t,e,n,r,i,"avg")},e.className="AveragePooling2D",e}(Ym);Fc.registerClass(Zm);var Qm=function(t){function e(e){var n=t.call(this,e)||this;return n.inputSpec=[new uf({ndim:3})],n}return rp(e,t),e.prototype.computeOutputShape=function(t){return[t[0],t[2]]},e.prototype.call=function(t,e){throw new bp},e}(ff),tg=function(t){function e(e){return t.call(this,e||{})||this}return rp(e,t),e.prototype.call=function(t,e){return qt(function(){var e=tf(t);return Xs(e,1)})},e.className="GlobalAveragePooling1D",e}(Qm);Fc.registerClass(tg);var eg=function(t){function e(e){return t.call(this,e||{})||this}return rp(e,t),e.prototype.call=function(t,e){return qt(function(){var e=tf(t);return $s(e,1)})},e.className="GlobalMaxPooling1D",e}(Qm);Fc.registerClass(eg);var ng=function(t){function e(e){var n=t.call(this,e)||this;return n.dataFormat=null==e.dataFormat?"channelsLast":e.dataFormat,Qp(n.dataFormat),n.inputSpec=[new uf({ndim:4})],n}return rp(e,t),e.prototype.computeOutputShape=function(t){return t=t,"channelsLast"===this.dataFormat?[t[0],t[3]]:[t[0],t[1]]},e.prototype.call=function(t,e){throw new bp},e.prototype.getConfig=function(){var e={dataFormat:this.dataFormat},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e}(ff),rg=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.call=function(t,e){var n=this;return qt(function(){var e=tf(t);return"channelsLast"===n.dataFormat?Xs(e,[1,2]):Xs(e,[2,3])})},e.className="GlobalAveragePooling2D",e}(ng);Fc.registerClass(rg);var ig=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.call=function(t,e){var n=this;return qt(function(){var e=tf(t);return"channelsLast"===n.dataFormat?$s(e,[1,2]):$s(e,[2,3])})},e.className="GlobalMaxPooling2D",e}(ng);function og(t,e,n,r){if(Array.isArray(t)){if(null!=e||null!=n)throw new vp("When inputs is an array, neither initialState or constants should be provided");null!=r&&(n=t.slice(t.length-r,t.length),t=t.slice(0,t.length-r)),t.length>1&&(e=t.slice(1,t.length)),t=t[0]}function i(t){return null==t||Array.isArray(t)?t:[t]}return{inputs:t,initialState:e=i(e),constants:n=i(n)}}function ag(t,e,n,r,i,o,a,s){return void 0===r&&(r=!1),void 0===a&&(a=!1),void 0===s&&(s=!1),qt(function(){var u=e.shape.length;if(u<3)throw new vp("Input should be at least 3D, but is "+u+"D.");var l=[1,0].concat(fh(2,u));if(e=qu(e,l),null!=o)throw new bp("The rnn() functoin of the deeplearn.js backend does not support constants yet.");a&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),null!=i&&((i=i.asType("bool").asType("float32")).rank===u-1&&(i=qo(i,-1)),i=qu(i,l)),r&&(e=ks(e,0),null!=i&&(i=ks(i,0)));var c,p,h=[],f=n,d=e.shape[0],m=ua(e);null!=i&&(p=ua(i));for(var g,y=function(e){var n=m[e],r=qt(function(){return t(n,f)});if(null==i)c=r[0],f=r[1];else{var o=qt(function(){var t=p[e],n=Ve(t).sub(t);return{output:r[0].mul(t).addStrict(f[0].mul(n)),newStates:f.map(function(e,i){return r[1][i].mul(t).addStrict(e.mul(n))})}});c=o.output,f=o.newStates}s&&h.push(c)},v=0;v<d;++v)y(v);return s&&(g=oa(h,1)),[c,g,f]})}Fc.registerClass(ig);var sg=function(t){function e(e){var n,r=t.call(this,e)||this;if(null==e.cell)throw new vp("cell property is missing for the constructor of RNN.");if(null==(n=Array.isArray(e.cell)?new mg({cells:e.cell}):e.cell).stateSize)throw new vp("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");return r.cell=n,r.returnSequences=null!=e.returnSequences&&e.returnSequences,r.returnState=null!=e.returnState&&e.returnState,r.goBackwards=null!=e.goBackwards&&e.goBackwards,r._stateful=null!=e.stateful&&e.stateful,r.unroll=null!=e.unroll&&e.unroll,r.supportsMasking=!0,r.inputSpec=[new uf({ndim:3})],r.stateSpec=null,r.states_=null,r.numConstants=null,r.keptStates=[],r}return rp(e,t),e.prototype.getStates=function(){return null==this.states_?fh(0,Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1).map(function(t){return null}):this.states_},e.prototype.setStates=function(t){this.states_=t},e.prototype.computeOutputShape=function(t){Zh(t)&&(t=t[0]),t=t;var e=this.cell.stateSize;Array.isArray(e)||(e=[e]);var n,r=e[0];if(n=this.returnSequences?[t[0],t[1],r]:[t[0],r],this.returnState){for(var i=[],o=0,a=e;o<a.length;o++){var s=a[o];i.push([t[0],s])}return[n].concat(i)}return n},e.prototype.computeMask=function(t,e){var n=this;return qt(function(){Array.isArray(e)&&(e=e[0]);var t=n.returnSequences?e:null;if(n.returnState){var r=n.states.map(function(t){return null});return[t].concat(r)}return t})},Object.defineProperty(e.prototype,"states",{get:function(){if(null==this.states_){for(var t=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,e=[],n=0;n<t;++n)e.push(null);return e}return this.states_},set:function(t){this.states_=t},enumerable:!0,configurable:!0}),e.prototype.build=function(t){if(null!=this.numConstants)throw new bp("Constants support is not implemented in RNN yet.");Zh(t)&&(t=t[0]),t=t;var e=this.stateful?t[0]:null,n=t[t.length-1];this.inputSpec[0]=new uf({shape:[e,null,n]});var r,i=[t[0]].concat(t.slice(2));if(this.cell.build(i),r=Array.isArray(this.cell.stateSize)?this.cell.stateSize:[this.cell.stateSize],null!=this.stateSpec){if(!X.arraysEqual(this.stateSpec.map(function(t){return t.shape[t.shape.length-1]}),r))throw new vp("An initialState was passed that is not compatible with cell.stateSize. Received stateSpec="+this.stateSpec+"; However cell.stateSize is "+this.cell.stateSize)}else this.stateSpec=r.map(function(t){return new uf({shape:[null,t]})});this.stateful&&this.resetStates()},e.prototype.resetStates=function(t,e){var n=this;void 0===e&&(e=!1),qt(function(){if(!n.stateful)throw new gp("Cannot call resetStates() on an RNN Layer that is not stateful.");var r=n.inputSpec[0].shape[0];if(null==r)throw new vp("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(null==n.states_)Array.isArray(n.cell.stateSize)?n.states_=n.cell.stateSize.map(function(t){return Pe([r,t])}):n.states_=[Pe([r,n.cell.stateSize])];else if(null==t)Ht(n.states_),null!=n.keptStates&&(Ht(n.keptStates),n.keptStates=[]),Array.isArray(n.cell.stateSize)?n.states_=n.cell.stateSize.map(function(t){return Pe([r,t])}):n.states_[0]=Pe([r,n.cell.stateSize]);else{if(Array.isArray(t)||(t=[t]),t.length!==n.states_.length)throw new vp("Layer "+n.name+" expects "+n.states_.length+" state(s), but it received "+t.length+" state value(s). Input received: "+t);!0===e?n.keptStates.push(n.states_.slice()):Ht(n.states_);for(var i=0;i<n.states_.length;++i){var o=t[i],a=Array.isArray(n.cell.stateSize)?n.cell.stateSize[i]:n.cell.stateSize,s=[r,a];if(!X.arraysEqual(o.shape,s))throw new vp("State "+i+" is incompatible with layer "+n.name+": expected shape="+s+", received shape="+o.shape);n.states_[i]=o}}n.states_.forEach(function(t){return Gt(t)})})},e.prototype.apply=function(e,n){var r=null==n?null:n.initialState,i=null==n?null:n.constants;null==n&&(n={});var o=og(e,r,i,this.numConstants);e=o.inputs,r=o.initialState,i=o.constants;var a=[],s=[];if(null!=r){n.initialState=r,a=a.concat(r),this.stateSpec=[];for(var u=0,l=r;u<l.length;u++){var c=l[u];this.stateSpec.push(new uf({shape:c.shape}))}s=s.concat(this.stateSpec)}if(null!=i&&(n.constants=i,a=a.concat(i),this.numConstants=i.length),a[0]instanceof lf){var p=[e].concat(a),h=this.inputSpec.concat(s),f=this.inputSpec;this.inputSpec=h;var d=t.prototype.apply.call(this,p,n);return this.inputSpec=f,d}return t.prototype.apply.call(this,e,n)},e.prototype.call=function(t,e){var n=this;return qt(function(){var r=null==e?null:e.mask,i=null==e?null:e.training,o=null==e?null:e.initialState;t=tf(t),null==o&&(o=n.stateful?n.states_:n.getInitialState(t));var a=Array.isArray(n.cell.stateSize)?n.cell.stateSize.length:1;if(o.length!==a)throw new vp("RNN Layer has "+a+" state(s) but was passed "+o.length+" initial state(s).");n.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");var s={training:i},u=ag(function(t,e){var r=n.cell.call([t].concat(e),s);return[r[0],r.slice(1)]},t,o,n.goBackwards,r,null,n.unroll,n.returnSequences),l=u[0],c=u[1],p=u[2];n.stateful&&n.resetStates(p,i);var h=n.returnSequences?c:l;return n.returnState?[h].concat(p):h})},e.prototype.getInitialState=function(t){var e=this;return qt(function(){var n=Pe(t.shape);return n=mh(n=Zs(n,[1,2])),Array.isArray(e.cell.stateSize)?e.cell.stateSize.map(function(t){return t>1?xh(n,[1,t]):n}):e.cell.stateSize>1?[xh(n,[1,e.cell.stateSize])]:[n]})},Object.defineProperty(e.prototype,"trainableWeights",{get:function(){return this.trainable?this.cell.trainableWeights:[]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nonTrainableWeights",{get:function(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights},enumerable:!0,configurable:!0}),e.prototype.setFastWeightInitDuringBuild=function(e){t.prototype.setFastWeightInitDuringBuild.call(this,e),null!=this.cell&&this.cell.setFastWeightInitDuringBuild(e)},e.prototype.getConfig=function(){var e={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};null!=this.numConstants&&(e.numConstants=this.numConstants);var n=this.cell.getConfig();e.cell={className:this.cell.getClassName(),config:n};var r=t.prototype.getConfig.call(this);return Object.assign(e,r),e},e.className="RNN",e}(ff);Fc.registerClass(sg);var ug=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e}(ff),lg=function(t){function e(e){var n=t.call(this,e)||this;return n.DEFAULT_ACTIVATION="tanh",n.DEFAULT_KERNEL_INITIALIZER="glorotNormal",n.DEFAULT_RECURRENT_INITIALIZER="orthogonal",n.DEFAULT_BIAS_INITIALIZER="zeros",n.units=e.units,Fp(n.units,"units"),n.activation=Qd(null==e.activation?n.DEFAULT_ACTIVATION:e.activation),n.useBias=null==e.useBias||e.useBias,n.kernelInitializer=Yh(e.kernelInitializer||n.DEFAULT_KERNEL_INITIALIZER),n.recurrentInitializer=Yh(e.recurrentInitializer||n.DEFAULT_RECURRENT_INITIALIZER),n.biasInitializer=Yh(e.biasInitializer||n.DEFAULT_BIAS_INITIALIZER),n.kernelRegularizer=om(e.kernelRegularizer),n.recurrentRegularizer=om(e.recurrentRegularizer),n.biasRegularizer=om(e.biasRegularizer),n.kernelConstraint=Hp(e.kernelConstraint),n.recurrentConstraint=Hp(e.recurrentConstraint),n.biasConstraint=Hp(e.biasConstraint),n.dropout=ph([1,hh([0,null==e.dropout?0:e.dropout])]),n.recurrentDropout=ph([1,hh([0,null==e.recurrentDropout?0:e.recurrentDropout])]),n.stateSize=n.units,n.dropoutMask=null,n.recurrentDropoutMask=null,n}return rp(e,t),e.prototype.build=function(t){t=ef(t),this.kernel=this.addWeight("kernel",[t[t.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0},e.prototype.call=function(t,e){var n=this;return qt(function(){if(2!==(t=t).length)throw new vp("SimpleRNNCell expects 2 input Tensors, got "+t.length+".");var r=t[1];t=t[0];var i,o=null!=e.training&&e.training;0<n.dropout&&n.dropout<1&&null==n.dropoutMask&&(n.dropoutMask=gg(function(){return Ve(t)},n.dropout,o)),0<n.recurrentDropout&&n.recurrentDropout<1&&null==n.recurrentDropoutMask&&(n.recurrentDropoutMask=gg(function(){return Ve(r)},n.recurrentDropout,o));var a=n.dropoutMask,s=n.recurrentDropoutMask;i=Sh(null!=a?Eu(t,a):t,n.kernel.read()),null!=n.bias&&(i=Ih(i,n.bias.read())),null!=s&&(r=Eu(r,s));var u=hu(i,Sh(r,n.recurrentKernel.read()));return null!=n.activation&&(u=n.activation.apply(u)),[u,u]})},e.prototype.getConfig=function(){var e={units:this.units,activation:Jd(this.activation),useBias:this.useBias,kernelInitializer:Xh(this.kernelInitializer),recurrentInitializer:Xh(this.recurrentInitializer),biasInitializer:Xh(this.biasInitializer),kernelRegularizer:rm(this.kernelRegularizer),recurrentRegularizer:rm(this.recurrentRegularizer),biasRegularizer:rm(this.biasRegularizer),activityRegularizer:rm(this.activityRegularizer),kernelConstraint:qp(this.kernelConstraint),recurrentConstraint:qp(this.recurrentConstraint),biasConstraint:qp(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="SimpleRNNCell",e}(ug);Fc.registerClass(lg);var cg=function(t){function e(e){return e.cell=new lg(e),t.call(this,e)||this}return rp(e,t),e.prototype.call=function(e,n){var r=this;return qt(function(){null!=r.cell.dropoutMask&&(Ht(r.cell.dropoutMask),r.cell.dropoutMask=null),null!=r.cell.recurrentDropoutMask&&(Ht(r.cell.recurrentDropoutMask),r.cell.recurrentDropoutMask=null);var i=null==n?null:n.mask,o=null==n?null:n.training,a=null==n?null:n.initialState;return t.prototype.call.call(r,e,{mask:i,training:o,initialState:a})})},Object.defineProperty(e.prototype,"units",{get:function(){return this.cell.units},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"activation",{get:function(){return this.cell.activation},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"useBias",{get:function(){return this.cell.useBias},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"kernelInitializer",{get:function(){return this.cell.kernelInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentInitializer",{get:function(){return this.cell.recurrentInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"biasInitializer",{get:function(){return this.cell.biasInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"kernelRegularizer",{get:function(){return this.cell.kernelRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentRegularizer",{get:function(){return this.cell.recurrentRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"biasRegularizer",{get:function(){return this.cell.biasRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"kernelConstraint",{get:function(){return this.cell.kernelConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentConstraint",{get:function(){return this.cell.recurrentConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"biasConstraint",{get:function(){return this.cell.biasConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dropout",{get:function(){return this.cell.dropout},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentDropout",{get:function(){return this.cell.recurrentDropout},enumerable:!0,configurable:!0}),e.prototype.getConfig=function(){var e={units:this.units,activation:Jd(this.activation),useBias:this.useBias,kernelInitializer:Xh(this.kernelInitializer),recurrentInitializer:Xh(this.recurrentInitializer),biasInitializer:Xh(this.biasInitializer),kernelRegularizer:rm(this.kernelRegularizer),recurrentRegularizer:rm(this.recurrentRegularizer),biasRegularizer:rm(this.biasRegularizer),activityRegularizer:rm(this.activityRegularizer),kernelConstraint:qp(this.kernelConstraint),recurrentConstraint:qp(this.recurrentConstraint),biasConstraint:qp(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout},n=t.prototype.getConfig.call(this);return delete n.cell,Object.assign(e,n),e},e.className="SimpleRNN",e}(sg);Fc.registerClass(cg);var pg=function(t){function e(e){var n=t.call(this,e)||this;return n.DEFAULT_ACTIVATION="tanh",n.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",n.DEFAULT_KERNEL_INITIALIZER="glorotNormal",n.DEFAULT_RECURRENT_INITIALIZER="orthogonal",n.DEFAULT_BIAS_INITIALIZER="zeros",n.units=e.units,Fp(n.units,"units"),n.activation=Qd(void 0===e.activation?n.DEFAULT_ACTIVATION:e.activation),n.recurrentActivation=Qd(void 0===e.recurrentActivation?n.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),n.useBias=null==e.useBias||e.useBias,n.kernelInitializer=Yh(e.kernelInitializer||n.DEFAULT_KERNEL_INITIALIZER),n.recurrentInitializer=Yh(e.recurrentInitializer||n.DEFAULT_RECURRENT_INITIALIZER),n.biasInitializer=Yh(e.biasInitializer||n.DEFAULT_BIAS_INITIALIZER),n.kernelRegularizer=om(e.kernelRegularizer),n.recurrentRegularizer=om(e.recurrentRegularizer),n.biasRegularizer=om(e.biasRegularizer),n.kernelConstraint=Hp(e.kernelConstraint),n.recurrentConstraint=Hp(e.recurrentConstraint),n.biasConstraint=Hp(e.biasConstraint),n.dropout=ph([1,hh([0,null==e.dropout?0:e.dropout])]),n.recurrentDropout=ph([1,hh([0,null==e.recurrentDropout?0:e.recurrentDropout])]),n.implementation=e.implementation,n.stateSize=n.units,n.dropoutMask=null,n.recurrentDropoutMask=null,n}return rp(e,t),e.prototype.build=function(t){var e=(t=ef(t))[t.length-1];this.kernel=this.addWeight("kernel",[e,3*this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,3*this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[3*this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0},e.prototype.call=function(t,e){var n=this;return qt(function(){if(2!==(t=t).length)throw new vp("GRUCell expects 2 input Tensors (inputs, h, c), got "+t.length+".");var r=null!=e.training&&e.training,i=t[1];t=t[0],0<n.dropout&&n.dropout<1&&null==n.dropoutMask&&(n.dropoutMask=gg(function(){return Ve(t)},n.dropout,r,3)),0<n.recurrentDropout&&n.recurrentDropout<1&&null==n.recurrentDropoutMask&&(n.recurrentDropoutMask=gg(function(){return Ve(i)},n.recurrentDropout,r,3));var o,a,s,u=n.dropoutMask,l=n.recurrentDropoutMask;0<n.dropout&&n.dropout<1&&(t=Eu(t,u[0]));var c=Sh(t,n.kernel.read());n.useBias&&(c=Ih(c,n.bias.read())),0<n.recurrentDropout&&n.recurrentDropout<1&&(i=Eu(i,l[0]));var p=n.recurrentKernel.read(),h=Io(p,[2*n.units,n.units],p.rank-1),f=h[0],d=h[1],m=Sh(i,f),g=Io(c,3,c.rank-1),y=g[0],v=g[1],b=g[2],w=Io(m,2,m.rank-1),x=w[0],N=w[1];o=n.recurrentActivation.apply(hu(y,x)),a=n.recurrentActivation.apply(hu(v,N));var S=Sh(Eu(a,i),d);s=n.activation.apply(hu(b,S));var C=hu(Eu(o,i),Eu(hu(mp(1),Da(o)),s));return[C,C]})},e.prototype.getConfig=function(){var e={units:this.units,activation:Jd(this.activation),recurrentActivation:Jd(this.recurrentActivation),useBias:this.useBias,kernelInitializer:Xh(this.kernelInitializer),recurrentInitializer:Xh(this.recurrentInitializer),biasInitializer:Xh(this.biasInitializer),kernelRegularizer:rm(this.kernelRegularizer),recurrentRegularizer:rm(this.recurrentRegularizer),biasRegularizer:rm(this.biasRegularizer),activityRegularizer:rm(this.activityRegularizer),kernelConstraint:qp(this.kernelConstraint),recurrentConstraint:qp(this.recurrentConstraint),biasConstraint:qp(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout,implementation:this.implementation},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="GRUCell",e}(ug);Fc.registerClass(pg);var hg=function(t){function e(e){return 0===e.implementation&&console.warn("`implementation=0` has been deprecated, and now defaults to `implementation=1`. Please update your layer call."),e.cell=new pg(e),t.call(this,e)||this}return rp(e,t),e.prototype.call=function(e,n){var r=this;return qt(function(){null!=r.cell.dropoutMask&&(Ht(r.cell.dropoutMask),r.cell.dropoutMask=null),null!=r.cell.recurrentDropoutMask&&(Ht(r.cell.recurrentDropoutMask),r.cell.recurrentDropoutMask=null);var i=null==n?null:n.mask,o=null==n?null:n.training,a=null==n?null:n.initialState;return t.prototype.call.call(r,e,{mask:i,training:o,initialState:a})})},Object.defineProperty(e.prototype,"units",{get:function(){return this.cell.units},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"activation",{get:function(){return this.cell.activation},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentActivation",{get:function(){return this.cell.recurrentActivation},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"useBias",{get:function(){return this.cell.useBias},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"kernelInitializer",{get:function(){return this.cell.kernelInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentInitializer",{get:function(){return this.cell.recurrentInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"biasInitializer",{get:function(){return this.cell.biasInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"kernelRegularizer",{get:function(){return this.cell.kernelRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentRegularizer",{get:function(){return this.cell.recurrentRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"biasRegularizer",{get:function(){return this.cell.biasRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"kernelConstraint",{get:function(){return this.cell.kernelConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentConstraint",{get:function(){return this.cell.recurrentConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"biasConstraint",{get:function(){return this.cell.biasConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dropout",{get:function(){return this.cell.dropout},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentDropout",{get:function(){return this.cell.recurrentDropout},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"implementation",{get:function(){return this.cell.implementation},enumerable:!0,configurable:!0}),e.prototype.getConfig=function(){var e={units:this.units,activation:Jd(this.activation),recurrentActivation:Jd(this.recurrentActivation),useBias:this.useBias,kernelInitializer:Xh(this.kernelInitializer),recurrentInitializer:Xh(this.recurrentInitializer),biasInitializer:Xh(this.biasInitializer),kernelRegularizer:rm(this.kernelRegularizer),recurrentRegularizer:rm(this.recurrentRegularizer),biasRegularizer:rm(this.biasRegularizer),activityRegularizer:rm(this.activityRegularizer),kernelConstraint:qp(this.kernelConstraint),recurrentConstraint:qp(this.recurrentConstraint),biasConstraint:qp(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout,implementation:this.implementation},n=t.prototype.getConfig.call(this);return delete n.cell,Object.assign(e,n),e},e.fromConfig=function(t,e){return 0===e.implmentation&&(e.implementation=1),new t(e)},e.className="GRU",e}(sg);Fc.registerClass(hg);var fg=function(t){function e(e){var n=t.call(this,e)||this;return n.DEFAULT_ACTIVATION="tanh",n.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",n.DEFAULT_KERNEL_INITIALIZER="glorotNormal",n.DEFAULT_RECURRENT_INITIALIZER="orthogonal",n.DEFAULT_BIAS_INITIALIZER="zeros",n.units=e.units,Fp(n.units,"units"),n.activation=Qd(void 0===e.activation?n.DEFAULT_ACTIVATION:e.activation),n.recurrentActivation=Qd(void 0===e.recurrentActivation?n.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),n.useBias=null==e.useBias||e.useBias,n.kernelInitializer=Yh(e.kernelInitializer||n.DEFAULT_KERNEL_INITIALIZER),n.recurrentInitializer=Yh(e.recurrentInitializer||n.DEFAULT_RECURRENT_INITIALIZER),n.biasInitializer=Yh(e.biasInitializer||n.DEFAULT_BIAS_INITIALIZER),n.unitForgetBias=e.unitForgetBias,n.kernelRegularizer=om(e.kernelRegularizer),n.recurrentRegularizer=om(e.recurrentRegularizer),n.biasRegularizer=om(e.biasRegularizer),n.kernelConstraint=Hp(e.kernelConstraint),n.recurrentConstraint=Hp(e.recurrentConstraint),n.biasConstraint=Hp(e.biasConstraint),n.dropout=ph([1,hh([0,null==e.dropout?0:e.dropout])]),n.recurrentDropout=ph([1,hh([0,null==e.recurrentDropout?0:e.recurrentDropout])]),n.implementation=e.implementation,n.stateSize=[n.units,n.units],n.dropoutMask=null,n.recurrentDropoutMask=null,n}return rp(e,t),e.prototype.build=function(t){var e,n,r=(t=ef(t))[t.length-1];if(this.kernel=this.addWeight("kernel",[r,4*this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,4*this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){if(this.unitForgetBias){var i=this.biasInitializer,o=this.units;n=new((e=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return rp(e,t),e.prototype.apply=function(t,e){var n=i.apply([o]),r=(new _h).apply([o]),a=i.apply([2*o]);return wh(wh(n,r),a)},e}(Dh)).className="CustomInit",e)}else n=this.biasInitializer;this.bias=this.addWeight("bias",[4*this.units],null,n,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0},e.prototype.call=function(t,e){var n=this;return qt(function(){var r=null!=e.training&&e.training;if(3!==(t=t).length)throw new vp("LSTMCell expects 3 input Tensors (inputs, h, c), got "+t.length+".");var i=t[1],o=t[2];t=t[0],0<n.dropout&&n.dropout<1&&null==n.dropoutMask&&(n.dropoutMask=gg(function(){return Ve(t)},n.dropout,r,4)),0<n.recurrentDropout&&n.recurrentDropout<1&&null==n.recurrentDropoutMask&&(n.recurrentDropoutMask=gg(function(){return Ve(i)},n.recurrentDropout,r,4));var a,s,u,l,c=n.dropoutMask,p=n.recurrentDropoutMask;0<n.dropout&&n.dropout<1&&(t=Eu(t,c[0]));var h=Sh(t,n.kernel.read());0<n.recurrentDropout&&n.recurrentDropout<1&&(i=Eu(i,p[0])),h=hu(h,Sh(i,n.recurrentKernel.read())),n.useBias&&(h=Ih(h,n.bias.read()));var f=Io(h,4,h.rank-1),d=f[0],m=f[1],g=f[2],y=f[3];a=n.recurrentActivation.apply(d),s=n.recurrentActivation.apply(m),u=hu(Eu(s,o),Eu(a,n.activation.apply(g))),l=n.recurrentActivation.apply(y);var v=Eu(l,n.activation.apply(u));return[v,v,u]})},e.prototype.getConfig=function(){var e={units:this.units,activation:Jd(this.activation),recurrentActivation:Jd(this.recurrentActivation),useBias:this.useBias,kernelInitializer:Xh(this.kernelInitializer),recurrentInitializer:Xh(this.recurrentInitializer),biasInitializer:Xh(this.biasInitializer),unitForgetBias:this.unitForgetBias,kernelRegularizer:rm(this.kernelRegularizer),recurrentRegularizer:rm(this.recurrentRegularizer),biasRegularizer:rm(this.biasRegularizer),activityRegularizer:rm(this.activityRegularizer),kernelConstraint:qp(this.kernelConstraint),recurrentConstraint:qp(this.recurrentConstraint),biasConstraint:qp(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout,implementation:this.implementation},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.className="LSTMCell",e}(ug);Fc.registerClass(fg);var dg=function(t){function e(e){return 0===e.implementation&&console.warn("`implementation=0` has been deprecated, and now defaults to `implementation=1`. Please update your layer call."),e.cell=new fg(e),t.call(this,e)||this}return rp(e,t),e.prototype.call=function(e,n){var r=this;return qt(function(){null!=r.cell.dropoutMask&&(Ht(r.cell.dropoutMask),r.cell.dropoutMask=null),null!=r.cell.recurrentDropoutMask&&(Ht(r.cell.recurrentDropoutMask),r.cell.recurrentDropoutMask=null);var i=null==n?null:n.mask,o=null==n?null:n.training,a=null==n?null:n.initialState;return t.prototype.call.call(r,e,{mask:i,training:o,initialState:a})})},Object.defineProperty(e.prototype,"units",{get:function(){return this.cell.units},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"activation",{get:function(){return this.cell.activation},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentActivation",{get:function(){return this.cell.recurrentActivation},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"useBias",{get:function(){return this.cell.useBias},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"kernelInitializer",{get:function(){return this.cell.kernelInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentInitializer",{get:function(){return this.cell.recurrentInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"biasInitializer",{get:function(){return this.cell.biasInitializer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"unitForgetBias",{get:function(){return this.cell.unitForgetBias},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"kernelRegularizer",{get:function(){return this.cell.kernelRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentRegularizer",{get:function(){return this.cell.recurrentRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"biasRegularizer",{get:function(){return this.cell.biasRegularizer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"kernelConstraint",{get:function(){return this.cell.kernelConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentConstraint",{get:function(){return this.cell.recurrentConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"biasConstraint",{get:function(){return this.cell.biasConstraint},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dropout",{get:function(){return this.cell.dropout},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"recurrentDropout",{get:function(){return this.cell.recurrentDropout},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"implementation",{get:function(){return this.cell.implementation},enumerable:!0,configurable:!0}),e.prototype.getConfig=function(){var e={units:this.units,activation:Jd(this.activation),recurrentActivation:Jd(this.recurrentActivation),useBias:this.useBias,kernelInitializer:Xh(this.kernelInitializer),recurrentInitializer:Xh(this.recurrentInitializer),biasInitializer:Xh(this.biasInitializer),unitForgetBias:this.unitForgetBias,kernelRegularizer:rm(this.kernelRegularizer),recurrentRegularizer:rm(this.recurrentRegularizer),biasRegularizer:rm(this.biasRegularizer),activityRegularizer:rm(this.activityRegularizer),kernelConstraint:qp(this.kernelConstraint),recurrentConstraint:qp(this.recurrentConstraint),biasConstraint:qp(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout,implementation:this.implementation},n=t.prototype.getConfig.call(this);return delete n.cell,Object.assign(e,n),e},e.fromConfig=function(t,e){return 0===e.implmentation&&(e.implementation=1),new t(e)},e.className="LSTM",e}(sg);Fc.registerClass(dg);var mg=function(t){function e(e){var n=t.call(this,e)||this;return n.cells=e.cells,n}return rp(e,t),Object.defineProperty(e.prototype,"stateSize",{get:function(){for(var t=[],e=0,n=this.cells.slice().reverse();e<n.length;e++){var r=n[e];Array.isArray(r.stateSize)?t.push.apply(t,r.stateSize):t.push(r.stateSize)}return t},enumerable:!0,configurable:!0}),e.prototype.call=function(t,e){var n=this;return qt(function(){for(var r=(t=t).slice(1),i=[],o=0,a=n.cells.slice().reverse();o<a.length;o++){var s=a[o];Array.isArray(s.stateSize)?i.push(r.splice(0,s.stateSize.length)):i.push(r.splice(0,1))}i.reverse();for(var u,l=[],c=0;c<n.cells.length;++c)s=n.cells[c],r=i[c],u=0===c?[t[0]].concat(r):[u[0]].concat(r),u=s.call(u,e),l.push(u.slice(1));r=[];for(var p=0,h=l.slice().reverse();p<h.length;p++){var f=h[p];r.push.apply(r,f)}return[u[0]].concat(r)})},e.prototype.build=function(t){var e;Zh(t)&&(t=t[0]),t=t;for(var n=0,r=this.cells;n<r.length;n++){var i=r[n];i.build(t),e=Array.isArray(i.stateSize)?i.stateSize[0]:i.stateSize,t=[t[0],e]}this.built=!0},e.prototype.getConfig=function(){for(var e=[],n=0,r=this.cells;n<r.length;n++){var i=r[n];e.push({className:this.getClassName(),config:i.getConfig()})}var o={cells:e},a=t.prototype.getConfig.call(this);return Object.assign(o,a),o},e.fromConfig=function(t,e,n){void 0===n&&(n={});for(var r=[],i=0,o=e.cells;i<o.length;i++){var a=o[i];r.push(cd(a,n))}return new t({cells:r})},Object.defineProperty(e.prototype,"trainableWeights",{get:function(){if(!this.trainable)return[];for(var t=[],e=0,n=this.cells;e<n.length;e++){var r=n[e];t.push.apply(t,r.trainableWeights)}return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nonTrainableWeights",{get:function(){for(var t=[],e=0,n=this.cells;e<n.length;e++){var r=n[e];t.push.apply(t,r.nonTrainableWeights)}if(!this.trainable){for(var i=[],o=0,a=this.cells;o<a.length;o++)r=a[o],i.push.apply(i,r.trainableWeights);return i.concat(t)}return t},enumerable:!0,configurable:!0}),e.prototype.getWeights=function(){for(var t=[],e=0,n=this.cells;e<n.length;e++){var r=n[e];t.push.apply(t,r.weights)}return af(t)},e.prototype.setWeights=function(t){for(var e=[],n=0,r=this.cells;n<r.length;n++)for(var i=r[n],o=i.weights.length,a=t.splice(o),s=0;s<i.weights.length;++s)e.push([i.weights[s],a[s]]);sf(e)},e.className="StackedRNNCells",e}(ug);function gg(t,e,n,r){function i(){return kh(t(),mp(e))}if(void 0===n&&(n=null),void 0===r&&(r=1),r>1){for(var o=[],a=0;a<r;a++)o.push(Ah(i,t,n));return o.forEach(function(t){return Gt(t)}),o}return Gt(Ah(i,t,n))}Fc.registerClass(mg);var yg=function(t){function e(e){var n=t.call(this,e)||this;return n.layer=e.layer,n}return rp(e,t),e.prototype.build=function(t){this.built=!0},Object.defineProperty(e.prototype,"trainable",{get:function(){return null!=this.layer&&this.layer.trainable},set:function(t){null!=this.layer&&(this.layer.trainable=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"trainableWeights",{get:function(){return this.layer.trainableWeights},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nonTrainableWeights",{get:function(){return this.layer.nonTrainableWeights},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"updates",{get:function(){return this.layer._updates},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"losses",{get:function(){return this.layer.losses},enumerable:!0,configurable:!0}),e.prototype.getWeights=function(){return this.layer.getWeights()},e.prototype.setWeights=function(t){this.layer.setWeights(t)},e.prototype.getConfig=function(){var e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.prototype.setFastWeightInitDuringBuild=function(e){t.prototype.setFastWeightInitDuringBuild.call(this,e),null!=this.layer&&this.layer.setFastWeightInitDuringBuild(e)},e.fromConfig=function(t,e,n){void 0===n&&(n={});var r=cd(e.layer,n);delete e.layer;var i={layer:r};return Object.assign(i,e),new t(i)},e}(ff),vg=function(t){function e(e){var n=t.call(this,e)||this;return n.supportsMasking=!0,n}return rp(e,t),e.prototype.build=function(e){if((e=ef(e)).length<3)throw new vp("TimeDistributed layer expects an input shape >= 3D, but received input shape "+JSON.stringify(e));this.inputSpec=[{shape:e}];var n=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(n),this.layer.built=!0),t.prototype.build.call(this,e)},e.prototype.computeOutputShape=function(t){var e=[(t=ef(t))[0]].concat(t.slice(2)),n=this.layer.computeOutputShape(e),r=t[1];return[n[0],r].concat(n.slice(1))},e.prototype.call=function(t,e){var n=this;return qt(function(){return ag(function(t,r){return[tf(n.layer.call(t,e)),[]]},t=tf(t),[],!1,null,null,!1,!0)[1]})},e.className="TimeDistributed",e}(yg);Fc.registerClass(vg);var bg="concat",wg=function(t){function e(e){var n=t.call(this,e)||this,r=e.layer.getConfig(),i={};i.className=e.layer.getClassName(),i.config=r,n.forwardLayer=cd(i),r.goBackwards=!0!==r.goBackwards;var o={};if(o.className=e.layer.getClassName(),o.config=r,n.backwardLayer=cd(o),n.forwardLayer.name="forward_"+n.forwardLayer.name,n.backwardLayer.name="backward_"+n.backwardLayer.name,n.mergeMode=void 0===e.mergeMode?bg:e.mergeMode,function(t){Mp(Jp,"BidirectionalMergeMode",t)}(n.mergeMode),e.weights)throw new bp("weights support is not implemented for Bidirectional layer yet.");return n._stateful=e.layer.stateful,n.returnSequences=e.layer.returnSequences,n.returnState=e.layer.returnState,n.supportsMasking=!0,n._trainable=!0,n.inputSpec=e.layer.inputSpec,n.numConstants=null,n}return rp(e,t),Object.defineProperty(e.prototype,"trainable",{get:function(){return this._trainable},set:function(t){this._trainable=t,null!=this.forwardLayer&&(this.forwardLayer.trainable=t),null!=this.backwardLayer&&(this.backwardLayer.trainable=t)},enumerable:!0,configurable:!0}),e.prototype.getWeights=function(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())},e.prototype.setWeights=function(t){var e=t.length,n=Math.floor(e/2);this.forwardLayer.setWeights(t.slice(0,n)),this.backwardLayer.setWeights(t.slice(n))},e.prototype.computeOutputShape=function(t){var e,n,r,i=this.forwardLayer.computeOutputShape(t);return Array.isArray(i)&&Array.isArray(i[0])||(i=[i]),i=i,this.returnState?(r=i.slice(1),e=i[0]):e=i[0],e=e,"concat"===this.mergeMode?(e[e.length-1]*=2,n=[e]):n=null==this.mergeMode?[e,e.slice()]:[e],this.returnState?null==this.mergeMode?n.concat(r).concat(r.slice()):[e].concat(r).concat(r.slice()):Cp(n)},e.prototype.apply=function(e,n){var r=null==n?null:n.initialState,i=null==n?null:n.constants;null==n&&(n={});var o=og(e,r,i,this.numConstants);if(e=o.inputs,r=o.initialState,i=o.constants,Array.isArray(e)&&(r=e.slice(1),e=e[0]),(null==r||0===r.length)&&null==i)return t.prototype.apply.call(this,e,n);var a=[],s=[];if(null!=r){var u=r.length;if(u%2>0)throw new vp("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");n.initialState=r,a.push.apply(a,r);var l=r.map(function(t){return new uf({shape:t.shape})});this.forwardLayer.stateSpec=l.slice(0,u/2),this.backwardLayer.stateSpec=l.slice(u/2),s.push.apply(s,l)}if(null!=i)throw new bp("Support for constants in Bidirectional layers is not implemented yet.");for(var c=a[0]instanceof lf,p=0,h=a;p<h.length;p++)if(h[p]instanceof lf!==c)throw new vp("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(c){var f=[e].concat(a),d=this.inputSpec.concat(s),m=this.inputSpec;this.inputSpec=d;var g=t.prototype.apply.call(this,f,n);return this.inputSpec=m,g}return t.prototype.apply.call(this,e,n)},e.prototype.call=function(t,e){var n=this;return qt(function(){if(null!=e.mask)throw new bp("The support for masking is not implemented for Bidirectional layers yet.");var r,i,o,a,s=e.initialState;if(null==s)r=n.forwardLayer.call(t,e),i=n.backwardLayer.call(t,e);else{var u=s.slice(0,s.length/2),l=s.slice(s.length/2);r=n.forwardLayer.call(t,Object.assign(e,{initialState:u})),i=n.backwardLayer.call(t,Object.assign(e,{initialState:l}))}return n.returnState&&(Array.isArray(r)&&(o=r.slice(1).concat(i.slice(1))),r=r[0],i=i[0]),n.returnSequences&&(i=ks(i,1)),"concat"===n.mergeMode?a=bh([r,i]):"sum"===n.mergeMode?a=hu(r,i):"ave"===n.mergeMode?a=Eu(mp(.5),hu(r,i)):"mul"===n.mergeMode?a=Eu(r,i):null==n.mergeMode&&(a=[r,i]),n.returnState?null==n.mergeMode?a.concat(o):[a].concat(o):a})},e.prototype.resetStates=function(t){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()},e.prototype.build=function(t){var e=this;rh(this.forwardLayer.name,function(){e.forwardLayer.build(t)}),rh(this.backwardLayer.name,function(){e.backwardLayer.build(t)}),this.built=!0},Object.defineProperty(e.prototype,"trainableWeights",{get:function(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nonTrainableWeights",{get:function(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)},enumerable:!0,configurable:!0}),e.prototype.setFastWeightInitDuringBuild=function(e){t.prototype.setFastWeightInitDuringBuild.call(this,e),null!=this.forwardLayer&&this.forwardLayer.setFastWeightInitDuringBuild(e),null!=this.backwardLayer&&this.backwardLayer.setFastWeightInitDuringBuild(e)},e.prototype.getConfig=function(){var e={mergeMode:this.mergeMode},n=t.prototype.getConfig.call(this);return Object.assign(e,n),e},e.fromConfig=function(t,e){var n=cd(e.layer);if(delete e.layer,null!=e.numConstants)throw new bp("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");var r=e;return r.layer=n,new t(r)},e.className="Bidirectional",e}(yg);function xg(t){return new Xm(t)}function Ng(t){return new Zm(t)}function Sg(t){return new eg(t)}function Cg(t){return new ig(t)}function Eg(t){return new $m(t)}function Ig(t){return new Jm(t)}Fc.registerClass(wg);var kg=Sg,Ag=Cg,Tg=Eg,Rg=Ig,Dg=Object.freeze({inputLayer:function(t){return new mf(t)},elu:function(t){return new lm(t)},reLU:function(t){return new am(t)},leakyReLU:function(t){return new sm(t)},prelu:function(t){return new um(t)},softmax:function(t){return new pm(t)},thresholdedReLU:function(t){return new cm(t)},conv1d:function(t){return new xm(t)},conv2d:function(t){return new vm(t)},conv2dTranspose:function(t){return new bm(t)},separableConv2d:function(t){return new wm(t)},cropping2D:function(t){return new Nm(t)},upSampling2d:function(t){return new Sm(t)},depthwiseConv2d:function(t){return new Cm(t)},activation:function(t){return new Am(t)},dense:function(t){return new Im(t)},dropout:function(t){return new Em(t)},flatten:function(t){return new km(t)},repeatVector:function(t){return new Tm(t)},reshape:function(t){return new Rm(t)},permute:function(t){return new Dm(t)},embedding:function(t){return new Om(t)},add:function(t){return new Mm(t)},average:function(t){return new Fm(t)},concatenate:function(t){return new Bm(t)},maximum:function(t){return new zm(t)},minimum:function(t){return new Pm(t)},multiply:function(t){return new Lm(t)},dot:function(t){return new Wm(t)},batchNormalization:function(t){return new qm(t)},zeroPadding2d:function(t){return new Gm(t)},averagePooling1d:xg,avgPool1d:function(t){return xg(t)},avgPooling1d:function(t){return xg(t)},averagePooling2d:Ng,avgPool2d:function(t){return Ng(t)},avgPooling2d:function(t){return Ng(t)},globalAveragePooling1d:function(t){return new tg(t)},globalAveragePooling2d:function(t){return new rg(t)},globalMaxPooling1d:Sg,globalMaxPooling2d:Cg,maxPooling1d:Eg,maxPooling2d:Ig,gru:function(t){return new hg(t)},gruCell:function(t){return new pg(t)},lstm:function(t){return new dg(t)},lstmCell:function(t){return new fg(t)},simpleRNN:function(t){return new cg(t)},simpleRNNCell:function(t){return new lg(t)},rnn:function(t){return new sg(t)},stackedRNNCells:function(t){return new mg(t)},bidirectional:function(t){return new wg(t)},timeDistributed:function(t){return new vg(t)},globalMaxPool1d:kg,globalMaxPool2d:Ag,maxPool1d:Tg,maxPool2d:Rg,Layer:ff,RNN:sg,RNNCell:ug,input:Pd});var Og=Object.freeze({binaryAccuracy:function(t,e){return qf(t,e)},binaryCrossentropy:function(t,e){return Xf(t,e)},sparseCategoricalAccuracy:function(t,e){return Yf(t,e)},categoricalAccuracy:function(t,e){return Gf(t,e)},categoricalCrossentropy:function(t,e){return rd(t,e)},precision:function(t,e){return Kf(t,e)},recall:function(t,e){return $f(t,e)},cosineProximity:function(t,e){return Vf(t,e)},meanAbsoluteError:function(t,e){return Rf(t,e)},meanAbsolutePercentageError:function(t,e){return Df(t,e)},MAPE:function(t,e){return Df(t,e)},mape:function(t,e){return Df(t,e)},meanSquaredError:function(t,e){return Tf(t,e)},MSE:function(t,e){return Tf(t,e)},mse:function(t,e){return Tf(t,e)}}),_g=Object.freeze({modelFromJSON:function(t,e){return ap(this,void 0,void 0,function(){var n,r,i,o,a,s,u,l;return sp(this,function(c){switch(c.label){case 0:return"modelTopology"in t||(t={modelTopology:t}),null!=(n=(t=t).modelTopology).model_config&&(n=n.model_config),r=hd(n),i=cd(r,e),null==t.weightsManifest?[3,2]:[4,Ac.loadWeights(t.weightsManifest,t.pathPrefix,i.weights.map(function(t){return t.originalName}))];case 1:for(o=c.sent(),a={},s=0,u=i.weights;s<u.length;s++)l=u[s],a[l.originalName]=o[l.originalName];i.loadWeights(a),Ht(o),c.label=2;case 2:return[2,i]}})})}});var Mg,Lg=Object.freeze({l1l2:function(t){return new em(t)},l1:function(t){return function(t){return new em({l1:null!=t?t.l1:null,l2:0})}(t)},l2:function(t){return function(t){return new em({l2:null!=t?t.l2:null,l1:0})}(t)}}),Fg=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.model=null,e}return rp(e,t),e.prototype.setModel=function(t){if(!(t instanceof Ld))throw new Error("model must be a LayersModel, not some other Container");this.model=t},e}(bf),zg=function(){return(zg=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)};function Pg(t,e,n,r){return new(n||(n=Promise))(function(i,o){function a(t){try{u(r.next(t))}catch(t){o(t)}}function s(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(a,s)}u((r=r.apply(t,e||[])).next())})}function Bg(t,e){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=e.call(t,a)}catch(t){o=[6,t],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}}function Ug(t,e,n,r){var i=e.inputParams[t];if(i&&void 0!==i.inputIndexStart){var o=i.inputIndexStart,a=0===i.inputIndexEnd?void 0:void 0===i.inputIndexEnd?o+1:i.inputIndexEnd;if("tensor"===i.type)return Wg(e.inputNames[i.inputIndexStart],n,r);if("tensors"===i.type)return e.inputNames.slice(o,a).map(function(t){return Wg(t,n,r)});var s=Array.prototype.slice.call(Wg(e.inputNames.slice(o)[0],n,r).dataSync());return"number"===i.type?s[0]:s}var u=e.attrParams[t];return u&&u.value}function Wg(t,e,n){var r=qg(t),i=r[0],o=r[1],a=n.currentContextIds.find(function(t){return!!e[jg(i,t)]});return void 0!==a?e[jg(i,a)][o]:void 0}function Vg(t,e){var n=qg(t),r=n[0],i=n[1];return[jg(r,e&&e.currentContextId),i]}function jg(t,e){return e?t+"-"+e:t}function qg(t){var e=t.lastIndexOf(":");return-1===e?[t,0]:[t.substring(0,e),Number(t.substring(e+1))]}function Gg(t,e){for(var n=[],r=0;r<t.length;r+=e)n.push(t.slice(r,r+e));return n}!function(t){!function(t){t[t.DT_INVALID=0]="DT_INVALID",t[t.DT_FLOAT=1]="DT_FLOAT",t[t.DT_DOUBLE=2]="DT_DOUBLE",t[t.DT_INT32=3]="DT_INT32",t[t.DT_UINT8=4]="DT_UINT8",t[t.DT_INT16=5]="DT_INT16",t[t.DT_INT8=6]="DT_INT8",t[t.DT_STRING=7]="DT_STRING",t[t.DT_COMPLEX64=8]="DT_COMPLEX64",t[t.DT_INT64=9]="DT_INT64",t[t.DT_BOOL=10]="DT_BOOL",t[t.DT_QINT8=11]="DT_QINT8",t[t.DT_QUINT8=12]="DT_QUINT8",t[t.DT_QINT32=13]="DT_QINT32",t[t.DT_BFLOAT16=14]="DT_BFLOAT16",t[t.DT_FLOAT_REF=101]="DT_FLOAT_REF",t[t.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",t[t.DT_INT32_REF=103]="DT_INT32_REF",t[t.DT_UINT8_REF=104]="DT_UINT8_REF",t[t.DT_INT16_REF=105]="DT_INT16_REF",t[t.DT_INT8_REF=106]="DT_INT8_REF",t[t.DT_STRING_REF=107]="DT_STRING_REF",t[t.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",t[t.DT_INT64_REF=109]="DT_INT64_REF",t[t.DT_BOOL_REF=110]="DT_BOOL_REF",t[t.DT_QINT8_REF=111]="DT_QINT8_REF",t[t.DT_QUINT8_REF=112]="DT_QUINT8_REF",t[t.DT_QINT32_REF=113]="DT_QINT32_REF",t[t.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"}(t.DataType||(t.DataType={})),function(t){!function(t){t[t.LEGACY=0]="LEGACY",t[t.V1=1]="V1",t[t.V2=2]="V2"}(t.CheckpointFormatVersion||(t.CheckpointFormatVersion={}))}(t.SaverDef||(t.SaverDef={}))}(Mg||(Mg={}));var Hg=Object.freeze({json:[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}]}),Kg=Object.freeze({json:[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"clip_value_min",name:"clipValueMin",type:"number"},{tfName:"clip_value_max",name:"clipValueMax",type:"number"}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"clipValueMin",name:"clipValueMin",type:"number",defaultValue:0},{tfName:"clipValueMax",name:"clipValueMax",type:"number",defaultValue:6}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}]}),$g=Object.freeze({json:[{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"number"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"number"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"number"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"number"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"number"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"number"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"number"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"number"}]}]}),Xg=Object.freeze({json:[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]}]}),Yg=Object.freeze({json:[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]}]}),Jg=Object.freeze({json:[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}]}),Zg=Object.freeze({json:[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]}]}),Qg=Object.freeze({json:[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}]}),ty=Object.freeze({json:[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}]}),ey=Object.freeze({json:[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}]}),ny=Object.freeze({json:[{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}]}),ry=Object.freeze({json:[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}]}),iy=Object.freeze({json:[{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]}]}),oy=Object.freeze({json:[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool",notSupported:!0}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}]}),ay=Object.freeze({json:[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}]}),sy=Object.freeze({json:[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]}]}),uy=["Switch","Merge","Enter","Exit","NextIteration"],ly=["NonMaxSuppressionV2","NonMaxSuppressionV3","Where"],cy=function(){function t(){var t=[Hg,Kg,$g,Xg,Yg,Jg,Zg,ey,ty,Qg,ny,ry,iy,oy,ay,sy],e=[].concat.apply([],t.map(function(t){return t.json}));this.opMappers=e.reduce(function(t,e){return t[e.tfOpName]=e,t},{})}return Object.defineProperty(t,"Instance",{get:function(){return this._instance||(this._instance=new this)},enumerable:!0,configurable:!0}),t.prototype.isControlFlow=function(t){return uy.some(function(e){return e===t.op})},t.prototype.isDynamicShape=function(t){return ly.some(function(e){return e===t.op})},t.prototype.transformGraph=function(t){var e=this,n=!1,r=!1,i=[],o=[],a=t.node.reduce(function(t,a){return t[a.name]=e.mapNode(a),e.isControlFlow(a)&&(n=!0),e.isDynamicShape(a)&&(r=!0),"Placeholder"===a.op&&i.push(t[a.name]),"Const"===a.op&&o.push(t[a.name]),t},{}),s=[],u=[];return Object.keys(a).forEach(function(t){var e=a[t];e.inputNames.forEach(function(t){var n=Vg(t)[0];e.inputs.push(a[n]),a[n].children.push(e)}),0===e.inputs.length&&s.push(e)}),Object.keys(a).forEach(function(t){var e=a[t];0===e.children.length&&u.push(e)}),{nodes:a,inputs:s,outputs:u,weights:o,placeholders:i,withControlFlow:n,withDynamicShape:r}},t.prototype.mapNode=function(t){var e=this,n=this.opMappers[t.op];if(void 0===n)throw new Error("Tensorflow Op is not supported: "+t.op);var r={name:t.name,op:t.op,category:n.category,inputNames:(t.input||[]).map(function(t){return t.startsWith("^")?t.substr(1):t}),inputs:[],children:[],inputParams:{},attrParams:{}};return null==t.attr&&(t.attr={}),null!=n.inputs&&(r.inputParams=n.inputs.reduce(function(t,e){return t[e.name]={type:e.type,inputIndexStart:e.start,inputIndexEnd:e.end},t},{})),null!=n.attrs&&(r.attrParams=n.attrs.reduce(function(n,r){var i=r.type,o=void 0;switch(r.type){case"string":void 0===(o=e.getStringParam(t.attr,r.tfName,r.defaultValue))&&r.tfDeprecatedName&&(o=e.getStringParam(t.attr,r.tfDeprecatedName,r.defaultValue));break;case"number":void 0===(o=e.getNumberParam(t.attr,r.tfName,r.defaultValue||0))&&r.tfDeprecatedName&&(o=e.getNumberParam(t.attr,r.tfDeprecatedName,r.defaultValue));break;case"number[]":void 0===(o=e.getNumericArrayParam(t.attr,r.tfName,r.defaultValue))&&r.tfDeprecatedName&&(o=e.getNumericArrayParam(t.attr,r.tfDeprecatedName,r.defaultValue));break;case"bool":void 0===(o=e.getBoolParam(t.attr,r.tfName,r.defaultValue))&&r.tfDeprecatedName&&(o=e.getBoolParam(t.attr,r.tfDeprecatedName,r.defaultValue));break;case"shape":void 0===(o=e.getTensorShapeParam(t.attr,r.tfName,r.defaultValue))&&r.tfDeprecatedName&&(o=e.getTensorShapeParam(t.attr,r.tfDeprecatedName,r.defaultValue));break;case"dtype":void 0===(o=e.getDtypeParam(t.attr,r.tfName,r.defaultValue))&&r.tfDeprecatedName&&(o=e.getDtypeParam(t.attr,r.tfDeprecatedName,r.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error("Unsupported param type: "+r.type+" for op: "+t.op)}return n[r.name]={value:o,type:i},n},{})),r},t.prototype.decodeBase64=function(t){if("undefined"!=typeof atob)return atob(t);if("undefined"!=typeof Buffer)return new Buffer(t,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")},t.prototype.getStringParam=function(t,e,n,r){void 0===r&&(r=!1);var i=t[e];if(void 0!==i){var o=Array.isArray(i.s)?String.fromCharCode.apply(null,i.s):this.decodeBase64(i.s);return r?o:o.toLowerCase()}return n},t.prototype.getBoolParam=function(t,e,n){var r=t[e];return r?r.b:n},t.prototype.getNumberParam=function(t,e,n){var r=t[e]||{},i=r.i?r.i:r.f?r.f:n;return"number"==typeof i?i:parseInt(i,10)},t.prototype.getDtypeParam=function(t,e,n){var r=t[e];if(r&&r.type){var i=r.type;switch("string"==typeof r.type&&(i=Mg.DataType[r.type]),i){case Mg.DataType.DT_FLOAT:return"float32";case Mg.DataType.DT_INT32:return"int32";case Mg.DataType.DT_BOOL:return"bool";default:return n}}return n},t.prototype.getTensorShapeParam=function(t,e,n){var r=t[e];if(r&&r.shape){if(r.shape.unknownRank)return;if(null!=r.shape.dim)return r.shape.dim.map(function(t){return"number"==typeof t.size?t.size:parseInt(t.size,10)})}return n},t.prototype.getNumericArrayParam=function(t,e,n){var r=t[e];return r?(r.list.f&&r.list.f.length?r.list.f:r.list.i).map(function(t){return"number"==typeof t?t:parseInt(t,10)}):n},t}(),py=function(t,e,n){switch(t.op){case"BiasAdd":case"Add":return[hu(Ug("a",t,e,n),Ug("b",t,e,n))];case"AddN":return[fu(Ug("tensors",t,e,n))];case"FloorMod":case"Mod":return[Su(Ug("a",t,e,n),Ug("b",t,e,n))];case"Mul":return[Eu(Ug("a",t,e,n),Ug("b",t,e,n))];case"RealDiv":case"Div":return[gu(Ug("a",t,e,n),Ug("b",t,e,n))];case"FloorDiv":return[vu(Ug("a",t,e,n),Ug("b",t,e,n))];case"Sub":return[Du(Ug("a",t,e,n),Ug("b",t,e,n))];case"Minimum":return[xu(Ug("a",t,e,n),Ug("b",t,e,n))];case"Maximum":return[bu(Ug("a",t,e,n),Ug("b",t,e,n))];case"Pow":return[ku(Ug("a",t,e,n),Ug("b",t,e,n))];case"SquaredDifference":return[Tu(Ug("a",t,e,n),Ug("b",t,e,n))];default:throw TypeError("Node type "+t.op+" is not implemented")}},hy=function(t,e,n){switch(t.op){case"Abs":return[fa(Ug("x",t,e,n))];case"Acos":return[da(Ug("x",t,e,n))];case"Acosh":return[ma(Ug("x",t,e,n))];case"Asin":return[ga(Ug("x",t,e,n))];case"Asinh":return[ya(Ug("x",t,e,n))];case"Atan":return[va(Ug("x",t,e,n))];case"Atan2":return[mu(Ug("x",t,e,n),Ug("y",t,e,n))];case"Atanh":return[ba(Ug("x",t,e,n))];case"Ceil":return[wa(Ug("x",t,e,n))];case"Cos":return[Na(Ug("x",t,e,n))];case"Cosh":return[Sa(Ug("x",t,e,n))];case"Elu":return[Bu(Ug("x",t,e,n))];case"Erf":return[Ca(Ug("x",t,e,n))];case"Exp":return[Ea(Ug("x",t,e,n))];case"Expm1":return[Ia(Ug("x",t,e,n))];case"Floor":return[ka(Ug("x",t,e,n))];case"Log":return[Aa(Ug("x",t,e,n))];case"Log1p":return[Ta(Ug("x",t,e,n))];case"Neg":return[Da(Ug("x",t,e,n))];case"Reciprocal":return[Oa(Ug("x",t,e,n))];case"Relu":return[Vu(Ug("x",t,e,n))];case"Round":return[_a(Ug("x",t,e,n))];case"Selu":return[ju(Ug("x",t,e,n))];case"Sigmoid":return[La(Ug("x",t,e,n))];case"Sin":return[za(Ug("x",t,e,n))];case"Sign":return[Fa(Ug("x",t,e,n))];case"Sinh":return[Pa(Ug("x",t,e,n))];case"Softplus":return[Ba(Ug("x",t,e,n))];case"Sqrt":return[Ua(Ug("x",t,e,n))];case"Square":return[Wa(Ug("x",t,e,n))];case"Tanh":return[qa(Ug("x",t,e,n))];case"Tan":return[ja(Ug("x",t,e,n))];case"Relu6":case"ClipByValue":return[xa(Ug("x",t,e,n),Ug("clipValueMin",t,e,n),Ug("clipValueMax",t,e,n))];case"Rsqrt":return[Ma(Wg(t.inputNames[0],e,n))];case"Prod":return[Qs(Ug("x",t,e,n),Ug("axes",t,e,n))];case"LeakyRelu":return[Uu(Ug("x",t,e,n),Ug("alpha",t,e,n))];default:throw TypeError("Node type "+t.op+" is not implemented")}},fy=function(){function t(e,n,r,i,o,a,s){this.name=e,this.dtype=n,this.maxSize=r,this.elementShape=i,this.identicalElementShapes=o,this.dynamicSize=a,this.clearAfterRead=s,this.tensors=[],this.closed_=!1,this.id=t.nextId++}return Object.defineProperty(t.prototype,"closed",{get:function(){return this.closed_},enumerable:!0,configurable:!0}),t.prototype.clearAndClose=function(){this.tensors.forEach(function(t){return t.tensor.dispose()}),this.tensors=[],this.closed_=!0},t.prototype.size=function(){return this.tensors.length},t.prototype.read=function(t){if(this.closed_)throw new Error("TensorArray "+this.name+" has already been closed.");if(t<0||t>=this.tensors.length)throw new Error("Tried to read from index "+t+", but array size is: "+this.tensors.length);var e=this.tensors[t];if(e.cleared)throw new Error("TensorArray "+this.name+": Could not read index "+t+" twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).");return this.clearAfterRead&&(e.cleared=!0),e.read=!0,e.tensor},t.prototype.readMany=function(t){var e=this;return t.map(function(t){return e.read(t)})},t.prototype.write=function(t,e){if(this.closed_)throw new Error("TensorArray "+this.name+" has already been closed.");if(t<0||!this.dynamicSize&&t>=this.maxSize)throw new Error("Tried to write to index "+t+", but array is not resizeable and size is: "+this.maxSize);var n=this.tensors[t]||{};if(e.dtype!==this.dtype)throw new Error("TensorArray "+this.name+": Could not write to TensorArray index "+t+",\n because the value dtype is "+e.dtype+", but TensorArray dtype is "+this.dtype+".");if(0!==this.size()||null!=this.elementShape&&0!==this.elementShape.length||(this.elementShape=e.shape),this.assertShapesMatchAllowUndefinedSize(this.elementShape,e.shape,"TensorArray "+this.name+": Could not write to TensorArray index "+t+"."),n&&n.read)throw new Error("TensorArray "+this.name+": Could not write to TensorArray index "+t+", because it has already been read.");if(n&&n.written)throw new Error("TensorArray "+this.name+": Could not write to TensorArray index "+t+", because it has already been written.");n.tensor=e,n.written=!0,this.tensors[t]=n},t.prototype.writeMany=function(t,e){var n=this;if(t.length!==e.length)throw new Error("TensorArray "+this.name+": could not write multiple tensors,because the index size: "+t.length+" is not the same as tensors size: "+e.length+".");t.forEach(function(t,r){return n.write(t,e[r])})},t.prototype.gather=function(t,e){if(e&&e!==this.dtype)throw new Error("TensorArray dtype is "+this.dtype+" but gather requested dtype "+e);if(!t){t=[];for(var n=0;n<this.size();n++)t.push(n)}if(0===t.length)return Te([],[0].concat(this.elementShape));var r=this.readMany(t);return this.assertShapesMatchAllowUndefinedSize(this.elementShape,r[0].shape,"TensorArray shape mismatch: "),oa(r,0)},t.prototype.concat=function(t){if(t&&t!==this.dtype)throw new Error("TensorArray dtype is "+this.dtype+" but concat requested dtype "+t);if(0===this.size())return Te([],[0].concat(this.elementShape));for(var e=[],n=0;n<this.size();n++)e.push(n);var r=this.readMany(e);return this.assertShapesMatchAllowUndefinedSize(this.elementShape,r[0].shape,"TensorArray shape mismatch: tensor array shape ("+this.elementShape+") vs first tensor shape ("+r[0].shape+")"),xo(r,0)},t.prototype.scatter=function(t,e){if(e.dtype!==this.dtype)throw new Error("TensorArray dtype is "+this.dtype+" but tensor has dtype "+e.dtype);if(t.length!==e.shape[0])throw new Error("Expected len(indices) == tensor.shape[0], but saw: "+t.length+" vs. "+e.shape[0]);var n=Math.max.apply(Math,t);if(!this.dynamicSize&&n>=this.maxSize)throw new Error("Max index must be < array size ("+n+" vs. "+this.maxSize+")");this.writeMany(t,ua(e,0))},t.prototype.split=function(t,e){var n=this;if(e.dtype!==this.dtype)throw new Error("TensorArray dtype is "+this.dtype+" but tensor has dtype "+e.dtype);var r=0,i=t.map(function(t){return r+=t});if(r!==e.shape[0])throw new Error("Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n "+r+", and tensor's shape is: "+e.shape);if(!this.dynamicSize&&t.length!==this.maxSize)throw new Error("TensorArray's size is not equal to the size of lengths ("+this.maxSize+" vs. "+t.length+"), and the TensorArray is not marked as dynamically resizeable");var o=0===r?0:e.size/r,a=[];qt(function(){e=e.reshape([1,r,o]);for(var s=0;s<t.length;++s){var u=[0,0===s?0:i[s-1],0],l=[1,t[s],o];a[s]=zs(e,u,l).reshape(n.elementShape)}return a});for(var s=[],u=0;u<t.length;u++)s[u]=u;this.writeMany(s,a)},t.prototype.assertShapesMatchAllowUndefinedSize=function(t,e,n){void 0===n&&(n=""),X.assert(this.shapesEqualAllowUndefinedSize(t,e),function(){return n+" Shapes "+t+" and "+e+" must match"})},t.prototype.shapesEqualAllowUndefinedSize=function(t,e){if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(-1!==t[n]&&-1!==e[n]&&t[n]!==e[n])return!1;return!0},t.nextId=0,t}();var dy=function(t,e,n){switch(t.op){case"Conv1D":var r=Ug("stride",t,e,n),i=Ug("pad",t,e,n),o=Ug("dataFormat",t,e,n).toUpperCase(),a=Ug("dilation",t,e,n);return[ys(Ug("x",t,e,n),Ug("filter",t,e,n),r,i,o,a)];case"Conv2D":r=Ug("strides",t,e,n),i=Ug("pad",t,e,n),o=Ug("dataFormat",t,e,n).toUpperCase();var s=Ug("dilations",t,e,n);return[vs(Ug("x",t,e,n),Ug("filter",t,e,n),[r[1],r[2]],i,o,[s[0],s[1]])];case"Conv2DBackpropInput":case"Conv2dTranspose":var u=Ug("outputShape",t,e,n);return r=Ug("strides",t,e,n),i=Ug("pad",t,e,n),[Ss(Ug("x",t,e,n),Ug("filter",t,e,n),u,[r[1],r[2]],i)];case"DepthwiseConv2dNative":case"DepthwiseConv2d":return r=Ug("strides",t,e,n),i=Ug("pad",t,e,n),s=Ug("dilations",t,e,n),o=Ug("dataFormat",t,e,n).toUpperCase(),[xs(Ug("input",t,e,n),Ug("filter",t,e,n),[r[1],r[2]],i,o,[s[0],s[1]])];case"AvgPool":r=Ug("strides",t,e,n),i=Ug("pad",t,e,n);var l=Ug("kernelSize",t,e,n);return[Ls(Ug("x",t,e,n),[l[1],l[2]],[r[1],r[2]],i)];case"MaxPool":return r=Ug("strides",t,e,n),i=Ug("pad",t,e,n),l=Ug("kernelSize",t,e,n),[Ms(Ug("x",t,e,n),[l[1],l[2]],[r[1],r[2]],i)];default:throw TypeError("Node type "+t.op+" is not implemented")}},my=function(t,e,n){switch(t.op){case"Fill":var r=Ug("shape",t,e,n),i=Ug("dtype",t,e,n);return[Be(r,Ug("value",t,e,n),i)];case"LinSpace":var o=Ug("start",t,e,n);return[Ue(o,Ug("stop",t,e,n),Ug("num",t,e,n))];case"OneHot":var a=Ug("indices",t,e,n),s=Ug("depth",t,e,n),u=Ug("onValue",t,e,n),l=Ug("offValue",t,e,n);return[Ko(a,s,u,l)];case"Ones":return[ze(Ug("shape",t,e,n),Ug("dtype",t,e,n))];case"OnesLike":return[Ve(Ug("x",t,e,n))];case"RandomUniform":return[ea(Ug("shape",t,e,n),Ug("minval",t,e,n),Ug("maxval",t,e,n),Ug("dtype",t,e,n))];case"Range":return[We(o=Ug("start",t,e,n),Ug("stop",t,e,n),Ug("step",t,e,n),Ug("dtype",t,e,n))];case"TruncatedNormal":r=Ug("shape",t,e,n);var c=Ug("mean",t,e,n),p=Ug("stdDev",t,e,n),h=Ug("seed",t,e,n);return[sa(r,c,p,Ug("dtype",t,e,n),h)];case"Zeros":return[Pe(Ug("shape",t,e,n),Ug("dtype",t,e,n))];case"ZerosLike":return[je(Ug("x",t,e,n))];default:throw TypeError("Node type "+t.op+" is not implemented")}};var gy=function(t,e,n){switch(t.op){case"TopKV2":var r=Ug("x",t,e,n),i=Ug("k",t,e,n),o=Ug("sorted",t,e,n),a=el(r,i,o);return[a.values,a.indices];default:throw TypeError("Node type "+t.op+" is not implemented")}},yy=function(t,e,n){switch(t.op){case"Const":return e[t.name];case"PlaceholderWithDefault":var r=Ug("default",t,e,n);return[Wg(t.name,e,n)||r];case"Placeholder":return[Wg(t.name,e,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":case"Snapshot":return[Ug("x",t,e,n).clone()];case"Shape":return[De(Ug("x",t,e,n).shape,"int32")];case"ShapeN":return Ug("x",t,e,n).map(function(t){return De(t.shape)});case"Size":return[Re(Ug("x",t,e,n).size,"int32")];case"Rank":return[Re(Ug("x",t,e,n).rank,"int32")];case"NoOp":return[];case"Print":var i=Ug("x",t,e,n),o=Ug("data",t,e,n),a=Ug("message",t,e,n),s=Ug("summarize",t,e,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(a);for(var u=0;u<o.length;u++)console.log(Array.prototype.slice.call(o[u].dataSync()).slice(0,s));return[i];default:throw TypeError("Node type "+t.op+" is not implemented")}},vy=function(t,e,n){switch(t.op){case"ResizeBilinear":var r=Ug("images",t,e,n),i=Ug("size",t,e,n),o=Ug("alignCorners",t,e,n);return[Rl.resizeBilinear(r,[i[0],i[1]],o)];case"ResizeNearestNeighbor":return r=Ug("images",t,e,n),i=Ug("size",t,e,n),o=Ug("alignCorners",t,e,n),[Rl.resizeNearestNeighbor(r,[i[0],i[1]],o)];case"CropAndResize":var a=Ug("image",t,e,n),s=Ug("boxes",t,e,n),u=Ug("boxInd",t,e,n),l=Ug("cropSize",t,e,n),c=Ug("method",t,e,n),p=Ug("extrapolationValue",t,e,n);return[Rl.cropAndResize(a,s,u,l,c,p)];default:throw TypeError("Node type "+t.op+" is not implemented")}},by=function(t,e,n){switch(t.op){case"Equal":return[tu(Ug("a",t,e,n),Ug("b",t,e,n))];case"NotEqual":return[cu(Ug("a",t,e,n),Ug("b",t,e,n))];case"Greater":return[nu(Ug("a",t,e,n),Ug("b",t,e,n))];case"GreaterEqual":return[ru(Ug("a",t,e,n),Ug("b",t,e,n))];case"Less":return[au(Ug("a",t,e,n),Ug("b",t,e,n))];case"LessEqual":return[su(Ug("a",t,e,n),Ug("b",t,e,n))];case"LogicalAnd":return[_u(Ug("a",t,e,n),Ug("b",t,e,n))];case"LogicalNot":return[Mu(Ug("a",t,e,n))];case"LogicalOr":return[Lu(Ug("a",t,e,n),Ug("b",t,e,n))];case"Select":return[zu(Ug("condition",t,e,n),Ug("a",t,e,n),Ug("b",t,e,n))];default:throw TypeError("Node type "+t.op+" is not implemented")}},wy=function(t,e,n){switch(t.op){case"BatchMatMul":case"MatMul":return[Cs(Ug("a",t,e,n),Ug("b",t,e,n),Ug("transposeA",t,e,n),Ug("transposeB",t,e,n))];case"Transpose":return[qu(Ug("x",t,e,n),Ug("perm",t,e,n))];default:throw TypeError("Node type "+t.op+" is not implemented")}},xy=function(t,e,n){switch(t.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[es(Ug("x",t,e,n),Ug("mean",t,e,n),Ug("variance",t,e,n),Ug("offset",t,e,n),Ug("scale",t,e,n),Ug("epsilon",t,e,n))];case"LRN":return[Gu(Ug("x",t,e,n),Ug("radius",t,e,n),Ug("bias",t,e,n),Ug("alpha",t,e,n),Ug("beta",t,e,n))];case"Softmax":return[Ce(Ug("x",t,e,n))];case"LogSoftmax":return[Ee(Ug("x",t,e,n))];case"SparseToDense":return[ul(Ug("sparseIndices",t,e,n),Ug("outputShape",t,e,n),Ug("sparseValues",t,e,n),Ug("defaultValue",t,e,n))];default:throw TypeError("Node type "+t.op+" is not implemented")}},Ny=function(t,e,n){switch(t.op){case"Max":var r=Ug("axis",t,e,n),i=Ug("keepDims",t,e,n);return[$s(Ug("x",t,e,n),r,i)];case"Mean":return r=Ug("axis",t,e,n),i=Ug("keepDims",t,e,n),[Xs(Ug("x",t,e,n),r,i)];case"Min":return r=Ug("axis",t,e,n),i=Ug("keepDims",t,e,n),[Ys(Ug("x",t,e,n),r,i)];case"Sum":return r=Ug("axis",t,e,n),i=Ug("keepDims",t,e,n),[Zs(Ug("x",t,e,n),r,i)];case"All":return r=Ug("axis",t,e,n),i=Ug("keepDims",t,e,n),[js(Ug("x",t,e,n),r,i)];case"Any":return r=Ug("axis",t,e,n),i=Ug("keepDims",t,e,n),[qs(Ug("x",t,e,n),r,i)];case"ArgMax":return r=Ug("axis",t,e,n),[Gs(Ug("x",t,e,n),r)];case"ArgMin":return r=Ug("axis",t,e,n),[Hs(Ug("x",t,e,n),r)];case"Prod":return r=Ug("axis",t,e,n),i=Ug("keepDims",t,e,n),[Qs(Ug("x",t,e,n),r,i)];default:throw TypeError("Node type "+t.op+" is not implemented")}},Sy=function(t,e,n){switch(t.op){case"ConcatV2":case"Concat":var r=Ug("axis",t,e,n),i=Ug("tensors",t,e,n);return[xo(i,r)];case"GatherV2":case"Gather":r=Ug("axis",t,e,n);var o=Ug("x",t,e,n),a=Ug("indices",t,e,n);return[Xu(o,a.asType("int32"),r)];case"ReverseV2":case"Reverse":return r=Ug("axis",t,e,n),o=Ug("x",t,e,n),[ks(o,r)];case"Slice":var s=Ug("begin",t,e,n),u=Ug("size",t,e,n);return[zs(Ug("x",t,e,n),s,u)];case"StridedSlice":s=Ug("begin",t,e,n);var l=Ug("end",t,e,n),c=Ug("strides",t,e,n),p=Ug("beginMask",t,e,n),h=Ug("endMask",t,e,n),f=Ug("ellipsisMask",t,e,n),d=Ug("newAxisMask",t,e,n),m=Ug("shrinkAxisMask",t,e,n),g=Ug("x",t,e,n);if(1===s.length&&g.shape.length>1)for(var y=1;y<g.shape.length;y++)s.push(0),l.push(g.shape[y]),c.push(c[0]);return[tl(g,s,l,c,p,h,f,d,m)];case"Pack":return qt(function(){var r=Ug("axis",t,e,n),i=Ug("tensors",t,e,n),o=i[0].shape,a=i[0].squeeze().shape,s=i.map(function(t){var e=X.arraysEqual(t.shape,o);if(!e&&!X.arraysEqual(t.squeeze().shape,a))throw new Error("the input tensors shape does not match");return e?t:t.reshape(o)});return[oa(s,r)]});case"Unpack":return qt(function(){var r=Ug("axis",t,e,n),i=Ug("tensor",t,e,n);return ua(i,r)});case"Tile":var v=Ug("reps",t,e,n);return[aa(Ug("x",t,e,n),v)];case"Split":case"SplitV":r=Ug("axis",t,e,n);var b=Ug("numOrSizeSplits",t,e,n);return Io(Ug("x",t,e,n),b,r);case"ScatterNd":a=Ug("indices",t,e,n);var w=Ug("values",t,e,n),x=Ug("shape",t,e,n);return[nl(a,w,x)];case"GatherNd":var N=Ug("x",t,e,n);return a=Ug("indices",t,e,n),[ll(N,a)];case"SparseToDense":a=Ug("sparseIndices",t,e,n),x=Ug("outputShape",t,e,n);var S=Ug("sparseValues",t,e,n),C=Ug("defaultValue",t,e,n);return[ul(a,S,x,S.dtype===C.dtype?C:C.asType(S.dtype))];default:throw TypeError("Node type "+t.op+" is not implemented")}},Cy=function(t,e,n){switch(t.op){case"FFT":return[rl(Ug("x",t,e,n))];case"IFFT":return[il(Ug("x",t,e,n))];case"RFFT":return[ol(Ug("x",t,e,n))];case"IRFFT":return[al(Ug("x",t,e,n))];default:throw TypeError("Node type "+t.op+" is not implemented")}},Ey=function(t,e,n){switch(t.op){case"Cast":return[Uo(Ug("x",t,e,n),Ug("dtype",t,e,n))];case"ExpandDims":var r=Ug("axis",t,e,n);return[qo(Ug("x",t,e,n),r)];case"Squeeze":return r=Ug("axis",t,e,n),[ia(Ug("x",t,e,n),r)];case"Reshape":return[na(Ug("x",t,e,n),Ug("shape",t,e,n))];case"PadV2":case"Pad":return[$o(Ug("x",t,e,n),Gg(Ug("padding",t,e,n),2),Ug("constantValue",t,e,n))];case"SpaceToBatchND":var i=Ug("blockShape",t,e,n),o=Gg(Ug("paddings",t,e,n),2);return[ra(Ug("x",t,e,n),i,o)];case"BatchToSpaceND":i=Ug("blockShape",t,e,n);var a=Gg(Ug("crops",t,e,n),2);return[Bo(Ug("x",t,e,n),i,a)];case"DepthToSpace":var s=Ug("blockSize",t,e,n),u=Ug("dataFormat",t,e,n).toUpperCase();return[jo(Ug("x",t,e,n),s,u)];default:throw TypeError("Node type "+t.op+" is not implemented")}};function Iy(t,e,n){var r=function(t,e,n){switch(t.category){case"arithmetic":return py(t,e,n);case"basic_math":return hy(t,e,n);case"control":return function(t,e,n){return Pg(this,void 0,void 0,function(){var r,i,o,a,s,u,l,c,p,h,f,d,m,g,y,v,b,w,x,N,S,C,E,I,k,A,T,R,D,O,_,M,L,F;return Bg(this,function(z){switch(z.label){case 0:switch(t.op){case"LoopCond":return[3,1];case"Switch":return[3,2];case"Merge":return[3,4];case"Enter":return[3,5];case"Exit":return[3,6];case"NextIteration":return[3,7];case"TensorArrayV3":return[3,8];case"TensorArrayWriteV3":return[3,9];case"TensorArrayReadV3":return[3,10];case"TensorArrayGatherV3":return[3,11];case"TensorArrayScatterV3":return[3,12];case"TensorArrayConcatV3":return[3,13];case"TensorArraySplitV3":return[3,14];case"TensorArraySizeV3":return[3,15];case"TensorArrayCloseV3":return[3,16]}return[3,17];case 1:return[2,[Ug("pred",t,e,n).clone()]];case 2:return r=Ug("pred",t,e,n),i=Ug("data",t,e,n),[4,r.data()];case 3:return[2,z.sent()[0]?[void 0,i.clone()]:[i.clone(),void 0]];case 4:return[2,(o=t.inputNames.find(function(t){return void 0!==Wg(t,e,n)}))?[Wg(o,e,n).clone()]:void 0];case 5:return a=Ug("frameName",t,e,n),s=Ug("tensor",t,e,n),n.enterFrame(a),[2,[s.clone()]];case 6:return u=Ug("tensor",t,e,n),n.exitFrame(),[2,[u.clone()]];case 7:return l=Ug("tensor",t,e,n),n.nextIteration(),[2,[l.clone()]];case 8:return c=Ug("size",t,e,n),p=Ug("dtype",t,e,n),h=Ug("elementShape",t,e,n),f=Ug("dynamicSize",t,e,n),d=Ug("clearAfterRead",t,e,n),m=Ug("identicalElementShapes",t,e,n),g=Ug("name",t,e,n),y=new fy(g,p,c,h,m,f,d),n.addTensorArray(y),[2,[Re(y.id),Re(1)]];case 9:return v=Ug("tensorArrayId",t,e,n),b=Ug("index",t,e,n),w=Ug("tensor",t,e,n),n.getTensorArray(v).write(b,w),[2,[Re(1)]];case 10:return x=Ug("tensorArrayId",t,e,n),N=Ug("index",t,e,n),[2,[n.getTensorArray(x).read(N)]];case 11:return S=Ug("tensorArrayId",t,e,n),C=Ug("indices",t,e,n),E=Ug("dtype",t,e,n),[2,[n.getTensorArray(S).gather(C,E)]];case 12:return I=Ug("tensorArrayId",t,e,n),k=Ug("indices",t,e,n),A=Ug("tensor",t,e,n),n.getTensorArray(I).scatter(k,A),[2,[Re(1)]];case 13:return T=Ug("tensorArrayId",t,e,n),R=n.getTensorArray(T),D=Ug("dtype",t,e,n),[2,[R.concat(D)]];case 14:return O=Ug("tensorArrayId",t,e,n),_=Ug("tensor",t,e,n),M=Ug("lengths",t,e,n),n.getTensorArray(O).split(M,_),[2,[Re(1)]];case 15:return L=Ug("tensorArrayId",t,e,n),[2,[Re(n.getTensorArray(L).size(),"int32")]];case 16:return F=Ug("tensorArrayId",t,e,n),n.getTensorArray(F).clearAndClose(),[2,[]];case 17:throw TypeError("Node type "+t.op+" is not implemented")}})})}(t,e,n);case"convolution":return dy(t,e,n);case"creation":return my(t,e,n);case"dynamic":return function(t,e,n){return Pg(this,void 0,void 0,function(){var r,i,o,a,s;return Bg(this,function(u){switch(u.label){case 0:switch(t.op){case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":return[3,1];case"Where":return[3,3];case"ListDiff":return[3,5]}return[3,7];case 1:return r=Ug("boxes",t,e,n),i=Ug("scores",t,e,n),o=Ug("maxOutputSize",t,e,n),a=Ug("iouThreshold",t,e,n),s=Ug("scoreThreshold",t,e,n),[4,Rl.nonMaxSuppressionAsync(r,i,o,a,s)];case 2:return[2,[u.sent()]];case 3:return[4,Pu(Ug("condition",t,e,n))];case 4:return[2,[u.sent()]];case 5:return[4,la(Ug("x",t,e,n),Ug("y",t,e,n))];case 6:return[2,u.sent()];case 7:throw TypeError("Node type "+t.op+" is not implemented")}})})}(t,e,n);case"evaluation":return gy(t,e,n);case"image":return vy(t,e,n);case"graph":return yy(t,e,n);case"logical":return by(t,e,n);case"matrices":return wy(t,e,n);case"normalization":return xy(t,e,n);case"reduction":return Ny(t,e,n);case"slice_join":return Sy(t,e,n);case"spectral":return Cy(t,e,n);case"transformation":return Ey(t,e,n);default:throw TypeError("Node type "+t.op+" is not implemented")}}(t,e,n);return r instanceof Promise?r.then(function(t){return[].concat(t)}):[].concat(r)}var ky=function(){function t(t,e){this.weightMap=t,this.tensorArrayMap=e,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}return t.prototype.newFrame=function(t,e){return{id:t,frameName:e,iterationId:0}},Object.defineProperty(t.prototype,"currentContext",{get:function(){return this.contexts},set:function(t){this.contexts!==t&&(this.contexts=t,this.generateCurrentContextIds())},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"currentContextId",{get:function(){return this._currentContextIds[0]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"currentContextIds",{get:function(){return this._currentContextIds},enumerable:!0,configurable:!0}),t.prototype.generateCurrentContextIds=function(){for(var t=[],e=0;e<this.contexts.length-1;e++){var n=this.contexts.slice(0,this.contexts.length-e);t.push(this.contextIdforContexts(n))}t.push(""),this._currentContextIds=t},t.prototype.contextIdforContexts=function(t){return t?t.map(function(t){return 0===t.id&&0===t.iterationId?"":t.frameName+"-"+t.iterationId}).join("/"):""},t.prototype.enterFrame=function(t){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,t)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))},t.prototype.exitFrame=function(){if(!(this.contexts&&this.contexts.length>1))throw new Error("Cannot exit frame, the context is empty");this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift()},t.prototype.nextIteration=function(){if(!(this.contexts&&this.contexts.length>0))throw new Error("Cannot increase frame iteration, the context is empty");this.contexts=this.contexts.slice(),this.lastId++;var t=Object.assign({},this.contexts[this.contexts.length-1]);t.iterationId+=1,t.id=this.lastId,this.contexts.splice(-1,1,t),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))},t.prototype.getWeight=function(t){return this.weightMap[t]},t.prototype.addTensorArray=function(t){this.tensorArrayMap[t.id]=t},t.prototype.getTensorArray=function(t){return this.tensorArrayMap[t]},t}(),Ay=function(){function t(t){this.graph=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this.placeholders=t.placeholders,this._outputs=t.outputs,this.compile()}return Object.defineProperty(t.prototype,"weightMap",{get:function(){return this._weightMap},set:function(t){var e=Object.keys(t).map(function(e){return t[e].map(function(t){return t.id})});this.weightIds=[].concat.apply([],e),this._weightMap=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"inputs",{get:function(){return this.placeholders.map(function(t){return{name:t.name,shape:t.attrParams.shape?t.attrParams.shape.value:void 0,dtype:t.attrParams.dtype?t.attrParams.dtype.value:void 0}})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"outputs",{get:function(){return this._outputs.map(function(t){return{name:t.name,shape:t.attrParams.shape?t.attrParams.shape.value:void 0,dtype:t.attrParams.dtype?t.attrParams.dtype.value:void 0}})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"inputNodes",{get:function(){return this.placeholders.map(function(t){return t.name})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"outputNodes",{get:function(){return this.outputs.map(function(t){return t.name})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isControlFlowModel",{get:function(){return this.graph.withControlFlow},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isDynamicShapeModel",{get:function(){return this.graph.withDynamicShape},enumerable:!0,configurable:!0}),t.prototype.compile=function(t){if(!this.graph.withControlFlow&&!this.graph.withDynamicShape){var e=[],n=t||this.graph.placeholders,r=n.map(function(t){return t.name}).sort().join(this.SEPERATOR);if(!this.compiledMap.get(r)){for(var i=n.concat(this.graph.weights),o={};i.length>0;){var a=i.pop();o[a.name]=!0,e.push(a),a.children.forEach(function(t){!o[t.name]&&t.inputNames.every(function(t){var e=Vg(t)[0];return o[e]})&&i.push(t)})}this.compiledMap.set(r,e)}}},t.prototype.execute=function(t,e,n){var r=this;void 0===e&&(e=!0);var i=Object.keys(t).sort();this.checkInput(t,e),this.checkInputShapeAndType(t,e),this.compile(i.map(function(t){return r.graph.nodes[t]}));var o=this.calculateOutputs(n);this.checkOutput(this.compiledMap.get(i.join(this.SEPERATOR)),o);var a={};return qt(function(){for(var e=new ky(r._weightMap,a),n=zg({},r.weightMap,t),s=r.getFrozenTensorIds(n),u={},l=r.compiledMap.get(i.join(r.SEPERATOR)),c=0;c<l.length;c++){var p=l[c];if(n[p.name]||(n[p.name]=Iy(p,n,e),r.checkTensorForDisposal(p.name,p,n,e,s,o,u)),o.every(function(t){return!!n[t]}))break}return r.findOutputs(n,e,o)})},t.prototype.getFrozenTensorIds=function(t){var e=[].concat.apply([],Object.keys(t).map(function(e){return t[e]}).map(function(t){return t.map(function(t){return t.id})}));return new Set(e)},t.prototype.checkTensorForDisposal=function(t,e,n,r,i,o,a){"control"!==e.category&&-1===o.indexOf(t)&&(n[t].forEach(function(t){null!=t&&(a[t.id]=(a[t.id]||0)+e.children.length)}),e.inputs.forEach(function(t){if("control"!==t.category){var e=function(t,e,n){return e[jg(t,n.currentContextId)]}(t.name,n,r);null!=e&&e.forEach(function(t){if(t&&!i.has(t.id)){var e=a[t.id];1===e?(t.dispose(),delete a[t.id]):null!=e&&a[t.id]--}})}}))},t.prototype.executeAsync=function(t,e){return Pg(this,void 0,void 0,function(){var n,r,i,o,a,s,u,l,c=this;return Bg(this,function(p){switch(p.label){case 0:return this.checkInput(t,!1),this.checkInputShapeAndType(t,!1),n={},r=new ky(this._weightMap,n),i=this.calculateOutputs(e),[4,this.executeWithControlFlow(t,r,i)];case 1:return o=p.sent(),a=this.findOutputs(o,r,e),s=Object.keys(a).map(function(t){return a[t].id}),u=Object.keys(t).map(function(e){return t[e].map(function(t){return t.id})}),l=[].concat.apply([],u),Object.keys(o).forEach(function(t){o[t].forEach(function(t){t&&!t.isDisposed&&-1===s.indexOf(t.id)&&-1===l.indexOf(t.id)&&-1===c.weightIds.indexOf(t.id)&&t.dispose()})}),[2,a]}})})},t.prototype.executeWithControlFlow=function(t,e,n){return Pg(this,void 0,void 0,function(){var r,i,o,a,s,u,l,c,p=this;return Bg(this,function(h){switch(h.label){case 0:r=Object.keys(t),i=r.map(function(t){return p.graph.nodes[t]}),o=i.concat(this.graph.weights).map(function(t){return{node:t,contexts:e.currentContext}}),a=zg({},this.weightMap,t),s={},u=this.getFrozenTensorIds(a),l={},h.label=1;case 1:return o.length>0?(c=this.processStack(i,o,e,a,l,u,n,s),[4,Promise.all(c)]):[3,3];case 2:return h.sent(),[3,1];case 3:return[2,a]}})})},t.prototype.processStack=function(t,e,n,r,i,o,a,s){for(var u=this,l=[],c=function(){var c=e.pop();n.currentContext=c.contexts;var h="";if("Enter"===c.node.op&&Ug("isConstant",c.node,r,n)&&(h=Vg(c.node.name,n)[0]),-1===t.indexOf(c.node)){var f=Iy(c.node,r,n);h||(h=Vg(c.node.name,n)[0]);var d=n.currentContext;f instanceof Promise?l.push(f.then(function(t){return r[h]=t,n.currentContext=d,u.checkTensorForDisposal(h,c.node,r,n,o,a,s),u.processChildNodes(c.node,e,n,r,i),t})):(r[h]=f,p.checkTensorForDisposal(h,c.node,r,n,o,a,s),p.processChildNodes(c.node,e,n,r,i))}else p.processChildNodes(c.node,e,n,r,i)},p=this;e.length>0;)c();return l},t.prototype.processChildNodes=function(t,e,n,r,i){t.children.forEach(function(t){var o=Vg(t.name,n)[0];i[o]||("Merge"===t.op?t.inputNames.some(function(t){return!!Wg(t,r,n)})&&(i[o]=!0,e.push({contexts:n.currentContext,node:t})):t.inputNames.every(function(t){return!!Wg(t,r,n)})&&(i[o]=!0,e.push({contexts:n.currentContext,node:t})))})},t.prototype.calculateOutputs=function(t){return!t||t instanceof Array||(t=[t]),t||this.graph.outputs.map(function(t){return t.name})},t.prototype.findOutputs=function(t,e,n){return this.calculateOutputs(n).reduce(function(n,r){return n[r]=Wg(r,t,e),n},{})},t.prototype.dispose=function(){var t=this;Object.keys(this.weightMap).forEach(function(e){return t.weightMap[e].forEach(function(t){return t.dispose()})})},t.prototype.checkInputShapeAndType=function(t,e){void 0===e&&(e=!0),this.placeholders.forEach(function(n){var r=t[n.name];if(e||r){var i=r[0];if(n.attrParams.shape&&n.attrParams.shape.value){var o=n.attrParams.shape.value,a=o.length===i.shape.length&&i.shape.every(function(t,e){return-1===o[e]||o[e]===t});X.assert(a,function(){return"The shape of dict['"+n.name+"'] provided in model.execute(dict) must be ["+o+"], but was ["+i.shape+"]"})}n.attrParams.dtype&&n.attrParams.dtype.value&&X.assert(i.dtype===n.attrParams.dtype.value,function(){return"The dtype of dict['"+n.name+"'] provided in model.execute(dict) must be "+n.attrParams.dtype.value+", but was "+i.dtype})}})},t.prototype.checkInput=function(t,e){var n=this;void 0===e&&(e=!0);var r=Object.keys(t),i=[],o=[];this.inputNodes.forEach(function(t){-1===r.indexOf(t)&&i.push(t)}),r.forEach(function(t){-1===n.inputNodes.indexOf(t)&&o.push(t)});var a=o.filter(function(t){return!n.graph.nodes[t]});if(i.length>0&&e)throw new Error("The dict provided in model.execute(dict) has the keys ["+r+"], but is missing the required keys: ["+i+"].");if(o.length>0&&e)throw new Error("The dict provided in model.execute(dict) has unused keys: ["+o+"]. Please provide only the following keys: ["+this.inputNodes+"].");if(a.length>0)throw new Error("The dict provided in model.execute(dict) has keys: ["+a+"] not part of model graph.")},t.prototype.checkOutput=function(t,e){var n=t.map(function(t){return t.name}),r=[];if(e.forEach(function(t){var e=qg(t)[0];-1===n.indexOf(e)&&r.push(e)}),r.length>0)throw new Error("The following outputs are not generated by the execution: ["+r+"].")},t}(),Ty="?tfjs-format=file",Ry="model.json",Dy=function(){function t(t,e){void 0===e&&(e={}),this.modelUrl=t,this.loadOptions=e,this.version="n/a",null==e&&(this.loadOptions={})}return Object.defineProperty(t.prototype,"modelVersion",{get:function(){return this.version},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"inputNodes",{get:function(){return this.executor.inputNodes},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"outputNodes",{get:function(){return this.executor.outputNodes},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"inputs",{get:function(){return this.executor.inputs},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"outputs",{get:function(){return this.executor.outputs},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"weights",{get:function(){return this.executor.weightMap},enumerable:!0,configurable:!0}),t.prototype.findIOHandler=function(){var t=this.modelUrl;if(null!=t.load)this.handler=t;else if(null!=this.loadOptions.requestInit)this.handler=Ac.browserHTTPRequest(t,this.loadOptions);else{var e=Ac.getLoadHandlers(t,this.loadOptions.onProgress);if(0===e.length)e.push(Ac.browserHTTPRequest(t,this.loadOptions));else if(e.length>1)throw new Error("Found more than one ("+e.length+") load handlers for URL '"+[t]+"'");this.handler=e[0]}},t.prototype.load=function(){return Pg(this,void 0,void 0,function(){var t,e,n;return Bg(this,function(r){switch(r.label){case 0:if(this.findIOHandler(),null==this.handler.load)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");return[4,this.handler.load()];case 1:return t=r.sent(),e=t.modelTopology,this.version=e.versions.producer+"."+e.versions.minConsumer,n=Ac.decodeWeights(t.weightData,t.weightSpecs),this.executor=new Ay(cy.Instance.transformGraph(e)),this.executor.weightMap=this.convertTensorMapToTensorsMap(n),[2,!0]}})})},t.prototype.predict=function(t,e){return this.execute_(t,!0,this.outputNodes)},t.prototype.constructTensorMap=function(t){var e=t instanceof ut?[t]:t;if(e.length!==this.inputNodes.length)throw new Error("Input tensor count mismatch,the graph model has "+this.inputNodes.length+" placeholders, while there are "+e.length+" input tensors.");return this.inputNodes.reduce(function(t,n,r){return t[n]=e[r],t},{})},t.prototype.execute=function(t,e){return this.execute_(t,!1,e)},t.prototype.execute_=function(t,e,n){if(void 0===e&&(e=!0),n=n||this.outputNodes,(t instanceof ut||Array.isArray(t))&&(t=this.constructTensorMap(t)),this.executor.isControlFlowModel||this.executor.isDynamicShapeModel)throw new Error("The model contains control flow or dynamic shape ops, please use executeAsync method");var r=this.executor.execute(this.convertTensorMapToTensorsMap(t),e,n),i=Object.keys(r);return Array.isArray(n)&&n.length>1?n.map(function(t){return r[t]}):r[i[0]]},t.prototype.executeAsync=function(t,e){return Pg(this,void 0,void 0,function(){var n,r;return Bg(this,function(i){switch(i.label){case 0:if(!this.executor.isControlFlowModel&&!this.executor.isDynamicShapeModel)throw new Error("The model does not contain control flow or dynamic shape ops, please use execute method for better performance.");return e=e||this.outputNodes,(t instanceof ut||Array.isArray(t))&&(t=this.constructTensorMap(t)),[4,this.executor.executeAsync(this.convertTensorMapToTensorsMap(t),e)];case 1:return n=i.sent(),r=Object.keys(n),[2,Array.isArray(e)&&e.length>1?e.map(function(t){return n[t]}):n[r[0]]]}})})},t.prototype.convertTensorMapToTensorsMap=function(t){return Object.keys(t).reduce(function(e,n){return e[n]=[t[n]],e},{})},t.prototype.dispose=function(){this.executor.dispose()},t}();var Oy=function(t,e){return(Oy=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function _y(t,e){function n(){this.constructor=t}Oy(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function My(t,e,n,r){return new(n||(n=Promise))(function(i,o){function a(t){try{u(r.next(t))}catch(t){o(t)}}function s(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(a,s)}u((r=r.apply(t,e||[])).next())})}function Ly(t,e){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=e.call(t,a)}catch(t){o=[6,t],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}}var Fy="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function zy(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function Py(t,e){return t(e={exports:{}},e.exports),e.exports}var By=Py(function(t){!function(t,e,n){function r(t,e){return e.c=t.c,e.s0=t.s0,e.s1=t.s1,e.s2=t.s2,e}function i(t,e){var n=new function(t){var e,n=this,r=(e=4022871197,function(t){t=t.toString();for(var n=0;n<t.length;n++){var r=.02519603282416938*(e+=t.charCodeAt(n));r-=e=r>>>0,e=(r*=e)>>>0,e+=4294967296*(r-=e)}return 2.3283064365386963e-10*(e>>>0)});n.next=function(){var t=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=t-(n.c=0|t)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(t),n.s0<0&&(n.s0+=1),n.s1-=r(t),n.s1<0&&(n.s1+=1),n.s2-=r(t),n.s2<0&&(n.s2+=1),r=null}(t),i=e&&e.state,o=n.next;return o.int32=function(){return 4294967296*n.next()|0},o.double=function(){return o()+1.1102230246251565e-16*(2097152*o()|0)},o.quick=o,i&&("object"==typeof i&&r(i,n),o.state=function(){return r(n,{})}),o}e&&e.exports?e.exports=i:this.alea=i}(0,t)}),Uy=Py(function(t){!function(t,e,n){function r(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e}function i(t,e){var n=new function(t){var e=this,n="";e.x=0,e.y=0,e.z=0,e.w=0,e.next=function(){var t=e.x^e.x<<11;return e.x=e.y,e.y=e.z,e.z=e.w,e.w^=e.w>>>19^t^t>>>8},t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),e.next()}(t),i=e&&e.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},o.int32=n.next,o.quick=o,i&&("object"==typeof i&&r(i,n),o.state=function(){return r(n,{})}),o}e&&e.exports?e.exports=i:this.xor128=i}(0,t)}),Wy=Py(function(t){!function(t,e,n){function r(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e.v=t.v,e.d=t.d,e}function i(t,e){var n=new function(t){var e=this,n="";e.next=function(){var t=e.x^e.x>>>2;return e.x=e.y,e.y=e.z,e.z=e.w,e.w=e.v,(e.d=e.d+362437|0)+(e.v=e.v^e.v<<4^t^t<<1)|0},e.x=0,e.y=0,e.z=0,e.w=0,e.v=0,t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),r==n.length&&(e.d=e.x<<10^e.x>>>4),e.next()}(t),i=e&&e.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},o.int32=n.next,o.quick=o,i&&("object"==typeof i&&r(i,n),o.state=function(){return r(n,{})}),o}e&&e.exports?e.exports=i:this.xorwow=i}(0,t)}),Vy=Py(function(t){!function(t,e,n){function r(t,e){return e.x=t.x.slice(),e.i=t.i,e}function i(t,e){null==t&&(t=+new Date);var n=new function(t){var e=this;e.next=function(){var t,n,r=e.x,i=e.i;return t=r[i],n=(t^=t>>>7)^t<<24,n^=(t=r[i+1&7])^t>>>10,n^=(t=r[i+3&7])^t>>>3,n^=(t=r[i+4&7])^t<<7,t=r[i+7&7],n^=(t^=t<<13)^t<<9,r[i]=n,e.i=i+1&7,n},function(t,e){var n,r=[];if(e===(0|e))r[0]=e;else for(e=""+e,n=0;n<e.length;++n)r[7&n]=r[7&n]<<15^e.charCodeAt(n)+r[n+1&7]<<13;for(;r.length<8;)r.push(0);for(n=0;n<8&&0===r[n];++n);for(8==n?r[7]=-1:r[n],t.x=r,t.i=0,n=256;n>0;--n)t.next()}(e,t)}(t),i=e&&e.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},o.int32=n.next,o.quick=o,i&&(i.x&&r(i,n),o.state=function(){return r(n,{})}),o}e&&e.exports?e.exports=i:this.xorshift7=i}(0,t)}),jy=Py(function(t){!function(t,e,n){function r(t,e){return e.i=t.i,e.w=t.w,e.X=t.X.slice(),e}function i(t,e){null==t&&(t=+new Date);var n=new function(t){var e=this;e.next=function(){var t,n,r=e.w,i=e.X,o=e.i;return e.w=r=r+1640531527|0,n=i[o+34&127],t=i[o=o+1&127],n^=n<<13,t^=t<<17,n^=n>>>15,t^=t>>>12,n=i[o]=n^t,e.i=o,n+(r^r>>>16)|0},function(t,e){var n,r,i,o,a,s=[],u=128;for(e===(0|e)?(r=e,e=null):(e+="\0",r=0,u=Math.max(u,e.length)),i=0,o=-32;o<u;++o)e&&(r^=e.charCodeAt((o+32)%e.length)),0===o&&(a=r),r^=r<<10,r^=r>>>15,r^=r<<4,r^=r>>>13,o>=0&&(a=a+1640531527|0,i=0==(n=s[127&o]^=r+a)?i+1:0);for(i>=128&&(s[127&(e&&e.length||0)]=-1),i=127,o=512;o>0;--o)r=s[i+34&127],n=s[i=i+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[i]=r^n;t.w=a,t.X=s,t.i=i}(e,t)}(t),i=e&&e.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},o.int32=n.next,o.quick=o,i&&(i.X&&r(i,n),o.state=function(){return r(n,{})}),o}e&&e.exports?e.exports=i:this.xor4096=i}(0,t)}),qy=Py(function(t){!function(t,e,n){function r(t,e){return e.a=t.a,e.b=t.b,e.c=t.c,e.d=t.d,e}function i(t,e){var n=new function(t){var e=this,n="";e.next=function(){var t=e.b,n=e.c,r=e.d,i=e.a;return t=t<<25^t>>>7^n,n=n-r|0,r=r<<24^r>>>8^i,i=i-t|0,e.b=t=t<<20^t>>>12^n,e.c=n=n-r|0,e.d=r<<16^n>>>16^i,e.a=i-t|0},e.a=0,e.b=0,e.c=-1640531527,e.d=1367130551,t===Math.floor(t)?(e.a=t/4294967296|0,e.b=0|t):n+=t;for(var r=0;r<n.length+20;r++)e.b^=0|n.charCodeAt(r),e.next()}(t),i=e&&e.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},o.int32=n.next,o.quick=o,i&&("object"==typeof i&&r(i,n),o.state=function(){return r(n,{})}),o}e&&e.exports?e.exports=i:this.tychei=i}(0,t)}),Gy=Py(function(t){!function(e,n){var r,i=(0,eval)("this"),o=256,a=6,s="random",u=n.pow(o,a),l=n.pow(2,52),c=2*l,p=o-1;function h(t,h,g){var y=[],v=d(function t(e,n){var r,i=[],o=typeof e;if(n&&"object"==o)for(r in e)try{i.push(t(e[r],n-1))}catch(t){}return i.length?i:"string"==o?e:e+"\0"}((h=1==h?{entropy:!0}:h||{}).entropy?[t,m(e)]:null==t?function(){try{var t;return r&&(t=r.randomBytes)?t=t(o):(t=new Uint8Array(o),(i.crypto||i.msCrypto).getRandomValues(t)),m(t)}catch(t){var n=i.navigator,a=n&&n.plugins;return[+new Date,i,a,i.screen,m(e)]}}():t,3),y),b=new function(t){var e,n=t.length,r=this,i=0,a=r.i=r.j=0,s=r.S=[];for(n||(t=[n++]);i<o;)s[i]=i++;for(i=0;i<o;i++)s[i]=s[a=p&a+t[i%n]+(e=s[i])],s[a]=e;(r.g=function(t){for(var e,n=0,i=r.i,a=r.j,s=r.S;t--;)e=s[i=p&i+1],n=n*o+s[p&(s[i]=s[a=p&a+e])+(s[a]=e)];return r.i=i,r.j=a,n})(o)}(y),w=function(){for(var t=b.g(a),e=u,n=0;t<l;)t=(t+n)*o,e*=o,n=b.g(1);for(;t>=c;)t/=2,e/=2,n>>>=1;return(t+n)/e};return w.int32=function(){return 0|b.g(4)},w.quick=function(){return b.g(4)/4294967296},w.double=w,d(m(b.S),e),(h.pass||g||function(t,e,r,i){return i&&(i.S&&f(i,b),t.state=function(){return f(b,{})}),r?(n[s]=t,e):t})(w,v,"global"in h?h.global:this==n,h.state)}function f(t,e){return e.i=t.i,e.j=t.j,e.S=t.S.slice(),e}function d(t,e){for(var n,r=t+"",i=0;i<r.length;)e[p&i]=p&(n^=19*e[p&i])+r.charCodeAt(i++);return m(e)}function m(t){return String.fromCharCode.apply(0,t)}if(n["seed"+s]=h,d(n.random(),e),t.exports){t.exports=h;try{r=require("crypto")}catch(t){}}}([],Math)});Gy.alea=By,Gy.xor128=Uy,Gy.xorwow=Wy,Gy.xorshift7=Vy,Gy.xor4096=jy,Gy.tychei=qy;var Hy=Gy.alea,Ky=Py(function(t,e){function n(t){for(var e=t.length,n=0,r=0;e>0;)r=Math.random()*e|0,n=t[--e],t[e]=t[r],t[r]=n}function r(t,e){if(!t)throw new Error("string"==typeof e?e:e())}function i(t,e){if(void 0===e&&(e=[]),null==e&&(e=[]),Array.isArray(t)||l(t))for(var n=0;n<t.length;++n)i(t[n],e);else e.push(t);return e}function o(t,e){if(t===e)return!0;if(null==t||null==e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}function a(t){return t%1==0}function s(t,e){var n=e.length;return r((t=null==t?e.map(function(t,e){return e}):[].concat(t)).every(function(t){return t>=-n&&t<n}),function(){return"All values in axis param must be in range [-"+n+", "+n+") but got axis "+t}),r(t.every(function(t){return a(t)}),function(){return"All values in axis param must be integers but got axis "+t}),t.map(function(t){return t<0?n+t:t})}function u(t,e){for(var n=0;n<t.length;n++){var r=t[n];if(isNaN(r)||!isFinite(r))throw Error("A tensor of type "+e+" being uploaded contains "+r+".")}}function l(t){return t instanceof Float32Array||t instanceof Int32Array||t instanceof Uint8Array}function c(t){return"string"==typeof t||t instanceof String}function p(t){return"boolean"==typeof t}function h(t){return"number"==typeof t}function f(t,e){if(null==e||"float32"===e||"complex64"===e)return new Float32Array(t);if("int32"===e)return new Int32Array(t);if("bool"===e)return new Uint8Array(t);throw new Error("Unknown data type "+e)}Object.defineProperty(e,"__esModule",{value:!0}),e.shuffle=n,e.clamp=function(t,e,n){return Math.max(t,Math.min(e,n))},e.nearestLargerEven=function(t){return t%2==0?t:t+1},e.sum=function(t){for(var e=0,n=0;n<t.length;n++)e+=t[n];return e},e.randUniform=function(t,e){var n=Math.random();return e*n+(1-n)*t},e.distSquared=function(t,e){for(var n=0,r=0;r<t.length;r++){var i=Number(t[r])-Number(e[r]);n+=i*i}return n},e.assert=r,e.assertShapesMatch=function(t,e,n){void 0===n&&(n=""),r(o(t,e),function(){return n+" Shapes "+t+" and "+e+" must match"})},e.assertNonNull=function(t){r(null!=t,function(){return"The input to the tensor constructor must be a non-null value."})},e.flatten=i,e.sizeFromShape=function(t){if(0===t.length)return 1;for(var e=t[0],n=1;n<t.length;n++)e*=t[n];return e},e.isScalarShape=function(t){return 0===t.length},e.arraysEqual=o,e.isInt=a,e.tanh=function(t){if(null!=Math.tanh)return Math.tanh(t);if(t===1/0)return 1;if(t===-1/0)return-1;var e=Math.exp(2*t);return(e-1)/(e+1)},e.sizeToSquarishShape=function(t){var e=Math.ceil(Math.sqrt(t));return[e,Math.ceil(t/e)]},e.createShuffledIndices=function(t){for(var e=new Uint32Array(t),r=0;r<t;++r)e[r]=r;return n(e),e},e.rightPad=function(t,e){return e<=t.length?t:t+" ".repeat(e-t.length)},e.repeatedTry=function(t,e,n){return void 0===e&&(e=function(t){return 0}),new Promise(function(r,i){var o=0,a=function(){if(t())r();else{var s=e(++o);null!=n&&o>=n?i():setTimeout(a,s)}};a()})},e.inferFromImplicitShape=function(t,e){for(var n=1,r=-1,i=0;i<t.length;++i)if(t[i]>=0)n*=t[i];else if(-1===t[i]){if(-1!==r)throw Error("Shapes can only have 1 implicit size. Found -1 at dim "+r+" and dim "+i);r=i}else if(t[i]<0)throw Error("Shapes can not be < 0. Found "+t[i]+" at dim "+i);if(-1===r){if(e>0&&e!==n)throw Error("Size("+e+") must match the product of shape "+t);return t}if(0===n)throw Error("Cannot infer the missing size in ["+t+"] when there are 0 elements");if(e%n!=0)throw Error("The implicit shape can't be a fractional number. Got "+e+" / "+n);var o=t.slice();return o[r]=e/n,o},e.parseAxisParam=s,e.squeezeShape=function(t,e){for(var n=[],r=[],i=null==e?null:s(e,t).sort(),o=0,a=0;a<t.length;++a){if(null!=i){if(i[o]===a&&1!==t[a])throw new Error("Can't squeeze axis "+a+" since its dim '"+t[a]+"' is not 1");(null==i[o]||i[o]>a)&&1===t[a]&&(n.push(t[a]),r.push(a)),i[o]<=a&&o++}1!==t[a]&&(n.push(t[a]),r.push(a))}return{newShape:n,keptDims:r}},e.getTypedArrayFromDType=function(t,e){var n=null;if(null==t||"float32"===t)n=new Float32Array(e);else if("int32"===t)n=new Int32Array(e);else{if("bool"!==t)throw new Error("Unknown data type "+t);n=new Uint8Array(e)}return n},e.getArrayFromDType=function(t,e){var n=null;if(null==t||"float32"===t)n=new Float32Array(e);else if("int32"===t)n=new Int32Array(e);else if("bool"===t)n=new Uint8Array(e);else{if("string"!==t)throw new Error("Unknown data type "+t);n=new Array(e)}return n},e.checkComputationForErrors=function(t,e,n){if("float32"===e)for(var r=0;r<t.length;r++){var i=t[r];if(isNaN(i)||!isFinite(i))throw Error("The result of the '"+n+"' is "+i+".")}},e.checkConversionForErrors=u,e.hasEncodingLoss=function(t,e){return!("complex64"===e||"float32"===e&&"complex64"!==t||"int32"===e&&"float32"!==t&&"complex64"!==t||"bool"===e&&"bool"===t)},e.isTypedArray=l,e.bytesPerElement=function(t){if("float32"===t||"int32"===t)return 4;if("complex64"===t)return 8;if("bool"===t)return 1;throw new Error("Unknown dtype "+t)},e.bytesFromStringArray=function(t){if(null==t)return 0;var e=0;return t.forEach(function(t){return e+=2*t.length}),e},e.isString=c,e.isBoolean=p,e.isNumber=h,e.inferDtype=function t(e){return Array.isArray(e)?t(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array?"int32":h(e)?"float32":c(e)?"string":p(e)?"bool":"float32"},e.isFunction=function(t){return!!(t&&t.constructor&&t.call&&t.apply)},e.nearestDivisor=function(t,e){for(var n=e;n<t;++n)if(t%n==0)return n;return t},e.computeStrides=function(t){var e=t.length;if(e<2)return[];var n=new Array(e-1);n[e-2]=t[e-1];for(var r=e-3;r>=0;--r)n[r]=n[r+1]*t[r+1];return n},e.toTypedArray=function(t,e,n){if("string"===e)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(t)&&(t=i(t)),n&&u(t,e),function(t,e){return t instanceof Float32Array&&"float32"===e||t instanceof Int32Array&&"int32"===e||t instanceof Uint8Array&&"bool"===e}(t,e))return t;if(null==e||"float32"===e||"complex64"===e)return new Float32Array(t);if("int32"===e)return new Int32Array(t);if("bool"===e){for(var r=new Uint8Array(t.length),o=0;o<r.length;++o)0!==Math.round(t[o])&&(r[o]=1);return r}throw new Error("Unknown data type "+e)},e.toNestedArray=function(t,e){if(0===t.length)return e[0];var n=t.reduce(function(t,e){return t*e});if(0===n)return[];if(n!==e.length)throw new Error("["+t+"] does not match the input size.");return function t(e,n,r){var i=new Array;if(1===n.length)for(var o=n[0],a=0;a<o;a++)i[a]=r[e+a];else{o=n[0];var s=n.slice(1),u=s.reduce(function(t,e){return t*e});for(a=0;a<o;a++)i[a]=t(e+a*u,s,r)}return i}(0,t,e)},e.makeOnesTypedArray=function(t,e){for(var n=f(t,e),r=0;r<n.length;r++)n[r]=1;return n},e.makeZerosTypedArray=f,e.now=function(){if("undefined"!=typeof performance)return performance.now();if("undefined"!=typeof process){var t=process.hrtime();return 1e3*t[0]+t[1]/1e6}throw new Error("Cannot measure time in this environment. You should run tf.js in the browser or in Node.js")},e.assertNonNegativeIntegerDimensions=function(t){t.forEach(function(e){r(Number.isInteger(e)&&e>=0,function(){return"Tensor must have a shape comprised of positive integers but got shape ["+t+"]."})})}});zy(Ky);Ky.shuffle,Ky.clamp,Ky.nearestLargerEven,Ky.sum,Ky.randUniform,Ky.distSquared,Ky.assert,Ky.assertShapesMatch,Ky.assertNonNull,Ky.flatten,Ky.sizeFromShape,Ky.isScalarShape,Ky.arraysEqual,Ky.isInt,Ky.tanh,Ky.sizeToSquarishShape,Ky.createShuffledIndices,Ky.rightPad,Ky.repeatedTry,Ky.inferFromImplicitShape,Ky.parseAxisParam,Ky.squeezeShape,Ky.getTypedArrayFromDType,Ky.getArrayFromDType,Ky.checkComputationForErrors,Ky.checkConversionForErrors,Ky.hasEncodingLoss;var $y=Ky.isTypedArray,Xy=(Ky.bytesPerElement,Ky.bytesFromStringArray,Ky.isString,Ky.isBoolean,Ky.isNumber,Ky.inferDtype,Ky.isFunction,Ky.nearestDivisor,Ky.computeStrides,Ky.toTypedArray,Ky.toNestedArray,Ky.makeOnesTypedArray,Ky.makeZerosTypedArray,Ky.now,Ky.assertNonNegativeIntegerDimensions,Py(function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=7;function r(t,e){var r;return r=Array.isArray(t)?parseFloat(t[0].toFixed(n))+" + "+parseFloat(t[1].toFixed(n))+"j":Ky.isString(t)?"'"+t+"'":parseFloat(t.toFixed(n)).toString(),Ky.rightPad(r,e)}function i(t){for(var e=[],n=0;n<t.length;n+=2)e.push([t[n],t[n+1]]);return e}e.tensorToString=function(t,e,n,o){var a=Ky.computeStrides(e),s=function(t,e,n,o){var a=Ky.sizeFromShape(e),s=o[o.length-1],u=new Array(s).fill(0),l=e.length,c="complex64"===n?i(t):t;if(l>1)for(var p=0;p<a/s;p++)for(var h=p*s,f=0;f<s;f++)u[f]=Math.max(u[f],r(c[h+f],0).length);return u}(t,e,n,a),u=e.length,l=function t(e,n,o,a,s,u){void 0===u&&(u=!0);var l="complex64"===o?2:1,c=n[0],p=n.length;if(0===p)return"complex64"===o?[r(i(e)[0],0)]:[e[0].toString()];if(1===p){if(c>20){var h=3*l,f=Array.from(e.slice(0,h)),d=Array.from(e.slice(c-3*l,c));return"complex64"===o&&(f=i(f),d=i(d)),["["+f.map(function(t,e){return r(t,s[e])}).join(", ")+", ..., "+d.map(function(t,e){return r(t,s[c-3+e])}).join(", ")+"]"]}return["["+("complex64"===o?i(e):Array.from(e)).map(function(t,e){return r(t,s[e])}).join(", ")+"]"]}var m=n.slice(1),g=a.slice(1),y=a[0]*l,v=[];if(c>20){for(var b=0;b<3;b++){var w=(x=b*y)+y;v.push.apply(v,t(e.slice(x,w),m,o,g,s,!1))}v.push("...");for(b=c-3;b<c;b++){w=(x=b*y)+y;v.push.apply(v,t(e.slice(x,w),m,o,g,s,b===c-1))}}else for(b=0;b<c;b++){var x;w=(x=b*y)+y;v.push.apply(v,t(e.slice(x,w),m,o,g,s,b===c-1))}var N=2===p?",":"";v[0]="["+v[0]+N;for(b=1;b<v.length-1;b++)v[b]=" "+v[b]+N;var S=",\n";for(b=2;b<p;b++)S+="\n";return v[v.length-1]=" "+v[v.length-1]+"]"+(u?"":S),v}(t,e,n,a,s),c=["Tensor"];return o&&(c.push(" dtype: "+n),c.push(" rank: "+u),c.push(" shape: ["+e+"]"),c.push(" values:")),c.push(l.map(function(t){return" "+t}).join("\n")),c.join("\n")}}));zy(Xy);Xy.tensorToString;var Yy=Py(function(t,e){var n,r=Fy&&Fy.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),i=Fy&&Fy.__awaiter||function(t,e,n,r){return new(n||(n=Promise))(function(i,o){function a(t){try{u(r.next(t))}catch(t){o(t)}}function s(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(a,s)}u((r=r.apply(t,e||[])).next())})},o=Fy&&Fy.__generator||function(t,e){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=e.call(t,a)}catch(t){o=[6,t],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}};Object.defineProperty(e,"__esModule",{value:!0});var a=Ky,s=function(){function t(t,e,n){var r=this;if(this.dtype=e,this.shape=t.slice(),this.size=Ky.sizeFromShape(t),null!=n){var i=n.length;Ky.assert(i===this.size,function(){return"Length of values '"+i+"' does not match the size inferred by the shape '"+r.size+"'."})}if("complex64"===e)throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||Ky.getArrayFromDType(e,Ky.sizeFromShape(this.shape)),this.strides=a.computeStrides(t)}return t.prototype.set=function(t){for(var e=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];0===n.length&&(n=[0]),Ky.assert(n.length===this.rank,function(){return"The number of provided coordinates ("+n.length+") must match the rank ("+e.rank+")"});var i=this.locToIndex(n);this.values[i]=t},t.prototype.get=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];0===t.length&&(t=[0]);for(var n=t[t.length-1],r=0;r<t.length-1;++r)n+=this.strides[r]*t[r];return this.values[n]},t.prototype.locToIndex=function(t){if(0===this.rank)return 0;if(1===this.rank)return t[0];for(var e=t[t.length-1],n=0;n<t.length-1;++n)e+=this.strides[n]*t[n];return e},t.prototype.indexToLoc=function(t){if(0===this.rank)return[];if(1===this.rank)return[t];for(var e=new Array(this.shape.length),n=0;n<e.length-1;++n)e[n]=Math.floor(t/this.strides[n]),t-=e[n]*this.strides[n];return e[e.length-1]=t,e},Object.defineProperty(t.prototype,"rank",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),t.prototype.toTensor=function(){return p.make(this.shape,{values:this.values},this.dtype)},t}();e.TensorBuffer=s;var u=null,l=null,c=null;e.setTensorTracker=function(t){u=t},e.setOpHandler=function(t){l=t},e.setDeprecationWarningFn=function(t){c=t};var p=function(){function t(t,e,n,r,i){this.isDisposedInternal=!1,this.shape=t.slice(),this.dtype=e||"float32",this.size=Ky.sizeFromShape(t),this.strides=a.computeStrides(t),this.dataId=null!=r?r:{},this.id=u().nextTensorId(),this.rankType=this.rank<5?this.rank.toString():"higher",u().registerTensor(this,i),null!=n&&u().write(this.dataId,n)}return t.make=function(e,n,r,i){return new t(e,r,n.values,n.dataId,i)},t.prototype.flatten=function(){return this.throwIfDisposed(),this.as1D()},t.prototype.asScalar=function(){return this.throwIfDisposed(),Ky.assert(1===this.size,function(){return"The array must have only 1 element."}),this.reshape([])},t.prototype.as1D=function(){return this.throwIfDisposed(),this.reshape([this.size])},t.prototype.as2D=function(t,e){return this.throwIfDisposed(),this.reshape([t,e])},t.prototype.as3D=function(t,e,n){return this.throwIfDisposed(),this.reshape([t,e,n])},t.prototype.as4D=function(t,e,n,r){return this.throwIfDisposed(),this.reshape([t,e,n,r])},t.prototype.as5D=function(t,e,n,r,i){return this.throwIfDisposed(),this.reshape([t,e,n,r,i])},t.prototype.asType=function(t){return this.throwIfDisposed(),l.cast(this,t)},Object.defineProperty(t.prototype,"rank",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),t.prototype.buffer=function(){return i(this,void 0,void 0,function(){var t;return o(this,function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,l.buffer(this.shape,this.dtype,t)]}})})},t.prototype.bufferSync=function(){return l.buffer(this.shape,this.dtype,this.dataSync())},t.prototype.array=function(){return i(this,void 0,void 0,function(){var t;return o(this,function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,a.toNestedArray(this.shape,t)]}})})},t.prototype.arraySync=function(){return a.toNestedArray(this.shape,this.dataSync())},t.prototype.data=function(){return i(this,void 0,void 0,function(){return o(this,function(t){return this.throwIfDisposed(),[2,u().read(this.dataId)]})})},t.prototype.dataSync=function(){return this.throwIfDisposed(),u().readSync(this.dataId)},t.prototype.dispose=function(){this.isDisposed||(u().disposeTensor(this),this.isDisposedInternal=!0)},Object.defineProperty(t.prototype,"isDisposed",{get:function(){return this.isDisposedInternal},enumerable:!0,configurable:!0}),t.prototype.throwIfDisposed=function(){if(this.isDisposed)throw new Error("Tensor is disposed.")},t.prototype.toFloat=function(){return this.asType("float32")},t.prototype.toInt=function(){return this.asType("int32")},t.prototype.toBool=function(){return this.asType("bool")},t.prototype.print=function(t){return void 0===t&&(t=!1),l.print(this,t)},t.prototype.reshape=function(t){return this.throwIfDisposed(),l.reshape(this,t)},t.prototype.reshapeAs=function(t){return this.throwIfDisposed(),this.reshape(t.shape)},t.prototype.expandDims=function(t){return void 0===t&&(t=0),l.expandDims(this,t)},t.prototype.cumsum=function(t,e,n){return void 0===t&&(t=0),void 0===e&&(e=!1),void 0===n&&(n=!1),l.cumsum(this,t,e,n)},t.prototype.squeeze=function(t){return this.throwIfDisposed(),l.squeeze(this,t)},t.prototype.clone=function(){return this.throwIfDisposed(),l.clone(this)},t.prototype.oneHot=function(t,e,n){return this.throwIfDisposed(),l.oneHot(this,t,e,n)},t.prototype.toString=function(t){void 0===t&&(t=!1);var e=this.dataSync();return Xy.tensorToString(e,this.shape,this.dtype,t)},t.prototype.tile=function(t){return this.throwIfDisposed(),l.tile(this,t)},t.prototype.gather=function(t,e){return void 0===e&&(e=0),this.throwIfDisposed(),l.gather(this,t,e)},t.prototype.matMul=function(t,e,n){return void 0===e&&(e=!1),void 0===n&&(n=!1),this.throwIfDisposed(),l.matMul(this,t,e,n)},t.prototype.dot=function(t){return this.throwIfDisposed(),l.dot(this,t)},t.prototype.norm=function(t,e,n){return void 0===t&&(t="euclidean"),void 0===e&&(e=null),void 0===n&&(n=!1),this.throwIfDisposed(),l.norm(this,t,e,n)},t.prototype.slice=function(t,e){return this.throwIfDisposed(),l.slice(this,t,e)},t.prototype.reverse=function(t){return this.throwIfDisposed(),l.reverse(this,t)},t.prototype.concat=function(e,n){return void 0===n&&(n=0),this.throwIfDisposed(),e instanceof t&&(e=[e]),l.concat([this].concat(e),n)},t.prototype.split=function(t,e){return void 0===e&&(e=0),this.throwIfDisposed(),l.split(this,t,e)},t.prototype.stack=function(t,e){return void 0===e&&(e=0),l.stack([this,t],e)},t.prototype.unstack=function(t){return void 0===t&&(t=0),l.unstack(this,t)},t.prototype.pad=function(t,e){return void 0===e&&(e=0),l.pad(this,t,e)},t.prototype.batchNormalization=function(t,e,n,r,i){return void 0===n&&(n=.001),c("tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon"),this.batchNorm(t,e,i,r,n)},t.prototype.batchNorm=function(t,e,n,r,i){return void 0===i&&(i=.001),this.throwIfDisposed(),l.batchNorm(this,t,e,n,r,i)},t.prototype.all=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),l.all(this,t,e)},t.prototype.any=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),l.any(this,t,e)},t.prototype.logSumExp=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),l.logSumExp(this,t,e)},t.prototype.sum=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),l.sum(this,t,e)},t.prototype.prod=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),l.prod(this,t,e)},t.prototype.mean=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),l.mean(this,t,e)},t.prototype.min=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),l.min(this,t,e)},t.prototype.max=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),l.max(this,t,e)},t.prototype.argMin=function(t){return void 0===t&&(t=null),this.throwIfDisposed(),l.argMin(this,t)},t.prototype.argMax=function(t){return void 0===t&&(t=null),this.throwIfDisposed(),l.argMax(this,t)},t.prototype.cast=function(t){return this.throwIfDisposed(),l.cast(this,t)},t.prototype.add=function(t){return this.throwIfDisposed(),l.add(this,t)},t.prototype.addStrict=function(t){return this.throwIfDisposed(),l.addStrict(this,t)},t.prototype.atan2=function(t){return this.throwIfDisposed(),l.atan2(this,t)},t.prototype.sub=function(t){return this.throwIfDisposed(),l.sub(this,t)},t.prototype.subStrict=function(t){return this.throwIfDisposed(),l.subStrict(this,t)},t.prototype.pow=function(t){return this.throwIfDisposed(),l.pow(this,t)},t.prototype.powStrict=function(t){return this.throwIfDisposed(),l.powStrict(this,t)},t.prototype.mul=function(t){return this.throwIfDisposed(),l.mul(this,t)},t.prototype.mulStrict=function(t){return this.throwIfDisposed(),l.mulStrict(this,t)},t.prototype.div=function(t){return this.throwIfDisposed(),l.div(this,t)},t.prototype.floorDiv=function(t){return this.throwIfDisposed(),l.floorDiv(this,t)},t.prototype.divStrict=function(t){return this.throwIfDisposed(),l.divStrict(this,t)},t.prototype.minimum=function(t){return this.throwIfDisposed(),l.minimum(this,t)},t.prototype.minimumStrict=function(t){return this.throwIfDisposed(),l.minimumStrict(this,t)},t.prototype.maximum=function(t){return this.throwIfDisposed(),l.maximum(this,t)},t.prototype.maximumStrict=function(t){return this.throwIfDisposed(),l.maximumStrict(this,t)},t.prototype.mod=function(t){return this.throwIfDisposed(),l.mod(this,t)},t.prototype.modStrict=function(t){return this.throwIfDisposed(),l.modStrict(this,t)},t.prototype.squaredDifference=function(t){return this.throwIfDisposed(),l.squaredDifference(this,t)},t.prototype.squaredDifferenceStrict=function(t){return this.throwIfDisposed(),l.squaredDifferenceStrict(this,t)},t.prototype.transpose=function(t){return this.throwIfDisposed(),l.transpose(this,t)},t.prototype.notEqual=function(t){return this.throwIfDisposed(),l.notEqual(this,t)},t.prototype.notEqualStrict=function(t){return this.throwIfDisposed(),l.notEqualStrict(this,t)},t.prototype.less=function(t){return this.throwIfDisposed(),l.less(this,t)},t.prototype.lessStrict=function(t){return this.throwIfDisposed(),l.lessStrict(this,t)},t.prototype.equal=function(t){return this.throwIfDisposed(),l.equal(this,t)},t.prototype.equalStrict=function(t){return this.throwIfDisposed(),l.equalStrict(this,t)},t.prototype.lessEqual=function(t){return this.throwIfDisposed(),l.lessEqual(this,t)},t.prototype.lessEqualStrict=function(t){return this.throwIfDisposed(),l.lessEqualStrict(this,t)},t.prototype.greater=function(t){return this.throwIfDisposed(),l.greater(this,t)},t.prototype.greaterStrict=function(t){return this.throwIfDisposed(),l.greaterStrict(this,t)},t.prototype.greaterEqual=function(t){return this.throwIfDisposed(),l.greaterEqual(this,t)},t.prototype.greaterEqualStrict=function(t){return this.throwIfDisposed(),l.greaterEqualStrict(this,t)},t.prototype.logicalAnd=function(t){return this.throwIfDisposed(),l.logicalAnd(this,t)},t.prototype.logicalOr=function(t){return this.throwIfDisposed(),l.logicalOr(this,t)},t.prototype.logicalNot=function(){return this.throwIfDisposed(),l.logicalNot(this)},t.prototype.logicalXor=function(t){return this.throwIfDisposed(),l.logicalXor(this,t)},t.prototype.where=function(t,e){return this.throwIfDisposed(),l.where(t,this,e)},t.prototype.neg=function(){return this.throwIfDisposed(),l.neg(this)},t.prototype.ceil=function(){return this.throwIfDisposed(),l.ceil(this)},t.prototype.floor=function(){return this.throwIfDisposed(),l.floor(this)},t.prototype.sign=function(){return this.throwIfDisposed(),l.sign(this)},t.prototype.exp=function(){return this.throwIfDisposed(),l.exp(this)},t.prototype.expm1=function(){return this.throwIfDisposed(),l.expm1(this)},t.prototype.log=function(){return this.throwIfDisposed(),l.log(this)},t.prototype.log1p=function(){return this.throwIfDisposed(),l.log1p(this)},t.prototype.sqrt=function(){return this.throwIfDisposed(),l.sqrt(this)},t.prototype.rsqrt=function(){return this.throwIfDisposed(),l.rsqrt(this)},t.prototype.square=function(){return this.throwIfDisposed(),l.square(this)},t.prototype.reciprocal=function(){return this.throwIfDisposed(),l.reciprocal(this)},t.prototype.abs=function(){return this.throwIfDisposed(),l.abs(this)},t.prototype.clipByValue=function(t,e){return this.throwIfDisposed(),l.clipByValue(this,t,e)},t.prototype.relu=function(){return this.throwIfDisposed(),l.relu(this)},t.prototype.elu=function(){return this.throwIfDisposed(),l.elu(this)},t.prototype.selu=function(){return this.throwIfDisposed(),l.selu(this)},t.prototype.leakyRelu=function(t){return void 0===t&&(t=.2),this.throwIfDisposed(),l.leakyRelu(this,t)},t.prototype.prelu=function(t){return this.throwIfDisposed(),l.prelu(this,t)},t.prototype.sigmoid=function(){return this.throwIfDisposed(),l.sigmoid(this)},t.prototype.logSigmoid=function(){return this.throwIfDisposed(),l.logSigmoid(this)},t.prototype.softplus=function(){return this.throwIfDisposed(),l.softplus(this)},t.prototype.zerosLike=function(){return this.throwIfDisposed(),l.zerosLike(this)},t.prototype.onesLike=function(){return this.throwIfDisposed(),l.onesLike(this)},t.prototype.sin=function(){return this.throwIfDisposed(),l.sin(this)},t.prototype.cos=function(){return this.throwIfDisposed(),l.cos(this)},t.prototype.tan=function(){return this.throwIfDisposed(),l.tan(this)},t.prototype.asin=function(){return this.throwIfDisposed(),l.asin(this)},t.prototype.acos=function(){return this.throwIfDisposed(),l.acos(this)},t.prototype.atan=function(){return this.throwIfDisposed(),l.atan(this)},t.prototype.sinh=function(){return this.throwIfDisposed(),l.sinh(this)},t.prototype.cosh=function(){return this.throwIfDisposed(),l.cosh(this)},t.prototype.tanh=function(){return this.throwIfDisposed(),l.tanh(this)},t.prototype.asinh=function(){return this.throwIfDisposed(),l.asinh(this)},t.prototype.acosh=function(){return this.throwIfDisposed(),l.acosh(this)},t.prototype.atanh=function(){return this.throwIfDisposed(),l.atanh(this)},t.prototype.erf=function(){return this.throwIfDisposed(),l.erf(this)},t.prototype.round=function(){return this.throwIfDisposed(),l.round(this)},t.prototype.step=function(t){return void 0===t&&(t=0),this.throwIfDisposed(),l.step(this,t)},t.prototype.softmax=function(t){return void 0===t&&(t=-1),this.throwIfDisposed(),l.softmax(this,t)},t.prototype.logSoftmax=function(t){return void 0===t&&(t=-1),this.throwIfDisposed(),l.logSoftmax(this,t)},t.prototype.resizeBilinear=function(t,e){return void 0===e&&(e=!1),this.throwIfDisposed(),l.image.resizeBilinear(this,t,e)},t.prototype.resizeNearestNeighbor=function(t,e){return void 0===e&&(e=!1),this.throwIfDisposed(),l.image.resizeNearestNeighbor(this,t,e)},t.prototype.conv1d=function(t,e,n,r,i,o){return void 0===r&&(r="NWC"),void 0===i&&(i=1),this.throwIfDisposed(),l.conv1d(this,t,e,n,r,i,o)},t.prototype.conv2d=function(t,e,n,r,i,o){return void 0===r&&(r="NHWC"),void 0===i&&(i=[1,1]),this.throwIfDisposed(),l.conv2d(this,t,e,n,r,i,o)},t.prototype.conv2dTranspose=function(t,e,n,r,i){return this.throwIfDisposed(),l.conv2dTranspose(this,t,e,n,r,i)},t.prototype.depthwiseConv2D=function(t,e,n,r,i,o){return void 0===r&&(r="NHWC"),void 0===i&&(i=[1,1]),this.throwIfDisposed(),l.depthwiseConv2d(this,t,e,n,r,i,o)},t.prototype.separableConv2d=function(t,e,n,r,i,o){return void 0===i&&(i=[1,1]),void 0===o&&(o="NHWC"),this.throwIfDisposed(),l.separableConv2d(this,t,e,n,r,i,o)},t.prototype.avgPool=function(t,e,n,r){return this.throwIfDisposed(),l.avgPool(this,t,e,n,r)},t.prototype.maxPool=function(t,e,n,r){return this.throwIfDisposed(),l.maxPool(this,t,e,n,r)},t.prototype.localResponseNormalization=function(t,e,n,r){return void 0===t&&(t=5),void 0===e&&(e=1),void 0===n&&(n=1),void 0===r&&(r=.5),l.localResponseNormalization(this,t,e,n,r)},t.prototype.pool=function(t,e,n,r,i){return this.throwIfDisposed(),l.pool(this,t,e,n,r,i)},t.prototype.variable=function(t,e,n){return void 0===t&&(t=!0),this.throwIfDisposed(),h.variable(this,t,e,n)},t.prototype.unsortedSegmentSum=function(t,e){return this.throwIfDisposed(),l.unsortedSegmentSum(this,t,e)},t.prototype.batchToSpaceND=function(t,e){return this.throwIfDisposed(),l.batchToSpaceND(this,t,e)},t.prototype.spaceToBatchND=function(t,e){return this.throwIfDisposed(),l.spaceToBatchND(this,t,e)},t.prototype.topk=function(t,e){return void 0===t&&(t=1),void 0===e&&(e=!0),this.throwIfDisposed(),l.topk(this,t,e)},t.prototype.stridedSlice=function(t,e,n,r,i,o,a,s){return void 0===r&&(r=0),void 0===i&&(i=0),void 0===o&&(o=0),void 0===a&&(a=0),void 0===s&&(s=0),this.throwIfDisposed(),l.stridedSlice(this,t,e,n,r,i,o,a,s)},t.prototype.depthToSpace=function(t,e){return this.throwIfDisposed(),l.depthToSpace(this,t,e)},t.prototype.fft=function(){return this.throwIfDisposed(),l.spectral.fft(this)},t.prototype.ifft=function(){return this.throwIfDisposed(),l.spectral.ifft(this)},t.prototype.rfft=function(){return this.throwIfDisposed(),l.spectral.rfft(this)},t.prototype.irfft=function(){return this.throwIfDisposed(),l.spectral.irfft(this)},t}();e.Tensor=p,Object.defineProperty(p,Symbol.hasInstance,{value:function(t){return!!t&&null!=t.dataId&&null!=t.shape&&null!=t.dtype}});var h=function(t){function e(e,n,r){void 0===n&&(n=!0);var i=t.call(this,e.shape,e.dtype,null,e.dataId)||this;i.trainable=n,i.name=r,null==i.name&&(i.name=u().nextVariableId().toString());try{u().registerVariable(i)}catch(t){throw u().disposeTensor(i),t}return i}return r(e,t),e.variable=function(t,n,r,i){return void 0===n&&(n=!0),null!=i&&i!==t.dtype&&(t=t.asType(i)),new e(t,n,r)},e.prototype.assign=function(t){if(t.dtype!==this.dtype)throw new Error("dtype of the new value ("+t.dtype+") and previous value ("+this.dtype+") must match");if(!Ky.arraysEqual(t.shape,this.shape))throw new Error("shape of the new value ("+t.shape+") and previous value ("+this.shape+") must match");u().disposeTensor(this),this.dataId=t.dataId,u().registerTensor(this)},e}(p);e.Variable=h,Object.defineProperty(h,Symbol.hasInstance,{value:function(t){return t instanceof p&&null!=t.assign&&t.assign instanceof Function}});var f=h.variable;e.variable=f});zy(Yy);Yy.TensorBuffer,Yy.setTensorTracker,Yy.setOpHandler,Yy.setDeprecationWarningFn,Yy.Tensor,Yy.Variable,Yy.variable;var Jy=Py(function(t,e){var n,r,i,o;Object.defineProperty(e,"__esModule",{value:!0}),function(t){t.R0="R0",t.R1="R1",t.R2="R2",t.R3="R3",t.R4="R4",t.R5="R5",t.R6="R6"}(e.Rank||(e.Rank={})),function(t){t.float32="float32",t.int32="int32",t.bool="int32",t.complex64="complex64"}(n||(n={})),function(t){t.float32="float32",t.int32="int32",t.bool="bool",t.complex64="complex64"}(r||(r={})),function(t){t.float32="float32",t.int32="float32",t.bool="float32",t.complex64="complex64"}(i||(i={})),function(t){t.float32="complex64",t.int32="complex64",t.bool="complex64",t.complex64="complex64"}(o||(o={}));var a={float32:i,int32:n,bool:r,complex64:o};function s(t,e){if("string"===t||"string"===e){if("string"===t&&"string"===e)return"string";throw new Error("Can not upcast "+t+" with "+e)}return a[t][e]}e.upcastType=s,e.sumOutType=function(t){return s(t,"int32")}});zy(Jy);Jy.Rank,Jy.upcastType,Jy.sumOutType;var Zy=Py(function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.makeTypesMatch=function(t,e){if(t.dtype===e.dtype)return[t,e];var n=Jy.upcastType(t.dtype,e.dtype);return[t.cast(n),e.cast(n)]},e.assertTypesMatch=function(t,e){Ky.assert(t.dtype===e.dtype,function(){return"The dtypes of the first("+t.dtype+") and second("+e.dtype+") input must match"})},e.isTensorInList=function(t,e){for(var n=0;n<e.length;n++)if(e[n].id===t.id)return!0;return!1},e.flattenNameArrayMap=function(t,e){var n=[];if(t instanceof Yy.Tensor)n.push(t);else for(var r=t,i=0;i<e.length;i++)n.push(r[e[i]]);return n},e.unflattenToNameArrayMap=function(t,e){if(t.length!==e.length)throw new Error("Cannot unflatten Tensor[], keys and arrays are not of same length.");for(var n={},r=0;r<t.length;r++)n[t[r]]=e[r];return n},e.getTensorsInContainer=function(t){var e=[];return function t(e,n,r){if(null!=e)if(e instanceof Yy.Tensor)n.push(e);else if(i=e,Array.isArray(i)||"object"==typeof i){var i,o=e;for(var a in o){var s=o[a];r.has(s)||(r.add(s),t(s,n,r))}}}(t,e,new Set),e}});zy(Zy);Zy.makeTypesMatch,Zy.assertTypesMatch;var Qy=Zy.isTensorInList,tv=(Zy.flattenNameArrayMap,Zy.unflattenToNameArrayMap,Zy.getTensorsInContainer),ev=function(t){return t instanceof Buffer},nv=Py(function(t){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}}),rv=Py(function(t){try{var e=iv;if("function"!=typeof e.inherits)throw"";t.exports=e.inherits}catch(e){t.exports=nv}}),iv=Py(function(t,e){var n=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),n={},r=0;r<e.length;r++)n[e[r]]=Object.getOwnPropertyDescriptor(t,e[r]);return n},r=/%[sdj%]/g;e.format=function(t){if(!g(t)){for(var e=[],n=0;n<arguments.length;n++)e.push(a(arguments[n]));return e.join(" ")}n=1;for(var i=arguments,o=i.length,s=String(t).replace(r,function(t){if("%%"===t)return"%";if(n>=o)return t;switch(t){case"%s":return String(i[n++]);case"%d":return Number(i[n++]);case"%j":try{return JSON.stringify(i[n++])}catch(t){return"[Circular]"}default:return t}}),u=i[n];n<o;u=i[++n])d(u)||!b(u)?s+=" "+u:s+=" "+a(u);return s},e.deprecate=function(t,n){if("undefined"!=typeof process&&!0===process.noDeprecation)return t;if("undefined"==typeof process)return function(){return e.deprecate(t,n).apply(this,arguments)};var r=!1;return function(){if(!r){if(process.throwDeprecation)throw new Error(n);process.traceDeprecation?console.trace(n):console.error(n),r=!0}return t.apply(this,arguments)}};var i,o={};function a(t,n){var r={seen:[],stylize:u};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),f(n)?r.showHidden=n:n&&e._extend(r,n),y(r.showHidden)&&(r.showHidden=!1),y(r.depth)&&(r.depth=2),y(r.colors)&&(r.colors=!1),y(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=s),l(r,t,r.depth)}function s(t,e){var n=a.styles[e];return n?"["+a.colors[n][0]+"m"+t+"["+a.colors[n][1]+"m":t}function u(t,e){return t}function l(t,n,r){if(t.customInspect&&n&&N(n.inspect)&&n.inspect!==e.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,t);return g(i)||(i=l(t,i,r)),i}var o=function(t,e){if(y(e))return t.stylize("undefined","undefined");if(g(e)){var n="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(n,"string")}return m(e)?t.stylize(""+e,"number"):f(e)?t.stylize(""+e,"boolean"):d(e)?t.stylize("null","null"):void 0}(t,n);if(o)return o;var a=Object.keys(n),s=function(t){var e={};return a.forEach(function(t,n){e[t]=!0}),e}();if(t.showHidden&&(a=Object.getOwnPropertyNames(n)),x(n)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return c(n);if(0===a.length){if(N(n)){var u=n.name?": "+n.name:"";return t.stylize("[Function"+u+"]","special")}if(v(n))return t.stylize(RegExp.prototype.toString.call(n),"regexp");if(w(n))return t.stylize(Date.prototype.toString.call(n),"date");if(x(n))return c(n)}var b,S="",C=!1,E=["{","}"];return h(n)&&(C=!0,E=["[","]"]),N(n)&&(S=" [Function"+(n.name?": "+n.name:"")+"]"),v(n)&&(S=" "+RegExp.prototype.toString.call(n)),w(n)&&(S=" "+Date.prototype.toUTCString.call(n)),x(n)&&(S=" "+c(n)),0!==a.length||C&&0!=n.length?r<0?v(n)?t.stylize(RegExp.prototype.toString.call(n),"regexp"):t.stylize("[Object]","special"):(t.seen.push(n),b=C?function(t,e,n,r,i){for(var o=[],a=0,s=e.length;a<s;++a)I(e,String(a))?o.push(p(t,e,n,r,String(a),!0)):o.push("");return i.forEach(function(i){i.match(/^\d+$/)||o.push(p(t,e,n,r,i,!0))}),o}(t,n,r,s,a):a.map(function(e){return p(t,n,r,s,e,C)}),t.seen.pop(),function(t,e,n){return t.reduce(function(t,e){return e.indexOf("\n"),t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60?n[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+n[1]:n[0]+e+" "+t.join(", ")+" "+n[1]}(b,S,E)):E[0]+S+E[1]}function c(t){return"["+Error.prototype.toString.call(t)+"]"}function p(t,e,n,r,i,o){var a,s,u;if((u=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?s=u.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):u.set&&(s=t.stylize("[Setter]","special")),I(r,i)||(a="["+i+"]"),s||(t.seen.indexOf(u.value)<0?(s=d(n)?l(t,u.value,null):l(t,u.value,n-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+s.split("\n").map(function(t){return" "+t}).join("\n")):s=t.stylize("[Circular]","special")),y(a)){if(o&&i.match(/^\d+$/))return s;(a=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+s}function h(t){return Array.isArray(t)}function f(t){return"boolean"==typeof t}function d(t){return null===t}function m(t){return"number"==typeof t}function g(t){return"string"==typeof t}function y(t){return void 0===t}function v(t){return b(t)&&"[object RegExp]"===S(t)}function b(t){return"object"==typeof t&&null!==t}function w(t){return b(t)&&"[object Date]"===S(t)}function x(t){return b(t)&&("[object Error]"===S(t)||t instanceof Error)}function N(t){return"function"==typeof t}function S(t){return Object.prototype.toString.call(t)}function C(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(y(i)&&(i=process.env.NODE_DEBUG||""),t=t.toUpperCase(),!o[t])if(new RegExp("\\b"+t+"\\b","i").test(i)){var n=process.pid;o[t]=function(){var r=e.format.apply(e,arguments);console.error("%s %d: %s",t,n,r)}}else o[t]=function(){};return o[t]},e.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=h,e.isBoolean=f,e.isNull=d,e.isNullOrUndefined=function(t){return null==t},e.isNumber=m,e.isString=g,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=y,e.isRegExp=v,e.isObject=b,e.isDate=w,e.isError=x,e.isFunction=N,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=ev;var E=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function I(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,n;console.log("%s - %s",(n=[C((t=new Date).getHours()),C(t.getMinutes()),C(t.getSeconds())].join(":"),[t.getDate(),E[t.getMonth()],n].join(" ")),e.format.apply(e,arguments))},e.inherits=rv,e._extend=function(t,e){if(!e||!b(e))return t;for(var n=Object.keys(e),r=n.length;r--;)t[n[r]]=e[n[r]];return t};var k="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function A(t,e){if(!t){var n=new Error("Promise was rejected with a falsy value");n.reason=t,t=n}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(k&&t[k]){var e;if("function"!=typeof(e=t[k]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,k,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,n,r=new Promise(function(t,r){e=t,n=r}),i=[],o=0;o<arguments.length;o++)i.push(arguments[o]);i.push(function(t,r){t?n(t):e(r)});try{t.apply(this,i)}catch(t){n(t)}return r}return Object.setPrototypeOf(e,Object.getPrototypeOf(t)),k&&Object.defineProperty(e,k,{value:e,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(e,n(t))},e.promisify.custom=k,e.callbackify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');function e(){for(var e=[],n=0;n<arguments.length;n++)e.push(arguments[n]);var r=e.pop();if("function"!=typeof r)throw new TypeError("The last argument must be of type Function");var i=this,o=function(){return r.apply(i,arguments)};t.apply(this,e).then(function(t){process.nextTick(o,null,t)},function(t){process.nextTick(A,t,o)})}return Object.setPrototypeOf(e,Object.getPrototypeOf(t)),Object.defineProperties(e,n(t)),e}}),ov=(iv.format,iv.deprecate,iv.debuglog,iv.inspect,iv.isArray,iv.isBoolean,iv.isNull,iv.isNullOrUndefined,iv.isNumber,iv.isString,iv.isSymbol,iv.isUndefined,iv.isRegExp,iv.isObject,iv.isDate,iv.isError,iv.isFunction,iv.isPrimitive);iv.isBuffer,iv.log,iv.inherits,iv._extend,iv.promisify,iv.callbackify;function av(t,e,n,r){if(void 0===n&&(n=new Map),void 0===r&&(r=new Set),null==t)return null;if(r.has(t))throw new Error("Circular references are not supported.");if(n.has(t))return n.get(t);var i=e(t);if(i.recurse&&null!==i.value)throw new Error("A deep map function may not return both a value and recurse=true.");if(i.recurse){if(cv(t)){var o=Array.isArray(t)?[]:{};for(var a in r.add(t),t){var s=av(t[a],e,n,r);o[a]=s}return r.delete(t),o}throw new Error("Can't recurse into non-iterable type: "+t)}return n.set(t,i.value),i.value}function sv(t,e){return void 0===e&&(e=uv),function t(e,n,r){void 0===r&&(r=new Set);var i=e[0];if(r.has(i))throw new Error("Circular references are not supported.");var o=n(e);if(o.recurse&&null!==o.value)throw new Error("A deep zip function may not return both a value and recurse=true.");if(o.recurse){if(cv(i)){var a=Array.isArray(i)?[]:{};r.add(i);var s=function(i){var o=t(e.map(function(t){return t[i]}),n,r);a[i]=o};for(var u in i)s(u);return r.delete(i),a}throw new Error("Can't recurse into non-iterable type: "+i)}return o.value}(t,e)}function uv(t){return null===t?null:cv(t[0])?{value:null,recurse:!0}:{value:t,recurse:!1}}function lv(t,e){return My(this,void 0,void 0,function(){var n,r,i,o,a,s;return Ly(this,function(u){switch(u.label){case 0:n=new Map,av(t,e,n),r=0,i=Array.from(n.keys()),u.label=1;case 1:return r<i.length?(o=i[r],(a=n.get(o))instanceof Promise?[4,a]:[3,3]):[3,4];case 2:s=u.sent(),n.set(o,s),u.label=3;case 3:return r++,[3,1];case 4:return[2,av(t,e,n)]}})})}function cv(t){return null!=t&&(Array.isArray(t)||"object"==typeof t&&!(t instanceof ut))}var pv=function(){function t(t){if(this.capacity=t,this.begin=0,this.end=0,null==t)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(t<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(t),this.doubledCapacity=2*t}return t.prototype.wrap=function(t){for(;t<0;)t+=this.doubledCapacity;return t%this.doubledCapacity},t.prototype.get=function(t){if(t<0)throw new RangeError("Can't get item at a negative index.");return this.data[t%this.capacity]},t.prototype.set=function(t,e){if(t<0)throw new RangeError("Can't set item at a negative index.");this.data[t%this.capacity]=e},t.prototype.length=function(){var t=this.end-this.begin;return t<0&&(t=this.doubledCapacity+t),t},t.prototype.isFull=function(){return this.length()===this.capacity},t.prototype.isEmpty=function(){return 0===this.length()},t.prototype.push=function(t){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,t),this.end=this.wrap(this.end+1)},t.prototype.pushAll=function(t){for(var e=0,n=t;e<n.length;e++){var r=n[e];this.push(r)}},t.prototype.pop=function(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);var t=this.get(this.end);return this.set(this.end,void 0),t},t.prototype.unshift=function(t){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,t)},t.prototype.shift=function(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");var t=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),t},t.prototype.shuffleExcise=function(t){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");var e=this.wrap(this.begin+t),n=this.get(e);return this.set(e,this.pop()),n},t}(),hv=function(t){function e(){return t.call(this,e.INITIAL_CAPACITY)||this}return _y(e,t),e.prototype.isFull=function(){return!1},e.prototype.push=function(e){t.prototype.isFull.call(this)&&this.expand(),t.prototype.push.call(this,e)},e.prototype.unshift=function(e){t.prototype.isFull.call(this)&&this.expand(),t.prototype.unshift.call(this,e)},e.prototype.expand=function(){for(var t=2*this.capacity,e=new Array(t),n=this.length(),r=0;r<n;r++)e[r]=this.get(this.wrap(this.begin+r));this.data=e,this.capacity=t,this.doubledCapacity=2*this.capacity,this.begin=0,this.end=n},e.INITIAL_CAPACITY=32,e}(pv);function fv(t){return new vv(t)}function dv(t){return new bv(t)}var mv,gv,yv=function(){function t(){}return t.prototype.collect=function(t,e){return void 0===t&&(t=1e3),void 0===e&&(e=100),My(this,void 0,void 0,function(){var n,r,i,o;return Ly(this,function(a){switch(a.label){case 0:return n=e>0?this.prefetch(e):this,r=[],i=0,[4,n.next()];case 1:o=a.sent(),a.label=2;case 2:return o.done?[3,4]:(r.push(o.value),++i>=t?[2,r]:[4,n.next()]);case 3:return o=a.sent(),[3,2];case 4:return[2,r]}})})},t.prototype.resolveFully=function(){return My(this,void 0,void 0,function(){var t;return Ly(this,function(e){switch(e.label){case 0:return[4,this.next()];case 1:t=e.sent(),e.label=2;case 2:return t.done?[3,4]:[4,this.next()];case 3:return t=e.sent(),[3,2];case 4:return[2]}})})},t.prototype.resolveWhile=function(t){return My(this,void 0,void 0,function(){var e,n;return Ly(this,function(r){switch(r.label){case 0:return[4,this.next()];case 1:e=r.sent(),n=t(e.value),r.label=2;case 2:return e.done||!n?[3,4]:[4,this.next()];case 3:return e=r.sent(),n=t(e.value),[3,2];case 4:return[2]}})})},t.prototype.handleErrors=function(t){return new Iv(this,t)},t.prototype.filter=function(t){return new Cv(this,t)},t.prototype.map=function(t){return new Ev(this,t)},t.prototype.mapAsync=function(t){return new kv(this,t)},t.prototype.serialMapAsync=function(t){return new kv(this,t).serial()},t.prototype.flatmap=function(t){return new Tv(this,t)},t.prototype.forEachAsync=function(t){return My(this,void 0,void 0,function(){return Ly(this,function(e){return[2,this.map(t).resolveFully()]})})},t.prototype.serialForEach=function(t){return My(this,void 0,void 0,function(){return Ly(this,function(e){return[2,this.serialMapAsync(t).resolveWhile(function(t){return!0===t})]})})},t.prototype.rowMajorBatch=function(t,e){return void 0===e&&(e=!0),new Sv(this,t,e)},t.prototype.columnMajorBatch=function(t,e,n){return void 0===e&&(e=!0),void 0===n&&(n=uv),this.rowMajorBatch(t,e).map(function(t){return sv(t,n)})},t.prototype.concatenate=function(t,e){return new Rv(fv([this,t]),e)},t.prototype.take=function(t){return t<0||null==t?this:new Nv(this,t)},t.prototype.skip=function(t){return t<0||null==t?this:new xv(this,t)},t.prototype.prefetch=function(t){return new Ov(this,t)},t.prototype.shuffle=function(t,e){return new _v(this,t,e)},t.prototype.serial=function(){return new wv(this)},t}(),vv=function(t){function e(e){var n=t.call(this)||this;return n.items=e,n.trav=0,n}return _y(e,t),e.prototype.summary=function(){return"Array of "+this.items.length+" items"},e.prototype.next=function(){return My(this,void 0,void 0,function(){var t,e;return Ly(this,function(n){return this.trav>=this.items.length?[2,{value:null,done:!0}]:(t=this.items[this.trav],e=t instanceof ut?Wo(t):t,this.trav++,[2,{value:e,done:!1}])})})},e}(yv),bv=function(t){function e(e){var n=t.call(this)||this;return n.nextFn=e,n}return _y(e,t),e.prototype.summary=function(){return"Function call"},e.prototype.next=function(){return My(this,void 0,void 0,function(){return Ly(this,function(t){try{return[2,this.nextFn()]}catch(t){throw t.message="Error thrown while iterating through a dataset: "+t.message,t}return[2]})})},e}(yv),wv=function(t){function e(e){var n=t.call(this)||this;return n.upstream=e,n.lastRead=Promise.resolve({value:null,done:!1}),n}return _y(e,t),e.prototype.summary=function(){return this.upstream.summary()+" -> Serial"},e.prototype.next=function(){return My(this,void 0,void 0,function(){var t=this;return Ly(this,function(e){return this.lastRead=this.lastRead.then(function(){return t.serialNext()}),[2,this.lastRead]})})},e.prototype.serialNext=function(){return My(this,void 0,void 0,function(){return Ly(this,function(t){return[2,this.upstream.next()]})})},e}(yv),xv=function(t){function e(e,n){var r=t.call(this)||this;return r.upstream=e,r.maxCount=n,r.count=0,r.lastRead=Promise.resolve({value:null,done:!1}),r}return _y(e,t),e.prototype.summary=function(){return this.upstream.summary()+" -> Skip"},e.prototype.next=function(){return My(this,void 0,void 0,function(){var t=this;return Ly(this,function(e){return this.lastRead=this.lastRead.then(function(){return t.serialNext()}),[2,this.lastRead]})})},e.prototype.serialNext=function(){return My(this,void 0,void 0,function(){var t;return Ly(this,function(e){switch(e.label){case 0:return this.count++<this.maxCount?[4,this.upstream.next()]:[3,2];case 1:return(t=e.sent()).done?[2,t]:(Ht(t.value),[3,0]);case 2:return[2,this.upstream.next()]}})})},e}(yv),Nv=function(t){function e(e,n){var r=t.call(this)||this;return r.upstream=e,r.maxCount=n,r.count=0,r}return _y(e,t),e.prototype.summary=function(){return this.upstream.summary()+" -> Take"},e.prototype.next=function(){return My(this,void 0,void 0,function(){return Ly(this,function(t){return this.count++>=this.maxCount?[2,{value:null,done:!0}]:[2,this.upstream.next()]})})},e}(yv),Sv=function(t){function e(e,n,r){void 0===r&&(r=!0);var i=t.call(this)||this;return i.upstream=e,i.batchSize=n,i.enableSmallLastBatch=r,i.lastRead=Promise.resolve({value:null,done:!1}),i}return _y(e,t),e.prototype.summary=function(){return this.upstream.summary()+" -> RowMajorBatch"},e.prototype.next=function(){return My(this,void 0,void 0,function(){var t=this;return Ly(this,function(e){return this.lastRead=this.lastRead.then(function(){return t.serialNext()}),[2,this.lastRead]})})},e.prototype.serialNext=function(){return My(this,void 0,void 0,function(){var t,e;return Ly(this,function(n){switch(n.label){case 0:t=[],n.label=1;case 1:return t.length<this.batchSize?[4,this.upstream.next()]:[3,3];case 2:return(e=n.sent()).done?this.enableSmallLastBatch&&t.length>0?[2,{value:t,done:!1}]:[2,{value:null,done:!0}]:(t.push(e.value),[3,1]);case 3:return[2,{value:t,done:!1}]}})})},e}(yv),Cv=function(t){function e(e,n){var r=t.call(this)||this;return r.upstream=e,r.predicate=n,r.lastRead=Promise.resolve({value:null,done:!1}),r}return _y(e,t),e.prototype.summary=function(){return this.upstream.summary()+" -> Filter"},e.prototype.next=function(){return My(this,void 0,void 0,function(){var t=this;return Ly(this,function(e){return this.lastRead=this.lastRead.then(function(){return t.serialNext()}),[2,this.lastRead]})})},e.prototype.serialNext=function(){return My(this,void 0,void 0,function(){var t;return Ly(this,function(e){switch(e.label){case 0:return[4,this.upstream.next()];case 1:return(t=e.sent()).done||this.predicate(t.value)?[2,t]:(Ht(t.value),[3,0]);case 2:return[2]}})})},e}(yv),Ev=function(t){function e(e,n){var r=t.call(this)||this;return r.upstream=e,r.transform=n,r}return _y(e,t),e.prototype.summary=function(){return this.upstream.summary()+" -> Map"},e.prototype.next=function(){return My(this,void 0,void 0,function(){var t,e,n,r,i,o,a;return Ly(this,function(s){switch(s.label){case 0:return[4,this.upstream.next()];case 1:if((t=s.sent()).done)return[2,{value:null,done:!0}];for(e=tv(t.value),n=this.transform(t.value),r=tv(n),i=0,o=e;i<o.length;i++)a=o[i],Qy(a,r)||a.dispose();return[2,{value:n,done:!1}]}})})},e}(yv),Iv=function(t){function e(e,n){var r=t.call(this)||this;return r.upstream=e,r.handler=n,r.count=0,r.lastRead=Promise.resolve({value:null,done:!1}),r}return _y(e,t),e.prototype.summary=function(){return this.upstream.summary()+" -> handleErrors"},e.prototype.next=function(){return My(this,void 0,void 0,function(){var t=this;return Ly(this,function(e){return this.lastRead=this.lastRead.then(function(){return t.serialNext()}),[2,this.lastRead]})})},e.prototype.serialNext=function(){return My(this,void 0,void 0,function(){var t;return Ly(this,function(e){switch(e.label){case 0:e.label=1;case 1:return e.trys.push([1,3,,4]),[4,this.upstream.next()];case 2:return[2,e.sent()];case 3:return t=e.sent(),this.handler(t)?[3,4]:[2,{value:null,done:!0}];case 4:return[3,0];case 5:return[2]}})})},e}(yv),kv=function(t){function e(e,n){var r=t.call(this)||this;return r.upstream=e,r.transform=n,r}return _y(e,t),e.prototype.summary=function(){return this.upstream.summary()+" -> AsyncMap"},e.prototype.next=function(){return My(this,void 0,void 0,function(){var t,e,n,r,i,o,a;return Ly(this,function(s){switch(s.label){case 0:return[4,this.upstream.next()];case 1:return(t=s.sent()).done?[2,{value:null,done:!0}]:(e=tv(t.value),[4,this.transform(t.value)]);case 2:for(n=s.sent(),r=tv(n),i=0,o=e;i<o.length;i++)a=o[i],Qy(a,r)||a.dispose();return[2,{value:n,done:!1}]}})})},e}(yv),Av=function(t){function e(){var e=t.call(this)||this;return e.outputQueue=new hv,e.lastRead=Promise.resolve({value:null,done:!1}),e}return _y(e,t),e.prototype.next=function(){return My(this,void 0,void 0,function(){var t=this;return Ly(this,function(e){return this.lastRead=this.lastRead.then(function(){return t.serialNext()}),[2,this.lastRead]})})},e.prototype.serialNext=function(){return My(this,void 0,void 0,function(){return Ly(this,function(t){switch(t.label){case 0:return 0!==this.outputQueue.length()?[3,2]:[4,this.pump()];case 1:return t.sent()?[3,0]:[2,{value:null,done:!0}];case 2:return[2,{value:this.outputQueue.shift(),done:!1}]}})})},e}(yv),Tv=function(t){function e(e,n){var r=t.call(this)||this;return r.upstream=e,r.transform=n,r}return _y(e,t),e.prototype.summary=function(){return this.upstream.summary()+" -> Flatmap"},e.prototype.pump=function(){return My(this,void 0,void 0,function(){var t,e,n,r,i,o,a;return Ly(this,function(s){switch(s.label){case 0:return[4,this.upstream.next()];case 1:if((t=s.sent()).done)return[2,!1];for(e=tv(t.value),n=this.transform(t.value),r=tv(n),this.outputQueue.pushAll(n),i=0,o=e;i<o.length;i++)a=o[i],Qy(a,r)||a.dispose();return[2,!0]}})})},e}(Av),Rv=function(t){function e(e,n){var r=t.call(this)||this;return r.baseErrorHandler=n,r.lastRead=null,r.iterator=null,r.moreIterators=e,r}return _y(e,t),e.prototype.summary=function(){return"TODO: fill in upstream of chained summaries -> Chained"},e.prototype.next=function(){return My(this,void 0,void 0,function(){return Ly(this,function(t){return this.lastRead=this.readFromChain(this.lastRead),[2,this.lastRead]})})},e.prototype.readFromChain=function(t){return My(this,void 0,void 0,function(){var e,n;return Ly(this,function(r){switch(r.label){case 0:return[4,t];case 1:return r.sent(),null!=this.iterator?[3,3]:[4,this.moreIterators.next()];case 2:if((e=r.sent()).done)return[2,{value:null,done:!0}];this.iterator=e.value,null!=this.baseErrorHandler&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler)),r.label=3;case 3:return[4,this.iterator.next()];case 4:return(n=r.sent()).done?(this.iterator=null,[2,this.readFromChain(t)]):[2,n]}})})},e}(yv);(gv=mv||(mv={}))[gv.FAIL=0]="FAIL",gv[gv.SHORTEST=1]="SHORTEST",gv[gv.LONGEST=2]="LONGEST";var Dv=function(t){function e(e,n){void 0===n&&(n=mv.FAIL);var r=t.call(this)||this;return r.iterators=e,r.mismatchMode=n,r.count=0,r.currentPromise=null,r}return _y(e,t),e.prototype.summary=function(){return"{TODO: fill in upstream of zip summaries} -> Zip"},e.prototype.nextState=function(t){return My(this,void 0,void 0,function(){function e(t){return t instanceof yv?{value:t.next().then(function(t){return n++,t.done&&r++,t.value}),recurse:!1}:{value:null,recurse:!0}}var n,r,i;return Ly(this,function(o){switch(o.label){case 0:return[4,t];case 1:return o.sent(),n=0,r=0,[4,lv(this.iterators,e)];case 2:if(i=o.sent(),n===r)return[2,{value:null,done:!0}];if(r>0)switch(this.mismatchMode){case mv.FAIL:throw new Error("Zipped streams should have the same length. Mismatched at element "+this.count+".");case mv.SHORTEST:return[2,{value:null,done:!0}];case mv.LONGEST:}return this.count++,[2,{value:i,done:!1}]}})})},e.prototype.next=function(){return My(this,void 0,void 0,function(){return Ly(this,function(t){switch(t.label){case 0:return this.currentPromise=this.nextState(this.currentPromise),[4,this.currentPromise];case 1:return[2,t.sent()]}})})},e}(yv),Ov=function(t){function e(e,n){var r=t.call(this)||this;return r.upstream=e,r.bufferSize=n,r.buffer=new pv(n),r}return _y(e,t),e.prototype.summary=function(){return this.upstream.summary()+" -> Prefetch"},e.prototype.refill=function(){for(;!this.buffer.isFull();){var t=this.upstream.next();this.buffer.push(t)}},e.prototype.next=function(){return this.refill(),this.buffer.shift()},e}(yv),_v=function(t){function e(e,n,r){var i=t.call(this,e,n)||this;return i.upstream=e,i.windowSize=n,i.upstreamExhausted=!1,i.random=Hy(r||X.now().toString()),i.lastRead=Promise.resolve({value:null,done:!1}),i}return _y(e,t),e.prototype.next=function(){return My(this,void 0,void 0,function(){var t=this;return Ly(this,function(e){return this.lastRead=this.lastRead.then(function(){return t.serialNext()}),[2,this.lastRead]})})},e.prototype.randomInt=function(t){return Math.floor(this.random()*t)},e.prototype.chooseIndex=function(){return this.randomInt(this.buffer.length())},e.prototype.serialNext=function(){return My(this,void 0,void 0,function(){var t,e;return Ly(this,function(n){switch(n.label){case 0:this.upstreamExhausted||this.refill(),n.label=1;case 1:return this.buffer.isEmpty()?[3,3]:(t=this.chooseIndex(),[4,this.buffer.shuffleExcise(t)]);case 2:return(e=n.sent()).done?(this.upstreamExhausted=!0,[3,1]):(this.refill(),[2,e]);case 3:return[2,{value:null,done:!0}]}})})},e}(Ov),Mv=function(){function t(){this.size=null}return t.prototype.batch=function(t,e){var n=this;void 0===e&&(e=!0);var r=this;return X.assert(t>0,function(){return"batchSize needs to be positive, but it is\n "+t}),Lv(function(){return My(n,void 0,void 0,function(){return Ly(this,function(n){switch(n.label){case 0:return[4,r.iterator()];case 1:return[2,n.sent().columnMajorBatch(t,e,Fv)]}})})},this.size===1/0||null==this.size?this.size:e?Math.ceil(this.size/t):Math.floor(this.size/t))},t.prototype.concatenate=function(t){var e=this,n=this;return Lv(function(){return My(e,void 0,void 0,function(){var e,r;return Ly(this,function(i){switch(i.label){case 0:return[4,n.iterator()];case 1:return r=(e=i.sent()).concatenate,[4,t.iterator()];case 2:return[2,r.apply(e,[i.sent()])]}})})},this.size===1/0||t.size===1/0?1/0:null!=this.size&&null!=t.size?this.size+t.size:null)},t.prototype.filter=function(t){var e=this,n=this;return Lv(function(){return My(e,void 0,void 0,function(){return Ly(this,function(e){switch(e.label){case 0:return[4,n.iterator()];case 1:return[2,e.sent().filter(function(e){return qt(function(){return t(e)})})]}})})},this.size===1/0?1/0:null)},t.prototype.forEachAsync=function(t){return My(this,void 0,void 0,function(){return Ly(this,function(e){switch(e.label){case 0:return[4,this.iterator()];case 1:return[2,e.sent().forEachAsync(t)]}})})},t.prototype.forEach=function(t){return My(this,void 0,void 0,function(){return Ly(this,function(e){return Pt("dataset.forEach() is deprecated and will be removed. Please use dataset.forEachAsync() instead"),[2,this.forEachAsync(t)]})})},t.prototype.map=function(t){var e=this,n=this;return Lv(function(){return My(e,void 0,void 0,function(){return Ly(this,function(e){switch(e.label){case 0:return[4,n.iterator()];case 1:return[2,e.sent().map(function(e){return qt(function(){return t(e)})})]}})})},this.size)},t.prototype.mapAsync=function(t){var e=this,n=this;return Lv(function(){return My(e,void 0,void 0,function(){return Ly(this,function(e){switch(e.label){case 0:return[4,n.iterator()];case 1:return[2,e.sent().mapAsync(t)]}})})},this.size)},t.prototype.prefetch=function(t){var e=this;if(null==t)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");var n=this;return Lv(function(){return My(e,void 0,void 0,function(){return Ly(this,function(e){switch(e.label){case 0:return[4,n.iterator()];case 1:return[2,e.sent().prefetch(t)]}})})},this.size)},t.prototype.repeat=function(t){var e=this,n=this;return Lv(function(){return My(e,void 0,void 0,function(){var e=this;return Ly(this,function(r){return[2,function(t,e){return new Rv(t,e)}(dv(function(){return My(e,void 0,void 0,function(){var t;return Ly(this,function(e){switch(e.label){case 0:return t={},[4,n.iterator()];case 1:return[2,(t.value=e.sent(),t.done=!1,t)]}})})}).take(t))]})})},null!=this.size&&t>0?this.size*t:0===t?0:null!=this.size&&(void 0===t||t<0)?1/0:null)},t.prototype.skip=function(t){var e=this,n=this;return Lv(function(){return My(e,void 0,void 0,function(){return Ly(this,function(e){switch(e.label){case 0:return[4,n.iterator()];case 1:return[2,e.sent().skip(t)]}})})},null!=this.size&&t>=0&&this.size>=t?this.size-t:null!=this.size&&(this.size<t||void 0===t||t<0)?0:null)},t.prototype.shuffle=function(t,e,n){var r=this;if(void 0===n&&(n=!0),null==t||t<0)throw null==this.size?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError("`Dataset.shuffle()` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for `tf.Tensor`s), consider setting bufferSize to the dataset size ("+this.size+" elements)");var i=this,o=Hy(e||X.now().toString());return Lv(function(){return My(r,void 0,void 0,function(){var e;return Ly(this,function(r){switch(r.label){case 0:return e=o.int32(),n&&(e+=o.int32()),[4,i.iterator()];case 1:return[2,r.sent().shuffle(t,e.toString())]}})})},this.size)},t.prototype.take=function(t){var e=this,n=this;return Lv(function(){return My(e,void 0,void 0,function(){return Ly(this,function(e){switch(e.label){case 0:return[4,n.iterator()];case 1:return[2,e.sent().take(t)]}})})},null!=this.size&&this.size>t?t:null!=this.size&&this.size<=t?this.size:null)},t.prototype.toArray=function(){return My(this,void 0,void 0,function(){return Ly(this,function(t){switch(t.label){case 0:return[4,this.iterator()];case 1:return[2,t.sent().collect()]}})})},t.MAX_BUFFER_SIZE=1e4,t}();function Lv(t,e){return void 0===e&&(e=null),new(function(n){function r(){var t=null!==n&&n.apply(this,arguments)||this;return t.size=e,t}return _y(r,n),r.prototype.iterator=function(){return My(this,void 0,void 0,function(){return Ly(this,function(e){return[2,t()]})})},r}(Mv))}function Fv(t){return null===t?null:function(t){return null==t||ov(t)||Array.isArray(t)||"object"==typeof t&&t instanceof ut||$y(t)}(t[0])?{value:function(t){if(0===t.length)throw new Error("Can't make a batch of zero elements.");return t[0]instanceof ut?oa(t):Te(t)}(t),recurse:!1}:{value:null,recurse:!0}}var zv=function(t){function e(e){var n=t.call(this)||this;return n.input=e,n}return _y(e,t),e.prototype.iterator=function(){return My(this,void 0,void 0,function(){var t;return Ly(this,function(e){switch(e.label){case 0:return[4,this.input.iterator()];case 1:return t=e.sent(),[2,t.decodeUTF8().split("\n")]}})})},e}(Mv),Pv=Symbol("out"),Bv=Symbol("field"),Uv=Symbol("quote"),Wv=Symbol("quoteafterquote"),Vv=Symbol("quoteinquote"),jv=function(t){function e(e,n){var r=t.call(this)||this;return r.input=e,r.hasHeader=!0,r.fullColumnNames=null,r.columnNamesValidated=!1,r.columnConfigs=null,r.configuredColumnsOnly=!1,r.delimiter=",",r.base=new zv(e),n||(n={}),r.hasHeader=!1!==n.hasHeader,r.fullColumnNames=n.columnNames,r.columnConfigs=n.columnConfigs,r.configuredColumnsOnly=n.configuredColumnsOnly,r.delimiter=n.delimiter?n.delimiter:",",r}return _y(e,t),e.prototype.columnNames=function(){return My(this,void 0,void 0,function(){return Ly(this,function(t){switch(t.label){case 0:return this.columnNamesValidated?[3,2]:[4,this.setColumnNames()];case 1:t.sent(),t.label=2;case 2:return[2,this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames]}})})},e.prototype.setColumnNames=function(){return My(this,void 0,void 0,function(){var t,e,n,r,i,o,a=this;return Ly(this,function(s){switch(s.label){case 0:return[4,this.maybeReadHeaderLine()];case 1:if(t=s.sent(),!this.fullColumnNames&&!t)throw new Error("Column names must be provided if there is no header line.");if(this.fullColumnNames&&t&&X.assert(t.length===this.fullColumnNames.length,function(){return"The length of provided columnNames ("+a.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+t.length.toString()+")."}),this.fullColumnNames||(this.fullColumnNames=t),e=this.fullColumnNames.reduce(function(t,e){return t[e]=t[e]+1||1,t},{}),n=Object.keys(e).filter(function(t){return e[t]>1}),X.assert(0===n.length,function(){return"Duplicate column names found: "+n.toString()}),this.columnConfigs)for(r=0,i=Object.keys(this.columnConfigs);r<i.length;r++)if(o=i[r],-1===this.fullColumnNames.indexOf(o))throw new Error('The key "'+o+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").");return this.columnNamesValidated=!0,[2]}})})},e.prototype.maybeReadHeaderLine=function(){return My(this,void 0,void 0,function(){var t;return Ly(this,function(e){switch(e.label){case 0:return this.hasHeader?[4,this.base.iterator()]:[3,3];case 1:return[4,e.sent().next()];case 2:if((t=e.sent()).done)throw new Error("No data was found for CSV parsing.");return[2,t.value.split(this.delimiter)];case 3:return[2,null]}})})},e.prototype.iterator=function(){return My(this,void 0,void 0,function(){var t,e=this;return Ly(this,function(n){switch(n.label){case 0:return this.columnNamesValidated?[3,2]:[4,this.setColumnNames()];case 1:n.sent(),n.label=2;case 2:return[4,this.base.iterator()];case 3:return t=n.sent(),this.hasHeader&&(t=t.skip(1)),[2,t.map(function(t){return e.makeDataElement(t)})]}})})},e.prototype.makeDataElement=function(t){for(var e=this.parseRow(t),n={},r={},i=0;i<this.fullColumnNames.length;i++){var o=this.fullColumnNames[i],a=this.columnConfigs?this.columnConfigs[o]:null;if(!this.configuredColumnsOnly||a){var s=e[i],u=null;if(""===s)if(a&&void 0!==a.default)u=a.default;else{if(a&&(a.required||a.isLabel))throw new Error("Required column "+o+" is empty in this line: "+t);u=void 0}else{var l=Number(s);if(isNaN(l))u=a&&"bool"===a.dtype?this.getBoolean(s):s;else if(a&&a.dtype)switch(a.dtype){case"float32":u=l;break;case"int32":u=Math.floor(l);break;case"bool":u=this.getBoolean(s);break;default:u=l}else u=l}a&&a.isLabel?r[o]=u:n[o]=u}}return 0===Object.keys(r).length?n:{xs:n,ys:r}},e.prototype.getBoolean=function(t){return"1"===t||"true"===t.toLowerCase()?1:0},e.prototype.parseRow=function(t){for(var e=[],n=0,r=t.length,i=Bv,o=0;o<r;o++)switch(i){case Pv:switch(t.charAt(o)){case'"':n=o+1,i=Uv;break;case this.delimiter:e.push(""),i=Pv,n=o+1;break;default:i=Bv,n=o}break;case Bv:switch(t.charAt(o)){case this.delimiter:e.push(t.substring(n,o)),i=Pv,n=o+1}break;case Uv:switch(t.charAt(o)){case'"':i=Wv}break;case Wv:switch(t.charAt(o)){case this.delimiter:e.push(t.substring(n,o-1)),i=Pv,n=o+1;break;case'"':i=Uv;break;default:i=Vv}break;case Vv:switch(t.charAt(o)){case'"':i=Uv}}return i===Wv?e.push(t.substring(n,r-1)):e.push(t.substring(n)),e},e}(Mv),qv=function(){},Gv=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return _y(e,t),e.prototype.split=function(t){return new Hv(this,t)},e}(yv),Hv=function(t){function e(e,n){var r=t.call(this)||this;return r.upstream=e,r.impl=new Kv(e,n),r}return _y(e,t),e.prototype.summary=function(){return this.impl.summary()},e.prototype.next=function(){return My(this,void 0,void 0,function(){return Ly(this,function(t){return[2,this.impl.next()]})})},e}(Gv),Kv=function(t){function e(e,n){var r=t.call(this)||this;return r.upstream=e,r.separator=n,r.carryover="",r}return _y(e,t),e.prototype.summary=function(){return this.upstream.summary()+" -> Split('"+this.separator+"')"},e.prototype.pump=function(){return My(this,void 0,void 0,function(){var t,e,n,r,i;return Ly(this,function(o){switch(o.label){case 0:return[4,this.upstream.next()];case 1:if((t=o.sent()).done)return""===this.carryover?[2,!1]:(this.outputQueue.push(this.carryover),this.carryover="",[2,!0]);for((e=t.value.split(this.separator))[0]=this.carryover+e[0],n=0,r=e.slice(0,-1);n<r.length;n++)i=r[n],this.outputQueue.push(i);return this.carryover=e[e.length-1],[2,!0]}})})},e}(Av),$v=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return _y(e,t),e.prototype.decodeUTF8=function(){return new Xv(this)},e}(yv),Xv=function(t){function e(e){var n=t.call(this)||this;return n.upstream=e,n.impl=new Yv(e),n}return _y(e,t),e.prototype.summary=function(){return this.impl.summary()},e.prototype.next=function(){return My(this,void 0,void 0,function(){return Ly(this,function(t){return[2,this.impl.next()]})})},e}(Gv),Yv=function(t){function e(e){var n=t.call(this)||this;if(n.upstream=e,Bt.get("IS_BROWSER"))n.decoder=new TextDecoder("utf-8");else{var r=require("string_decoder").StringDecoder;n.decoder=new r("utf8")}return n}return _y(e,t),e.prototype.summary=function(){return this.upstream.summary()+" -> Utf8"},e.prototype.pump=function(){return My(this,void 0,void 0,function(){var t,e,n;return Ly(this,function(r){switch(r.label){case 0:return[4,this.upstream.next()];case 1:return(t=r.sent()).done?[2,!1]:(e=t.value,n=Bt.get("IS_BROWSER")?this.decoder.decode(e,{stream:!0}):this.decoder.write(Buffer.from(e.buffer)),this.outputQueue.push(n),[2,!0])}})})},e}(Av),Jv=function(t){function e(e,n){void 0===n&&(n={});var r=t.call(this)||this;return r.file=e,r.options=n,X.assert(e instanceof Uint8Array||!!Bt.get("IS_BROWSER")&&(e instanceof File||e instanceof Blob),function(){return"FileChunkIterator only supports File, Blob and Uint8Array right now."}),r.offset=n.offset||0,r.chunkSize=n.chunkSize||1048576,r}return _y(e,t),e.prototype.summary=function(){return"FileChunks "+this.file},e.prototype.next=function(){return My(this,void 0,void 0,function(){var t,e,n=this;return Ly(this,function(r){switch(r.label){case 0:return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?[2,{value:null,done:!0}]:(t=new Promise(function(t,e){var r=n.offset+n.chunkSize;if(n.file instanceof Uint8Array)t(new Uint8Array(n.file.slice(n.offset,r)));else{var i=new FileReader;i.onload=function(n){var r=i.result;if(r instanceof ArrayBuffer&&(r=new Uint8Array(r)),!(r instanceof Uint8Array))return e(new TypeError("FileReader returned unknown type."));t(r)},i.onabort=function(t){return e(new Error("Aborted"))},i.onerror=function(t){return e(new Error(t.type))};var o=n.file.slice(n.offset,r);i.readAsArrayBuffer(o)}n.offset=r}),e={},[4,t]);case 1:return[2,(e.value=r.sent(),e.done=!1,e)]}})})},e}($v);function Zv(t){return"string"==typeof t&&"file://"===t.substr(0,7)}var Qv=function(t){function e(e,n){void 0===n&&(n={});var r=t.call(this)||this;return r.input=e,r.options=n,r}return _y(e,t),e.prototype.iterator=function(){return My(this,void 0,void 0,function(){var t;return Ly(this,function(e){return Zv(this.input)&&Bt.get("IS_NODE")&&(t=require("fs"),this.input=t.readFileSync(this.input.substr(7))),[2,new Jv(this.input,this.options)]})})},e}(qv),tb=function(t){function e(e,n){void 0===n&&(n={});var r=t.call(this)||this;return r.url=e,r.fileOptions=n,r}return _y(e,t),e.prototype.iterator=function(){return My(this,void 0,void 0,function(){return Ly(this,function(t){return Zv(this.url)?[2,new Qv(this.url,this.fileOptions).iterator()]:[2,function(t,e){return void 0===e&&(e={}),My(this,void 0,void 0,function(){var n,r,i,o;return Ly(this,function(a){switch(a.label){case 0:return Bt.get("IS_BROWSER")?[4,fetch(t)]:[3,5];case 1:return(n=a.sent()).ok?[4,n.blob()]:[3,3];case 2:return r=a.sent(),[2,new Jv(r,e)];case 3:throw new Error(n.statusText);case 4:return[3,9];case 5:if(i=require("node-fetch"),"string"!=typeof t)throw new Error("URL must be a string. Request objects are not supported in the node.js environment yet.");return[4,i(t)];case 6:return(n=a.sent()).ok?[4,n.buffer()]:[3,8];case 7:return o=a.sent(),[2,new Jv(o,e)];case 8:throw new Error(n.statusText);case 9:return[2]}})})}(this.url,this.fileOptions)]})})},e}(qv);var eb=Object.freeze({array:function(t){var e=this;return Lv(function(){return My(e,void 0,void 0,function(){return Ly(this,function(e){return[2,fv(t)]})})},t.length)},Dataset:Mv,zip:function(t){var e,n=this;if(!cv(t))throw new Error("The argument to zip() must be an object or array.");if(Array.isArray(t))for(var r=0;r<t.length;r++)e=null==e?t[r].size:Math.min(e,t[r].size);else if(t instanceof Object)for(var i in t)e=null==e?t[i].size:Math.min(e,t[i].size);return Lv(function(){return My(n,void 0,void 0,function(){return Ly(this,function(e){switch(e.label){case 0:return[4,lv(t,function(t){if(t instanceof Mv)return{value:t.iterator(),recurse:!1};if(cv(t))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")})];case 1:return[2,function(t,e){return void 0===e&&(e=mv.FAIL),new Dv(t,e)}(e.sent(),mv.SHORTEST)]}})})},e)},CSVDataset:jv,TextLineDataset:zv,csv:function(t,e){return void 0===e&&(e={}),new jv(new tb(t),e)},func:function(t){var e=this,n=dv(t);return Lv(function(){return My(e,void 0,void 0,function(){return Ly(this,function(t){return[2,n]})})})},generator:function(t){var e=this;return Lv(function(){return My(e,void 0,void 0,function(){var e;return Ly(this,function(n){switch(n.label){case 0:return[4,t()];case 1:return e=n.sent(),[2,dv(function(){return e.next()})]}})})})},FileDataSource:Qv,URLDataSource:tb,version_data:"1.0.0"}),nb={"tfjs-core":"1.0.0","tfjs-data":"1.0.0","tfjs-layers":"1.0.0","tfjs-converter":"1.0.0",tfjs:"1.0.0"};t.data=eb,t.version=nb,t.setBackend=Zc,t.getBackend=Qc,t.disposeVariables=tp,t.memory=ep,t.version_core="1.0.0",t.nextFrame=Fl,t.enableProdMode=Lt,t.enableDebugMode=Ft,t.disableDeprecationWarnings=zt,t.deprecationWarn=Pt,t.browser=Oc,t.environment=Ut,t.io=Ac,t.math=Rc,t.serialization=Fc,t.test_util=Uc,t.util=X,t.webgl=Wc,t.AdadeltaOptimizer=jc,t.AdagradOptimizer=qc,t.AdamOptimizer=Gc,t.AdamaxOptimizer=Hc,t.MomentumOptimizer=$c,t.Optimizer=Vc,t.RMSPropOptimizer=Xc,t.SGDOptimizer=Kc,t.Tensor=ut,t.TensorBuffer=it,t.variable=mt,t.Variable=lt,t.ENV=Bt,t.Environment=_t,t.KernelBackend=Ge,t.DataStorage=qe,t.image=Rl,t.linalg=Sl,t.losses=bl,t.spectral=sl,t.fused=Ol,t.op=Se,t.batchNormalization2d=Ja,t.batchNormalization3d=Za,t.batchNormalization4d=Qa,t.batchNormalization=ts,t.batchNorm=es,t.batchNorm2d=ns,t.batchNorm3d=rs,t.batchNorm4d=is,t.complex=Ie,t.real=ke,t.imag=Ae,t.concat=xo,t.concat1d=No,t.concat2d=So,t.concat3d=Co,t.concat4d=Eo,t.split=Io,t.conv1d=ys,t.conv2d=vs,t.conv3d=bs,t.conv2dDerFilter=ws,t.depthwiseConv2d=xs,t.separableConv2d=Ns,t.conv2dTranspose=Ss,t.matMul=Cs,t.dot=Es,t.outerProduct=Is,t.reverse=ks,t.reverse1d=As,t.reverse2d=Ts,t.reverse3d=Rs,t.reverse4d=Ds,t.maxPool=Ms,t.avgPool=Ls,t.pool=Fs,t.slice=zs,t.slice1d=Ps,t.slice2d=Bs,t.slice3d=Us,t.slice4d=Ws,t.abs=fa,t.acos=da,t.acosh=ma,t.asin=ga,t.asinh=ya,t.atan=va,t.atanh=ba,t.ceil=wa,t.clipByValue=xa,t.cos=Na,t.cosh=Sa,t.erf=Ca,t.exp=Ea,t.expm1=Ia,t.floor=ka,t.log=Aa,t.log1p=Ta,t.logSigmoid=Ra,t.neg=Da,t.reciprocal=Oa,t.round=_a,t.rsqrt=Ma,t.sigmoid=La,t.sign=Fa,t.sin=za,t.sinh=Pa,t.softplus=Ba,t.sqrt=Ua,t.square=Wa,t.step=Va,t.tan=ja,t.tanh=qa,t.all=js,t.any=qs,t.argMax=Gs,t.argMin=Hs,t.logSumExp=Ks,t.max=$s,t.mean=Xs,t.min=Ys,t.moments=Js,t.sum=Zs,t.prod=Qs,t.equal=tu,t.equalStrict=eu,t.greater=nu,t.greaterEqual=ru,t.greaterEqualStrict=iu,t.greaterStrict=ou,t.less=au,t.lessEqual=su,t.lessEqualStrict=uu,t.lessStrict=lu,t.notEqual=cu,t.notEqualStrict=pu,t.add=hu,t.addN=fu,t.addStrict=du,t.atan2=mu,t.div=gu,t.divStrict=yu,t.floorDiv=vu,t.maximum=bu,t.maximumStrict=wu,t.minimum=xu,t.minimumStrict=Nu,t.mod=Su,t.modStrict=Cu,t.mul=Eu,t.mulStrict=Iu,t.pow=ku,t.powStrict=Au,t.squaredDifference=Tu,t.squaredDifferenceStrict=Ru,t.sub=Du,t.subStrict=Ou,t.elu=Bu,t.leakyRelu=Uu,t.prelu=Wu,t.relu=Vu,t.selu=ju,t.logicalAnd=_u,t.logicalNot=Mu,t.logicalOr=Lu,t.logicalXor=Fu,t.where=zu,t.whereAsync=Pu,t.buffer=zo,t.print=Po,t.batchToSpaceND=Bo,t.cast=Uo,t.clone=Wo,t.cumsum=Vo,t.depthToSpace=jo,t.expandDims=qo,t.eye=Go,t.multinomial=Ho,t.oneHot=Ko,t.pad=$o,t.pad1d=Xo,t.pad2d=Yo,t.pad3d=Jo,t.pad4d=Zo,t.rand=Qo,t.randomNormal=ta,t.randomUniform=ea,t.reshape=na,t.spaceToBatchND=ra,t.squeeze=ia,t.stack=oa,t.tile=aa,t.truncatedNormal=sa,t.unstack=ua,t.setdiff1dAsync=la,t.fill=Be,t.linspace=Ue,t.ones=ze,t.range=We,t.scalar=Re,t.tensor=Te,t.tensor1d=De,t.tensor2d=Oe,t.tensor3d=_e,t.tensor4d=Me,t.tensor5d=Le,t.tensor6d=Fe,t.zeros=Pe,t.onesLike=Ve,t.zerosLike=je,t.transpose=qu,t.softmax=Ce,t.logSoftmax=Ee,t.localResponseNormalization=Gu,t.norm=Hu,t.gather=Xu,t.unsortedSegmentSum=Yu,t.basicLSTMCell=Ju,t.multiRNNCell=Zu,t.movingAverage=Qu,t.stridedSlice=tl,t.topk=el,t.scatterND=nl,t.fft=rl,t.ifft=il,t.rfft=ol,t.irfft=al,t.sparseToDense=ul,t.gatherND=ll,t.train=Jc,t.tidy=qt,t.keep=Gt,t.dispose=Ht,t.time=Kt,t.profile=$t,t.customGrad=Vt,t.grad=function(t){return d(U(t),function(){return"The f passed in grad(f) must be a function"}),function(e,n){return d(e instanceof ut,function(){return"The x passed in grad(f)(x) must be a tensor"}),d(null==n||n instanceof ut,function(){return"The dy passed in grad(f)(x, dy) must be a tensor"}),Bt.engine.tidy(function(){var r=Bt.engine.gradients(function(){return t(e)},[e],n),i=r.value,o=r.grads;return null!=n&&m(i.shape,n.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),jt(o),o[0]})}},t.grads=function(t){return d(U(t),function(){return"The f passed in grads(f) must be a function"}),function(e,n){return d(Array.isArray(e)&&e.every(function(t){return t instanceof ut}),function(){return"The args passed in grads(f)(args) must be an array of tensors"}),d(null==n||n instanceof ut,function(){return"The dy passed in grads(f)(args, dy) must be a tensor"}),Bt.engine.tidy(function(){var r=Bt.engine.gradients(function(){return t.apply(void 0,e)},e,n),i=r.value,o=r.grads;return null!=n&&m(i.shape,n.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),jt(o),o})}},t.valueAndGrad=function(t){return d(U(t),function(){return"The f passed in valueAndGrad(f) must be a function"}),function(e,n){d(e instanceof ut,function(){return"The x passed in valueAndGrad(f)(x) must be a tensor"}),d(null==n||n instanceof ut,function(){return"The dy passed in valueAndGrad(f)(x, dy) must be a tensor"});var r=Bt.engine.gradients(function(){return t(e)},[e],n),i=r.grads,o=r.value;return jt(i),{grad:i[0],value:o}}},t.valueAndGrads=function(t){return d(U(t),function(){return"The f passed in valueAndGrads(f) must be a function"}),function(e,n){d(Array.isArray(e)&&e.every(function(t){return t instanceof ut}),function(){return"The args passed in valueAndGrads(f)(args) must be array of tensors"}),d(null==n||n instanceof ut,function(){return"The dy passed in valueAndGrads(f)(args, dy) must be a tensor"});var r=Bt.engine.gradients(function(){return t.apply(void 0,e)},e,n);return null!=n&&m(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),jt(r.grads),r}},t.variableGrads=Wt,t.constraints=Kp,t.initializers=Jh,t.layers=Dg,t.metrics=Og,t.models=_g,t.regularizers=Lg,t.CallbackList=wf,t.CustomCallback=Cf,t.History=Sf,t.Callback=Fg,t.InputSpec=uf,t.SymbolicTensor=lf,t.LayersModel=Ld,t.input=Pd,t.loadLayersModel=function(t,e){return null==e&&(e={}),Fd(t,e)},t.model=function(t){return new Ld(t)},t.registerCallbackConstructor=function(t,e){If.registerCallbackConstructor(t,e)},t.sequential=function(t){return new zd(t)},t.RNN=sg,t.Sequential=zd,t.LayerVariable=of,t.version_layers="1.0.0",t.GraphModel=Dy,t.loadGraphModel=function(t,e){return void 0===e&&(e={}),Pg(this,void 0,void 0,function(){var n;return Bg(this,function(r){switch(r.label){case 0:if(null==t)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");return null==e&&(e={}),e.fromTFHub&&null==t.load&&(t.endsWith("/")||(t+="/"),t=""+t+Ry+Ty),[4,(n=new Dy(t,e)).load()];case 1:return r.sent(),[2,n]}})})},t.version_converter="1.0.0",Object.defineProperty(t,"__esModule",{value:!0})}); +//# sourceMappingURL=tf.min.js.map diff --git a/01_Code/physical_computing_interface/simulation/lib/three.min.js b/01_Code/physical_computing_interface/simulation/lib/three.min.js new file mode 100644 index 0000000000000000000000000000000000000000..a7d090b82795edc4dad0b10d7a88ed3fa841a45d --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/lib/three.min.js @@ -0,0 +1,1018 @@ +(function(k,Ba){"object"===typeof exports&&"undefined"!==typeof module?Ba(exports):"function"===typeof define&&define.amd?define(["exports"],Ba):(k=k||self,Ba(k.THREE={}))})(this,function(k){function Ba(){}function B(a,b){this.x=a||0;this.y=b||0}function wa(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._w=void 0!==d?d:1}function n(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0}function Z(){this.elements=[1,0,0,0,1,0,0,0,1];0<arguments.length&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")} +function Y(a,b,c,d,e,f,g,h,l,m){Object.defineProperty(this,"id",{value:Si++});this.uuid=P.generateUUID();this.name="";this.image=void 0!==a?a:Y.DEFAULT_IMAGE;this.mipmaps=[];this.mapping=void 0!==b?b:Y.DEFAULT_MAPPING;this.wrapS=void 0!==c?c:1001;this.wrapT=void 0!==d?d:1001;this.magFilter=void 0!==e?e:1006;this.minFilter=void 0!==f?f:1008;this.anisotropy=void 0!==l?l:1;this.format=void 0!==g?g:1023;this.type=void 0!==h?h:1009;this.offset=new B(0,0);this.repeat=new B(1,1);this.center=new B(0,0);this.rotation= +0;this.matrixAutoUpdate=!0;this.matrix=new Z;this.generateMipmaps=!0;this.premultiplyAlpha=!1;this.flipY=!0;this.unpackAlignment=4;this.encoding=void 0!==m?m:3E3;this.version=0;this.onUpdate=null}function da(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1}function la(a,b,c){this.width=a;this.height=b;this.scissor=new da(0,0,a,b);this.scissorTest=!1;this.viewport=new da(0,0,a,b);c=c||{};this.texture=new Y(void 0,void 0,c.wrapS,c.wrapT,c.magFilter,c.minFilter,c.format,c.type,c.anisotropy, +c.encoding);this.texture.image={};this.texture.image.width=a;this.texture.image.height=b;this.texture.generateMipmaps=void 0!==c.generateMipmaps?c.generateMipmaps:!1;this.texture.minFilter=void 0!==c.minFilter?c.minFilter:1006;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.depthTexture=void 0!==c.depthTexture?c.depthTexture:null}function Sf(a,b,c){la.call(this,a,b,c);this.samples=4}function Q(){this.elements=[1,0,0,0,0, +1,0,0,0,0,1,0,0,0,0,1];0<arguments.length&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}function Pb(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._order=d||Pb.DefaultOrder}function Tf(){this.mask=1}function D(){Object.defineProperty(this,"id",{value:Ti++});this.uuid=P.generateUUID();this.name="";this.type="Object3D";this.parent=null;this.children=[];this.up=D.DefaultUp.clone();var a=new n,b=new Pb,c=new wa,d=new n(1,1,1);b._onChange(function(){c.setFromEuler(b, +!1)});c._onChange(function(){b.setFromQuaternion(c,void 0,!1)});Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:a},rotation:{configurable:!0,enumerable:!0,value:b},quaternion:{configurable:!0,enumerable:!0,value:c},scale:{configurable:!0,enumerable:!0,value:d},modelViewMatrix:{value:new Q},normalMatrix:{value:new Z}});this.matrix=new Q;this.matrixWorld=new Q;this.matrixAutoUpdate=D.DefaultMatrixAutoUpdate;this.matrixWorldNeedsUpdate=!1;this.layers=new Tf;this.visible=!0; +this.receiveShadow=this.castShadow=!1;this.frustumCulled=!0;this.renderOrder=0;this.userData={}}function wd(){D.call(this);this.type="Scene";this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0;"undefined"!==typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}function ab(a,b){this.min=void 0!==a?a:new n(Infinity,Infinity,Infinity);this.max=void 0!==b?b:new n(-Infinity,-Infinity,-Infinity)}function Uf(a,b,c,d,e){var f;var g=0;for(f= +a.length-3;g<=f;g+=3){Qb.fromArray(a,g);var h=e.x*Math.abs(Qb.x)+e.y*Math.abs(Qb.y)+e.z*Math.abs(Qb.z),l=b.dot(Qb),m=c.dot(Qb),r=d.dot(Qb);if(Math.max(-Math.max(l,m,r),Math.min(l,m,r))>h)return!1}return!0}function mb(a,b){this.center=void 0!==a?a:new n;this.radius=void 0!==b?b:0}function Rb(a,b){this.origin=void 0!==a?a:new n;this.direction=void 0!==b?b:new n}function Oa(a,b){this.normal=void 0!==a?a:new n(1,0,0);this.constant=void 0!==b?b:0}function ba(a,b,c){this.a=void 0!==a?a:new n;this.b=void 0!== +b?b:new n;this.c=void 0!==c?c:new n}function J(a,b,c){return void 0===b&&void 0===c?this.set(a):this.setRGB(a,b,c)}function Vf(a,b,c){0>c&&(c+=1);1<c&&--c;return c<1/6?a+6*(b-a)*c:.5>c?b:c<2/3?a+6*(b-a)*(2/3-c):a}function Wf(a){return.04045>a?.0773993808*a:Math.pow(.9478672986*a+.0521327014,2.4)}function Xf(a){return.0031308>a?12.92*a:1.055*Math.pow(a,.41666)-.055}function yc(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d&&d.isVector3?d:new n;this.vertexNormals=Array.isArray(d)?d:[];this.color= +e&&e.isColor?e:new J;this.vertexColors=Array.isArray(e)?e:[];this.materialIndex=void 0!==f?f:0}function O(){Object.defineProperty(this,"id",{value:Ui++});this.uuid=P.generateUUID();this.name="";this.type="Material";this.fog=!0;this.blending=1;this.side=0;this.vertexTangents=this.flatShading=!1;this.vertexColors=0;this.opacity=1;this.transparent=!1;this.blendSrc=204;this.blendDst=205;this.blendEquation=100;this.blendEquationAlpha=this.blendDstAlpha=this.blendSrcAlpha=null;this.depthFunc=3;this.depthWrite= +this.depthTest=!0;this.stencilWriteMask=255;this.stencilFunc=519;this.stencilRef=0;this.stencilFuncMask=255;this.stencilZPass=this.stencilZFail=this.stencilFail=7680;this.stencilWrite=!1;this.clippingPlanes=null;this.clipShadows=this.clipIntersection=!1;this.shadowSide=null;this.colorWrite=!0;this.precision=null;this.polygonOffset=!1;this.polygonOffsetUnits=this.polygonOffsetFactor=0;this.dithering=!1;this.alphaTest=0;this.premultipliedAlpha=!1;this.toneMapped=this.visible=!0;this.userData={};this.needsUpdate= +!0}function Ga(a){O.call(this);this.type="MeshBasicMaterial";this.color=new J(16777215);this.lightMap=this.map=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.envMap=this.alphaMap=this.specularMap=null;this.combine=0;this.reflectivity=1;this.refractionRatio=.98;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinejoin=this.wireframeLinecap="round";this.morphTargets=this.skinning=!1;this.setValues(a)}function N(a,b,c){if(Array.isArray(a))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array."); +this.name="";this.array=a;this.itemSize=b;this.count=void 0!==a?a.length/b:0;this.normalized=!0===c;this.usage=35044;this.updateRange={offset:0,count:-1};this.version=0}function xd(a,b,c){N.call(this,new Int8Array(a),b,c)}function yd(a,b,c){N.call(this,new Uint8Array(a),b,c)}function zd(a,b,c){N.call(this,new Uint8ClampedArray(a),b,c)}function Ad(a,b,c){N.call(this,new Int16Array(a),b,c)}function Sb(a,b,c){N.call(this,new Uint16Array(a),b,c)}function Bd(a,b,c){N.call(this,new Int32Array(a),b,c)}function Tb(a, +b,c){N.call(this,new Uint32Array(a),b,c)}function A(a,b,c){N.call(this,new Float32Array(a),b,c)}function Cd(a,b,c){N.call(this,new Float64Array(a),b,c)}function ih(){this.vertices=[];this.normals=[];this.colors=[];this.uvs=[];this.uvs2=[];this.groups=[];this.morphTargets={};this.skinWeights=[];this.skinIndices=[];this.boundingSphere=this.boundingBox=null;this.groupsNeedUpdate=this.uvsNeedUpdate=this.colorsNeedUpdate=this.normalsNeedUpdate=this.verticesNeedUpdate=!1}function jh(a){if(0===a.length)return-Infinity; +for(var b=a[0],c=1,d=a.length;c<d;++c)a[c]>b&&(b=a[c]);return b}function E(){Object.defineProperty(this,"id",{value:Vi+=2});this.uuid=P.generateUUID();this.name="";this.type="BufferGeometry";this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingSphere=this.boundingBox=null;this.drawRange={start:0,count:Infinity};this.userData={}}function ea(a,b){D.call(this);this.type="Mesh";this.geometry=void 0!==a?a:new E;this.material=void 0!==b?b:new Ga({color:16777215*Math.random()}); +this.drawMode=0;this.updateMorphTargets()}function kh(a,b,c,d,e,f,g,h){if(null===(1===b.side?d.intersectTriangle(g,f,e,!0,h):d.intersectTriangle(e,f,g,2!==b.side,h)))return null;Ee.copy(h);Ee.applyMatrix4(a.matrixWorld);b=c.ray.origin.distanceTo(Ee);return b<c.near||b>c.far?null:{distance:b,point:Ee.clone(),object:a}}function Fe(a,b,c,d,e,f,g,h,l,m,r){Ub.fromBufferAttribute(e,l);Vb.fromBufferAttribute(e,m);Wb.fromBufferAttribute(e,r);e=a.morphTargetInfluences;if(b.morphTargets&&f&&e){Yf.set(0,0,0); +Zf.set(0,0,0);$f.set(0,0,0);for(var q=0,u=f.length;q<u;q++){var p=e[q],k=f[q];0!==p&&(lh.fromBufferAttribute(k,l),mh.fromBufferAttribute(k,m),nh.fromBufferAttribute(k,r),Yf.addScaledVector(lh.sub(Ub),p),Zf.addScaledVector(mh.sub(Vb),p),$f.addScaledVector(nh.sub(Wb),p))}Ub.add(Yf);Vb.add(Zf);Wb.add($f)}if(a=kh(a,b,c,d,Ub,Vb,Wb,Dd))g&&(zc.fromBufferAttribute(g,l),Ac.fromBufferAttribute(g,m),Bc.fromBufferAttribute(g,r),a.uv=ba.getUV(Dd,Ub,Vb,Wb,zc,Ac,Bc,new B)),h&&(zc.fromBufferAttribute(h,l),Ac.fromBufferAttribute(h, +m),Bc.fromBufferAttribute(h,r),a.uv2=ba.getUV(Dd,Ub,Vb,Wb,zc,Ac,Bc,new B)),g=new yc(l,m,r),ba.getNormal(Ub,Vb,Wb,g.normal),a.face=g;return a}function C(){Object.defineProperty(this,"id",{value:Wi+=2});this.uuid=P.generateUUID();this.name="";this.type="Geometry";this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingSphere=this.boundingBox=null;this.groupsNeedUpdate=this.lineDistancesNeedUpdate= +this.colorsNeedUpdate=this.normalsNeedUpdate=this.uvsNeedUpdate=this.verticesNeedUpdate=this.elementsNeedUpdate=!1}function Xb(a){var b={},c;for(c in a){b[c]={};for(var d in a[c]){var e=a[c][d];e&&(e.isColor||e.isMatrix3||e.isMatrix4||e.isVector2||e.isVector3||e.isVector4||e.isTexture)?b[c][d]=e.clone():Array.isArray(e)?b[c][d]=e.slice():b[c][d]=e}}return b}function ua(a){for(var b={},c=0;c<a.length;c++){var d=Xb(a[c]),e;for(e in d)b[e]=d[e]}return b}function va(a){O.call(this);this.type="ShaderMaterial"; +this.defines={};this.uniforms={};this.vertexShader="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}";this.fragmentShader="void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}";this.linewidth=1;this.wireframe=!1;this.wireframeLinewidth=1;this.morphNormals=this.morphTargets=this.skinning=this.clipping=this.lights=this.fog=!1;this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1};this.defaultAttributeValues={color:[1,1, +1],uv:[0,0],uv2:[0,0]};this.index0AttributeName=void 0;this.uniformsNeedUpdate=!1;void 0!==a&&(void 0!==a.attributes&&console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."),this.setValues(a))}function bb(){D.call(this);this.type="Camera";this.matrixWorldInverse=new Q;this.projectionMatrix=new Q;this.projectionMatrixInverse=new Q}function U(a,b,c,d){bb.call(this);this.type="PerspectiveCamera";this.fov=void 0!==a?a:50;this.zoom=1;this.near=void 0!== +c?c:.1;this.far=void 0!==d?d:2E3;this.focus=10;this.aspect=void 0!==b?b:1;this.view=null;this.filmGauge=35;this.filmOffset=0;this.updateProjectionMatrix()}function Cc(a,b,c,d){D.call(this);this.type="CubeCamera";var e=new U(90,1,a,b);e.up.set(0,-1,0);e.lookAt(new n(1,0,0));this.add(e);var f=new U(90,1,a,b);f.up.set(0,-1,0);f.lookAt(new n(-1,0,0));this.add(f);var g=new U(90,1,a,b);g.up.set(0,0,1);g.lookAt(new n(0,1,0));this.add(g);var h=new U(90,1,a,b);h.up.set(0,0,-1);h.lookAt(new n(0,-1,0));this.add(h); +var l=new U(90,1,a,b);l.up.set(0,-1,0);l.lookAt(new n(0,0,1));this.add(l);var m=new U(90,1,a,b);m.up.set(0,-1,0);m.lookAt(new n(0,0,-1));this.add(m);d=d||{format:1022,magFilter:1006,minFilter:1006};this.renderTarget=new Bb(c,c,d);this.renderTarget.texture.name="CubeCamera";this.update=function(a,b){null===this.parent&&this.updateMatrixWorld();var c=a.getRenderTarget(),d=this.renderTarget,r=d.texture.generateMipmaps;d.texture.generateMipmaps=!1;a.setRenderTarget(d,0);a.render(b,e);a.setRenderTarget(d, +1);a.render(b,f);a.setRenderTarget(d,2);a.render(b,g);a.setRenderTarget(d,3);a.render(b,h);a.setRenderTarget(d,4);a.render(b,l);d.texture.generateMipmaps=r;a.setRenderTarget(d,5);a.render(b,m);a.setRenderTarget(c)};this.clear=function(a,b,c,d){for(var e=a.getRenderTarget(),f=this.renderTarget,g=0;6>g;g++)a.setRenderTarget(f,g),a.clear(b,c,d);a.setRenderTarget(e)}}function Bb(a,b,c){la.call(this,a,b,c)}function Yb(a,b,c,d,e,f,g,h,l,m,r,q){Y.call(this,null,f,g,h,l,m,d,e,r,q);this.image={data:a||null, +width:b||1,height:c||1};this.magFilter=void 0!==l?l:1003;this.minFilter=void 0!==m?m:1003;this.flipY=this.generateMipmaps=!1;this.unpackAlignment=1;this.needsUpdate=!0}function Ed(a,b,c,d,e,f){this.planes=[void 0!==a?a:new Oa,void 0!==b?b:new Oa,void 0!==c?c:new Oa,void 0!==d?d:new Oa,void 0!==e?e:new Oa,void 0!==f?f:new Oa]}function ag(){function a(e,f){!1!==c&&(d(e,f),b.requestAnimationFrame(a))}var b=null,c=!1,d=null;return{start:function(){!0!==c&&null!==d&&(b.requestAnimationFrame(a),c=!0)}, +stop:function(){c=!1},setAnimationLoop:function(a){d=a},setContext:function(a){b=a}}}function Xi(a){function b(b,c){var d=b.array,e=b.usage,h=a.createBuffer();a.bindBuffer(c,h);a.bufferData(c,d,e);b.onUploadCallback();c=5126;d instanceof Float32Array?c=5126:d instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):d instanceof Uint16Array?c=5123:d instanceof Int16Array?c=5122:d instanceof Uint32Array?c=5125:d instanceof Int32Array?c=5124:d instanceof +Int8Array?c=5120:d instanceof Uint8Array&&(c=5121);return{buffer:h,type:c,bytesPerElement:d.BYTES_PER_ELEMENT,version:b.version}}var c=new WeakMap;return{get:function(a){a.isInterleavedBufferAttribute&&(a=a.data);return c.get(a)},remove:function(b){b.isInterleavedBufferAttribute&&(b=b.data);var d=c.get(b);d&&(a.deleteBuffer(d.buffer),c.delete(b))},update:function(d,e){d.isInterleavedBufferAttribute&&(d=d.data);var f=c.get(d);if(void 0===f)c.set(d,b(d,e));else if(f.version<d.version){var g=d.array, +h=d.updateRange;a.bindBuffer(e,f.buffer);-1===h.count?a.bufferSubData(e,0,g):(a.bufferSubData(e,h.offset*g.BYTES_PER_ELEMENT,g.subarray(h.offset,h.offset+h.count)),h.count=-1);f.version=d.version}}}}function Fd(a,b,c,d){C.call(this);this.type="PlaneGeometry";this.parameters={width:a,height:b,widthSegments:c,heightSegments:d};this.fromBufferGeometry(new Zb(a,b,c,d));this.mergeVertices()}function Zb(a,b,c,d){E.call(this);this.type="PlaneBufferGeometry";this.parameters={width:a,height:b,widthSegments:c, +heightSegments:d};a=a||1;b=b||1;var e=a/2,f=b/2;c=Math.floor(c)||1;d=Math.floor(d)||1;var g=c+1,h=d+1,l=a/c,m=b/d,r=[],q=[],u=[],p=[];for(a=0;a<h;a++){var k=a*m-f;for(b=0;b<g;b++)q.push(b*l-e,-k,0),u.push(0,0,1),p.push(b/c),p.push(1-a/d)}for(a=0;a<d;a++)for(b=0;b<c;b++)e=b+g*(a+1),f=b+1+g*(a+1),h=b+1+g*a,r.push(b+g*a,e,h),r.push(e,f,h);this.setIndex(r);this.setAttribute("position",new A(q,3));this.setAttribute("normal",new A(u,3));this.setAttribute("uv",new A(p,2))}function Yi(a,b,c,d){function e(a, +c){b.buffers.color.setClear(a.r,a.g,a.b,c,d)}var f=new J(0),g=0,h,l,m=null,r=0;return{getClearColor:function(){return f},setClearColor:function(a,b){f.set(a);g=void 0!==b?b:1;e(f,g)},getClearAlpha:function(){return g},setClearAlpha:function(a){g=a;e(f,g)},render:function(b,d,p,k){d=d.background;p=a.vr;(p=p.getSession&&p.getSession())&&"additive"===p.environmentBlendMode&&(d=null);null===d?(e(f,g),m=null,r=0):d&&d.isColor&&(e(d,1),k=!0,m=null,r=0);(a.autoClear||k)&&a.clear(a.autoClearColor,a.autoClearDepth, +a.autoClearStencil);if(d&&(d.isCubeTexture||d.isWebGLRenderTargetCube)){void 0===l&&(l=new ea(new Gd(1,1,1),new va({type:"BackgroundCubeMaterial",uniforms:Xb(cb.cube.uniforms),vertexShader:cb.cube.vertexShader,fragmentShader:cb.cube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),l.geometry.deleteAttribute("uv"),l.onBeforeRender=function(a,b,c){this.matrixWorld.copyPosition(c.matrixWorld)},Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.tCube.value}}), +c.update(l));k=d.isWebGLRenderTargetCube?d.texture:d;l.material.uniforms.tCube.value=k;l.material.uniforms.tFlip.value=d.isWebGLRenderTargetCube?1:-1;if(m!==d||r!==k.version)l.material.needsUpdate=!0,m=d,r=k.version;b.unshift(l,l.geometry,l.material,0,0,null)}else if(d&&d.isTexture){void 0===h&&(h=new ea(new Zb(2,2),new va({type:"BackgroundMaterial",uniforms:Xb(cb.background.uniforms),vertexShader:cb.background.vertexShader,fragmentShader:cb.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1, +fog:!1})),h.geometry.deleteAttribute("normal"),Object.defineProperty(h.material,"map",{get:function(){return this.uniforms.t2D.value}}),c.update(h));h.material.uniforms.t2D.value=d;!0===d.matrixAutoUpdate&&d.updateMatrix();h.material.uniforms.uvTransform.value.copy(d.matrix);if(m!==d||r!==d.version)h.material.needsUpdate=!0,m=d,r=d.version;b.unshift(h,h.geometry,h.material,0,0,null)}}}}function Zi(a,b,c,d){var e=d.isWebGL2,f;this.setMode=function(a){f=a};this.render=function(b,d){a.drawArrays(f,b, +d);c.update(d,f)};this.renderInstances=function(d,h,l,m){if(0!==m){if(e){d=a;var g="drawArraysInstanced"}else if(d=b.get("ANGLE_instanced_arrays"),g="drawArraysInstancedANGLE",null===d){console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}d[g](f,h,l,m);c.update(l,f,m)}}}function $i(a,b,c){function d(b){if("highp"===b){if(0<a.getShaderPrecisionFormat(35633,36338).precision&&0<a.getShaderPrecisionFormat(35632, +36338).precision)return"highp";b="mediump"}return"mediump"===b&&0<a.getShaderPrecisionFormat(35633,36337).precision&&0<a.getShaderPrecisionFormat(35632,36337).precision?"mediump":"lowp"}var e,f="undefined"!==typeof WebGL2RenderingContext&&a instanceof WebGL2RenderingContext||"undefined"!==typeof WebGL2ComputeRenderingContext&&a instanceof WebGL2ComputeRenderingContext,g=void 0!==c.precision?c.precision:"highp",h=d(g);h!==g&&(console.warn("THREE.WebGLRenderer:",g,"not supported, using",h,"instead."), +g=h);c=!0===c.logarithmicDepthBuffer;h=a.getParameter(34930);var l=a.getParameter(35660),m=a.getParameter(3379),r=a.getParameter(34076),q=a.getParameter(34921),k=a.getParameter(36347),p=a.getParameter(36348),t=a.getParameter(36349),v=0<l,y=f||!!b.get("OES_texture_float"),n=v&&y,x=f?a.getParameter(36183):0;return{isWebGL2:f,getMaxAnisotropy:function(){if(void 0!==e)return e;var c=b.get("EXT_texture_filter_anisotropic");return e=null!==c?a.getParameter(c.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:d, +precision:g,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:l,maxTextureSize:m,maxCubemapSize:r,maxAttributes:q,maxVertexUniforms:k,maxVaryings:p,maxFragmentUniforms:t,vertexTextures:v,floatFragmentTextures:y,floatVertexTextures:n,maxSamples:x}}function aj(){function a(){m.value!==d&&(m.value=d,m.needsUpdate=0<e);c.numPlanes=e;c.numIntersection=0}function b(a,b,d,e){var f=null!==a?a.length:0,g=null;if(0!==f){g=m.value;if(!0!==e||null===g){e=d+4*f;b=b.matrixWorldInverse;l.getNormalMatrix(b); +if(null===g||g.length<e)g=new Float32Array(e);for(e=0;e!==f;++e,d+=4)h.copy(a[e]).applyMatrix4(b,l),h.normal.toArray(g,d),g[d+3]=h.constant}m.value=g;m.needsUpdate=!0}c.numPlanes=f;return g}var c=this,d=null,e=0,f=!1,g=!1,h=new Oa,l=new Z,m={value:null,needsUpdate:!1};this.uniform=m;this.numIntersection=this.numPlanes=0;this.init=function(a,c,g){var h=0!==a.length||c||0!==e||f;f=c;d=b(a,g,0);e=a.length;return h};this.beginShadows=function(){g=!0;b(null)};this.endShadows=function(){g=!1;a()};this.setState= +function(c,h,l,k,t,v){if(!f||null===c||0===c.length||g&&!l)g?b(null):a();else{l=g?0:e;var r=4*l,q=t.clippingState||null;m.value=q;q=b(c,k,r,v);for(c=0;c!==r;++c)q[c]=d[c];t.clippingState=q;this.numIntersection=h?this.numPlanes:0;this.numPlanes+=l}}}function bj(a){var b={};return{get:function(c){if(void 0!==b[c])return b[c];switch(c){case "WEBGL_depth_texture":var d=a.getExtension("WEBGL_depth_texture")||a.getExtension("MOZ_WEBGL_depth_texture")||a.getExtension("WEBKIT_WEBGL_depth_texture");break; +case "EXT_texture_filter_anisotropic":d=a.getExtension("EXT_texture_filter_anisotropic")||a.getExtension("MOZ_EXT_texture_filter_anisotropic")||a.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case "WEBGL_compressed_texture_s3tc":d=a.getExtension("WEBGL_compressed_texture_s3tc")||a.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case "WEBGL_compressed_texture_pvrtc":d=a.getExtension("WEBGL_compressed_texture_pvrtc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"); +break;default:d=a.getExtension(c)}null===d&&console.warn("THREE.WebGLRenderer: "+c+" extension not supported.");return b[c]=d}}}function cj(a,b,c){function d(a){var e=a.target;a=f.get(e);null!==a.index&&b.remove(a.index);for(var h in a.attributes)b.remove(a.attributes[h]);e.removeEventListener("dispose",d);f.delete(e);if(h=g.get(a))b.remove(h),g.delete(a);c.memory.geometries--}function e(a){var c=[],d=a.index,e=a.attributes.position;if(null!==d){var f=d.array;d=d.version;e=0;for(var h=f.length;e< +h;e+=3){var k=f[e+0],t=f[e+1],v=f[e+2];c.push(k,t,t,v,v,k)}}else for(f=e.array,d=e.version,e=0,h=f.length/3-1;e<h;e+=3)k=e+0,t=e+1,v=e+2,c.push(k,t,t,v,v,k);c=new (65535<jh(c)?Tb:Sb)(c,1);c.version=d;b.update(c,34963);(f=g.get(a))&&b.remove(f);g.set(a,c)}var f=new WeakMap,g=new WeakMap;return{get:function(a,b){var e=f.get(b);if(e)return e;b.addEventListener("dispose",d);b.isBufferGeometry?e=b:b.isGeometry&&(void 0===b._bufferGeometry&&(b._bufferGeometry=(new E).setFromObject(a)),e=b._bufferGeometry); +f.set(b,e);c.memory.geometries++;return e},update:function(a){var c=a.index,d=a.attributes;null!==c&&b.update(c,34963);for(var e in d)b.update(d[e],34962);a=a.morphAttributes;for(e in a){c=a[e];d=0;for(var f=c.length;d<f;d++)b.update(c[d],34962)}},getWireframeAttribute:function(a){var b=g.get(a);if(b){var c=a.index;null!==c&&b.version<c.version&&e(a)}else e(a);return g.get(a)}}}function dj(a,b,c,d){var e=d.isWebGL2,f,g,h;this.setMode=function(a){f=a};this.setIndex=function(a){g=a.type;h=a.bytesPerElement}; +this.render=function(b,d){a.drawElements(f,d,g,b*h);c.update(d,f)};this.renderInstances=function(d,m,r,q){if(0!==q){if(e){d=a;var l="drawElementsInstanced"}else if(d=b.get("ANGLE_instanced_arrays"),l="drawElementsInstancedANGLE",null===d){console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}d[l](f,r,g,m*h,q);c.update(r,f,q)}}}function ej(a){var b={frame:0,calls:0,triangles:0,points:0,lines:0}; +return{memory:{geometries:0,textures:0},render:b,programs:null,autoReset:!0,reset:function(){b.frame++;b.calls=0;b.triangles=0;b.points=0;b.lines=0},update:function(a,d,e){e=e||1;b.calls++;switch(d){case 4:b.triangles+=a/3*e;break;case 5:case 6:b.triangles+=e*(a-2);break;case 1:b.lines+=a/2*e;break;case 3:b.lines+=e*(a-1);break;case 2:b.lines+=e*a;break;case 0:b.points+=e*a;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",d)}}}}function fj(a,b){return Math.abs(b[1])-Math.abs(a[1])} +function gj(a){var b={},c=new Float32Array(8);return{update:function(d,e,f,g){var h=d.morphTargetInfluences,l=h.length;d=b[e.id];if(void 0===d){d=[];for(var m=0;m<l;m++)d[m]=[m,0];b[e.id]=d}var r=f.morphTargets&&e.morphAttributes.position;f=f.morphNormals&&e.morphAttributes.normal;for(m=0;m<l;m++){var q=d[m];0!==q[1]&&(r&&e.deleteAttribute("morphTarget"+m),f&&e.deleteAttribute("morphNormal"+m))}for(m=0;m<l;m++)q=d[m],q[0]=m,q[1]=h[m];d.sort(fj);for(m=0;8>m;m++){if(q=d[m])if(h=q[0],l=q[1]){r&&e.setAttribute("morphTarget"+ +m,r[h]);f&&e.setAttribute("morphNormal"+m,f[h]);c[m]=l;continue}c[m]=0}g.getUniforms().setValue(a,"morphTargetInfluences",c)}}}function hj(a,b,c,d){var e={};return{update:function(a){var f=d.render.frame,h=a.geometry,l=b.get(a,h);e[l.id]!==f&&(h.isGeometry&&l.updateFromObject(a),b.update(l),e[l.id]=f);a.isInstancedMesh&&c.update(a.instanceMatrix,34962);return l},dispose:function(){e={}}}}function nb(a,b,c,d,e,f,g,h,l,m){a=void 0!==a?a:[];Y.call(this,a,void 0!==b?b:301,c,d,e,f,void 0!==g?g:1022,h, +l,m);this.flipY=!1}function Dc(a,b,c,d){Y.call(this,null);this.image={data:a||null,width:b||1,height:c||1,depth:d||1};this.minFilter=this.magFilter=1003;this.wrapR=1001;this.flipY=this.generateMipmaps=!1;this.needsUpdate=!0}function Ec(a,b,c,d){Y.call(this,null);this.image={data:a||null,width:b||1,height:c||1,depth:d||1};this.minFilter=this.magFilter=1003;this.wrapR=1001;this.flipY=this.generateMipmaps=!1;this.needsUpdate=!0}function Fc(a,b,c){var d=a[0];if(0>=d||0<d)return a;var e=b*c,f=oh[e];void 0=== +f&&(f=new Float32Array(e),oh[e]=f);if(0!==b)for(d.toArray(f,0),d=1,e=0;d!==b;++d)e+=c,a[d].toArray(f,e);return f}function La(a,b){if(a.length!==b.length)return!1;for(var c=0,d=a.length;c<d;c++)if(a[c]!==b[c])return!1;return!0}function Ha(a,b){for(var c=0,d=b.length;c<d;c++)a[c]=b[c]}function ph(a,b){var c=qh[b];void 0===c&&(c=new Int32Array(b),qh[b]=c);for(var d=0;d!==b;++d)c[d]=a.allocateTextureUnit();return c}function ij(a,b){var c=this.cache;c[0]!==b&&(a.uniform1f(this.addr,b),c[0]=b)}function jj(a, +b){var c=this.cache;if(void 0!==b.x){if(c[0]!==b.x||c[1]!==b.y)a.uniform2f(this.addr,b.x,b.y),c[0]=b.x,c[1]=b.y}else La(c,b)||(a.uniform2fv(this.addr,b),Ha(c,b))}function kj(a,b){var c=this.cache;if(void 0!==b.x){if(c[0]!==b.x||c[1]!==b.y||c[2]!==b.z)a.uniform3f(this.addr,b.x,b.y,b.z),c[0]=b.x,c[1]=b.y,c[2]=b.z}else if(void 0!==b.r){if(c[0]!==b.r||c[1]!==b.g||c[2]!==b.b)a.uniform3f(this.addr,b.r,b.g,b.b),c[0]=b.r,c[1]=b.g,c[2]=b.b}else La(c,b)||(a.uniform3fv(this.addr,b),Ha(c,b))}function lj(a,b){var c= +this.cache;if(void 0!==b.x){if(c[0]!==b.x||c[1]!==b.y||c[2]!==b.z||c[3]!==b.w)a.uniform4f(this.addr,b.x,b.y,b.z,b.w),c[0]=b.x,c[1]=b.y,c[2]=b.z,c[3]=b.w}else La(c,b)||(a.uniform4fv(this.addr,b),Ha(c,b))}function mj(a,b){var c=this.cache,d=b.elements;void 0===d?La(c,b)||(a.uniformMatrix2fv(this.addr,!1,b),Ha(c,b)):La(c,d)||(rh.set(d),a.uniformMatrix2fv(this.addr,!1,rh),Ha(c,d))}function nj(a,b){var c=this.cache,d=b.elements;void 0===d?La(c,b)||(a.uniformMatrix3fv(this.addr,!1,b),Ha(c,b)):La(c,d)|| +(sh.set(d),a.uniformMatrix3fv(this.addr,!1,sh),Ha(c,d))}function oj(a,b){var c=this.cache,d=b.elements;void 0===d?La(c,b)||(a.uniformMatrix4fv(this.addr,!1,b),Ha(c,b)):La(c,d)||(th.set(d),a.uniformMatrix4fv(this.addr,!1,th),Ha(c,d))}function pj(a,b,c){var d=this.cache,e=c.allocateTextureUnit();d[0]!==e&&(a.uniform1i(this.addr,e),d[0]=e);c.safeSetTexture2D(b||uh,e)}function qj(a,b,c){var d=this.cache,e=c.allocateTextureUnit();d[0]!==e&&(a.uniform1i(this.addr,e),d[0]=e);c.setTexture2DArray(b||rj,e)} +function sj(a,b,c){var d=this.cache,e=c.allocateTextureUnit();d[0]!==e&&(a.uniform1i(this.addr,e),d[0]=e);c.setTexture3D(b||tj,e)}function uj(a,b,c){var d=this.cache,e=c.allocateTextureUnit();d[0]!==e&&(a.uniform1i(this.addr,e),d[0]=e);c.safeSetTextureCube(b||vh,e)}function vj(a,b){var c=this.cache;c[0]!==b&&(a.uniform1i(this.addr,b),c[0]=b)}function wj(a,b){var c=this.cache;La(c,b)||(a.uniform2iv(this.addr,b),Ha(c,b))}function xj(a,b){var c=this.cache;La(c,b)||(a.uniform3iv(this.addr,b),Ha(c,b))} +function yj(a,b){var c=this.cache;La(c,b)||(a.uniform4iv(this.addr,b),Ha(c,b))}function zj(a){switch(a){case 5126:return ij;case 35664:return jj;case 35665:return kj;case 35666:return lj;case 35674:return mj;case 35675:return nj;case 35676:return oj;case 35678:case 36198:return pj;case 35679:return sj;case 35680:return uj;case 36289:return qj;case 5124:case 35670:return vj;case 35667:case 35671:return wj;case 35668:case 35672:return xj;case 35669:case 35673:return yj}}function Aj(a,b){a.uniform1fv(this.addr, +b)}function Bj(a,b){a.uniform1iv(this.addr,b)}function Cj(a,b){a.uniform2iv(this.addr,b)}function Dj(a,b){a.uniform3iv(this.addr,b)}function Ej(a,b){a.uniform4iv(this.addr,b)}function Fj(a,b){b=Fc(b,this.size,2);a.uniform2fv(this.addr,b)}function Gj(a,b){b=Fc(b,this.size,3);a.uniform3fv(this.addr,b)}function Hj(a,b){b=Fc(b,this.size,4);a.uniform4fv(this.addr,b)}function Ij(a,b){b=Fc(b,this.size,4);a.uniformMatrix2fv(this.addr,!1,b)}function Jj(a,b){b=Fc(b,this.size,9);a.uniformMatrix3fv(this.addr, +!1,b)}function Kj(a,b){b=Fc(b,this.size,16);a.uniformMatrix4fv(this.addr,!1,b)}function Lj(a,b,c){var d=b.length,e=ph(c,d);a.uniform1iv(this.addr,e);for(a=0;a!==d;++a)c.safeSetTexture2D(b[a]||uh,e[a])}function Mj(a,b,c){var d=b.length,e=ph(c,d);a.uniform1iv(this.addr,e);for(a=0;a!==d;++a)c.safeSetTextureCube(b[a]||vh,e[a])}function Nj(a){switch(a){case 5126:return Aj;case 35664:return Fj;case 35665:return Gj;case 35666:return Hj;case 35674:return Ij;case 35675:return Jj;case 35676:return Kj;case 35678:return Lj; +case 35680:return Mj;case 5124:case 35670:return Bj;case 35667:case 35671:return Cj;case 35668:case 35672:return Dj;case 35669:case 35673:return Ej}}function Oj(a,b,c){this.id=a;this.addr=c;this.cache=[];this.setValue=zj(b.type)}function wh(a,b,c){this.id=a;this.addr=c;this.cache=[];this.size=b.size;this.setValue=Nj(b.type)}function xh(a){this.id=a;this.seq=[];this.map={}}function Cb(a,b){this.seq=[];this.map={};for(var c=a.getProgramParameter(b,35718),d=0;d<c;++d){var e=a.getActiveUniform(b,d),f= +a.getUniformLocation(b,e.name),g=this,h=e.name,l=h.length;for(bg.lastIndex=0;;){var m=bg.exec(h),r=bg.lastIndex,q=m[1],k=m[3];"]"===m[2]&&(q|=0);if(void 0===k||"["===k&&r+2===l){h=g;e=void 0===k?new Oj(q,e,f):new wh(q,e,f);h.seq.push(e);h.map[e.id]=e;break}else k=g.map[q],void 0===k&&(k=new xh(q),q=g,g=k,q.seq.push(g),q.map[g.id]=g),g=k}}}function yh(a,b,c){b=a.createShader(b);a.shaderSource(b,c);a.compileShader(b);return b}function zh(a){switch(a){case 3E3:return["Linear","( value )"];case 3001:return["sRGB", +"( value )"];case 3002:return["RGBE","( value )"];case 3004:return["RGBM","( value, 7.0 )"];case 3005:return["RGBM","( value, 16.0 )"];case 3006:return["RGBD","( value, 256.0 )"];case 3007:return["Gamma","( value, float( GAMMA_FACTOR ) )"];case 3003:return["LogLuv","( value )"];default:throw Error("unsupported encoding: "+a);}}function Ah(a,b,c){var d=a.getShaderParameter(b,35713),e=a.getShaderInfoLog(b).trim();if(d&&""===e)return"";a=a.getShaderSource(b).split("\n");for(b=0;b<a.length;b++)a[b]=b+ +1+": "+a[b];a=a.join("\n");return"THREE.WebGLShader: gl.getShaderInfoLog() "+c+"\n"+e+a}function Ge(a,b){b=zh(b);return"vec4 "+a+"( vec4 value ) { return "+b[0]+"ToLinear"+b[1]+"; }"}function Pj(a,b){b=zh(b);return"vec4 "+a+"( vec4 value ) { return LinearTo"+b[0]+b[1]+"; }"}function Qj(a,b){switch(b){case 1:b="Linear";break;case 2:b="Reinhard";break;case 3:b="Uncharted2";break;case 4:b="OptimizedCineon";break;case 5:b="ACESFilmic";break;default:throw Error("unsupported toneMapping: "+b);}return"vec3 "+ +a+"( vec3 color ) { return "+b+"ToneMapping( color ); }"}function Rj(a,b,c){a=a||{};return[a.derivatives||b.envMapCubeUV||b.bumpMap||b.tangentSpaceNormalMap||b.clearcoatNormalMap||b.flatShading?"#extension GL_OES_standard_derivatives : enable":"",(a.fragDepth||b.logarithmicDepthBuffer)&&c.get("EXT_frag_depth")?"#extension GL_EXT_frag_depth : enable":"",a.drawBuffers&&c.get("WEBGL_draw_buffers")?"#extension GL_EXT_draw_buffers : require":"",(a.shaderTextureLOD||b.envMap)&&c.get("EXT_shader_texture_lod")? +"#extension GL_EXT_shader_texture_lod : enable":""].filter(Hd).join("\n")}function Sj(a){var b=[],c;for(c in a){var d=a[c];!1!==d&&b.push("#define "+c+" "+d)}return b.join("\n")}function Hd(a){return""!==a}function Bh(a,b){return a.replace(/NUM_DIR_LIGHTS/g,b.numDirLights).replace(/NUM_SPOT_LIGHTS/g,b.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g,b.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,b.numPointLights).replace(/NUM_HEMI_LIGHTS/g,b.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,b.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g, +b.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,b.numPointLightShadows)}function Ch(a,b){return a.replace(/NUM_CLIPPING_PLANES/g,b.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,b.numClippingPlanes-b.numClipIntersection)}function cg(a,b){a=S[b];if(void 0===a)throw Error("Can not resolve #include <"+b+">");return a.replace(dg,cg)}function Dh(a,b,c,d){a="";for(b=parseInt(b);b<parseInt(c);b++)a+=d.replace(/\[ i \]/g,"[ "+b+" ]").replace(/UNROLLED_LOOP_INDEX/g,b);return a}function Eh(a){var b= +"precision "+a.precision+" float;\nprecision "+a.precision+" int;";"highp"===a.precision?b+="\n#define HIGH_PRECISION":"mediump"===a.precision?b+="\n#define MEDIUM_PRECISION":"lowp"===a.precision&&(b+="\n#define LOW_PRECISION");return b}function Tj(a){var b="SHADOWMAP_TYPE_BASIC";1===a.shadowMapType?b="SHADOWMAP_TYPE_PCF":2===a.shadowMapType?b="SHADOWMAP_TYPE_PCF_SOFT":3===a.shadowMapType&&(b="SHADOWMAP_TYPE_VSM");return b}function Uj(a){var b="ENVMAP_TYPE_CUBE";if(a.envMap)switch(a.envMapMode){case 301:case 302:b= +"ENVMAP_TYPE_CUBE";break;case 306:case 307:b="ENVMAP_TYPE_CUBE_UV";break;case 303:case 304:b="ENVMAP_TYPE_EQUIREC";break;case 305:b="ENVMAP_TYPE_SPHERE"}return b}function Vj(a){var b="ENVMAP_MODE_REFLECTION";if(a.envMap)switch(a.envMapMode){case 302:case 304:b="ENVMAP_MODE_REFRACTION"}return b}function Wj(a){var b="ENVMAP_BLENDING_MULTIPLY";if(a.envMap)switch(a.combine){case 0:b="ENVMAP_BLENDING_MULTIPLY";break;case 1:b="ENVMAP_BLENDING_MIX";break;case 2:b="ENVMAP_BLENDING_ADD"}return b}function Xj(a, +b,c,d,e,f){var g=a.getContext(),h=d.defines,l=e.vertexShader,m=e.fragmentShader,r=Tj(f),q=Uj(f),k=Vj(f),p=Wj(f),t=0<a.gammaFactor?a.gammaFactor:1,v=f.isWebGL2?"":Rj(d.extensions,f,b),n=Sj(h),w=g.createProgram(),x=f.numMultiviewViews;d.isRawShaderMaterial?(h=[n].filter(Hd).join("\n"),0<h.length&&(h+="\n"),b=[v,n].filter(Hd).join("\n"),0<b.length&&(b+="\n")):(h=[Eh(f),"#define SHADER_NAME "+e.name,n,f.instancing?"#define USE_INSTANCING":"",f.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+ +t,"#define MAX_BONES "+f.maxBones,f.useFog&&f.fog?"#define USE_FOG":"",f.useFog&&f.fogExp2?"#define FOG_EXP2":"",f.map?"#define USE_MAP":"",f.envMap?"#define USE_ENVMAP":"",f.envMap?"#define "+k:"",f.lightMap?"#define USE_LIGHTMAP":"",f.aoMap?"#define USE_AOMAP":"",f.emissiveMap?"#define USE_EMISSIVEMAP":"",f.bumpMap?"#define USE_BUMPMAP":"",f.normalMap?"#define USE_NORMALMAP":"",f.normalMap&&f.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",f.normalMap&&f.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP": +"",f.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",f.displacementMap&&f.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",f.specularMap?"#define USE_SPECULARMAP":"",f.roughnessMap?"#define USE_ROUGHNESSMAP":"",f.metalnessMap?"#define USE_METALNESSMAP":"",f.alphaMap?"#define USE_ALPHAMAP":"",f.vertexTangents?"#define USE_TANGENT":"",f.vertexColors?"#define USE_COLOR":"",f.vertexUvs?"#define USE_UV":"",f.flatShading?"#define FLAT_SHADED":"",f.skinning?"#define USE_SKINNING":"",f.useVertexTexture? +"#define BONE_TEXTURE":"",f.morphTargets?"#define USE_MORPHTARGETS":"",f.morphNormals&&!1===f.flatShading?"#define USE_MORPHNORMALS":"",f.doubleSided?"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"",f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+r:"",f.sizeAttenuation?"#define USE_SIZEATTENUATION":"",f.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",f.logarithmicDepthBuffer&&(f.isWebGL2||b.get("EXT_frag_depth"))?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;", +"uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;", +"\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(Hd).join("\n"),b=[v,Eh(f), +"#define SHADER_NAME "+e.name,n,f.alphaTest?"#define ALPHATEST "+f.alphaTest+(f.alphaTest%1?"":".0"):"","#define GAMMA_FACTOR "+t,f.useFog&&f.fog?"#define USE_FOG":"",f.useFog&&f.fogExp2?"#define FOG_EXP2":"",f.map?"#define USE_MAP":"",f.matcap?"#define USE_MATCAP":"",f.envMap?"#define USE_ENVMAP":"",f.envMap?"#define "+q:"",f.envMap?"#define "+k:"",f.envMap?"#define "+p:"",f.lightMap?"#define USE_LIGHTMAP":"",f.aoMap?"#define USE_AOMAP":"",f.emissiveMap?"#define USE_EMISSIVEMAP":"",f.bumpMap?"#define USE_BUMPMAP": +"",f.normalMap?"#define USE_NORMALMAP":"",f.normalMap&&f.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",f.normalMap&&f.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",f.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",f.specularMap?"#define USE_SPECULARMAP":"",f.roughnessMap?"#define USE_ROUGHNESSMAP":"",f.metalnessMap?"#define USE_METALNESSMAP":"",f.alphaMap?"#define USE_ALPHAMAP":"",f.sheen?"#define USE_SHEEN":"",f.vertexTangents?"#define USE_TANGENT":"",f.vertexColors? +"#define USE_COLOR":"",f.vertexUvs?"#define USE_UV":"",f.gradientMap?"#define USE_GRADIENTMAP":"",f.flatShading?"#define FLAT_SHADED":"",f.doubleSided?"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"",f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+r:"",f.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",f.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",f.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",f.logarithmicDepthBuffer&&(f.isWebGL2|| +b.get("EXT_frag_depth"))?"#define USE_LOGDEPTHBUF_EXT":"",(d.extensions&&d.extensions.shaderTextureLOD||f.envMap)&&(f.isWebGL2||b.get("EXT_shader_texture_lod"))?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",0!==f.toneMapping?"#define TONE_MAPPING":"",0!==f.toneMapping?S.tonemapping_pars_fragment:"",0!==f.toneMapping?Qj("toneMapping",f.toneMapping):"",f.dithering?"#define DITHERING":"",f.outputEncoding||f.mapEncoding||f.matcapEncoding||f.envMapEncoding||f.emissiveMapEncoding? +S.encodings_pars_fragment:"",f.mapEncoding?Ge("mapTexelToLinear",f.mapEncoding):"",f.matcapEncoding?Ge("matcapTexelToLinear",f.matcapEncoding):"",f.envMapEncoding?Ge("envMapTexelToLinear",f.envMapEncoding):"",f.emissiveMapEncoding?Ge("emissiveMapTexelToLinear",f.emissiveMapEncoding):"",f.outputEncoding?Pj("linearToOutputTexel",f.outputEncoding):"",f.depthPacking?"#define DEPTH_PACKING "+d.depthPacking:"","\n"].filter(Hd).join("\n"));l=l.replace(dg,cg);l=Bh(l,f);l=Ch(l,f);m=m.replace(dg,cg);m=Bh(m, +f);m=Ch(m,f);l=l.replace(Fh,Dh);m=m.replace(Fh,Dh);f.isWebGL2&&!d.isRawShaderMaterial&&(r=!1,q=/^\s*#version\s+300\s+es\s*\n/,d.isShaderMaterial&&null!==l.match(q)&&null!==m.match(q)&&(r=!0,l=l.replace(q,""),m=m.replace(q,"")),h="#version 300 es\n\n#define attribute in\n#define varying out\n#define texture2D texture\n"+h,b=["#version 300 es\n\n#define varying in",r?"":"out highp vec4 pc_fragColor;",r?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth\n#define texture2D texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLodEXT textureLod\n#define texture2DProjLodEXT textureProjLod\n#define textureCubeLodEXT textureLod\n#define texture2DGradEXT textureGrad\n#define texture2DProjGradEXT textureProjGrad\n#define textureCubeGradEXT textureGrad"].join("\n")+ +"\n"+b,0<x&&(h=h.replace("#version 300 es\n",["#version 300 es\n\n#extension GL_OVR_multiview2 : require","layout(num_views = "+x+") in;","#define VIEW_ID gl_ViewID_OVR"].join("\n")),h=h.replace("uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;",["uniform mat4 modelViewMatrices["+x+"];","uniform mat4 projectionMatrices["+x+"];","uniform mat4 viewMatrices["+x+"];","uniform mat3 normalMatrices["+x+"];","#define modelViewMatrix modelViewMatrices[VIEW_ID]\n#define projectionMatrix projectionMatrices[VIEW_ID]\n#define viewMatrix viewMatrices[VIEW_ID]\n#define normalMatrix normalMatrices[VIEW_ID]"].join("\n")), +b=b.replace("#version 300 es\n","#version 300 es\n\n#extension GL_OVR_multiview2 : require\n#define VIEW_ID gl_ViewID_OVR"),b=b.replace("uniform mat4 viewMatrix;",["uniform mat4 viewMatrices["+x+"];","#define viewMatrix viewMatrices[VIEW_ID]"].join("\n"))));m=b+m;l=yh(g,35633,h+l);m=yh(g,35632,m);g.attachShader(w,l);g.attachShader(w,m);void 0!==d.index0AttributeName?g.bindAttribLocation(w,0,d.index0AttributeName):!0===f.morphTargets&&g.bindAttribLocation(w,0,"position");g.linkProgram(w);if(a.debug.checkShaderErrors){a= +g.getProgramInfoLog(w).trim();f=g.getShaderInfoLog(l).trim();r=g.getShaderInfoLog(m).trim();k=q=!0;if(!1===g.getProgramParameter(w,35714))q=!1,p=Ah(g,l,"vertex"),t=Ah(g,m,"fragment"),console.error("THREE.WebGLProgram: shader error: ",g.getError(),"35715",g.getProgramParameter(w,35715),"gl.getProgramInfoLog",a,p,t);else if(""!==a)console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",a);else if(""===f||""===r)k=!1;k&&(this.diagnostics={runnable:q,material:d,programLog:a,vertexShader:{log:f,prefix:h}, +fragmentShader:{log:r,prefix:b}})}g.deleteShader(l);g.deleteShader(m);var F;this.getUniforms=function(){void 0===F&&(F=new Cb(g,w));return F};var H;this.getAttributes=function(){if(void 0===H){for(var a={},b=g.getProgramParameter(w,35721),c=0;c<b;c++){var d=g.getActiveAttrib(w,c).name;a[d]=g.getAttribLocation(w,d)}H=a}return H};this.destroy=function(){g.deleteProgram(w);this.program=void 0};this.name=e.name;this.id=Yj++;this.cacheKey=c;this.usedTimes=1;this.program=w;this.vertexShader=l;this.fragmentShader= +m;this.numMultiviewViews=x;return this}function Zj(a,b,c){function d(a,b){if(a)a.isTexture?c=a.encoding:a.isWebGLRenderTarget&&(console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead."),c=a.texture.encoding);else var c=3E3;3E3===c&&b&&(c=3007);return c}var e=[],f=c.isWebGL2,g=c.logarithmicDepthBuffer,h=c.floatVertexTextures,l=c.precision,m=c.maxVertexUniforms,r=c.vertexTextures,q={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA", +MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"phong",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"},k="precision isWebGL2 supportsVertexTextures outputEncoding instancing numMultiviewViews map mapEncoding matcap matcapEncoding envMap envMapMode envMapEncoding envMapCubeUV lightMap aoMap emissiveMap emissiveMapEncoding bumpMap normalMap objectSpaceNormalMap tangentSpaceNormalMap clearcoatNormalMap displacementMap specularMap roughnessMap metalnessMap gradientMap alphaMap combine vertexColors vertexTangents vertexUvs fog useFog fogExp2 flatShading sizeAttenuation logarithmicDepthBuffer skinning maxBones useVertexTexture morphTargets morphNormals maxMorphTargets maxMorphNormals premultipliedAlpha numDirLights numPointLights numSpotLights numHemiLights numRectAreaLights numDirLightShadows numPointLightShadows numSpotLightShadows shadowMapEnabled shadowMapType toneMapping physicallyCorrectLights alphaTest doubleSided flipSided numClippingPlanes numClipIntersection depthPacking dithering sheen".split(" "); +this.getParameters=function(b,e,k,u,n,x,F){var t=q[b.type];if(F.isSkinnedMesh){var p=F.skeleton.bones;if(h)p=1024;else{var v=Math.min(Math.floor((m-20)/4),p.length);v<p.length?(console.warn("THREE.WebGLRenderer: Skeleton has "+p.length+" bones. This GPU supports "+v+"."),p=0):p=v}}else p=0;null!==b.precision&&(l=c.getMaxPrecision(b.precision),l!==b.precision&&console.warn("THREE.WebGLProgram.getParameters:",b.precision,"not supported, using",l,"instead."));v=a.getRenderTarget();return{isWebGL2:f, +shaderID:t,precision:l,instancing:!0===F.isInstancedMesh,supportsVertexTextures:r,numMultiviewViews:v&&v.isWebGLMultiviewRenderTarget?v.numViews:0,outputEncoding:d(v?v.texture:null,a.gammaOutput),map:!!b.map,mapEncoding:d(b.map,a.gammaInput),matcap:!!b.matcap,matcapEncoding:d(b.matcap,a.gammaInput),envMap:!!b.envMap,envMapMode:b.envMap&&b.envMap.mapping,envMapEncoding:d(b.envMap,a.gammaInput),envMapCubeUV:!!b.envMap&&(306===b.envMap.mapping||307===b.envMap.mapping),lightMap:!!b.lightMap,aoMap:!!b.aoMap, +emissiveMap:!!b.emissiveMap,emissiveMapEncoding:d(b.emissiveMap,a.gammaInput),bumpMap:!!b.bumpMap,normalMap:!!b.normalMap,objectSpaceNormalMap:1===b.normalMapType,tangentSpaceNormalMap:0===b.normalMapType,clearcoatNormalMap:!!b.clearcoatNormalMap,displacementMap:!!b.displacementMap,roughnessMap:!!b.roughnessMap,metalnessMap:!!b.metalnessMap,specularMap:!!b.specularMap,alphaMap:!!b.alphaMap,gradientMap:!!b.gradientMap,sheen:!!b.sheen,combine:b.combine,vertexTangents:b.normalMap&&b.vertexTangents,vertexColors:b.vertexColors, +vertexUvs:!!b.map||!!b.bumpMap||!!b.normalMap||!!b.specularMap||!!b.alphaMap||!!b.emissiveMap||!!b.roughnessMap||!!b.metalnessMap||!!b.clearcoatNormalMap||!!b.displacementMap,fog:!!u,useFog:b.fog,fogExp2:u&&u.isFogExp2,flatShading:b.flatShading,sizeAttenuation:b.sizeAttenuation,logarithmicDepthBuffer:g,skinning:b.skinning&&0<p,maxBones:p,useVertexTexture:h,morphTargets:b.morphTargets,morphNormals:b.morphNormals,maxMorphTargets:a.maxMorphTargets,maxMorphNormals:a.maxMorphNormals,numDirLights:e.directional.length, +numPointLights:e.point.length,numSpotLights:e.spot.length,numRectAreaLights:e.rectArea.length,numHemiLights:e.hemi.length,numDirLightShadows:e.directionalShadowMap.length,numPointLightShadows:e.pointShadowMap.length,numSpotLightShadows:e.spotShadowMap.length,numClippingPlanes:n,numClipIntersection:x,dithering:b.dithering,shadowMapEnabled:a.shadowMap.enabled&&0<k.length,shadowMapType:a.shadowMap.type,toneMapping:b.toneMapped?a.toneMapping:0,physicallyCorrectLights:a.physicallyCorrectLights,premultipliedAlpha:b.premultipliedAlpha, +alphaTest:b.alphaTest,doubleSided:2===b.side,flipSided:1===b.side,depthPacking:void 0!==b.depthPacking?b.depthPacking:!1}};this.getProgramCacheKey=function(b,c){var d=[];c.shaderID?d.push(c.shaderID):(d.push(b.fragmentShader),d.push(b.vertexShader));if(void 0!==b.defines)for(var e in b.defines)d.push(e),d.push(b.defines[e]);for(e=0;e<k.length;e++)d.push(c[k[e]]);d.push(b.onBeforeCompile.toString());d.push(a.gammaOutput);d.push(a.gammaFactor);return d.join()};this.acquireProgram=function(c,d,f,g){for(var h, +l=0,m=e.length;l<m;l++){var r=e[l];if(r.cacheKey===g){h=r;++h.usedTimes;break}}void 0===h&&(h=new Xj(a,b,g,c,d,f),e.push(h));return h};this.releaseProgram=function(a){if(0===--a.usedTimes){var b=e.indexOf(a);e[b]=e[e.length-1];e.pop();a.destroy()}};this.programs=e}function ak(){var a=new WeakMap;return{get:function(b){var c=a.get(b);void 0===c&&(c={},a.set(b,c));return c},remove:function(b){a.delete(b)},update:function(b,c,d){a.get(b)[c]=d},dispose:function(){a=new WeakMap}}}function bk(a,b){return a.groupOrder!== +b.groupOrder?a.groupOrder-b.groupOrder:a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.program!==b.program?a.program.id-b.program.id:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function ck(a,b){return a.groupOrder!==b.groupOrder?a.groupOrder-b.groupOrder:a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function Gh(){function a(a,d,e,m,r,q){var g=b[c];void 0===g?(g={id:a.id,object:a,geometry:d,material:e,program:e.program|| +f,groupOrder:m,renderOrder:a.renderOrder,z:r,group:q},b[c]=g):(g.id=a.id,g.object=a,g.geometry=d,g.material=e,g.program=e.program||f,g.groupOrder=m,g.renderOrder=a.renderOrder,g.z=r,g.group=q);c++;return g}var b=[],c=0,d=[],e=[],f={id:-1};return{opaque:d,transparent:e,init:function(){c=0;d.length=0;e.length=0},push:function(b,c,f,m,r,q){b=a(b,c,f,m,r,q);(!0===f.transparent?e:d).push(b)},unshift:function(b,c,f,m,r,q){b=a(b,c,f,m,r,q);(!0===f.transparent?e:d).unshift(b)},sort:function(){1<d.length&& +d.sort(bk);1<e.length&&e.sort(ck)}}}function dk(){function a(c){c=c.target;c.removeEventListener("dispose",a);b.delete(c)}var b=new WeakMap;return{get:function(c,d){var e=b.get(c);if(void 0===e){var f=new Gh;b.set(c,new WeakMap);b.get(c).set(d,f);c.addEventListener("dispose",a)}else f=e.get(d),void 0===f&&(f=new Gh,e.set(d,f));return f},dispose:function(){b=new WeakMap}}}function ek(){var a={};return{get:function(b){if(void 0!==a[b.id])return a[b.id];switch(b.type){case "DirectionalLight":var c={direction:new n, +color:new J,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new B};break;case "SpotLight":c={position:new n,direction:new n,color:new J,distance:0,coneCos:0,penumbraCos:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new B};break;case "PointLight":c={position:new n,color:new J,distance:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new B,shadowCameraNear:1,shadowCameraFar:1E3};break;case "HemisphereLight":c={direction:new n,skyColor:new J,groundColor:new J};break; +case "RectAreaLight":c={color:new J,position:new n,halfWidth:new n,halfHeight:new n}}return a[b.id]=c}}}function fk(a,b){return(b.castShadow?1:0)-(a.castShadow?1:0)}function gk(){for(var a=new ek,b={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[], +point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},c=0;9>c;c++)b.probe.push(new n);var d=new n,e=new Q,f=new Q;return{setup:function(c,h,l){for(var g=0,r=0,q=0,k=0;9>k;k++)b.probe[k].set(0,0,0);var p=h=0,t=0,v=0,n=0,w=0,x=0,F=0;l=l.matrixWorldInverse;c.sort(fk);k=0;for(var H=c.length;k<H;k++){var z=c[k],Ca=z.color,ia=z.intensity,B=z.distance,ma=z.shadow&&z.shadow.map?z.shadow.map.texture:null;if(z.isAmbientLight)g+=Ca.r*ia,r+=Ca.g* +ia,q+=Ca.b*ia;else if(z.isLightProbe)for(ma=0;9>ma;ma++)b.probe[ma].addScaledVector(z.sh.coefficients[ma],ia);else if(z.isDirectionalLight){var I=a.get(z);I.color.copy(z.color).multiplyScalar(z.intensity);I.direction.setFromMatrixPosition(z.matrixWorld);d.setFromMatrixPosition(z.target.matrixWorld);I.direction.sub(d);I.direction.transformDirection(l);if(I.shadow=z.castShadow)ia=z.shadow,I.shadowBias=ia.bias,I.shadowRadius=ia.radius,I.shadowMapSize=ia.mapSize,b.directionalShadowMap[h]=ma,b.directionalShadowMatrix[h]= +z.shadow.matrix,w++;b.directional[h]=I;h++}else if(z.isSpotLight){I=a.get(z);I.position.setFromMatrixPosition(z.matrixWorld);I.position.applyMatrix4(l);I.color.copy(Ca).multiplyScalar(ia);I.distance=B;I.direction.setFromMatrixPosition(z.matrixWorld);d.setFromMatrixPosition(z.target.matrixWorld);I.direction.sub(d);I.direction.transformDirection(l);I.coneCos=Math.cos(z.angle);I.penumbraCos=Math.cos(z.angle*(1-z.penumbra));I.decay=z.decay;if(I.shadow=z.castShadow)ia=z.shadow,I.shadowBias=ia.bias,I.shadowRadius= +ia.radius,I.shadowMapSize=ia.mapSize,b.spotShadowMap[t]=ma,b.spotShadowMatrix[t]=z.shadow.matrix,F++;b.spot[t]=I;t++}else if(z.isRectAreaLight)I=a.get(z),I.color.copy(Ca).multiplyScalar(ia),I.position.setFromMatrixPosition(z.matrixWorld),I.position.applyMatrix4(l),f.identity(),e.copy(z.matrixWorld),e.premultiply(l),f.extractRotation(e),I.halfWidth.set(.5*z.width,0,0),I.halfHeight.set(0,.5*z.height,0),I.halfWidth.applyMatrix4(f),I.halfHeight.applyMatrix4(f),b.rectArea[v]=I,v++;else if(z.isPointLight){I= +a.get(z);I.position.setFromMatrixPosition(z.matrixWorld);I.position.applyMatrix4(l);I.color.copy(z.color).multiplyScalar(z.intensity);I.distance=z.distance;I.decay=z.decay;if(I.shadow=z.castShadow)ia=z.shadow,I.shadowBias=ia.bias,I.shadowRadius=ia.radius,I.shadowMapSize=ia.mapSize,I.shadowCameraNear=ia.camera.near,I.shadowCameraFar=ia.camera.far,b.pointShadowMap[p]=ma,b.pointShadowMatrix[p]=z.shadow.matrix,x++;b.point[p]=I;p++}else z.isHemisphereLight&&(I=a.get(z),I.direction.setFromMatrixPosition(z.matrixWorld), +I.direction.transformDirection(l),I.direction.normalize(),I.skyColor.copy(z.color).multiplyScalar(ia),I.groundColor.copy(z.groundColor).multiplyScalar(ia),b.hemi[n]=I,n++)}b.ambient[0]=g;b.ambient[1]=r;b.ambient[2]=q;c=b.hash;if(c.directionalLength!==h||c.pointLength!==p||c.spotLength!==t||c.rectAreaLength!==v||c.hemiLength!==n||c.numDirectionalShadows!==w||c.numPointShadows!==x||c.numSpotShadows!==F)b.directional.length=h,b.spot.length=t,b.rectArea.length=v,b.point.length=p,b.hemi.length=n,b.directionalShadowMap.length= +w,b.pointShadowMap.length=x,b.spotShadowMap.length=F,b.directionalShadowMatrix.length=w,b.pointShadowMatrix.length=x,b.spotShadowMatrix.length=F,c.directionalLength=h,c.pointLength=p,c.spotLength=t,c.rectAreaLength=v,c.hemiLength=n,c.numDirectionalShadows=w,c.numPointShadows=x,c.numSpotShadows=F,b.version=hk++},state:b}}function Hh(){var a=new gk,b=[],c=[];return{init:function(){b.length=0;c.length=0},state:{lightsArray:b,shadowsArray:c,lights:a},setupLights:function(d){a.setup(b,c,d)},pushLight:function(a){b.push(a)}, +pushShadow:function(a){c.push(a)}}}function ik(){function a(c){c=c.target;c.removeEventListener("dispose",a);b.delete(c)}var b=new WeakMap;return{get:function(c,d){if(!1===b.has(c)){var e=new Hh;b.set(c,new WeakMap);b.get(c).set(d,e);c.addEventListener("dispose",a)}else!1===b.get(c).has(d)?(e=new Hh,b.get(c).set(d,e)):e=b.get(c).get(d);return e},dispose:function(){b=new WeakMap}}}function Db(a){O.call(this);this.type="MeshDepthMaterial";this.depthPacking=3200;this.morphTargets=this.skinning=!1;this.displacementMap= +this.alphaMap=this.map=null;this.displacementScale=1;this.displacementBias=0;this.wireframe=!1;this.wireframeLinewidth=1;this.fog=!1;this.setValues(a)}function Eb(a){O.call(this);this.type="MeshDistanceMaterial";this.referencePosition=new n;this.nearDistance=1;this.farDistance=1E3;this.morphTargets=this.skinning=!1;this.displacementMap=this.alphaMap=this.map=null;this.displacementScale=1;this.displacementBias=0;this.fog=!1;this.setValues(a)}function Ih(a,b,c){function d(a,b,c){c=a<<0|b<<1|c<<2;var d= +q[c];void 0===d&&(d=new Db({depthPacking:3201,morphTargets:a,skinning:b}),q[c]=d);return d}function e(a,b,c){c=a<<0|b<<1|c<<2;var d=k[c];void 0===d&&(d=new Eb({morphTargets:a,skinning:b}),k[c]=d);return d}function f(b,c,f,g,h,l){var m=b.geometry,r=d,q=b.customDepthMaterial;!0===f.isPointLight&&(r=e,q=b.customDistanceMaterial);void 0===q?(q=!1,!0===c.morphTargets&&(!0===m.isBufferGeometry?q=m.morphAttributes&&m.morphAttributes.position&&0<m.morphAttributes.position.length:!0===m.isGeometry&&(q=m.morphTargets&& +0<m.morphTargets.length)),m=!1,!0===b.isSkinnedMesh&&(!0===c.skinning?m=!0:console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",b)),b=r(q,m,!0===b.isInstancedMesh)):b=q;a.localClippingEnabled&&!0===c.clipShadows&&0!==c.clippingPlanes.length&&(q=b.uuid,r=c.uuid,m=p[q],void 0===m&&(m={},p[q]=m),q=m[r],void 0===q&&(q=b.clone(),m[r]=q),b=q);b.visible=c.visible;b.wireframe=c.wireframe;b.side=3===l?null!==c.shadowSide?c.shadowSide:c.side:null!==c.shadowSide?c.shadowSide: +t[c.side];b.clipShadows=c.clipShadows;b.clippingPlanes=c.clippingPlanes;b.clipIntersection=c.clipIntersection;b.wireframeLinewidth=c.wireframeLinewidth;b.linewidth=c.linewidth;!0===f.isPointLight&&!0===b.isMeshDistanceMaterial&&(b.referencePosition.setFromMatrixPosition(f.matrixWorld),b.nearDistance=g,b.farDistance=h);return b}function g(c,d,e,l,m){if(!1!==c.visible){if(c.layers.test(d.layers)&&(c.isMesh||c.isLine||c.isPoints)&&(c.castShadow||c.receiveShadow&&3===m)&&(!c.frustumCulled||h.intersectsObject(c))){c.modelViewMatrix.multiplyMatrices(e.matrixWorldInverse, +c.matrixWorld);var r=b.update(c),q=c.material;if(Array.isArray(q))for(var k=r.groups,u=0,t=k.length;u<t;u++){var p=k[u],v=q[p.materialIndex];v&&v.visible&&(v=f(c,v,l,e.near,e.far,m),a.renderBufferDirect(e,null,r,v,c,p))}else q.visible&&(v=f(c,q,l,e.near,e.far,m),a.renderBufferDirect(e,null,r,v,c,null))}c=c.children;r=0;for(q=c.length;r<q;r++)g(c[r],d,e,l,m)}}var h=new Ed,l=new B,m=new B,r=new da,q=[],k=[],p={},t={0:1,1:0,2:2},v=new va({defines:{SAMPLE_RATE:.25,HALF_SAMPLE_RATE:.125},uniforms:{shadow_pass:{value:null}, +resolution:{value:new B},radius:{value:4}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include <packing>\nvoid main() {\n float mean = 0.0;\n float squared_mean = 0.0;\n \n\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\n #ifdef HORIZONAL_PASS\n vec2 distribution = decodeHalfRGBA ( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\n mean += distribution.x;\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n #else\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\n mean += depth;\n squared_mean += depth * depth;\n #endif\n }\n mean = mean * HALF_SAMPLE_RATE;\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\n float std_dev = pow( squared_mean - mean * mean, 0.5 );\n gl_FragColor = encodeHalfRGBA( vec2( mean, std_dev ) );\n}"}), +n=v.clone();n.defines.HORIZONAL_PASS=1;var w=new E;w.setAttribute("position",new N(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));var x=new ea(w,v),F=this;this.enabled=!1;this.autoUpdate=!0;this.needsUpdate=!1;this.type=1;this.render=function(d,e,f){if(!1!==F.enabled&&(!1!==F.autoUpdate||!1!==F.needsUpdate)&&0!==d.length){var q=a.getRenderTarget(),k=a.getActiveCubeFace(),u=a.getActiveMipmapLevel(),t=a.state;t.setBlending(0);t.buffers.color.setClear(1,1,1,1);t.buffers.depth.setTest(!0);t.setScissorTest(!1); +for(var p=0,y=d.length;p<y;p++){var w=d[p],z=w.shadow;if(void 0===z)console.warn("THREE.WebGLShadowMap:",w,"has no shadow.");else{l.copy(z.mapSize);var H=z.getFrameExtents();l.multiply(H);m.copy(z.mapSize);if(l.x>c||l.y>c)console.warn("THREE.WebGLShadowMap:",w,"has shadow exceeding max texture size, reducing"),l.x>c&&(m.x=Math.floor(c/H.x),l.x=m.x*H.x,z.mapSize.x=m.x),l.y>c&&(m.y=Math.floor(c/H.y),l.y=m.y*H.y,z.mapSize.y=m.y);null!==z.map||z.isPointLightShadow||3!==this.type||(H={minFilter:1006,magFilter:1006, +format:1023},z.map=new la(l.x,l.y,H),z.map.texture.name=w.name+".shadowMap",z.mapPass=new la(l.x,l.y,H),z.camera.updateProjectionMatrix());null===z.map&&(H={minFilter:1003,magFilter:1003,format:1023},z.map=new la(l.x,l.y,H),z.map.texture.name=w.name+".shadowMap",z.camera.updateProjectionMatrix());a.setRenderTarget(z.map);a.clear();H=z.getViewportCount();for(var Ca=0;Ca<H;Ca++){var B=z.getViewport(Ca);r.set(m.x*B.x,m.y*B.y,m.x*B.z,m.y*B.w);t.viewport(r);z.updateMatrices(w,Ca);h=z.getFrustum();g(e, +f,z.camera,w,this.type)}z.isPointLightShadow||3!==this.type||(w=z,z=f,H=b.update(x),v.uniforms.shadow_pass.value=w.map.texture,v.uniforms.resolution.value=w.mapSize,v.uniforms.radius.value=w.radius,a.setRenderTarget(w.mapPass),a.clear(),a.renderBufferDirect(z,null,H,v,x,null),n.uniforms.shadow_pass.value=w.mapPass.texture,n.uniforms.resolution.value=w.mapSize,n.uniforms.radius.value=w.radius,a.setRenderTarget(w.map),a.clear(),a.renderBufferDirect(z,null,H,n,x,null))}}F.needsUpdate=!1;a.setRenderTarget(q, +k,u)}}}function jk(a,b,c){function d(b,c,d){var e=new Uint8Array(4),f=a.createTexture();a.bindTexture(b,f);a.texParameteri(b,10241,9728);a.texParameteri(b,10240,9728);for(b=0;b<d;b++)a.texImage2D(c+b,0,6408,1,1,0,6408,5121,e);return f}function e(c,d){n[c]=1;0===w[c]&&(a.enableVertexAttribArray(c),w[c]=1);x[c]!==d&&((k?a:b.get("ANGLE_instanced_arrays"))[k?"vertexAttribDivisor":"vertexAttribDivisorANGLE"](c,d),x[c]=d)}function f(b){!0!==F[b]&&(a.enable(b),F[b]=!0)}function g(b){!1!==F[b]&&(a.disable(b), +F[b]=!1)}function h(b,c,d,e,h,l,m,r){if(0===b)z&&(g(3042),z=!1);else if(z||(f(3042),z=!0),5!==b){if(b!==Ca||r!==E){if(100!==B||100!==I)a.blendEquation(32774),I=B=100;if(r)switch(b){case 1:a.blendFuncSeparate(1,771,1,771);break;case 2:a.blendFunc(1,1);break;case 3:a.blendFuncSeparate(0,0,769,771);break;case 4:a.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",b)}else switch(b){case 1:a.blendFuncSeparate(770,771,1,771);break;case 2:a.blendFunc(770,1); +break;case 3:a.blendFunc(0,769);break;case 4:a.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",b)}D=Id=ma=A=null;Ca=b;E=r}}else{h=h||c;l=l||d;m=m||e;if(c!==B||h!==I)a.blendEquationSeparate(Gc[c],Gc[h]),B=c,I=h;if(d!==A||e!==ma||l!==Id||m!==D)a.blendFuncSeparate(M[d],M[e],M[l],M[m]),A=d,ma=e,Id=l,D=m;Ca=b;E=null}}function l(b){J!==b&&(b?a.frontFace(2304):a.frontFace(2305),J=b)}function m(b){0!==b?(f(2884),b!==L&&(1===b?a.cullFace(1029):2===b?a.cullFace(1028):a.cullFace(1032))): +g(2884);L=b}function r(b,c,d){if(b){if(f(32823),C!==c||N!==d)a.polygonOffset(c,d),C=c,N=d}else g(32823)}function q(b){void 0===b&&(b=33984+ha-1);P!==b&&(a.activeTexture(b),P=b)}var k=c.isWebGL2,p=new function(){var b=!1,c=new da,d=null,e=new da(0,0,0,0);return{setMask:function(c){d===c||b||(a.colorMask(c,c,c,c),d=c)},setLocked:function(a){b=a},setClear:function(b,d,f,g,h){!0===h&&(b*=g,d*=g,f*=g);c.set(b,d,f,g);!1===e.equals(c)&&(a.clearColor(b,d,f,g),e.copy(c))},reset:function(){b=!1;d=null;e.set(-1, +0,0,0)}}},t=new function(){var b=!1,c=null,d=null,e=null;return{setTest:function(a){a?f(2929):g(2929)},setMask:function(d){c===d||b||(a.depthMask(d),c=d)},setFunc:function(b){if(d!==b){if(b)switch(b){case 0:a.depthFunc(512);break;case 1:a.depthFunc(519);break;case 2:a.depthFunc(513);break;case 3:a.depthFunc(515);break;case 4:a.depthFunc(514);break;case 5:a.depthFunc(518);break;case 6:a.depthFunc(516);break;case 7:a.depthFunc(517);break;default:a.depthFunc(515)}else a.depthFunc(515);d=b}},setLocked:function(a){b= +a},setClear:function(b){e!==b&&(a.clearDepth(b),e=b)},reset:function(){b=!1;e=d=c=null}}},v=new function(){var b=!1,c=null,d=null,e=null,h=null,l=null,m=null,r=null,q=null;return{setTest:function(a){b||(a?f(2960):g(2960))},setMask:function(d){c===d||b||(a.stencilMask(d),c=d)},setFunc:function(b,c,f){if(d!==b||e!==c||h!==f)a.stencilFunc(b,c,f),d=b,e=c,h=f},setOp:function(b,c,d){if(l!==b||m!==c||r!==d)a.stencilOp(b,c,d),l=b,m=c,r=d},setLocked:function(a){b=a},setClear:function(b){q!==b&&(a.clearStencil(b), +q=b)},reset:function(){b=!1;q=r=m=l=h=e=d=c=null}}};c=a.getParameter(34921);var n=new Uint8Array(c),w=new Uint8Array(c),x=new Uint8Array(c),F={},H=null,z=null,Ca=null,B=null,A=null,ma=null,I=null,Id=null,D=null,E=!1,J=null,L=null,G=null,C=null,N=null,ha=a.getParameter(35661),O=!1;c=0;c=a.getParameter(7938);-1!==c.indexOf("WebGL")?(c=parseFloat(/^WebGL ([0-9])/.exec(c)[1]),O=1<=c):-1!==c.indexOf("OpenGL ES")&&(c=parseFloat(/^OpenGL ES ([0-9])/.exec(c)[1]),O=2<=c);var P=null,Ke={},$b=new da,Jh=new da, +ob={};ob[3553]=d(3553,3553,1);ob[34067]=d(34067,34069,6);p.setClear(0,0,0,1);t.setClear(1);v.setClear(0);f(2929);t.setFunc(3);l(!1);m(1);f(2884);h(0);var Gc={100:32774,101:32778,102:32779};k?(Gc[103]=32775,Gc[104]=32776):(c=b.get("EXT_blend_minmax"),null!==c&&(Gc[103]=c.MIN_EXT,Gc[104]=c.MIN_EXT));var M={200:0,201:1,202:768,204:770,210:776,208:774,206:772,203:769,205:771,209:775,207:773};return{buffers:{color:p,depth:t,stencil:v},initAttributes:function(){for(var a=0,b=n.length;a<b;a++)n[a]=0},enableAttribute:function(a){e(a, +0)},enableAttributeAndDivisor:e,disableUnusedAttributes:function(){for(var b=0,c=w.length;b!==c;++b)w[b]!==n[b]&&(a.disableVertexAttribArray(b),w[b]=0)},enable:f,disable:g,useProgram:function(b){return H!==b?(a.useProgram(b),H=b,!0):!1},setBlending:h,setMaterial:function(a,b){2===a.side?g(2884):f(2884);var c=1===a.side;b&&(c=!c);l(c);1===a.blending&&!1===a.transparent?h(0):h(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha,a.premultipliedAlpha); +t.setFunc(a.depthFunc);t.setTest(a.depthTest);t.setMask(a.depthWrite);p.setMask(a.colorWrite);b=a.stencilWrite;v.setTest(b);b&&(v.setMask(a.stencilWriteMask),v.setFunc(a.stencilFunc,a.stencilRef,a.stencilFuncMask),v.setOp(a.stencilFail,a.stencilZFail,a.stencilZPass));r(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)},setFlipSided:l,setCullFace:m,setLineWidth:function(b){b!==G&&(O&&a.lineWidth(b),G=b)},setPolygonOffset:r,setScissorTest:function(a){a?f(3089):g(3089)},activeTexture:q,bindTexture:function(b, +c){null===P&&q();var d=Ke[P];void 0===d&&(d={type:void 0,texture:void 0},Ke[P]=d);if(d.type!==b||d.texture!==c)a.bindTexture(b,c||ob[b]),d.type=b,d.texture=c},unbindTexture:function(){var b=Ke[P];void 0!==b&&void 0!==b.type&&(a.bindTexture(b.type,null),b.type=void 0,b.texture=void 0)},compressedTexImage2D:function(){try{a.compressedTexImage2D.apply(a,arguments)}catch(W){console.error("THREE.WebGLState:",W)}},texImage2D:function(){try{a.texImage2D.apply(a,arguments)}catch(W){console.error("THREE.WebGLState:", +W)}},texImage3D:function(){try{a.texImage3D.apply(a,arguments)}catch(W){console.error("THREE.WebGLState:",W)}},scissor:function(b){!1===$b.equals(b)&&(a.scissor(b.x,b.y,b.z,b.w),$b.copy(b))},viewport:function(b){!1===Jh.equals(b)&&(a.viewport(b.x,b.y,b.z,b.w),Jh.copy(b))},reset:function(){for(var b=0;b<w.length;b++)1===w[b]&&(a.disableVertexAttribArray(b),w[b]=0);F={};P=null;Ke={};L=J=Ca=H=null;p.reset();t.reset();v.reset()}}}function kk(a,b,c,d,e,f,g){function h(a,b){return G?new OffscreenCanvas(a, +b):document.createElementNS("http://www.w3.org/1999/xhtml","canvas")}function l(a,b,c,d){var e=1;if(a.width>d||a.height>d)e=d/Math.max(a.width,a.height);if(1>e||!0===b){if("undefined"!==typeof HTMLImageElement&&a instanceof HTMLImageElement||"undefined"!==typeof HTMLCanvasElement&&a instanceof HTMLCanvasElement||"undefined"!==typeof ImageBitmap&&a instanceof ImageBitmap)return d=b?P.floorPowerOfTwo:Math.floor,b=d(e*a.width),e=d(e*a.height),void 0===L&&(L=h(b,e)),c=c?h(b,e):L,c.width=b,c.height=e, +c.getContext("2d").drawImage(a,0,0,b,e),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+a.width+"x"+a.height+") to ("+b+"x"+e+")."),c;"data"in a&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+a.width+"x"+a.height+").")}return a}function m(a){return P.isPowerOfTwo(a.width)&&P.isPowerOfTwo(a.height)}function r(a,b){return a.generateMipmaps&&b&&1003!==a.minFilter&&1006!==a.minFilter}function q(b,c,e,f){a.generateMipmap(b);d.get(c).__maxMipLevel=Math.log(Math.max(e, +f))*Math.LOG2E}function k(a,c){if(!1===ma)return a;var d=a;6403===a&&(5126===c&&(d=33326),5131===c&&(d=33325),5121===c&&(d=33321));6407===a&&(5126===c&&(d=34837),5131===c&&(d=34843),5121===c&&(d=32849));6408===a&&(5126===c&&(d=34836),5131===c&&(d=34842),5121===c&&(d=32856));33325===d||33326===d||34842===d||34836===d?b.get("EXT_color_buffer_float"):(34843===d||34837===d)&&console.warn("THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.");return d}function p(a){return 1003=== +a||1004===a||1005===a?9728:9729}function t(b){b=b.target;b.removeEventListener("dispose",t);var c=d.get(b);void 0!==c.__webglInit&&(a.deleteTexture(c.__webglTexture),d.remove(b));b.isVideoTexture&&J.delete(b);g.memory.textures--}function v(b){b=b.target;b.removeEventListener("dispose",v);var c=d.get(b),e=d.get(b.texture);if(b){void 0!==e.__webglTexture&&a.deleteTexture(e.__webglTexture);b.depthTexture&&b.depthTexture.dispose();if(b.isWebGLRenderTargetCube)for(e=0;6>e;e++)a.deleteFramebuffer(c.__webglFramebuffer[e]), +c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer[e]);else a.deleteFramebuffer(c.__webglFramebuffer),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer);if(b.isWebGLMultiviewRenderTarget){a.deleteTexture(c.__webglColorTexture);a.deleteTexture(c.__webglDepthStencilTexture);g.memory.textures-=2;e=0;for(var f=c.__webglViewFramebuffers.length;e<f;e++)a.deleteFramebuffer(c.__webglViewFramebuffers[e])}d.remove(b.texture);d.remove(b)}g.memory.textures--}function n(a,b){var e=d.get(a); +if(a.isVideoTexture){var f=g.render.frame;J.get(a)!==f&&(J.set(a,f),a.update())}if(0<a.version&&e.__version!==a.version)if(f=a.image,void 0===f)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else if(!1===f.complete)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{z(e,a,b);return}c.activeTexture(33984+b);c.bindTexture(3553,e.__webglTexture)}function w(b,e){if(6===b.image.length){var g=d.get(b);if(0<b.version&&g.__version!== +b.version){H(g,b);c.activeTexture(33984+e);c.bindTexture(34067,g.__webglTexture);a.pixelStorei(37440,b.flipY);var h=b&&b.isCompressedTexture;e=b.image[0]&&b.image[0].isDataTexture;for(var t=[],u=0;6>u;u++)t[u]=h||e?e?b.image[u].image:b.image[u]:l(b.image[u],!1,!0,Id);var p=t[0],v=m(p)||ma,n=f.convert(b.format),y=f.convert(b.type),w=k(n,y);F(34067,b,v);if(h){for(u=0;6>u;u++){var z=t[u].mipmaps;for(h=0;h<z.length;h++){var x=z[h];1023!==b.format&&1022!==b.format?null!==n?c.compressedTexImage2D(34069+ +u,h,w,x.width,x.height,0,x.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):c.texImage2D(34069+u,h,w,x.width,x.height,0,n,y,x.data)}}g.__maxMipLevel=z.length-1}else{z=b.mipmaps;for(u=0;6>u;u++)if(e)for(c.texImage2D(34069+u,0,w,t[u].width,t[u].height,0,n,y,t[u].data),h=0;h<z.length;h++)x=z[h],x=x.image[u].image,c.texImage2D(34069+u,h+1,w,x.width,x.height,0,n,y,x.data);else for(c.texImage2D(34069+u,0,w,n,y,t[u]),h=0;h<z.length;h++)x= +z[h],c.texImage2D(34069+u,h+1,w,n,y,x.image[u]);g.__maxMipLevel=z.length}r(b,v)&&q(34067,b,p.width,p.height);g.__version=b.version;if(b.onUpdate)b.onUpdate(b)}else c.activeTexture(33984+e),c.bindTexture(34067,g.__webglTexture)}}function x(a,b){c.activeTexture(33984+b);c.bindTexture(34067,d.get(a).__webglTexture)}function F(c,f,g){g?(a.texParameteri(c,10242,N[f.wrapS]),a.texParameteri(c,10243,N[f.wrapT]),32879!==c&&35866!==c||a.texParameteri(c,32882,N[f.wrapR]),a.texParameteri(c,10240,O[f.magFilter]), +a.texParameteri(c,10241,O[f.minFilter])):(a.texParameteri(c,10242,33071),a.texParameteri(c,10243,33071),32879!==c&&35866!==c||a.texParameteri(c,32882,33071),1001===f.wrapS&&1001===f.wrapT||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),a.texParameteri(c,10240,p(f.magFilter)),a.texParameteri(c,10241,p(f.minFilter)),1003!==f.minFilter&&1006!==f.minFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")); +!(g=b.get("EXT_texture_filter_anisotropic"))||1015===f.type&&null===b.get("OES_texture_float_linear")||1016===f.type&&null===(ma||b.get("OES_texture_half_float_linear"))||!(1<f.anisotropy||d.get(f).__currentAnisotropy)||(a.texParameterf(c,g.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(f.anisotropy,e.getMaxAnisotropy())),d.get(f).__currentAnisotropy=f.anisotropy)}function H(b,c){void 0===b.__webglInit&&(b.__webglInit=!0,c.addEventListener("dispose",t),b.__webglTexture=a.createTexture(),g.memory.textures++)} +function z(b,d,e){var g=3553;d.isDataTexture2DArray&&(g=35866);d.isDataTexture3D&&(g=32879);H(b,d);c.activeTexture(33984+e);c.bindTexture(g,b.__webglTexture);a.pixelStorei(37440,d.flipY);a.pixelStorei(37441,d.premultiplyAlpha);a.pixelStorei(3317,d.unpackAlignment);e=ma?!1:1001!==d.wrapS||1001!==d.wrapT||1003!==d.minFilter&&1006!==d.minFilter;e=e&&!1===m(d.image);e=l(d.image,e,!1,D);var h=m(e)||ma,u=f.convert(d.format),t=f.convert(d.type),p=k(u,t);F(g,d,h);var v=d.mipmaps;if(d.isDepthTexture){p=6402; +if(1015===d.type){if(!1===ma)throw Error("Float Depth Texture only supported in WebGL2.0");p=36012}else ma&&(p=33189);1026===d.format&&6402===p&&1012!==d.type&&1014!==d.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),d.type=1012,t=f.convert(d.type));1027===d.format&&(p=34041,1020!==d.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),d.type=1020,t=f.convert(d.type)));c.texImage2D(3553, +0,p,e.width,e.height,0,u,t,null)}else if(d.isDataTexture)if(0<v.length&&h){for(var n=0,y=v.length;n<y;n++)g=v[n],c.texImage2D(3553,n,p,g.width,g.height,0,u,t,g.data);d.generateMipmaps=!1;b.__maxMipLevel=v.length-1}else c.texImage2D(3553,0,p,e.width,e.height,0,u,t,e.data),b.__maxMipLevel=0;else if(d.isCompressedTexture){n=0;for(y=v.length;n<y;n++)g=v[n],1023!==d.format&&1022!==d.format?null!==u?c.compressedTexImage2D(3553,n,p,g.width,g.height,0,g.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"): +c.texImage2D(3553,n,p,g.width,g.height,0,u,t,g.data);b.__maxMipLevel=v.length-1}else if(d.isDataTexture2DArray)c.texImage3D(35866,0,p,e.width,e.height,e.depth,0,u,t,e.data),b.__maxMipLevel=0;else if(d.isDataTexture3D)c.texImage3D(32879,0,p,e.width,e.height,e.depth,0,u,t,e.data),b.__maxMipLevel=0;else if(0<v.length&&h){n=0;for(y=v.length;n<y;n++)g=v[n],c.texImage2D(3553,n,p,u,t,g);d.generateMipmaps=!1;b.__maxMipLevel=v.length-1}else c.texImage2D(3553,0,p,u,t,e),b.__maxMipLevel=0;r(d,h)&&q(3553,d,e.width, +e.height);b.__version=d.version;if(d.onUpdate)d.onUpdate(d)}function B(b,e,g,h){var l=f.convert(e.texture.format),m=f.convert(e.texture.type),r=k(l,m);c.texImage2D(h,0,r,e.width,e.height,0,l,m,null);a.bindFramebuffer(36160,b);a.framebufferTexture2D(36160,g,h,d.get(e.texture).__webglTexture,0);a.bindFramebuffer(36160,null)}function ia(b,c,d){a.bindRenderbuffer(36161,b);if(c.depthBuffer&&!c.stencilBuffer)d?(d=A(c),a.renderbufferStorageMultisample(36161,d,33189,c.width,c.height)):a.renderbufferStorage(36161, +33189,c.width,c.height),a.framebufferRenderbuffer(36160,36096,36161,b);else if(c.depthBuffer&&c.stencilBuffer)d?(d=A(c),a.renderbufferStorageMultisample(36161,d,35056,c.width,c.height)):a.renderbufferStorage(36161,34041,c.width,c.height),a.framebufferRenderbuffer(36160,33306,36161,b);else{b=f.convert(c.texture.format);var e=f.convert(c.texture.type);b=k(b,e);d?(d=A(c),a.renderbufferStorageMultisample(36161,d,b,c.width,c.height)):a.renderbufferStorage(36161,b,c.width,c.height)}a.bindRenderbuffer(36161, +null)}function A(a){return ma&&a.isWebGLMultisampleRenderTarget?Math.min(E,a.samples):0}var ma=e.isWebGL2,I=e.maxTextures,Id=e.maxCubemapSize,D=e.maxTextureSize,E=e.maxSamples,J=new WeakMap,L,G="undefined"!==typeof OffscreenCanvas&&null!==(new OffscreenCanvas(1,1)).getContext("2d"),C=0,N={1E3:10497,1001:33071,1002:33648},O={1003:9728,1004:9984,1005:9986,1006:9729,1007:9985,1008:9987},Q=!1,S=!1;this.allocateTextureUnit=function(){var a=C;a>=I&&console.warn("THREE.WebGLTextures: Trying to use "+a+" texture units while this GPU supports only "+ +I);C+=1;return a};this.resetTextureUnits=function(){C=0};this.setTexture2D=n;this.setTexture2DArray=function(a,b){var e=d.get(a);0<a.version&&e.__version!==a.version?z(e,a,b):(c.activeTexture(33984+b),c.bindTexture(35866,e.__webglTexture))};this.setTexture3D=function(a,b){var e=d.get(a);0<a.version&&e.__version!==a.version?z(e,a,b):(c.activeTexture(33984+b),c.bindTexture(32879,e.__webglTexture))};this.setTextureCube=w;this.setTextureCubeDynamic=x;this.setupRenderTarget=function(e){var h=d.get(e), +l=d.get(e.texture);e.addEventListener("dispose",v);l.__webglTexture=a.createTexture();g.memory.textures++;var u=!0===e.isWebGLRenderTargetCube,t=!0===e.isWebGLMultisampleRenderTarget,p=!0===e.isWebGLMultiviewRenderTarget,y=m(e)||ma;if(u){h.__webglFramebuffer=[];for(var w=0;6>w;w++)h.__webglFramebuffer[w]=a.createFramebuffer()}else if(h.__webglFramebuffer=a.createFramebuffer(),t)if(ma){h.__webglMultisampledFramebuffer=a.createFramebuffer();h.__webglColorRenderbuffer=a.createRenderbuffer();a.bindRenderbuffer(36161, +h.__webglColorRenderbuffer);t=f.convert(e.texture.format);var z=f.convert(e.texture.type);t=k(t,z);z=A(e);a.renderbufferStorageMultisample(36161,z,t,e.width,e.height);a.bindFramebuffer(36160,h.__webglMultisampledFramebuffer);a.framebufferRenderbuffer(36160,36064,36161,h.__webglColorRenderbuffer);a.bindRenderbuffer(36161,null);e.depthBuffer&&(h.__webglDepthRenderbuffer=a.createRenderbuffer(),ia(h.__webglDepthRenderbuffer,e,!0));a.bindFramebuffer(36160,null)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2."); +else if(p){w=e.width;var x=e.height;t=e.numViews;a.bindFramebuffer(36160,h.__webglFramebuffer);var H=b.get("OVR_multiview2");g.memory.textures+=2;z=a.createTexture();a.bindTexture(35866,z);a.texParameteri(35866,10240,9728);a.texParameteri(35866,10241,9728);a.texImage3D(35866,0,32856,w,x,t,0,6408,5121,null);H.framebufferTextureMultiviewOVR(36160,36064,z,0,0,t);var I=a.createTexture();a.bindTexture(35866,I);a.texParameteri(35866,10240,9728);a.texParameteri(35866,10241,9728);a.texImage3D(35866,0,35056, +w,x,t,0,34041,34042,null);H.framebufferTextureMultiviewOVR(36160,33306,I,0,0,t);x=Array(t);for(w=0;w<t;++w)x[w]=a.createFramebuffer(),a.bindFramebuffer(36160,x[w]),a.framebufferTextureLayer(36160,36064,z,0,w);h.__webglColorTexture=z;h.__webglDepthStencilTexture=I;h.__webglViewFramebuffers=x;a.bindFramebuffer(36160,null);a.bindTexture(35866,null)}if(u){c.bindTexture(34067,l.__webglTexture);F(34067,e.texture,y);for(w=0;6>w;w++)B(h.__webglFramebuffer[w],e,36064,34069+w);r(e.texture,y)&&q(34067,e.texture, +e.width,e.height);c.bindTexture(34067,null)}else p||(c.bindTexture(3553,l.__webglTexture),F(3553,e.texture,y),B(h.__webglFramebuffer,e,36064,3553),r(e.texture,y)&&q(3553,e.texture,e.width,e.height),c.bindTexture(3553,null));if(e.depthBuffer){h=d.get(e);l=!0===e.isWebGLRenderTargetCube;if(e.depthTexture){if(l)throw Error("target.depthTexture not supported in Cube render targets");if(e&&e.isWebGLRenderTargetCube)throw Error("Depth Texture with cube render targets is not supported");a.bindFramebuffer(36160, +h.__webglFramebuffer);if(!e.depthTexture||!e.depthTexture.isDepthTexture)throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");d.get(e.depthTexture).__webglTexture&&e.depthTexture.image.width===e.width&&e.depthTexture.image.height===e.height||(e.depthTexture.image.width=e.width,e.depthTexture.image.height=e.height,e.depthTexture.needsUpdate=!0);n(e.depthTexture,0);h=d.get(e.depthTexture).__webglTexture;if(1026===e.depthTexture.format)a.framebufferTexture2D(36160,36096, +3553,h,0);else if(1027===e.depthTexture.format)a.framebufferTexture2D(36160,33306,3553,h,0);else throw Error("Unknown depthTexture format");}else if(l)for(h.__webglDepthbuffer=[],l=0;6>l;l++)a.bindFramebuffer(36160,h.__webglFramebuffer[l]),h.__webglDepthbuffer[l]=a.createRenderbuffer(),ia(h.__webglDepthbuffer[l],e);else a.bindFramebuffer(36160,h.__webglFramebuffer),h.__webglDepthbuffer=a.createRenderbuffer(),ia(h.__webglDepthbuffer,e);a.bindFramebuffer(36160,null)}};this.updateRenderTargetMipmap= +function(a){var b=a.texture,e=m(a)||ma;if(r(b,e)){e=a.isWebGLRenderTargetCube?34067:3553;var f=d.get(b).__webglTexture;c.bindTexture(e,f);q(e,b,a.width,a.height);c.bindTexture(e,null)}};this.updateMultisampleRenderTarget=function(b){if(b.isWebGLMultisampleRenderTarget)if(ma){var c=d.get(b);a.bindFramebuffer(36008,c.__webglMultisampledFramebuffer);a.bindFramebuffer(36009,c.__webglFramebuffer);c=b.width;var e=b.height,f=16384;b.depthBuffer&&(f|=256);b.stencilBuffer&&(f|=1024);a.blitFramebuffer(0,0, +c,e,0,0,c,e,f,9728)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.")};this.safeSetTexture2D=function(a,b){a&&a.isWebGLRenderTarget&&(!1===Q&&(console.warn("THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead."),Q=!0),a=a.texture);n(a,b)};this.safeSetTextureCube=function(a,b){a&&a.isWebGLRenderTargetCube&&(!1===S&&(console.warn("THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead."), +S=!0),a=a.texture);a&&a.isCubeTexture||Array.isArray(a.image)&&6===a.image.length?w(a,b):x(a,b)}}function Kh(a,b,c){var d=c.isWebGL2;return{convert:function(a){if(1009===a)return 5121;if(1017===a)return 32819;if(1018===a)return 32820;if(1019===a)return 33635;if(1010===a)return 5120;if(1011===a)return 5122;if(1012===a)return 5123;if(1013===a)return 5124;if(1014===a)return 5125;if(1015===a)return 5126;if(1016===a){if(d)return 5131;var c=b.get("OES_texture_half_float");return null!==c?c.HALF_FLOAT_OES: +null}if(1021===a)return 6406;if(1022===a)return 6407;if(1023===a)return 6408;if(1024===a)return 6409;if(1025===a)return 6410;if(1026===a)return 6402;if(1027===a)return 34041;if(1028===a)return 6403;if(33776===a||33777===a||33778===a||33779===a)if(c=b.get("WEBGL_compressed_texture_s3tc"),null!==c){if(33776===a)return c.COMPRESSED_RGB_S3TC_DXT1_EXT;if(33777===a)return c.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(33778===a)return c.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(33779===a)return c.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null; +if(35840===a||35841===a||35842===a||35843===a)if(c=b.get("WEBGL_compressed_texture_pvrtc"),null!==c){if(35840===a)return c.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(35841===a)return c.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(35842===a)return c.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(35843===a)return c.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(36196===a)return c=b.get("WEBGL_compressed_texture_etc1"),null!==c?c.COMPRESSED_RGB_ETC1_WEBGL:null;if(37808===a||37809===a||37810===a||37811===a||37812===a||37813=== +a||37814===a||37815===a||37816===a||37817===a||37818===a||37819===a||37820===a||37821===a)return c=b.get("WEBGL_compressed_texture_astc"),null!==c?a:null;if(1020===a){if(d)return 34042;c=b.get("WEBGL_depth_texture");return null!==c?c.UNSIGNED_INT_24_8_WEBGL:null}}}}function fg(a,b,c,d){la.call(this,a,b,d);this.stencilBuffer=this.depthBuffer=!1;this.numViews=c}function lk(a,b){function c(a){if(a.isArrayCamera)return a.cameras;r[0]=a;return r}function d(a){if(void 0===a.isArrayCamera)return!0;a=a.cameras; +if(a.length>p)return!1;for(var b=1,c=a.length;b<c;b++)if(a[0].viewport.z!==a[b].viewport.z||a[0].viewport.w!==a[b].viewport.w)return!1;return!0}var e=a.extensions,f=a.properties,g,h,l,m,r,q,k,p=0;this.isAvailable=function(){if(void 0===k){var a=e.get("OVR_multiview2");if(k=null!==a&&!1===b.getContextAttributes().antialias)for(p=b.getParameter(a.MAX_VIEWS_OVR),g=new fg(0,0,2),q=new B,m=[],l=[],r=[],a=0;a<p;a++)m[a]=new Q,l[a]=new Z}return k};this.attachCamera=function(b){if(!1!==d(b)){(h=a.getRenderTarget())? +q.set(h.width,h.height):a.getDrawingBufferSize(q);if(b.isArrayCamera){var c=b.cameras[0].viewport;g.setSize(c.z,c.w);g.setNumViews(b.cameras.length)}else g.setSize(q.x,q.y),g.setNumViews(2);a.setRenderTarget(g)}};this.detachCamera=function(c){if(g===a.getRenderTarget()){a.setRenderTarget(h);var d=g,e=d.numViews,l=f.get(d).__webglViewFramebuffers,m=d.width;d=d.height;if(c.isArrayCamera)for(var r=0;r<e;r++){var k=c.cameras[r].viewport,u=k.x,p=k.y,t=u+k.z;k=p+k.w;b.bindFramebuffer(36008,l[r]);b.blitFramebuffer(0, +0,m,d,u,p,t,k,16384,9728)}else b.bindFramebuffer(36008,l[0]),b.blitFramebuffer(0,0,m,d,0,0,q.x,q.y,16384,9728)}};this.updateCameraProjectionMatricesUniform=function(a,d){a=c(a);for(var e=0;e<a.length;e++)m[e].copy(a[e].projectionMatrix);d.setValue(b,"projectionMatrices",m)};this.updateCameraViewMatricesUniform=function(a,d){a=c(a);for(var e=0;e<a.length;e++)m[e].copy(a[e].matrixWorldInverse);d.setValue(b,"viewMatrices",m)};this.updateObjectMatricesUniforms=function(a,d,e){d=c(d);for(var f=0;f<d.length;f++)m[f].multiplyMatrices(d[f].matrixWorldInverse, +a.matrixWorld),l[f].getNormalMatrix(m[f]);e.setValue(b,"modelViewMatrices",m);e.setValue(b,"normalMatrices",l)}}function Hc(){D.call(this);this.type="Group"}function Kd(a){U.call(this);this.cameras=a||[]}function Lh(a,b,c){Mh.setFromMatrixPosition(b.matrixWorld);Nh.setFromMatrixPosition(c.matrixWorld);var d=Mh.distanceTo(Nh),e=b.projectionMatrix.elements,f=c.projectionMatrix.elements,g=e[14]/(e[10]-1);c=e[14]/(e[10]+1);var h=(e[9]+1)/e[5],l=(e[9]-1)/e[5],m=(e[8]-1)/e[0],r=(f[8]+1)/f[0];e=g*m;f=g* +r;r=d/(-m+r);m=r*-m;b.matrixWorld.decompose(a.position,a.quaternion,a.scale);a.translateX(m);a.translateZ(r);a.matrixWorld.compose(a.position,a.quaternion,a.scale);a.matrixWorldInverse.getInverse(a.matrixWorld);b=g+r;g=c+r;a.projectionMatrix.makePerspective(e-m,f+(d-m),h*c/g*b,l*c/g*b,b,g)}function gg(a){function b(){return null!==h&&!0===h.isPresenting}function c(){if(b()){var c=h.getEyeParameters("left");e=2*c.renderWidth*p;f=c.renderHeight*p;Ca=a.getPixelRatio();a.getSize(z);a.setDrawingBufferSize(e, +f,1);x.viewport.set(0,0,e/2,f);F.viewport.set(e/2,0,e/2,f);A.start();g.dispatchEvent({type:"sessionstart"})}else g.enabled&&a.setDrawingBufferSize(z.width,z.height,Ca),A.stop(),g.dispatchEvent({type:"sessionend"})}function d(a,b){null!==b&&4===b.length&&a.set(b[0]*e,b[1]*f,b[2]*e,b[3]*f)}var e,f,g=this,h=null,l=null,m=null,r=[],q=new Q,k=new Q,p=1,t="local-floor";"undefined"!==typeof window&&"VRFrameData"in window&&(l=new window.VRFrameData,window.addEventListener("vrdisplaypresentchange",c,!1)); +var v=new Q,y=new wa,w=new n,x=new U;x.viewport=new da;x.layers.enable(1);var F=new U;F.viewport=new da;F.layers.enable(2);var H=new Kd([x,F]);H.layers.enable(1);H.layers.enable(2);var z=new B,Ca,ia=[];this.enabled=!1;this.getController=function(a){var b=r[a];void 0===b&&(b=new Hc,b.matrixAutoUpdate=!1,b.visible=!1,r[a]=b);return b};this.getDevice=function(){return h};this.setDevice=function(a){void 0!==a&&(h=a);A.setContext(a)};this.setFramebufferScaleFactor=function(a){p=a};this.setReferenceSpaceType= +function(a){t=a};this.setPoseTarget=function(a){void 0!==a&&(m=a)};this.getCamera=function(a){var c="local-floor"===t?1.6:0;if(!1===b())return a.position.set(0,c,0),a.rotation.set(0,0,0),a;h.depthNear=a.near;h.depthFar=a.far;h.getFrameData(l);if("local-floor"===t){var e=h.stageParameters;e?q.fromArray(e.sittingToStandingTransform):q.makeTranslation(0,c,0)}c=l.pose;e=null!==m?m:a;e.matrix.copy(q);e.matrix.decompose(e.position,e.quaternion,e.scale);null!==c.orientation&&(y.fromArray(c.orientation), +e.quaternion.multiply(y));null!==c.position&&(y.setFromRotationMatrix(q),w.fromArray(c.position),w.applyQuaternion(y),e.position.add(w));e.updateMatrixWorld();x.near=a.near;F.near=a.near;x.far=a.far;F.far=a.far;x.matrixWorldInverse.fromArray(l.leftViewMatrix);F.matrixWorldInverse.fromArray(l.rightViewMatrix);k.getInverse(q);"local-floor"===t&&(x.matrixWorldInverse.multiply(k),F.matrixWorldInverse.multiply(k));a=e.parent;null!==a&&(v.getInverse(a.matrixWorld),x.matrixWorldInverse.multiply(v),F.matrixWorldInverse.multiply(v)); +x.matrixWorld.getInverse(x.matrixWorldInverse);F.matrixWorld.getInverse(F.matrixWorldInverse);x.projectionMatrix.fromArray(l.leftProjectionMatrix);F.projectionMatrix.fromArray(l.rightProjectionMatrix);Lh(H,x,F);a=h.getLayers();a.length&&(a=a[0],d(x.viewport,a.leftBounds),d(F.viewport,a.rightBounds));a:for(a=0;a<r.length;a++){c=r[a];b:{e=a;for(var f=navigator.getGamepads&&navigator.getGamepads(),g=0,u=f.length;g<u;g++){var p=f[g];if(p&&("Daydream Controller"===p.id||"Gear VR Controller"===p.id||"Oculus Go Controller"=== +p.id||"OpenVR Gamepad"===p.id||p.id.startsWith("Oculus Touch")||p.id.startsWith("HTC Vive Focus")||p.id.startsWith("Spatial Controller"))){var n=p.hand;if(0===e&&(""===n||"right"===n)||1===e&&"left"===n){e=p;break b}}}e=void 0}if(void 0!==e&&void 0!==e.pose){if(null===e.pose)break a;f=e.pose;!1===f.hasPosition&&c.position.set(.2,-.6,-.05);null!==f.position&&c.position.fromArray(f.position);null!==f.orientation&&c.quaternion.fromArray(f.orientation);c.matrix.compose(c.position,c.quaternion,c.scale); +c.matrix.premultiply(q);c.matrix.decompose(c.position,c.quaternion,c.scale);c.matrixWorldNeedsUpdate=!0;c.visible=!0;f="Daydream Controller"===e.id?0:1;void 0===ia[a]&&(ia[a]=!1);ia[a]!==e.buttons[f].pressed&&(ia[a]=e.buttons[f].pressed,!0===ia[a]?c.dispatchEvent({type:"selectstart"}):(c.dispatchEvent({type:"selectend"}),c.dispatchEvent({type:"select"})))}else c.visible=!1}return H};this.getStandingMatrix=function(){return q};this.isPresenting=b;var A=new ag;this.setAnimationLoop=function(a){A.setAnimationLoop(a); +b()&&A.start()};this.submitFrame=function(){b()&&h.submitFrame()};this.dispose=function(){"undefined"!==typeof window&&window.removeEventListener("vrdisplaypresentchange",c)};this.setFrameOfReferenceType=function(){console.warn("THREE.WebVRManager: setFrameOfReferenceType() has been deprecated.")}}function Oh(a,b){function c(){return null!==m&&null!==r}function d(a){for(var b=0;b<p.length;b++)t[b]===a.inputSource&&p[b].dispatchEvent({type:a.type})}function e(){a.setFramebuffer(null);a.setRenderTarget(a.getRenderTarget()); +F.stop();l.dispatchEvent({type:"sessionend"})}function f(a){r=a;F.setContext(m);F.start();l.dispatchEvent({type:"sessionstart"})}function g(){for(var a=0;a<p.length;a++){var b=a;a:{var c=m.inputSources;for(var d=0;d<c.length;d++){var e=c[d],f=e.handedness;if(0===a&&("none"===f||"right"===f)){c=e;break a}if(1===a&&"left"===f){c=e;break a}}c=void 0}t[b]=c}}function h(a,b){null===b?a.matrixWorld.copy(a.matrix):a.matrixWorld.multiplyMatrices(b.matrixWorld,a.matrix);a.matrixWorldInverse.getInverse(a.matrixWorld)} +var l=this,m=null,r=null,q="local-floor",k=null,p=[],t=[],n=new U;n.layers.enable(1);n.viewport=new da;var y=new U;y.layers.enable(2);y.viewport=new da;var w=new Kd([n,y]);w.layers.enable(1);w.layers.enable(2);this.enabled=!1;this.getController=function(a){var b=p[a];void 0===b&&(b=new Hc,b.matrixAutoUpdate=!1,b.visible=!1,p[a]=b);return b};this.setFramebufferScaleFactor=function(){};this.setReferenceSpaceType=function(a){q=a};this.getSession=function(){return m};this.setSession=function(a){m=a;null!== +m&&(m.addEventListener("select",d),m.addEventListener("selectstart",d),m.addEventListener("selectend",d),m.addEventListener("end",e),m.updateRenderState({baseLayer:new XRWebGLLayer(m,b)}),m.requestReferenceSpace(q).then(f),m.addEventListener("inputsourceschange",g),g())};this.getCamera=function(a){if(c()){var b=a.parent,d=w.cameras;h(w,b);for(var e=0;e<d.length;e++)h(d[e],b);a.matrixWorld.copy(w.matrixWorld);a=a.children;e=0;for(b=a.length;e<b;e++)a[e].updateMatrixWorld(!0);Lh(w,n,y);return w}return a}; +this.isPresenting=c;var x=null,F=new ag;F.setAnimationLoop(function(b,c){k=c.getViewerPose(r);if(null!==k){var d=k.views,e=m.renderState.baseLayer;a.setFramebuffer(e.framebuffer);for(var f=0;f<d.length;f++){var g=d[f],h=e.getViewport(g),l=w.cameras[f];l.matrix.fromArray(g.transform.inverse.matrix).getInverse(l.matrix);l.projectionMatrix.fromArray(g.projectionMatrix);l.viewport.set(h.x,h.y,h.width,h.height);0===f&&w.matrix.copy(l.matrix)}}for(f=0;f<p.length;f++){d=p[f];if(e=t[f])if(e=c.getPose(e.targetRaySpace, +r),null!==e){d.matrix.fromArray(e.transform.matrix);d.matrix.decompose(d.position,d.rotation,d.scale);d.visible=!0;continue}d.visible=!1}x&&x(b)});this.setAnimationLoop=function(a){x=a};this.dispose=function(){};this.getStandingMatrix=function(){console.warn("THREE.WebXRManager: getStandingMatrix() is no longer needed.");return new Q};this.getDevice=function(){console.warn("THREE.WebXRManager: getDevice() has been deprecated.")};this.setDevice=function(){console.warn("THREE.WebXRManager: setDevice() has been deprecated.")}; +this.setFrameOfReferenceType=function(){console.warn("THREE.WebXRManager: setFrameOfReferenceType() has been deprecated.")};this.submitFrame=function(){}}function hg(a){var b;function c(){qa=new bj(K);Fa=new $i(K,qa,a);!1===Fa.isWebGL2&&(qa.get("WEBGL_depth_texture"),qa.get("OES_texture_float"),qa.get("OES_texture_half_float"),qa.get("OES_texture_half_float_linear"),qa.get("OES_standard_derivatives"),qa.get("OES_element_index_uint"),qa.get("ANGLE_instanced_arrays"));qa.get("OES_texture_float_linear"); +la=new Kh(K,qa,Fa);aa=new jk(K,qa,Fa);aa.scissor(ob.copy(U).multiplyScalar(fa).floor());aa.viewport(T.copy(ea).multiplyScalar(fa).floor());ca=new ej(K);Z=new ak;ba=new kk(K,qa,aa,Z,Fa,la,ca);ra=new Xi(K);xa=new cj(K,ra,ca);sa=new hj(K,xa,ra,ca);ya=new gj(K);pa=new Zj(C,qa,Fa);wa=new dk;va=new ik;na=new Yi(C,aa,sa,A);Aa=new Zi(K,qa,ca,Fa);Ba=new dj(K,qa,ca,Fa);ca.programs=pa.programs;C.capabilities=Fa;C.extensions=qa;C.properties=Z;C.renderLists=wa;C.state=aa;C.info=ca}function d(a){a.preventDefault(); +console.log("THREE.WebGLRenderer: Context Lost.");N=!0}function e(){console.log("THREE.WebGLRenderer: Context Restored.");N=!1;c()}function f(a){a=a.target;a.removeEventListener("dispose",f);g(a);Z.remove(a)}function g(a){var b=Z.get(a).program;a.program=void 0;void 0!==b&&pa.releaseProgram(b)}function h(a,b){a.render(function(a){C.renderBufferImmediate(a,b)})}function l(a,b,c,d){if(!1!==a.visible){if(a.layers.test(b.layers))if(a.isGroup)c=a.renderOrder;else if(a.isLOD)!0===a.autoUpdate&&a.update(b); +else if(a.isLight)G.pushLight(a),a.castShadow&&G.pushShadow(a);else if(a.isSprite){if(!a.frustumCulled||eg.intersectsSprite(a)){d&&Fb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(Jd);var e=sa.update(a),f=a.material;f.visible&&I.push(a,e,f,c,Fb.z,null)}}else if(a.isImmediateRenderObject)d&&Fb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(Jd),I.push(a,null,a.material,c,Fb.z,null);else if(a.isMesh||a.isLine||a.isPoints)if(a.isSkinnedMesh&&a.skeleton.frame!==ca.render.frame&&(a.skeleton.update(), +a.skeleton.frame=ca.render.frame),!a.frustumCulled||eg.intersectsObject(a))if(d&&Fb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(Jd),e=sa.update(a),f=a.material,Array.isArray(f))for(var g=e.groups,h=0,m=g.length;h<m;h++){var r=g[h],q=f[r.materialIndex];q&&q.visible&&I.push(a,e,q,c,Fb.z,r)}else f.visible&&I.push(a,e,f,c,Fb.z,null);a=a.children;h=0;for(m=a.length;h<m;h++)l(a[h],b,c,d)}}function m(a,b,c,d){for(var e=0,f=a.length;e<f;e++){var g=a[e],h=g.object,l=g.geometry,m=void 0===d?g.material: +d;g=g.group;if(c.isArrayCamera)if($b=c,ja.enabled&&ua.isAvailable())r(h,b,c,l,m,g);else for(var q=c.cameras,k=0,p=q.length;k<p;k++){var u=q[k];h.layers.test(u.layers)&&(aa.viewport(T.copy(u.viewport)),G.setupLights(u),r(h,b,u,l,m,g))}else $b=null,r(h,b,c,l,m,g)}}function r(a,c,d,e,f,g){a.onBeforeRender(C,c,d,e,f,g);G=va.get(c,$b||d);a.modelViewMatrix.multiplyMatrices(d.matrixWorldInverse,a.matrixWorld);a.normalMatrix.getNormalMatrix(a.modelViewMatrix);if(a.isImmediateRenderObject){aa.setMaterial(f); +var l=k(d,c.fog,f,a);Je=b=null;Y=!1;h(a,l)}else C.renderBufferDirect(d,c.fog,e,f,a,g);a.onAfterRender(C,c,d,e,f,g);G=va.get(c,$b||d)}function q(a,b,c){var d=Z.get(a),e=G.state.lights,h=e.state.version;c=pa.getParameters(a,e.state,G.state.shadowsArray,b,Pa.numPlanes,Pa.numIntersection,c);var l=pa.getProgramCacheKey(a,c),m=d.program,r=!0;if(void 0===m)a.addEventListener("dispose",f);else if(m.cacheKey!==l)g(a);else{if(d.lightsStateVersion!==h)d.lightsStateVersion=h;else if(void 0!==c.shaderID)return; +r=!1}r&&(c.shaderID?(l=cb[c.shaderID],d.shader={name:a.type,uniforms:Xb(l.uniforms),vertexShader:l.vertexShader,fragmentShader:l.fragmentShader}):d.shader={name:a.type,uniforms:a.uniforms,vertexShader:a.vertexShader,fragmentShader:a.fragmentShader},a.onBeforeCompile(d.shader,C),l=pa.getProgramCacheKey(a,c),m=pa.acquireProgram(a,d.shader,c,l),d.program=m,a.program=m);c=m.getAttributes();if(a.morphTargets)for(l=a.numSupportedMorphTargets=0;l<C.maxMorphTargets;l++)0<=c["morphTarget"+l]&&a.numSupportedMorphTargets++; +if(a.morphNormals)for(l=a.numSupportedMorphNormals=0;l<C.maxMorphNormals;l++)0<=c["morphNormal"+l]&&a.numSupportedMorphNormals++;c=d.shader.uniforms;if(!a.isShaderMaterial&&!a.isRawShaderMaterial||!0===a.clipping)d.numClippingPlanes=Pa.numPlanes,d.numIntersection=Pa.numIntersection,c.clippingPlanes=Pa.uniform;d.fog=b;d.needsLights=a.isMeshLambertMaterial||a.isMeshPhongMaterial||a.isMeshStandardMaterial||a.isShadowMaterial||a.isShaderMaterial&&!0===a.lights;d.lightsStateVersion=h;d.needsLights&&(c.ambientLightColor.value= +e.state.ambient,c.lightProbe.value=e.state.probe,c.directionalLights.value=e.state.directional,c.spotLights.value=e.state.spot,c.rectAreaLights.value=e.state.rectArea,c.pointLights.value=e.state.point,c.hemisphereLights.value=e.state.hemi,c.directionalShadowMap.value=e.state.directionalShadowMap,c.directionalShadowMatrix.value=e.state.directionalShadowMatrix,c.spotShadowMap.value=e.state.spotShadowMap,c.spotShadowMatrix.value=e.state.spotShadowMatrix,c.pointShadowMap.value=e.state.pointShadowMap, +c.pointShadowMatrix.value=e.state.pointShadowMatrix);a=d.program.getUniforms();a=Cb.seqWithValue(a.seq,c);d.uniformsList=a}function k(a,b,c,d){ba.resetTextureUnits();var e=Z.get(c),f=G.state.lights;He&&(ta||a!==X)&&Pa.setState(c.clippingPlanes,c.clipIntersection,c.clipShadows,a,e,a===X&&c.id===ha);!1===c.needsUpdate&&(void 0===e.program?c.needsUpdate=!0:c.fog&&e.fog!==b?c.needsUpdate=!0:e.needsLights&&e.lightsStateVersion!==f.state.version?c.needsUpdate=!0:void 0===e.numClippingPlanes||e.numClippingPlanes=== +Pa.numPlanes&&e.numIntersection===Pa.numIntersection||(c.needsUpdate=!0));c.needsUpdate&&(q(c,b,d),c.needsUpdate=!1);var g=!1,h=!1,l=!1;f=e.program;var m=f.getUniforms(),r=e.shader.uniforms;aa.useProgram(f.program)&&(l=h=g=!0);c.id!==ha&&(ha=c.id,h=!0);if(g||X!==a){0<f.numMultiviewViews?ua.updateCameraProjectionMatricesUniform(a,m):m.setValue(K,"projectionMatrix",a.projectionMatrix);Fa.logarithmicDepthBuffer&&m.setValue(K,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2));X!==a&&(X=a,l=h=!0);if(c.isShaderMaterial|| +c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.envMap)g=m.map.cameraPosition,void 0!==g&&g.setValue(K,Fb.setFromMatrixPosition(a.matrixWorld));if(c.isMeshPhongMaterial||c.isMeshLambertMaterial||c.isMeshBasicMaterial||c.isMeshStandardMaterial||c.isShaderMaterial||c.skinning)0<f.numMultiviewViews?ua.updateCameraViewMatricesUniform(a,m):m.setValue(K,"viewMatrix",a.matrixWorldInverse)}if(c.skinning&&(m.setOptional(K,d,"bindMatrix"),m.setOptional(K,d,"bindMatrixInverse"),g=d.skeleton)){var k=g.bones; +if(Fa.floatVertexTextures){if(void 0===g.boneTexture){k=Math.sqrt(4*k.length);k=P.ceilPowerOfTwo(k);k=Math.max(k,4);var u=new Float32Array(k*k*4);u.set(g.boneMatrices);var n=new Yb(u,k,k,1023,1015);g.boneMatrices=u;g.boneTexture=n;g.boneTextureSize=k}m.setValue(K,"boneTexture",g.boneTexture,ba);m.setValue(K,"boneTextureSize",g.boneTextureSize)}else m.setOptional(K,g,"boneMatrices")}if(h||e.receiveShadow!==d.receiveShadow)e.receiveShadow=d.receiveShadow,m.setValue(K,"receiveShadow",d.receiveShadow); +if(h){m.setValue(K,"toneMappingExposure",C.toneMappingExposure);m.setValue(K,"toneMappingWhitePoint",C.toneMappingWhitePoint);e.needsLights&&(h=l,r.ambientLightColor.needsUpdate=h,r.lightProbe.needsUpdate=h,r.directionalLights.needsUpdate=h,r.pointLights.needsUpdate=h,r.spotLights.needsUpdate=h,r.rectAreaLights.needsUpdate=h,r.hemisphereLights.needsUpdate=h);b&&c.fog&&(r.fogColor.value.copy(b.color),b.isFog?(r.fogNear.value=b.near,r.fogFar.value=b.far):b.isFogExp2&&(r.fogDensity.value=b.density)); +if(c.isMeshBasicMaterial)p(r,c);else if(c.isMeshLambertMaterial)p(r,c),c.emissiveMap&&(r.emissiveMap.value=c.emissiveMap);else if(c.isMeshPhongMaterial)p(r,c),c.isMeshToonMaterial?(t(r,c),c.gradientMap&&(r.gradientMap.value=c.gradientMap)):t(r,c);else if(c.isMeshStandardMaterial)p(r,c),c.isMeshPhysicalMaterial?(v(r,c),r.reflectivity.value=c.reflectivity,r.clearcoat.value=c.clearcoat,r.clearcoatRoughness.value=c.clearcoatRoughness,c.sheen&&r.sheen.value.copy(c.sheen),c.clearcoatNormalMap&&(r.clearcoatNormalScale.value.copy(c.clearcoatNormalScale), +r.clearcoatNormalMap.value=c.clearcoatNormalMap,1===c.side&&r.clearcoatNormalScale.value.negate()),r.transparency.value=c.transparency):v(r,c);else if(c.isMeshMatcapMaterial)p(r,c),c.matcap&&(r.matcap.value=c.matcap),c.bumpMap&&(r.bumpMap.value=c.bumpMap,r.bumpScale.value=c.bumpScale,1===c.side&&(r.bumpScale.value*=-1)),c.normalMap&&(r.normalMap.value=c.normalMap,r.normalScale.value.copy(c.normalScale),1===c.side&&r.normalScale.value.negate()),c.displacementMap&&(r.displacementMap.value=c.displacementMap, +r.displacementScale.value=c.displacementScale,r.displacementBias.value=c.displacementBias);else if(c.isMeshDepthMaterial)p(r,c),c.displacementMap&&(r.displacementMap.value=c.displacementMap,r.displacementScale.value=c.displacementScale,r.displacementBias.value=c.displacementBias);else if(c.isMeshDistanceMaterial)p(r,c),c.displacementMap&&(r.displacementMap.value=c.displacementMap,r.displacementScale.value=c.displacementScale,r.displacementBias.value=c.displacementBias),r.referencePosition.value.copy(c.referencePosition), +r.nearDistance.value=c.nearDistance,r.farDistance.value=c.farDistance;else if(c.isMeshNormalMaterial)p(r,c),c.bumpMap&&(r.bumpMap.value=c.bumpMap,r.bumpScale.value=c.bumpScale,1===c.side&&(r.bumpScale.value*=-1)),c.normalMap&&(r.normalMap.value=c.normalMap,r.normalScale.value.copy(c.normalScale),1===c.side&&r.normalScale.value.negate()),c.displacementMap&&(r.displacementMap.value=c.displacementMap,r.displacementScale.value=c.displacementScale,r.displacementBias.value=c.displacementBias);else if(c.isLineBasicMaterial)r.diffuse.value.copy(c.color), +r.opacity.value=c.opacity,c.isLineDashedMaterial&&(r.dashSize.value=c.dashSize,r.totalSize.value=c.dashSize+c.gapSize,r.scale.value=c.scale);else if(c.isPointsMaterial){r.diffuse.value.copy(c.color);r.opacity.value=c.opacity;r.size.value=c.size*fa;r.scale.value=.5*W;c.map&&(r.map.value=c.map);c.alphaMap&&(r.alphaMap.value=c.alphaMap);if(c.map)var y=c.map;else c.alphaMap&&(y=c.alphaMap);void 0!==y&&(!0===y.matrixAutoUpdate&&y.updateMatrix(),r.uvTransform.value.copy(y.matrix))}else if(c.isSpriteMaterial){r.diffuse.value.copy(c.color); +r.opacity.value=c.opacity;r.rotation.value=c.rotation;c.map&&(r.map.value=c.map);c.alphaMap&&(r.alphaMap.value=c.alphaMap);if(c.map)var w=c.map;else c.alphaMap&&(w=c.alphaMap);void 0!==w&&(!0===w.matrixAutoUpdate&&w.updateMatrix(),r.uvTransform.value.copy(w.matrix))}else c.isShadowMaterial&&(r.color.value.copy(c.color),r.opacity.value=c.opacity);void 0!==r.ltc_1&&(r.ltc_1.value=L.LTC_1);void 0!==r.ltc_2&&(r.ltc_2.value=L.LTC_2);Cb.upload(K,e.uniformsList,r,ba);c.isShaderMaterial&&(c.uniformsNeedUpdate= +!1)}c.isShaderMaterial&&!0===c.uniformsNeedUpdate&&(Cb.upload(K,e.uniformsList,r,ba),c.uniformsNeedUpdate=!1);c.isSpriteMaterial&&m.setValue(K,"center",d.center);0<f.numMultiviewViews?ua.updateObjectMatricesUniforms(d,a,m):(m.setValue(K,"modelViewMatrix",d.modelViewMatrix),m.setValue(K,"normalMatrix",d.normalMatrix));m.setValue(K,"modelMatrix",d.matrixWorld);return f}function p(a,b){a.opacity.value=b.opacity;b.color&&a.diffuse.value.copy(b.color);b.emissive&&a.emissive.value.copy(b.emissive).multiplyScalar(b.emissiveIntensity); +b.map&&(a.map.value=b.map);b.alphaMap&&(a.alphaMap.value=b.alphaMap);b.specularMap&&(a.specularMap.value=b.specularMap);b.envMap&&(a.envMap.value=b.envMap,a.flipEnvMap.value=b.envMap.isCubeTexture?-1:1,a.reflectivity.value=b.reflectivity,a.refractionRatio.value=b.refractionRatio,a.maxMipLevel.value=Z.get(b.envMap).__maxMipLevel);b.lightMap&&(a.lightMap.value=b.lightMap,a.lightMapIntensity.value=b.lightMapIntensity);b.aoMap&&(a.aoMap.value=b.aoMap,a.aoMapIntensity.value=b.aoMapIntensity);if(b.map)var c= +b.map;else b.specularMap?c=b.specularMap:b.displacementMap?c=b.displacementMap:b.normalMap?c=b.normalMap:b.bumpMap?c=b.bumpMap:b.roughnessMap?c=b.roughnessMap:b.metalnessMap?c=b.metalnessMap:b.alphaMap?c=b.alphaMap:b.emissiveMap&&(c=b.emissiveMap);void 0!==c&&(c.isWebGLRenderTarget&&(c=c.texture),!0===c.matrixAutoUpdate&&c.updateMatrix(),a.uvTransform.value.copy(c.matrix))}function t(a,b){a.specular.value.copy(b.specular);a.shininess.value=Math.max(b.shininess,1E-4);b.emissiveMap&&(a.emissiveMap.value= +b.emissiveMap);b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale,1===b.side&&(a.bumpScale.value*=-1));b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale),1===b.side&&a.normalScale.value.negate());b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias)}function v(a,b){a.roughness.value=b.roughness;a.metalness.value=b.metalness;b.roughnessMap&&(a.roughnessMap.value= +b.roughnessMap);b.metalnessMap&&(a.metalnessMap.value=b.metalnessMap);b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap);b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale,1===b.side&&(a.bumpScale.value*=-1));b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale),1===b.side&&a.normalScale.value.negate());b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias); +b.envMap&&(a.envMapIntensity.value=b.envMapIntensity)}a=a||{};var y=void 0!==a.canvas?a.canvas:document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),w=void 0!==a.context?a.context:null,x=void 0!==a.alpha?a.alpha:!1,F=void 0!==a.depth?a.depth:!0,H=void 0!==a.stencil?a.stencil:!0,z=void 0!==a.antialias?a.antialias:!1,A=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,D=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,E=void 0!==a.powerPreference?a.powerPreference:"default", +J=void 0!==a.failIfMajorPerformanceCaveat?a.failIfMajorPerformanceCaveat:!1,I=null,G=null;this.domElement=y;this.debug={checkShaderErrors:!0};this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.clippingPlanes=[];this.localClippingEnabled=!1;this.gammaFactor=2;this.physicallyCorrectLights=this.gammaOutput=this.gammaInput=!1;this.toneMappingWhitePoint=this.toneMappingExposure=this.toneMapping=1;this.maxMorphTargets=8;this.maxMorphNormals=4;var C=this, +N=!1,O=null,S=0,V=0,R=null,Ie=null,ha=-1;var Je=b=null;var Y=!1;var X=null,$b=null,T=new da,ob=new da,ka=null,M=y.width,W=y.height,fa=1,ea=new da(0,0,M,W),U=new da(0,0,M,W),oa=!1,eg=new Ed,Pa=new aj,He=!1,ta=!1,Jd=new Q,Fb=new n;try{x={alpha:x,depth:F,stencil:H,antialias:z,premultipliedAlpha:A,preserveDrawingBuffer:D,powerPreference:E,failIfMajorPerformanceCaveat:J,xrCompatible:!0};y.addEventListener("webglcontextlost",d,!1);y.addEventListener("webglcontextrestored",e,!1);var K=w||y.getContext("webgl", +x)||y.getContext("experimental-webgl",x);if(null===K){if(null!==y.getContext("webgl"))throw Error("Error creating WebGL context with your selected attributes.");throw Error("Error creating WebGL context.");}void 0===K.getShaderPrecisionFormat&&(K.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(Ph){throw console.error("THREE.WebGLRenderer: "+Ph.message),Ph;}var qa,Fa,aa,ca,Z,ba,ra,xa,sa,pa,wa,va,na,ya,Aa,Ba,la;c();var ja="undefined"!==typeof navigator&&"xr"in navigator&& +"isSessionSupported"in navigator.xr?new Oh(C,K):new gg(C);this.vr=ja;var ua=new lk(C,K),Ea=new Ih(C,sa,Fa.maxTextureSize);this.shadowMap=Ea;this.getContext=function(){return K};this.getContextAttributes=function(){return K.getContextAttributes()};this.forceContextLoss=function(){var a=qa.get("WEBGL_lose_context");a&&a.loseContext()};this.forceContextRestore=function(){var a=qa.get("WEBGL_lose_context");a&&a.restoreContext()};this.getPixelRatio=function(){return fa};this.setPixelRatio=function(a){void 0!== +a&&(fa=a,this.setSize(M,W,!1))};this.getSize=function(a){void 0===a&&(console.warn("WebGLRenderer: .getsize() now requires a Vector2 as an argument"),a=new B);return a.set(M,W)};this.setSize=function(a,b,c){ja.isPresenting()?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(M=a,W=b,y.width=Math.floor(a*fa),y.height=Math.floor(b*fa),!1!==c&&(y.style.width=a+"px",y.style.height=b+"px"),this.setViewport(0,0,a,b))};this.getDrawingBufferSize=function(a){void 0===a&& +(console.warn("WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument"),a=new B);return a.set(M*fa,W*fa).floor()};this.setDrawingBufferSize=function(a,b,c){M=a;W=b;fa=c;y.width=Math.floor(a*c);y.height=Math.floor(b*c);this.setViewport(0,0,a,b)};this.getCurrentViewport=function(a){void 0===a&&(console.warn("WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument"),a=new da);return a.copy(T)};this.getViewport=function(a){return a.copy(ea)};this.setViewport=function(a, +b,c,d){a.isVector4?ea.set(a.x,a.y,a.z,a.w):ea.set(a,b,c,d);aa.viewport(T.copy(ea).multiplyScalar(fa).floor())};this.getScissor=function(a){return a.copy(U)};this.setScissor=function(a,b,c,d){a.isVector4?U.set(a.x,a.y,a.z,a.w):U.set(a,b,c,d);aa.scissor(ob.copy(U).multiplyScalar(fa).floor())};this.getScissorTest=function(){return oa};this.setScissorTest=function(a){aa.setScissorTest(oa=a)};this.getClearColor=function(){return na.getClearColor()};this.setClearColor=function(){na.setClearColor.apply(na, +arguments)};this.getClearAlpha=function(){return na.getClearAlpha()};this.setClearAlpha=function(){na.setClearAlpha.apply(na,arguments)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=16384;if(void 0===b||b)d|=256;if(void 0===c||c)d|=1024;K.clear(d)};this.clearColor=function(){this.clear(!0,!1,!1)};this.clearDepth=function(){this.clear(!1,!0,!1)};this.clearStencil=function(){this.clear(!1,!1,!0)};this.dispose=function(){y.removeEventListener("webglcontextlost",d,!1);y.removeEventListener("webglcontextrestored", +e,!1);wa.dispose();va.dispose();Z.dispose();sa.dispose();ja.dispose();za.stop()};this.renderBufferImmediate=function(a,b){aa.initAttributes();var c=Z.get(a);a.hasPositions&&!c.position&&(c.position=K.createBuffer());a.hasNormals&&!c.normal&&(c.normal=K.createBuffer());a.hasUvs&&!c.uv&&(c.uv=K.createBuffer());a.hasColors&&!c.color&&(c.color=K.createBuffer());b=b.getAttributes();a.hasPositions&&(K.bindBuffer(34962,c.position),K.bufferData(34962,a.positionArray,35048),aa.enableAttribute(b.position), +K.vertexAttribPointer(b.position,3,5126,!1,0,0));a.hasNormals&&(K.bindBuffer(34962,c.normal),K.bufferData(34962,a.normalArray,35048),aa.enableAttribute(b.normal),K.vertexAttribPointer(b.normal,3,5126,!1,0,0));a.hasUvs&&(K.bindBuffer(34962,c.uv),K.bufferData(34962,a.uvArray,35048),aa.enableAttribute(b.uv),K.vertexAttribPointer(b.uv,2,5126,!1,0,0));a.hasColors&&(K.bindBuffer(34962,c.color),K.bufferData(34962,a.colorArray,35048),aa.enableAttribute(b.color),K.vertexAttribPointer(b.color,3,5126,!1,0,0)); +aa.disableUnusedAttributes();K.drawArrays(4,0,a.count);a.count=0};this.renderBufferDirect=function(a,c,d,e,f,g){var h=f.isMesh&&0>f.matrixWorld.determinant();aa.setMaterial(e,h);var l=k(a,c,e,f),m=!1;if(b!==d.id||Je!==l.id||Y!==(!0===e.wireframe))b=d.id,Je=l.id,Y=!0===e.wireframe,m=!0;f.morphTargetInfluences&&(ya.update(f,d,e,l),m=!0);h=d.index;var r=d.attributes.position;c=1;!0===e.wireframe&&(h=xa.getWireframeAttribute(d),c=2);a=Aa;if(null!==h){var q=ra.get(h);a=Ba;a.setIndex(q)}if(m){if(!1!==Fa.isWebGL2|| +!f.isInstancedMesh&&!d.isInstancedBufferGeometry||null!==qa.get("ANGLE_instanced_arrays")){aa.initAttributes();m=d.attributes;l=l.getAttributes();var u=e.defaultAttributeValues;for(H in l){var p=l[H];if(0<=p){var t=m[H];if(void 0!==t){var n=t.normalized,v=t.itemSize,y=ra.get(t);if(void 0!==y){var w=y.buffer,x=y.type;y=y.bytesPerElement;if(t.isInterleavedBufferAttribute){var z=t.data,F=z.stride;t=t.offset;z&&z.isInstancedInterleavedBuffer?(aa.enableAttributeAndDivisor(p,z.meshPerAttribute),void 0=== +d.maxInstancedCount&&(d.maxInstancedCount=z.meshPerAttribute*z.count)):aa.enableAttribute(p);K.bindBuffer(34962,w);K.vertexAttribPointer(p,v,x,n,F*y,t*y)}else t.isInstancedBufferAttribute?(aa.enableAttributeAndDivisor(p,t.meshPerAttribute),void 0===d.maxInstancedCount&&(d.maxInstancedCount=t.meshPerAttribute*t.count)):aa.enableAttribute(p),K.bindBuffer(34962,w),K.vertexAttribPointer(p,v,x,n,0,0)}}else if("instanceMatrix"===H)y=ra.get(f.instanceMatrix),void 0!==y&&(w=y.buffer,x=y.type,aa.enableAttributeAndDivisor(p+ +0,1),aa.enableAttributeAndDivisor(p+1,1),aa.enableAttributeAndDivisor(p+2,1),aa.enableAttributeAndDivisor(p+3,1),K.bindBuffer(34962,w),K.vertexAttribPointer(p+0,4,x,!1,64,0),K.vertexAttribPointer(p+1,4,x,!1,64,16),K.vertexAttribPointer(p+2,4,x,!1,64,32),K.vertexAttribPointer(p+3,4,x,!1,64,48));else if(void 0!==u&&(n=u[H],void 0!==n))switch(n.length){case 2:K.vertexAttrib2fv(p,n);break;case 3:K.vertexAttrib3fv(p,n);break;case 4:K.vertexAttrib4fv(p,n);break;default:K.vertexAttrib1fv(p,n)}}}aa.disableUnusedAttributes()}null!== +h&&K.bindBuffer(34963,q.buffer)}q=Infinity;null!==h?q=h.count:void 0!==r&&(q=r.count);h=d.drawRange.start*c;r=null!==g?g.start*c:0;var H=Math.max(h,r);g=Math.max(0,Math.min(q,h+d.drawRange.count*c,r+(null!==g?g.count*c:Infinity))-1-H+1);if(0!==g){if(f.isMesh)if(!0===e.wireframe)aa.setLineWidth(e.wireframeLinewidth*(null===R?fa:1)),a.setMode(1);else switch(f.drawMode){case 0:a.setMode(4);break;case 1:a.setMode(5);break;case 2:a.setMode(6)}else f.isLine?(e=e.linewidth,void 0===e&&(e=1),aa.setLineWidth(e* +(null===R?fa:1)),f.isLineSegments?a.setMode(1):f.isLineLoop?a.setMode(2):a.setMode(3)):f.isPoints?a.setMode(0):f.isSprite&&a.setMode(4);f.isInstancedMesh?a.renderInstances(d,H,g,f.count):d.isInstancedBufferGeometry?a.renderInstances(d,H,g,d.maxInstancedCount):a.render(H,g)}};this.compile=function(a,b){G=va.get(a,b);G.init();a.traverse(function(a){a.isLight&&(G.pushLight(a),a.castShadow&&G.pushShadow(a))});G.setupLights(b);a.traverse(function(b){if(b.material)if(Array.isArray(b.material))for(var c= +0;c<b.material.length;c++)q(b.material[c],a.fog,b);else q(b.material,a.fog,b)})};var Da=null,za=new ag;za.setAnimationLoop(function(a){ja.isPresenting()||Da&&Da(a)});"undefined"!==typeof window&&za.setContext(window);this.setAnimationLoop=function(a){Da=a;ja.setAnimationLoop(a);za.start()};this.render=function(a,c,d,e){if(void 0!==d){console.warn("THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.");var f=d}if(void 0!==e){console.warn("THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead."); +var g=e}c&&c.isCamera?N||(Je=b=null,Y=!1,ha=-1,X=null,!0===a.autoUpdate&&a.updateMatrixWorld(),null===c.parent&&c.updateMatrixWorld(),ja.enabled&&(c=ja.getCamera(c)),G=va.get(a,c),G.init(),a.onBeforeRender(C,a,c,f||R),Jd.multiplyMatrices(c.projectionMatrix,c.matrixWorldInverse),eg.setFromMatrix(Jd),ta=this.localClippingEnabled,He=Pa.init(this.clippingPlanes,ta,c),I=wa.get(a,c),I.init(),l(a,c,0,C.sortObjects),!0===C.sortObjects&&I.sort(),He&&Pa.beginShadows(),Ea.render(G.state.shadowsArray,a,c),G.setupLights(c), +He&&Pa.endShadows(),this.info.autoReset&&this.info.reset(),void 0!==f&&this.setRenderTarget(f),ja.enabled&&ua.isAvailable()&&ua.attachCamera(c),na.render(I,a,c,g),d=I.opaque,e=I.transparent,a.overrideMaterial?(f=a.overrideMaterial,d.length&&m(d,a,c,f),e.length&&m(e,a,c,f)):(d.length&&m(d,a,c),e.length&&m(e,a,c)),a.onAfterRender(C,a,c),null!==R&&(ba.updateRenderTargetMipmap(R),ba.updateMultisampleRenderTarget(R)),aa.buffers.depth.setTest(!0),aa.buffers.depth.setMask(!0),aa.buffers.color.setMask(!0), +aa.setPolygonOffset(!1),ja.enabled&&(ua.isAvailable()&&ua.detachCamera(c),ja.submitFrame()),G=I=null):console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.")};this.setFramebuffer=function(a){O!==a&&null===R&&K.bindFramebuffer(36160,a);O=a};this.getActiveCubeFace=function(){return S};this.getActiveMipmapLevel=function(){return V};this.getRenderTarget=function(){return R};this.setRenderTarget=function(a,b,c){R=a;S=b;V=c;a&&void 0===Z.get(a).__webglFramebuffer&&ba.setupRenderTarget(a); +var d=O,e=!1;a?(d=Z.get(a).__webglFramebuffer,a.isWebGLRenderTargetCube?(d=d[b||0],e=!0):d=a.isWebGLMultisampleRenderTarget?Z.get(a).__webglMultisampledFramebuffer:d,T.copy(a.viewport),ob.copy(a.scissor),ka=a.scissorTest):(T.copy(ea).multiplyScalar(fa).floor(),ob.copy(U).multiplyScalar(fa).floor(),ka=oa);Ie!==d&&(K.bindFramebuffer(36160,d),Ie=d);aa.viewport(T);aa.scissor(ob);aa.setScissorTest(ka);e&&(a=Z.get(a.texture),K.framebufferTexture2D(36160,36064,34069+(b||0),a.__webglTexture,c||0))};this.readRenderTargetPixels= +function(a,b,c,d,e,f,g){if(a&&a.isWebGLRenderTarget){var h=Z.get(a).__webglFramebuffer;a.isWebGLRenderTargetCube&&void 0!==g&&(h=h[g]);if(h){g=!1;h!==Ie&&(K.bindFramebuffer(36160,h),g=!0);try{var l=a.texture,m=l.format,r=l.type;1023!==m&&la.convert(m)!==K.getParameter(35739)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):1009===r||la.convert(r)===K.getParameter(35738)||1015===r&&(Fa.isWebGL2||qa.get("OES_texture_float")|| +qa.get("WEBGL_color_buffer_float"))||1016===r&&(Fa.isWebGL2?qa.get("EXT_color_buffer_float"):qa.get("EXT_color_buffer_half_float"))?36053===K.checkFramebufferStatus(36160)?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&K.readPixels(b,c,d,e,la.convert(m),la.convert(r),f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{g&& +K.bindFramebuffer(36160,Ie)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")};this.copyFramebufferToTexture=function(a,b,c){void 0===c&&(c=0);var d=Math.pow(2,-c),e=Math.floor(b.image.width*d);d=Math.floor(b.image.height*d);var f=la.convert(b.format);ba.setTexture2D(b,0);K.copyTexImage2D(3553,c,f,a.x,a.y,e,d,0);aa.unbindTexture()};this.copyTextureToTexture=function(a,b,c,d){var e=b.image.width,f=b.image.height,g=la.convert(c.format), +h=la.convert(c.type);ba.setTexture2D(c,0);b.isDataTexture?K.texSubImage2D(3553,d||0,a.x,a.y,e,f,g,h,b.image.data):K.texSubImage2D(3553,d||0,a.x,a.y,g,h,b.image);aa.unbindTexture()};this.initTexture=function(a){ba.setTexture2D(a,0);aa.unbindTexture()};"undefined"!==typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}function Le(a,b){this.name="";this.color=new J(a);this.density=void 0!==b?b:2.5E-4}function Me(a,b,c){this.name="";this.color=new J(a); +this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3}function pb(a,b){this.array=a;this.stride=b;this.count=void 0!==a?a.length/b:0;this.usage=35044;this.updateRange={offset:0,count:-1};this.version=0}function Ld(a,b,c,d){this.data=a;this.itemSize=b;this.offset=c;this.normalized=!0===d}function Gb(a){O.call(this);this.type="SpriteMaterial";this.color=new J(16777215);this.alphaMap=this.map=null;this.rotation=0;this.transparent=this.sizeAttenuation=!0;this.setValues(a)}function Md(a){D.call(this);this.type= +"Sprite";if(void 0===Ic){Ic=new E;var b=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]);b=new pb(b,5);Ic.setIndex([0,1,2,0,2,3]);Ic.setAttribute("position",new Ld(b,3,0,!1));Ic.setAttribute("uv",new Ld(b,2,3,!1))}this.geometry=Ic;this.material=void 0!==a?a:new Gb;this.center=new B(.5,.5)}function Ne(a,b,c,d,e,f){Jc.subVectors(a,c).addScalar(.5).multiply(d);void 0!==e?(Nd.x=f*Jc.x-e*Jc.y,Nd.y=e*Jc.x+f*Jc.y):Nd.copy(Jc);a.copy(b);a.x+=Nd.x;a.y+=Nd.y;a.applyMatrix4(Qh)}function Od(){D.call(this); +this.type="LOD";Object.defineProperties(this,{levels:{enumerable:!0,value:[]}});this.autoUpdate=!0}function Pd(a,b){a&&a.isGeometry&&console.error("THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");ea.call(this,a,b);this.type="SkinnedMesh";this.bindMode="attached";this.bindMatrix=new Q;this.bindMatrixInverse=new Q}function Oe(a,b){a=a||[];this.bones=a.slice(0);this.boneMatrices=new Float32Array(16*this.bones.length);this.frame=-1;if(void 0===b)this.calculateInverses(); +else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else for(console.warn("THREE.Skeleton boneInverses is the wrong length."),this.boneInverses=[],a=0,b=this.bones.length;a<b;a++)this.boneInverses.push(new Q)}function ig(){D.call(this);this.type="Bone"}function Pe(a,b,c){ea.call(this,a,b);this.instanceMatrix=new N(new Float32Array(16*c),16);this.count=c}function R(a){O.call(this);this.type="LineBasicMaterial";this.color=new J(16777215);this.linewidth=1;this.linejoin=this.linecap="round"; +this.setValues(a)}function ra(a,b,c){1===c&&console.error("THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.");D.call(this);this.type="Line";this.geometry=void 0!==a?a:new E;this.material=void 0!==b?b:new R({color:16777215*Math.random()})}function X(a,b){ra.call(this,a,b);this.type="LineSegments"}function Qe(a,b){ra.call(this,a,b);this.type="LineLoop"}function Qa(a){O.call(this);this.type="PointsMaterial";this.color=new J(16777215);this.alphaMap=this.map= +null;this.size=1;this.sizeAttenuation=!0;this.morphTargets=!1;this.setValues(a)}function Kc(a,b){D.call(this);this.type="Points";this.geometry=void 0!==a?a:new E;this.material=void 0!==b?b:new Qa({color:16777215*Math.random()});this.updateMorphTargets()}function jg(a,b,c,d,e,f,g){var h=kg.distanceSqToPoint(a);h<c&&(c=new n,kg.closestPointToPoint(a,c),c.applyMatrix4(d),a=e.ray.origin.distanceTo(c),a<e.near||a>e.far||f.push({distance:a,distanceToRay:Math.sqrt(h),point:c,index:b,face:null,object:g}))} +function lg(a,b,c,d,e,f,g,h,l){Y.call(this,a,b,c,d,e,f,g,h,l);this.format=void 0!==g?g:1022;this.minFilter=void 0!==f?f:1006;this.magFilter=void 0!==e?e:1006;this.generateMipmaps=!1}function Lc(a,b,c,d,e,f,g,h,l,m,r,q){Y.call(this,null,f,g,h,l,m,d,e,r,q);this.image={width:b,height:c};this.mipmaps=a;this.generateMipmaps=this.flipY=!1}function Qd(a,b,c,d,e,f,g,h,l){Y.call(this,a,b,c,d,e,f,g,h,l);this.needsUpdate=!0}function Rd(a,b,c,d,e,f,g,h,l,m){m=void 0!==m?m:1026;if(1026!==m&&1027!==m)throw Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat"); +void 0===c&&1026===m&&(c=1012);void 0===c&&1027===m&&(c=1020);Y.call(this,null,d,e,f,g,h,m,c,l);this.image={width:a,height:b};this.magFilter=void 0!==g?g:1003;this.minFilter=void 0!==h?h:1003;this.generateMipmaps=this.flipY=!1}function Mc(a){E.call(this);this.type="WireframeGeometry";var b=[],c,d,e,f=[0,0],g={},h=["a","b","c"];if(a&&a.isGeometry){var l=a.faces;var m=0;for(d=l.length;m<d;m++){var r=l[m];for(c=0;3>c;c++){var q=r[h[c]];var k=r[h[(c+1)%3]];f[0]=Math.min(q,k);f[1]=Math.max(q,k);q=f[0]+ +","+f[1];void 0===g[q]&&(g[q]={index1:f[0],index2:f[1]})}}for(q in g)m=g[q],h=a.vertices[m.index1],b.push(h.x,h.y,h.z),h=a.vertices[m.index2],b.push(h.x,h.y,h.z)}else if(a&&a.isBufferGeometry)if(h=new n,null!==a.index){l=a.attributes.position;r=a.index;var p=a.groups;0===p.length&&(p=[{start:0,count:r.count,materialIndex:0}]);a=0;for(e=p.length;a<e;++a)for(m=p[a],c=m.start,d=m.count,m=c,d=c+d;m<d;m+=3)for(c=0;3>c;c++)q=r.getX(m+c),k=r.getX(m+(c+1)%3),f[0]=Math.min(q,k),f[1]=Math.max(q,k),q=f[0]+","+ +f[1],void 0===g[q]&&(g[q]={index1:f[0],index2:f[1]});for(q in g)m=g[q],h.fromBufferAttribute(l,m.index1),b.push(h.x,h.y,h.z),h.fromBufferAttribute(l,m.index2),b.push(h.x,h.y,h.z)}else for(l=a.attributes.position,m=0,d=l.count/3;m<d;m++)for(c=0;3>c;c++)g=3*m+c,h.fromBufferAttribute(l,g),b.push(h.x,h.y,h.z),g=3*m+(c+1)%3,h.fromBufferAttribute(l,g),b.push(h.x,h.y,h.z);this.setAttribute("position",new A(b,3))}function Nc(a,b,c){C.call(this);this.type="ParametricGeometry";this.parameters={func:a,slices:b, +stacks:c};this.fromBufferGeometry(new ac(a,b,c));this.mergeVertices()}function ac(a,b,c){E.call(this);this.type="ParametricBufferGeometry";this.parameters={func:a,slices:b,stacks:c};var d=[],e=[],f=[],g=[],h=new n,l=new n,m=new n,r=new n,q=new n,k,p;3>a.length&&console.error("THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.");var t=b+1;for(k=0;k<=c;k++){var v=k/c;for(p=0;p<=b;p++){var y=p/b;a(y,v,l);e.push(l.x,l.y,l.z);0<=y-1E-5?(a(y-1E-5,v,m),r.subVectors(l,m)):(a(y+ +1E-5,v,m),r.subVectors(m,l));0<=v-1E-5?(a(y,v-1E-5,m),q.subVectors(l,m)):(a(y,v+1E-5,m),q.subVectors(m,l));h.crossVectors(r,q).normalize();f.push(h.x,h.y,h.z);g.push(y,v)}}for(k=0;k<c;k++)for(p=0;p<b;p++)a=k*t+p+1,h=(k+1)*t+p+1,l=(k+1)*t+p,d.push(k*t+p,a,l),d.push(a,h,l);this.setIndex(d);this.setAttribute("position",new A(e,3));this.setAttribute("normal",new A(f,3));this.setAttribute("uv",new A(g,2))}function Sd(a,b,c,d){C.call(this);this.type="PolyhedronGeometry";this.parameters={vertices:a,indices:b, +radius:c,detail:d};this.fromBufferGeometry(new Ea(a,b,c,d));this.mergeVertices()}function Ea(a,b,c,d){function e(a){h.push(a.x,a.y,a.z)}function f(b,c){b*=3;c.x=a[b+0];c.y=a[b+1];c.z=a[b+2]}function g(a,b,c,d){0>d&&1===a.x&&(l[b]=a.x-1);0===c.x&&0===c.z&&(l[b]=d/2/Math.PI+.5)}E.call(this);this.type="PolyhedronBufferGeometry";this.parameters={vertices:a,indices:b,radius:c,detail:d};c=c||1;d=d||0;var h=[],l=[];(function(a){for(var c=new n,d=new n,g=new n,h=0;h<b.length;h+=3){f(b[h+0],c);f(b[h+1],d); +f(b[h+2],g);var l,m,k=c,w=d,x=g,F=Math.pow(2,a),H=[];for(m=0;m<=F;m++){H[m]=[];var z=k.clone().lerp(x,m/F),B=w.clone().lerp(x,m/F),A=F-m;for(l=0;l<=A;l++)H[m][l]=0===l&&m===F?z:z.clone().lerp(B,l/A)}for(m=0;m<F;m++)for(l=0;l<2*(F-m)-1;l++)k=Math.floor(l/2),0===l%2?(e(H[m][k+1]),e(H[m+1][k]),e(H[m][k])):(e(H[m][k+1]),e(H[m+1][k+1]),e(H[m+1][k]))}})(d);(function(a){for(var b=new n,c=0;c<h.length;c+=3)b.x=h[c+0],b.y=h[c+1],b.z=h[c+2],b.normalize().multiplyScalar(a),h[c+0]=b.x,h[c+1]=b.y,h[c+2]=b.z})(c); +(function(){for(var a=new n,b=0;b<h.length;b+=3)a.x=h[b+0],a.y=h[b+1],a.z=h[b+2],l.push(Math.atan2(a.z,-a.x)/2/Math.PI+.5,1-(Math.atan2(-a.y,Math.sqrt(a.x*a.x+a.z*a.z))/Math.PI+.5));a=new n;b=new n;for(var c=new n,d=new n,e=new B,f=new B,k=new B,y=0,w=0;y<h.length;y+=9,w+=6){a.set(h[y+0],h[y+1],h[y+2]);b.set(h[y+3],h[y+4],h[y+5]);c.set(h[y+6],h[y+7],h[y+8]);e.set(l[w+0],l[w+1]);f.set(l[w+2],l[w+3]);k.set(l[w+4],l[w+5]);d.copy(a).add(b).add(c).divideScalar(3);var x=Math.atan2(d.z,-d.x);g(e,w+0,a,x); +g(f,w+2,b,x);g(k,w+4,c,x)}for(a=0;a<l.length;a+=6)b=l[a+0],c=l[a+2],d=l[a+4],e=Math.min(b,c,d),.9<Math.max(b,c,d)&&.1>e&&(.2>b&&(l[a+0]+=1),.2>c&&(l[a+2]+=1),.2>d&&(l[a+4]+=1))})();this.setAttribute("position",new A(h,3));this.setAttribute("normal",new A(h.slice(),3));this.setAttribute("uv",new A(l,2));0===d?this.computeVertexNormals():this.normalizeNormals()}function Td(a,b){C.call(this);this.type="TetrahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Oc(a,b));this.mergeVertices()} +function Oc(a,b){Ea.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],a,b);this.type="TetrahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Ud(a,b){C.call(this);this.type="OctahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new bc(a,b));this.mergeVertices()}function bc(a,b){Ea.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],a,b);this.type="OctahedronBufferGeometry";this.parameters= +{radius:a,detail:b}}function Vd(a,b){C.call(this);this.type="IcosahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Pc(a,b));this.mergeVertices()}function Pc(a,b){var c=(1+Math.sqrt(5))/2;Ea.call(this,[-1,c,0,1,c,0,-1,-c,0,1,-c,0,0,-1,c,0,1,c,0,-1,-c,0,1,-c,c,0,-1,c,0,1,-c,0,-1,-c,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a,b);this.type="IcosahedronBufferGeometry";this.parameters= +{radius:a,detail:b}}function Wd(a,b){C.call(this);this.type="DodecahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Qc(a,b));this.mergeVertices()}function Qc(a,b){var c=(1+Math.sqrt(5))/2,d=1/c;Ea.call(this,[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-d,-c,0,-d,c,0,d,-c,0,d,c,-d,-c,0,-d,c,0,d,-c,0,d,c,0,-c,0,-d,c,0,-d,-c,0,d,c,0,d],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2, +6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],a,b);this.type="DodecahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Xd(a,b,c,d,e,f){C.call(this);this.type="TubeGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d,closed:e};void 0!==f&&console.warn("THREE.TubeGeometry: taper has been removed.");a=new cc(a,b,c,d,e);this.tangents=a.tangents;this.normals= +a.normals;this.binormals=a.binormals;this.fromBufferGeometry(a);this.mergeVertices()}function cc(a,b,c,d,e){function f(e){r=a.getPointAt(e/b,r);var f=g.normals[e];e=g.binormals[e];for(u=0;u<=d;u++){var m=u/d*Math.PI*2,k=Math.sin(m);m=-Math.cos(m);l.x=m*f.x+k*e.x;l.y=m*f.y+k*e.y;l.z=m*f.z+k*e.z;l.normalize();t.push(l.x,l.y,l.z);h.x=r.x+c*l.x;h.y=r.y+c*l.y;h.z=r.z+c*l.z;p.push(h.x,h.y,h.z)}}E.call(this);this.type="TubeBufferGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d, +closed:e};b=b||64;c=c||1;d=d||8;e=e||!1;var g=a.computeFrenetFrames(b,e);this.tangents=g.tangents;this.normals=g.normals;this.binormals=g.binormals;var h=new n,l=new n,m=new B,r=new n,k,u,p=[],t=[],v=[],y=[];for(k=0;k<b;k++)f(k);f(!1===e?b:0);for(k=0;k<=b;k++)for(u=0;u<=d;u++)m.x=k/b,m.y=u/d,v.push(m.x,m.y);(function(){for(u=1;u<=b;u++)for(k=1;k<=d;k++){var a=(d+1)*u+(k-1),c=(d+1)*u+k,e=(d+1)*(u-1)+k;y.push((d+1)*(u-1)+(k-1),a,e);y.push(a,c,e)}})();this.setIndex(y);this.setAttribute("position",new A(p, +3));this.setAttribute("normal",new A(t,3));this.setAttribute("uv",new A(v,2))}function Yd(a,b,c,d,e,f,g){C.call(this);this.type="TorusKnotGeometry";this.parameters={radius:a,tube:b,tubularSegments:c,radialSegments:d,p:e,q:f};void 0!==g&&console.warn("THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.");this.fromBufferGeometry(new Rc(a,b,c,d,e,f));this.mergeVertices()}function Rc(a,b,c,d,e,f){function g(a,b,c,d,e){var f=Math.sin(a);b=c/b*a;c=Math.cos(b);e.x=d* +(2+c)*.5*Math.cos(a);e.y=d*(2+c)*f*.5;e.z=d*Math.sin(b)*.5}E.call(this);this.type="TorusKnotBufferGeometry";this.parameters={radius:a,tube:b,tubularSegments:c,radialSegments:d,p:e,q:f};a=a||1;b=b||.4;c=Math.floor(c)||64;d=Math.floor(d)||8;e=e||2;f=f||3;var h=[],l=[],m=[],r=[],k,u=new n,p=new n,t=new n,v=new n,y=new n,w=new n,x=new n;for(k=0;k<=c;++k){var F=k/c*e*Math.PI*2;g(F,e,f,a,t);g(F+.01,e,f,a,v);w.subVectors(v,t);x.addVectors(v,t);y.crossVectors(w,x);x.crossVectors(y,w);y.normalize();x.normalize(); +for(F=0;F<=d;++F){var H=F/d*Math.PI*2,z=-b*Math.cos(H);H=b*Math.sin(H);u.x=t.x+(z*x.x+H*y.x);u.y=t.y+(z*x.y+H*y.y);u.z=t.z+(z*x.z+H*y.z);l.push(u.x,u.y,u.z);p.subVectors(u,t).normalize();m.push(p.x,p.y,p.z);r.push(k/c);r.push(F/d)}}for(F=1;F<=c;F++)for(k=1;k<=d;k++)a=(d+1)*F+(k-1),b=(d+1)*F+k,e=(d+1)*(F-1)+k,h.push((d+1)*(F-1)+(k-1),a,e),h.push(a,b,e);this.setIndex(h);this.setAttribute("position",new A(l,3));this.setAttribute("normal",new A(m,3));this.setAttribute("uv",new A(r,2))}function Zd(a,b, +c,d,e){C.call(this);this.type="TorusGeometry";this.parameters={radius:a,tube:b,radialSegments:c,tubularSegments:d,arc:e};this.fromBufferGeometry(new Sc(a,b,c,d,e));this.mergeVertices()}function Sc(a,b,c,d,e){E.call(this);this.type="TorusBufferGeometry";this.parameters={radius:a,tube:b,radialSegments:c,tubularSegments:d,arc:e};a=a||1;b=b||.4;c=Math.floor(c)||8;d=Math.floor(d)||6;e=e||2*Math.PI;var f=[],g=[],h=[],l=[],m=new n,r=new n,k=new n,u,p;for(u=0;u<=c;u++)for(p=0;p<=d;p++){var t=p/d*e,v=u/c* +Math.PI*2;r.x=(a+b*Math.cos(v))*Math.cos(t);r.y=(a+b*Math.cos(v))*Math.sin(t);r.z=b*Math.sin(v);g.push(r.x,r.y,r.z);m.x=a*Math.cos(t);m.y=a*Math.sin(t);k.subVectors(r,m).normalize();h.push(k.x,k.y,k.z);l.push(p/d);l.push(u/c)}for(u=1;u<=c;u++)for(p=1;p<=d;p++)a=(d+1)*(u-1)+p-1,b=(d+1)*(u-1)+p,e=(d+1)*u+p,f.push((d+1)*u+p-1,a,e),f.push(a,b,e);this.setIndex(f);this.setAttribute("position",new A(g,3));this.setAttribute("normal",new A(h,3));this.setAttribute("uv",new A(l,2))}function Rh(a,b,c,d,e){for(var f, +g=0,h=b,l=c-d;h<c;h+=d)g+=(a[l]-a[h])*(a[h+1]+a[l+1]),l=h;if(e===0<g)for(e=b;e<c;e+=d)f=Sh(e,a[e],a[e+1],f);else for(e=c-d;e>=b;e-=d)f=Sh(e,a[e],a[e+1],f);f&&dc(f,f.next)&&($d(f),f=f.next);return f}function ae(a,b){if(!a)return a;b||(b=a);do{var c=!1;if(a.steiner||!dc(a,a.next)&&0!==xa(a.prev,a,a.next))a=a.next;else{$d(a);a=b=a.prev;if(a===a.next)break;c=!0}}while(c||a!==b);return b}function be(a,b,c,d,e,f,g){if(a){if(!g&&f){var h=a,l=h;do null===l.z&&(l.z=mg(l.x,l.y,d,e,f)),l.prevZ=l.prev,l=l.nextZ= +l.next;while(l!==h);l.prevZ.nextZ=null;l.prevZ=null;h=l;var m,r,k,u,p=1;do{l=h;var t=h=null;for(r=0;l;){r++;var n=l;for(m=k=0;m<p&&(k++,n=n.nextZ,n);m++);for(u=p;0<k||0<u&&n;)0!==k&&(0===u||!n||l.z<=n.z)?(m=l,l=l.nextZ,k--):(m=n,n=n.nextZ,u--),t?t.nextZ=m:h=m,m.prevZ=t,t=m;l=n}t.nextZ=null;p*=2}while(1<r)}for(h=a;a.prev!==a.next;){l=a.prev;n=a.next;if(f)t=mk(a,d,e,f);else a:if(t=a,r=t.prev,k=t,p=t.next,0<=xa(r,k,p))t=!1;else{for(m=t.next.next;m!==t.prev;){if(Tc(r.x,r.y,k.x,k.y,p.x,p.y,m.x,m.y)&&0<= +xa(m.prev,m,m.next)){t=!1;break a}m=m.next}t=!0}if(t)b.push(l.i/c),b.push(a.i/c),b.push(n.i/c),$d(a),h=a=n.next;else if(a=n,a===h){if(!g)be(ae(a),b,c,d,e,f,1);else if(1===g){g=b;h=c;l=a;do n=l.prev,t=l.next.next,!dc(n,t)&&Th(n,l,l.next,t)&&ce(n,t)&&ce(t,n)&&(g.push(n.i/h),g.push(l.i/h),g.push(t.i/h),$d(l),$d(l.next),l=a=t),l=l.next;while(l!==a);a=l;be(a,b,c,d,e,f,2)}else if(2===g)a:{g=a;do{for(h=g.next.next;h!==g.prev;){if(l=g.i!==h.i){l=g;n=h;if(t=l.next.i!==n.i&&l.prev.i!==n.i){b:{t=l;do{if(t.i!== +l.i&&t.next.i!==l.i&&t.i!==n.i&&t.next.i!==n.i&&Th(t,t.next,l,n)){t=!0;break b}t=t.next}while(t!==l);t=!1}t=!t}if(t=t&&ce(l,n)&&ce(n,l)){t=l;r=!1;k=(l.x+n.x)/2;n=(l.y+n.y)/2;do t.y>n!==t.next.y>n&&t.next.y!==t.y&&k<(t.next.x-t.x)*(n-t.y)/(t.next.y-t.y)+t.x&&(r=!r),t=t.next;while(t!==l);t=r}l=t}if(l){a=Uh(g,h);g=ae(g,g.next);a=ae(a,a.next);be(g,b,c,d,e,f);be(a,b,c,d,e,f);break a}h=h.next}g=g.next}while(g!==a)}break}}}}function mk(a,b,c,d){var e=a.prev,f=a.next;if(0<=xa(e,a,f))return!1;var g=e.x>a.x? +e.x>f.x?e.x:f.x:a.x>f.x?a.x:f.x,h=e.y>a.y?e.y>f.y?e.y:f.y:a.y>f.y?a.y:f.y,l=mg(e.x<a.x?e.x<f.x?e.x:f.x:a.x<f.x?a.x:f.x,e.y<a.y?e.y<f.y?e.y:f.y:a.y<f.y?a.y:f.y,b,c,d);b=mg(g,h,b,c,d);c=a.prevZ;for(d=a.nextZ;c&&c.z>=l&&d&&d.z<=b;){if(c!==a.prev&&c!==a.next&&Tc(e.x,e.y,a.x,a.y,f.x,f.y,c.x,c.y)&&0<=xa(c.prev,c,c.next))return!1;c=c.prevZ;if(d!==a.prev&&d!==a.next&&Tc(e.x,e.y,a.x,a.y,f.x,f.y,d.x,d.y)&&0<=xa(d.prev,d,d.next))return!1;d=d.nextZ}for(;c&&c.z>=l;){if(c!==a.prev&&c!==a.next&&Tc(e.x,e.y,a.x,a.y, +f.x,f.y,c.x,c.y)&&0<=xa(c.prev,c,c.next))return!1;c=c.prevZ}for(;d&&d.z<=b;){if(d!==a.prev&&d!==a.next&&Tc(e.x,e.y,a.x,a.y,f.x,f.y,d.x,d.y)&&0<=xa(d.prev,d,d.next))return!1;d=d.nextZ}return!0}function nk(a,b){return a.x-b.x}function ok(a,b){var c=b,d=a.x,e=a.y,f=-Infinity;do{if(e<=c.y&&e>=c.next.y&&c.next.y!==c.y){var g=c.x+(e-c.y)*(c.next.x-c.x)/(c.next.y-c.y);if(g<=d&&g>f){f=g;if(g===d){if(e===c.y)return c;if(e===c.next.y)return c.next}var h=c.x<c.next.x?c:c.next}}c=c.next}while(c!==b);if(!h)return null; +if(d===f)return h.prev;b=h;g=h.x;var l=h.y,m=Infinity;for(c=h.next;c!==b;){if(d>=c.x&&c.x>=g&&d!==c.x&&Tc(e<l?d:f,e,g,l,e<l?f:d,e,c.x,c.y)){var r=Math.abs(e-c.y)/(d-c.x);(r<m||r===m&&c.x>h.x)&&ce(c,a)&&(h=c,m=r)}c=c.next}return h}function mg(a,b,c,d,e){a=32767*(a-c)*e;b=32767*(b-d)*e;a=(a|a<<8)&16711935;a=(a|a<<4)&252645135;a=(a|a<<2)&858993459;b=(b|b<<8)&16711935;b=(b|b<<4)&252645135;b=(b|b<<2)&858993459;return(a|a<<1)&1431655765|((b|b<<1)&1431655765)<<1}function pk(a){var b=a,c=a;do{if(b.x<c.x|| +b.x===c.x&&b.y<c.y)c=b;b=b.next}while(b!==a);return c}function Tc(a,b,c,d,e,f,g,h){return 0<=(e-g)*(b-h)-(a-g)*(f-h)&&0<=(a-g)*(d-h)-(c-g)*(b-h)&&0<=(c-g)*(f-h)-(e-g)*(d-h)}function xa(a,b,c){return(b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y)}function dc(a,b){return a.x===b.x&&a.y===b.y}function Th(a,b,c,d){return dc(a,c)&&dc(b,d)||dc(a,d)&&dc(c,b)?!0:0<xa(a,b,c)!==0<xa(a,b,d)&&0<xa(c,d,a)!==0<xa(c,d,b)}function ce(a,b){return 0>xa(a.prev,a,a.next)?0<=xa(a,b,a.next)&&0<=xa(a,a.prev,b):0>xa(a,b,a.prev)|| +0>xa(a,a.next,b)}function Uh(a,b){var c=new ng(a.i,a.x,a.y),d=new ng(b.i,b.x,b.y),e=a.next,f=b.prev;a.next=b;b.prev=a;c.next=e;e.prev=c;d.next=c;c.prev=d;f.next=d;d.prev=f;return d}function Sh(a,b,c,d){a=new ng(a,b,c);d?(a.next=d.next,a.prev=d,d.next.prev=a,d.next=a):(a.prev=a,a.next=a);return a}function $d(a){a.next.prev=a.prev;a.prev.next=a.next;a.prevZ&&(a.prevZ.nextZ=a.nextZ);a.nextZ&&(a.nextZ.prevZ=a.prevZ)}function ng(a,b,c){this.i=a;this.x=b;this.y=c;this.nextZ=this.prevZ=this.z=this.next= +this.prev=null;this.steiner=!1}function Vh(a){var b=a.length;2<b&&a[b-1].equals(a[0])&&a.pop()}function Wh(a,b){for(var c=0;c<b.length;c++)a.push(b[c].x),a.push(b[c].y)}function ec(a,b){C.call(this);this.type="ExtrudeGeometry";this.parameters={shapes:a,options:b};this.fromBufferGeometry(new db(a,b));this.mergeVertices()}function db(a,b){function c(a){function c(a,b,c){b||console.error("THREE.ExtrudeGeometry: vec does not exist");return b.clone().multiplyScalar(c).add(a)}function g(a,b,c){var d=a.x- +b.x;var e=a.y-b.y;var f=c.x-a.x;var g=c.y-a.y,h=d*d+e*e;if(Math.abs(d*g-e*f)>Number.EPSILON){var l=Math.sqrt(h),m=Math.sqrt(f*f+g*g);h=b.x-e/l;b=b.y+d/l;g=((c.x-g/m-h)*g-(c.y+f/m-b)*f)/(d*g-e*f);f=h+d*g-a.x;d=b+e*g-a.y;e=f*f+d*d;if(2>=e)return new B(f,d);e=Math.sqrt(e/2)}else a=!1,d>Number.EPSILON?f>Number.EPSILON&&(a=!0):d<-Number.EPSILON?f<-Number.EPSILON&&(a=!0):Math.sign(e)===Math.sign(g)&&(a=!0),a?(f=-e,e=Math.sqrt(h)):(f=d,d=e,e=Math.sqrt(h/2));return new B(f/e,d/e)}function h(a,b){for(M=a.length;0<= +--M;){var c=M;var f=M-1;0>f&&(f=a.length-1);var g,h=x+2*D;for(g=0;g<h;g++){var l=Y*g,m=Y*(g+1),r=b+f+l,k=b+f+m;m=b+c+m;t(b+c+l);t(r);t(m);t(r);t(k);t(m);l=e.length/3;l=I.generateSideWallUV(d,e,l-6,l-3,l-2,l-1);v(l[0]);v(l[1]);v(l[3]);v(l[1]);v(l[2]);v(l[3])}}}function l(a,b,c){y.push(a);y.push(b);y.push(c)}function k(a,b,c){t(a);t(b);t(c);a=e.length/3;a=I.generateTopUV(d,e,a-3,a-2,a-1);v(a[0]);v(a[1]);v(a[2])}function t(a){e.push(y[3*a]);e.push(y[3*a+1]);e.push(y[3*a+2])}function v(a){f.push(a.x); +f.push(a.y)}var y=[],w=void 0!==b.curveSegments?b.curveSegments:12,x=void 0!==b.steps?b.steps:1,F=void 0!==b.depth?b.depth:100,H=void 0!==b.bevelEnabled?b.bevelEnabled:!0,z=void 0!==b.bevelThickness?b.bevelThickness:6,A=void 0!==b.bevelSize?b.bevelSize:z-2,C=void 0!==b.bevelOffset?b.bevelOffset:0,D=void 0!==b.bevelSegments?b.bevelSegments:3,E=b.extrudePath,I=void 0!==b.UVGenerator?b.UVGenerator:qk;void 0!==b.amount&&(console.warn("THREE.ExtrudeBufferGeometry: amount has been renamed to depth."),F= +b.amount);var G=!1;if(E){var J=E.getSpacedPoints(x);G=!0;H=!1;var L=E.computeFrenetFrames(x,!1);var N=new n;var O=new n;var P=new n}H||(C=A=z=D=0);var Q;w=a.extractPoints(w);a=w.shape;var S=w.holes;if(!qb.isClockWise(a)){a=a.reverse();var ha=0;for(Q=S.length;ha<Q;ha++){var R=S[ha];qb.isClockWise(R)&&(S[ha]=R.reverse())}}var Z=qb.triangulateShape(a,S),X=a;ha=0;for(Q=S.length;ha<Q;ha++)R=S[ha],a=a.concat(R);var T,Y=a.length,V,ca=Z.length;w=[];var M=0;var W=X.length;var fa=W-1;for(T=M+1;M<W;M++,fa++, +T++)fa===W&&(fa=0),T===W&&(T=0),w[M]=g(X[M],X[fa],X[T]);E=[];var da=w.concat();ha=0;for(Q=S.length;ha<Q;ha++){R=S[ha];var ba=[];M=0;W=R.length;fa=W-1;for(T=M+1;M<W;M++,fa++,T++)fa===W&&(fa=0),T===W&&(T=0),ba[M]=g(R[M],R[fa],R[T]);E.push(ba);da=da.concat(ba)}for(fa=0;fa<D;fa++){W=fa/D;var ea=z*Math.cos(W*Math.PI/2);T=A*Math.sin(W*Math.PI/2)+C;M=0;for(W=X.length;M<W;M++){var U=c(X[M],w[M],T);l(U.x,U.y,-ea)}ha=0;for(Q=S.length;ha<Q;ha++)for(R=S[ha],ba=E[ha],M=0,W=R.length;M<W;M++)U=c(R[M],ba[M],T),l(U.x, +U.y,-ea)}T=A+C;for(M=0;M<Y;M++)U=H?c(a[M],da[M],T):a[M],G?(O.copy(L.normals[0]).multiplyScalar(U.x),N.copy(L.binormals[0]).multiplyScalar(U.y),P.copy(J[0]).add(O).add(N),l(P.x,P.y,P.z)):l(U.x,U.y,0);for(W=1;W<=x;W++)for(M=0;M<Y;M++)U=H?c(a[M],da[M],T):a[M],G?(O.copy(L.normals[W]).multiplyScalar(U.x),N.copy(L.binormals[W]).multiplyScalar(U.y),P.copy(J[W]).add(O).add(N),l(P.x,P.y,P.z)):l(U.x,U.y,F/x*W);for(fa=D-1;0<=fa;fa--){W=fa/D;ea=z*Math.cos(W*Math.PI/2);T=A*Math.sin(W*Math.PI/2)+C;M=0;for(W=X.length;M< +W;M++)U=c(X[M],w[M],T),l(U.x,U.y,F+ea);ha=0;for(Q=S.length;ha<Q;ha++)for(R=S[ha],ba=E[ha],M=0,W=R.length;M<W;M++)U=c(R[M],ba[M],T),G?l(U.x,U.y+J[x-1].y,J[x-1].x+ea):l(U.x,U.y,F+ea)}(function(){var a=e.length/3;if(H){var b=0*Y;for(M=0;M<ca;M++)V=Z[M],k(V[2]+b,V[1]+b,V[0]+b);b=Y*(x+2*D);for(M=0;M<ca;M++)V=Z[M],k(V[0]+b,V[1]+b,V[2]+b)}else{for(M=0;M<ca;M++)V=Z[M],k(V[2],V[1],V[0]);for(M=0;M<ca;M++)V=Z[M],k(V[0]+Y*x,V[1]+Y*x,V[2]+Y*x)}d.addGroup(a,e.length/3-a,0)})();(function(){var a=e.length/3,b=0; +h(X,b);b+=X.length;ha=0;for(Q=S.length;ha<Q;ha++)R=S[ha],h(R,b),b+=R.length;d.addGroup(a,e.length/3-a,1)})()}E.call(this);this.type="ExtrudeBufferGeometry";this.parameters={shapes:a,options:b};a=Array.isArray(a)?a:[a];for(var d=this,e=[],f=[],g=0,h=a.length;g<h;g++)c(a[g]);this.setAttribute("position",new A(e,3));this.setAttribute("uv",new A(f,2));this.computeVertexNormals()}function Xh(a,b,c){c.shapes=[];if(Array.isArray(a))for(var d=0,e=a.length;d<e;d++)c.shapes.push(a[d].uuid);else c.shapes.push(a.uuid); +void 0!==b.extrudePath&&(c.options.extrudePath=b.extrudePath.toJSON());return c}function de(a,b){C.call(this);this.type="TextGeometry";this.parameters={text:a,parameters:b};this.fromBufferGeometry(new Uc(a,b));this.mergeVertices()}function Uc(a,b){b=b||{};var c=b.font;if(!c||!c.isFont)return console.error("THREE.TextGeometry: font parameter is not an instance of THREE.Font."),new C;a=c.generateShapes(a,b.size);b.depth=void 0!==b.height?b.height:50;void 0===b.bevelThickness&&(b.bevelThickness=10); +void 0===b.bevelSize&&(b.bevelSize=8);void 0===b.bevelEnabled&&(b.bevelEnabled=!1);db.call(this,a,b);this.type="TextBufferGeometry"}function ee(a,b,c,d,e,f,g){C.call(this);this.type="SphereGeometry";this.parameters={radius:a,widthSegments:b,heightSegments:c,phiStart:d,phiLength:e,thetaStart:f,thetaLength:g};this.fromBufferGeometry(new Hb(a,b,c,d,e,f,g));this.mergeVertices()}function Hb(a,b,c,d,e,f,g){E.call(this);this.type="SphereBufferGeometry";this.parameters={radius:a,widthSegments:b,heightSegments:c, +phiStart:d,phiLength:e,thetaStart:f,thetaLength:g};a=a||1;b=Math.max(3,Math.floor(b)||8);c=Math.max(2,Math.floor(c)||6);d=void 0!==d?d:0;e=void 0!==e?e:2*Math.PI;f=void 0!==f?f:0;g=void 0!==g?g:Math.PI;var h=Math.min(f+g,Math.PI),l,m,r=0,k=[],u=new n,p=new n,t=[],v=[],y=[],w=[];for(m=0;m<=c;m++){var x=[],F=m/c,H=0;0==m&&0==f?H=.5/b:m==c&&h==Math.PI&&(H=-.5/b);for(l=0;l<=b;l++){var z=l/b;u.x=-a*Math.cos(d+z*e)*Math.sin(f+F*g);u.y=a*Math.cos(f+F*g);u.z=a*Math.sin(d+z*e)*Math.sin(f+F*g);v.push(u.x,u.y, +u.z);p.copy(u).normalize();y.push(p.x,p.y,p.z);w.push(z+H,1-F);x.push(r++)}k.push(x)}for(m=0;m<c;m++)for(l=0;l<b;l++)a=k[m][l+1],d=k[m][l],e=k[m+1][l],g=k[m+1][l+1],(0!==m||0<f)&&t.push(a,d,g),(m!==c-1||h<Math.PI)&&t.push(d,e,g);this.setIndex(t);this.setAttribute("position",new A(v,3));this.setAttribute("normal",new A(y,3));this.setAttribute("uv",new A(w,2))}function fe(a,b,c,d,e,f){C.call(this);this.type="RingGeometry";this.parameters={innerRadius:a,outerRadius:b,thetaSegments:c,phiSegments:d,thetaStart:e, +thetaLength:f};this.fromBufferGeometry(new Vc(a,b,c,d,e,f));this.mergeVertices()}function Vc(a,b,c,d,e,f){E.call(this);this.type="RingBufferGeometry";this.parameters={innerRadius:a,outerRadius:b,thetaSegments:c,phiSegments:d,thetaStart:e,thetaLength:f};a=a||.5;b=b||1;e=void 0!==e?e:0;f=void 0!==f?f:2*Math.PI;c=void 0!==c?Math.max(3,c):8;d=void 0!==d?Math.max(1,d):1;var g=[],h=[],l=[],m=[],r=a,k=(b-a)/d,u=new n,p=new B,t,v;for(t=0;t<=d;t++){for(v=0;v<=c;v++)a=e+v/c*f,u.x=r*Math.cos(a),u.y=r*Math.sin(a), +h.push(u.x,u.y,u.z),l.push(0,0,1),p.x=(u.x/b+1)/2,p.y=(u.y/b+1)/2,m.push(p.x,p.y);r+=k}for(t=0;t<d;t++)for(b=t*(c+1),v=0;v<c;v++)a=v+b,e=a+c+1,f=a+c+2,r=a+1,g.push(a,e,r),g.push(e,f,r);this.setIndex(g);this.setAttribute("position",new A(h,3));this.setAttribute("normal",new A(l,3));this.setAttribute("uv",new A(m,2))}function ge(a,b,c,d){C.call(this);this.type="LatheGeometry";this.parameters={points:a,segments:b,phiStart:c,phiLength:d};this.fromBufferGeometry(new Wc(a,b,c,d));this.mergeVertices()}function Wc(a, +b,c,d){E.call(this);this.type="LatheBufferGeometry";this.parameters={points:a,segments:b,phiStart:c,phiLength:d};b=Math.floor(b)||12;c=c||0;d=d||2*Math.PI;d=P.clamp(d,0,2*Math.PI);var e=[],f=[],g=[],h=1/b,l=new n,m=new B,r;for(r=0;r<=b;r++){var k=c+r*h*d;var u=Math.sin(k),p=Math.cos(k);for(k=0;k<=a.length-1;k++)l.x=a[k].x*u,l.y=a[k].y,l.z=a[k].x*p,f.push(l.x,l.y,l.z),m.x=r/b,m.y=k/(a.length-1),g.push(m.x,m.y)}for(r=0;r<b;r++)for(k=0;k<a.length-1;k++)c=k+r*a.length,h=c+a.length,l=c+a.length+1,m=c+ +1,e.push(c,h,m),e.push(h,l,m);this.setIndex(e);this.setAttribute("position",new A(f,3));this.setAttribute("uv",new A(g,2));this.computeVertexNormals();if(d===2*Math.PI)for(d=this.attributes.normal.array,e=new n,f=new n,g=new n,c=b*a.length*3,k=r=0;r<a.length;r++,k+=3)e.x=d[k+0],e.y=d[k+1],e.z=d[k+2],f.x=d[c+k+0],f.y=d[c+k+1],f.z=d[c+k+2],g.addVectors(e,f).normalize(),d[k+0]=d[c+k+0]=g.x,d[k+1]=d[c+k+1]=g.y,d[k+2]=d[c+k+2]=g.z}function fc(a,b){C.call(this);this.type="ShapeGeometry";"object"===typeof b&& +(console.warn("THREE.ShapeGeometry: Options parameter has been removed."),b=b.curveSegments);this.parameters={shapes:a,curveSegments:b};this.fromBufferGeometry(new gc(a,b));this.mergeVertices()}function gc(a,b){function c(a){var c,h=e.length/3;a=a.extractPoints(b);var m=a.shape,k=a.holes;!1===qb.isClockWise(m)&&(m=m.reverse());a=0;for(c=k.length;a<c;a++){var r=k[a];!0===qb.isClockWise(r)&&(k[a]=r.reverse())}var n=qb.triangulateShape(m,k);a=0;for(c=k.length;a<c;a++)r=k[a],m=m.concat(r);a=0;for(c=m.length;a< +c;a++)r=m[a],e.push(r.x,r.y,0),f.push(0,0,1),g.push(r.x,r.y);a=0;for(c=n.length;a<c;a++)m=n[a],d.push(m[0]+h,m[1]+h,m[2]+h),l+=3}E.call(this);this.type="ShapeBufferGeometry";this.parameters={shapes:a,curveSegments:b};b=b||12;var d=[],e=[],f=[],g=[],h=0,l=0;if(!1===Array.isArray(a))c(a);else for(var m=0;m<a.length;m++)c(a[m]),this.addGroup(h,l,m),h+=l,l=0;this.setIndex(d);this.setAttribute("position",new A(e,3));this.setAttribute("normal",new A(f,3));this.setAttribute("uv",new A(g,2))}function Yh(a, +b){b.shapes=[];if(Array.isArray(a))for(var c=0,d=a.length;c<d;c++)b.shapes.push(a[c].uuid);else b.shapes.push(a.uuid);return b}function Xc(a,b){E.call(this);this.type="EdgesGeometry";this.parameters={thresholdAngle:b};var c=[];b=Math.cos(P.DEG2RAD*(void 0!==b?b:1));var d=[0,0],e={},f=["a","b","c"];if(a.isBufferGeometry){var g=new C;g.fromBufferGeometry(a)}else g=a.clone();g.mergeVertices();g.computeFaceNormals();a=g.vertices;g=g.faces;for(var h=0,l=g.length;h<l;h++)for(var m=g[h],k=0;3>k;k++){var q= +m[f[k]];var n=m[f[(k+1)%3]];d[0]=Math.min(q,n);d[1]=Math.max(q,n);q=d[0]+","+d[1];void 0===e[q]?e[q]={index1:d[0],index2:d[1],face1:h,face2:void 0}:e[q].face2=h}for(q in e)if(d=e[q],void 0===d.face2||g[d.face1].normal.dot(g[d.face2].normal)<=b)f=a[d.index1],c.push(f.x,f.y,f.z),f=a[d.index2],c.push(f.x,f.y,f.z);this.setAttribute("position",new A(c,3))}function hc(a,b,c,d,e,f,g,h){C.call(this);this.type="CylinderGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e, +openEnded:f,thetaStart:g,thetaLength:h};this.fromBufferGeometry(new rb(a,b,c,d,e,f,g,h));this.mergeVertices()}function rb(a,b,c,d,e,f,g,h){function l(c){var e,f=new B,l=new n,r=0,v=!0===c?a:b,x=!0===c?1:-1;var A=t;for(e=1;e<=d;e++)q.push(0,y*x,0),u.push(0,x,0),p.push(.5,.5),t++;var I=t;for(e=0;e<=d;e++){var D=e/d*h+g,E=Math.cos(D);D=Math.sin(D);l.x=v*D;l.y=y*x;l.z=v*E;q.push(l.x,l.y,l.z);u.push(0,x,0);f.x=.5*E+.5;f.y=.5*D*x+.5;p.push(f.x,f.y);t++}for(e=0;e<d;e++)f=A+e,l=I+e,!0===c?k.push(l,l+1,f): +k.push(l+1,l,f),r+=3;m.addGroup(w,r,!0===c?1:2);w+=r}E.call(this);this.type="CylinderBufferGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};var m=this;a=void 0!==a?a:1;b=void 0!==b?b:1;c=c||1;d=Math.floor(d)||8;e=Math.floor(e)||1;f=void 0!==f?f:!1;g=void 0!==g?g:0;h=void 0!==h?h:2*Math.PI;var k=[],q=[],u=[],p=[],t=0,v=[],y=c/2,w=0;(function(){var f,l,r=new n,z=new n,B=0,A=(b-a)/c;for(l=0;l<=e;l++){var D=[],E=l/ +e,I=E*(b-a)+a;for(f=0;f<=d;f++){var C=f/d,G=C*h+g,J=Math.sin(G);G=Math.cos(G);z.x=I*J;z.y=-E*c+y;z.z=I*G;q.push(z.x,z.y,z.z);r.set(J,A,G).normalize();u.push(r.x,r.y,r.z);p.push(C,1-E);D.push(t++)}v.push(D)}for(f=0;f<d;f++)for(l=0;l<e;l++)r=v[l+1][f],z=v[l+1][f+1],A=v[l][f+1],k.push(v[l][f],r,A),k.push(r,z,A),B+=6;m.addGroup(w,B,0);w+=B})();!1===f&&(0<a&&l(!0),0<b&&l(!1));this.setIndex(k);this.setAttribute("position",new A(q,3));this.setAttribute("normal",new A(u,3));this.setAttribute("uv",new A(p, +2))}function he(a,b,c,d,e,f,g){hc.call(this,0,a,b,c,d,e,f,g);this.type="ConeGeometry";this.parameters={radius:a,height:b,radialSegments:c,heightSegments:d,openEnded:e,thetaStart:f,thetaLength:g}}function ie(a,b,c,d,e,f,g){rb.call(this,0,a,b,c,d,e,f,g);this.type="ConeBufferGeometry";this.parameters={radius:a,height:b,radialSegments:c,heightSegments:d,openEnded:e,thetaStart:f,thetaLength:g}}function je(a,b,c,d){C.call(this);this.type="CircleGeometry";this.parameters={radius:a,segments:b,thetaStart:c, +thetaLength:d};this.fromBufferGeometry(new Yc(a,b,c,d));this.mergeVertices()}function Yc(a,b,c,d){E.call(this);this.type="CircleBufferGeometry";this.parameters={radius:a,segments:b,thetaStart:c,thetaLength:d};a=a||1;b=void 0!==b?Math.max(3,b):8;c=void 0!==c?c:0;d=void 0!==d?d:2*Math.PI;var e=[],f=[],g=[],h=[],l,m=new n,k=new B;f.push(0,0,0);g.push(0,0,1);h.push(.5,.5);var q=0;for(l=3;q<=b;q++,l+=3){var u=c+q/b*d;m.x=a*Math.cos(u);m.y=a*Math.sin(u);f.push(m.x,m.y,m.z);g.push(0,0,1);k.x=(f[l]/a+1)/ +2;k.y=(f[l+1]/a+1)/2;h.push(k.x,k.y)}for(l=1;l<=b;l++)e.push(l,l+1,0);this.setIndex(e);this.setAttribute("position",new A(f,3));this.setAttribute("normal",new A(g,3));this.setAttribute("uv",new A(h,2))}function ic(a){O.call(this);this.type="ShadowMaterial";this.color=new J(0);this.transparent=!0;this.setValues(a)}function Zc(a){va.call(this,a);this.type="RawShaderMaterial"}function eb(a){O.call(this);this.defines={STANDARD:""};this.type="MeshStandardMaterial";this.color=new J(16777215);this.metalness= +this.roughness=.5;this.lightMap=this.map=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.emissive=new J(0);this.emissiveIntensity=1;this.bumpMap=this.emissiveMap=null;this.bumpScale=1;this.normalMap=null;this.normalMapType=0;this.normalScale=new B(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.envMap=this.alphaMap=this.metalnessMap=this.roughnessMap=null;this.envMapIntensity=1;this.refractionRatio=.98;this.wireframe=!1;this.wireframeLinewidth= +1;this.wireframeLinejoin=this.wireframeLinecap="round";this.morphNormals=this.morphTargets=this.skinning=!1;this.setValues(a)}function jc(a){eb.call(this);this.defines={STANDARD:"",PHYSICAL:""};this.type="MeshPhysicalMaterial";this.reflectivity=.5;this.clearcoatRoughness=this.clearcoat=0;this.sheen=null;this.clearcoatNormalScale=new B(1,1);this.clearcoatNormalMap=null;this.transparency=0;this.setValues(a)}function Ra(a){O.call(this);this.type="MeshPhongMaterial";this.color=new J(16777215);this.specular= +new J(1118481);this.shininess=30;this.lightMap=this.map=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.emissive=new J(0);this.emissiveIntensity=1;this.bumpMap=this.emissiveMap=null;this.bumpScale=1;this.normalMap=null;this.normalMapType=0;this.normalScale=new B(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.envMap=this.alphaMap=this.specularMap=null;this.combine=0;this.reflectivity=1;this.refractionRatio=.98;this.wireframe=!1;this.wireframeLinewidth= +1;this.wireframeLinejoin=this.wireframeLinecap="round";this.morphNormals=this.morphTargets=this.skinning=!1;this.setValues(a)}function kc(a){Ra.call(this);this.defines={TOON:""};this.type="MeshToonMaterial";this.gradientMap=null;this.setValues(a)}function lc(a){O.call(this);this.type="MeshNormalMaterial";this.bumpMap=null;this.bumpScale=1;this.normalMap=null;this.normalMapType=0;this.normalScale=new B(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.wireframe=!1; +this.wireframeLinewidth=1;this.morphNormals=this.morphTargets=this.skinning=this.fog=!1;this.setValues(a)}function mc(a){O.call(this);this.type="MeshLambertMaterial";this.color=new J(16777215);this.lightMap=this.map=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.emissive=new J(0);this.emissiveIntensity=1;this.envMap=this.alphaMap=this.specularMap=this.emissiveMap=null;this.combine=0;this.reflectivity=1;this.refractionRatio=.98;this.wireframe=!1;this.wireframeLinewidth=1; +this.wireframeLinejoin=this.wireframeLinecap="round";this.morphNormals=this.morphTargets=this.skinning=!1;this.setValues(a)}function nc(a){O.call(this);this.defines={MATCAP:""};this.type="MeshMatcapMaterial";this.color=new J(16777215);this.bumpMap=this.map=this.matcap=null;this.bumpScale=1;this.normalMap=null;this.normalMapType=0;this.normalScale=new B(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.alphaMap=null;this.morphNormals=this.morphTargets=this.skinning= +!1;this.setValues(a)}function oc(a){R.call(this);this.type="LineDashedMaterial";this.scale=1;this.dashSize=3;this.gapSize=1;this.setValues(a)}function Ia(a,b,c,d){this.parameterPositions=a;this._cachedIndex=0;this.resultBuffer=void 0!==d?d:new b.constructor(c);this.sampleValues=b;this.valueSize=c}function Re(a,b,c,d){Ia.call(this,a,b,c,d);this._offsetNext=this._weightNext=this._offsetPrev=this._weightPrev=-0}function ke(a,b,c,d){Ia.call(this,a,b,c,d)}function Se(a,b,c,d){Ia.call(this,a,b,c,d)}function sa(a, +b,c,d){if(void 0===a)throw Error("THREE.KeyframeTrack: track name is undefined");if(void 0===b||0===b.length)throw Error("THREE.KeyframeTrack: no keyframes in track named "+a);this.name=a;this.times=ta.convertArray(b,this.TimeBufferType);this.values=ta.convertArray(c,this.ValueBufferType);this.setInterpolation(d||this.DefaultInterpolation)}function Te(a,b,c){sa.call(this,a,b,c)}function Ue(a,b,c,d){sa.call(this,a,b,c,d)}function $c(a,b,c,d){sa.call(this,a,b,c,d)}function Ve(a,b,c,d){Ia.call(this, +a,b,c,d)}function le(a,b,c,d){sa.call(this,a,b,c,d)}function We(a,b,c,d){sa.call(this,a,b,c,d)}function ad(a,b,c,d){sa.call(this,a,b,c,d)}function Ma(a,b,c){this.name=a;this.tracks=c;this.duration=void 0!==b?b:-1;this.uuid=P.generateUUID();0>this.duration&&this.resetDuration()}function rk(a){switch(a.toLowerCase()){case "scalar":case "double":case "float":case "number":case "integer":return $c;case "vector":case "vector2":case "vector3":case "vector4":return ad;case "color":return Ue;case "quaternion":return le; +case "bool":case "boolean":return Te;case "string":return We}throw Error("THREE.KeyframeTrack: Unsupported typeName: "+a);}function sk(a){if(void 0===a.type)throw Error("THREE.KeyframeTrack: track type undefined, can not parse");var b=rk(a.type);if(void 0===a.times){var c=[],d=[];ta.flattenJSON(a.keys,c,d,"value");a.times=c;a.values=d}return void 0!==b.parse?b.parse(a):new b(a.name,a.times,a.values,a.interpolation)}function og(a,b,c){var d=this,e=!1,f=0,g=0,h=void 0,l=[];this.onStart=void 0;this.onLoad= +a;this.onProgress=b;this.onError=c;this.itemStart=function(a){g++;if(!1===e&&void 0!==d.onStart)d.onStart(a,f,g);e=!0};this.itemEnd=function(a){f++;if(void 0!==d.onProgress)d.onProgress(a,f,g);if(f===g&&(e=!1,void 0!==d.onLoad))d.onLoad()};this.itemError=function(a){if(void 0!==d.onError)d.onError(a)};this.resolveURL=function(a){return h?h(a):a};this.setURLModifier=function(a){h=a;return this};this.addHandler=function(a,b){l.push(a,b);return this};this.removeHandler=function(a){a=l.indexOf(a);-1!== +a&&l.splice(a,2);return this};this.getHandler=function(a){for(var b=0,c=l.length;b<c;b+=2){var d=l[b+1];if(l[b].test(a))return d}return null}}function V(a){this.manager=void 0!==a?a:Zh;this.crossOrigin="anonymous";this.resourcePath=this.path=""}function Na(a){V.call(this,a)}function pg(a){V.call(this,a)}function qg(a){V.call(this,a)}function Xe(a){V.call(this,a)}function bd(a){V.call(this,a)}function Ye(a){V.call(this,a)}function Ze(a){V.call(this,a)}function G(){this.type="Curve";this.arcLengthDivisions= +200}function Ja(a,b,c,d,e,f,g,h){G.call(this);this.type="EllipseCurve";this.aX=a||0;this.aY=b||0;this.xRadius=c||1;this.yRadius=d||1;this.aStartAngle=e||0;this.aEndAngle=f||2*Math.PI;this.aClockwise=g||!1;this.aRotation=h||0}function cd(a,b,c,d,e,f){Ja.call(this,a,b,c,c,d,e,f);this.type="ArcCurve"}function rg(){var a=0,b=0,c=0,d=0;return{initCatmullRom:function(e,f,g,h,l){e=l*(g-e);h=l*(h-f);a=f;b=e;c=-3*f+3*g-2*e-h;d=2*f-2*g+e+h},initNonuniformCatmullRom:function(e,f,g,h,l,m,k){e=((f-e)/l-(g-e)/ +(l+m)+(g-f)/m)*m;h=((g-f)/m-(h-f)/(m+k)+(h-g)/k)*m;a=f;b=e;c=-3*f+3*g-2*e-h;d=2*f-2*g+e+h},calc:function(e){var f=e*e;return a+b*e+c*f+d*f*e}}}function na(a,b,c,d){G.call(this);this.type="CatmullRomCurve3";this.points=a||[];this.closed=b||!1;this.curveType=c||"centripetal";this.tension=d||.5}function $h(a,b,c,d,e){b=.5*(d-b);e=.5*(e-c);var f=a*a;return(2*c-2*d+b+e)*a*f+(-3*c+3*d-2*b-e)*f+b*a+c}function me(a,b,c,d){var e=1-a;return e*e*b+2*(1-a)*a*c+a*a*d}function ne(a,b,c,d,e){var f=1-a,g=1-a;return f* +f*f*b+3*g*g*a*c+3*(1-a)*a*a*d+a*a*a*e}function Sa(a,b,c,d){G.call(this);this.type="CubicBezierCurve";this.v0=a||new B;this.v1=b||new B;this.v2=c||new B;this.v3=d||new B}function fb(a,b,c,d){G.call(this);this.type="CubicBezierCurve3";this.v0=a||new n;this.v1=b||new n;this.v2=c||new n;this.v3=d||new n}function Da(a,b){G.call(this);this.type="LineCurve";this.v1=a||new B;this.v2=b||new B}function Ta(a,b){G.call(this);this.type="LineCurve3";this.v1=a||new n;this.v2=b||new n}function Ua(a,b,c){G.call(this); +this.type="QuadraticBezierCurve";this.v0=a||new B;this.v1=b||new B;this.v2=c||new B}function gb(a,b,c){G.call(this);this.type="QuadraticBezierCurve3";this.v0=a||new n;this.v1=b||new n;this.v2=c||new n}function Va(a){G.call(this);this.type="SplineCurve";this.points=a||[]}function sb(){G.call(this);this.type="CurvePath";this.curves=[];this.autoClose=!1}function Wa(a){sb.call(this);this.type="Path";this.currentPoint=new B;a&&this.setFromPoints(a)}function Ib(a){Wa.call(this,a);this.uuid=P.generateUUID(); +this.type="Shape";this.holes=[]}function T(a,b){D.call(this);this.type="Light";this.color=new J(a);this.intensity=void 0!==b?b:1;this.receiveShadow=void 0}function $e(a,b,c){T.call(this,a,c);this.type="HemisphereLight";this.castShadow=void 0;this.position.copy(D.DefaultUp);this.updateMatrix();this.groundColor=new J(b)}function hb(a){this.camera=a;this.bias=0;this.radius=1;this.mapSize=new B(512,512);this.mapPass=this.map=null;this.matrix=new Q;this._frustum=new Ed;this._frameExtents=new B(1,1);this._viewportCount= +1;this._viewports=[new da(0,0,1,1)]}function af(){hb.call(this,new U(50,1,.5,500))}function bf(a,b,c,d,e,f){T.call(this,a,b);this.type="SpotLight";this.position.copy(D.DefaultUp);this.updateMatrix();this.target=new D;Object.defineProperty(this,"power",{get:function(){return this.intensity*Math.PI},set:function(a){this.intensity=a/Math.PI}});this.distance=void 0!==c?c:0;this.angle=void 0!==d?d:Math.PI/3;this.penumbra=void 0!==e?e:0;this.decay=void 0!==f?f:1;this.shadow=new af}function sg(){hb.call(this, +new U(90,1,.5,500));this._frameExtents=new B(4,2);this._viewportCount=6;this._viewports=[new da(2,1,1,1),new da(0,1,1,1),new da(3,1,1,1),new da(1,1,1,1),new da(3,0,1,1),new da(1,0,1,1)];this._cubeDirections=[new n(1,0,0),new n(-1,0,0),new n(0,0,1),new n(0,0,-1),new n(0,1,0),new n(0,-1,0)];this._cubeUps=[new n(0,1,0),new n(0,1,0),new n(0,1,0),new n(0,1,0),new n(0,0,1),new n(0,0,-1)]}function cf(a,b,c,d){T.call(this,a,b);this.type="PointLight";Object.defineProperty(this,"power",{get:function(){return 4* +this.intensity*Math.PI},set:function(a){this.intensity=a/(4*Math.PI)}});this.distance=void 0!==c?c:0;this.decay=void 0!==d?d:1;this.shadow=new sg}function oe(a,b,c,d,e,f){bb.call(this);this.type="OrthographicCamera";this.zoom=1;this.view=null;this.left=void 0!==a?a:-1;this.right=void 0!==b?b:1;this.top=void 0!==c?c:1;this.bottom=void 0!==d?d:-1;this.near=void 0!==e?e:.1;this.far=void 0!==f?f:2E3;this.updateProjectionMatrix()}function df(){hb.call(this,new oe(-5,5,5,-5,.5,500))}function ef(a,b){T.call(this, +a,b);this.type="DirectionalLight";this.position.copy(D.DefaultUp);this.updateMatrix();this.target=new D;this.shadow=new df}function ff(a,b){T.call(this,a,b);this.type="AmbientLight";this.castShadow=void 0}function gf(a,b,c,d){T.call(this,a,b);this.type="RectAreaLight";this.width=void 0!==c?c:10;this.height=void 0!==d?d:10}function hf(a){V.call(this,a);this.textures={}}function jf(){E.call(this);this.type="InstancedBufferGeometry";this.maxInstancedCount=void 0}function kf(a,b,c,d){"number"===typeof c&& +(d=c,c=!1,console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument."));N.call(this,a,b,c);this.meshPerAttribute=d||1}function lf(a){V.call(this,a)}function mf(a){V.call(this,a)}function tg(a){"undefined"===typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported.");"undefined"===typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported.");V.call(this,a);this.options=void 0}function ug(){this.type= +"ShapePath";this.color=new J;this.subPaths=[];this.currentPath=null}function vg(a){this.type="Font";this.data=a}function wg(a){V.call(this,a)}function nf(a){V.call(this,a)}function of(){this.coefficients=[];for(var a=0;9>a;a++)this.coefficients.push(new n)}function Xa(a,b){T.call(this,void 0,b);this.sh=void 0!==a?a:new of}function xg(a,b,c){Xa.call(this,void 0,c);a=(new J).set(a);c=(new J).set(b);b=new n(a.r,a.g,a.b);a=new n(c.r,c.g,c.b);c=Math.sqrt(Math.PI);var d=c*Math.sqrt(.75);this.sh.coefficients[0].copy(b).add(a).multiplyScalar(c); +this.sh.coefficients[1].copy(b).sub(a).multiplyScalar(d)}function yg(a,b){Xa.call(this,void 0,b);a=(new J).set(a);this.sh.coefficients[0].set(a.r,a.g,a.b).multiplyScalar(2*Math.sqrt(Math.PI))}function ai(){this.type="StereoCamera";this.aspect=1;this.eyeSep=.064;this.cameraL=new U;this.cameraL.layers.enable(1);this.cameraL.matrixAutoUpdate=!1;this.cameraR=new U;this.cameraR.layers.enable(2);this.cameraR.matrixAutoUpdate=!1;this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}} +function zg(a){this.autoStart=void 0!==a?a:!0;this.elapsedTime=this.oldTime=this.startTime=0;this.running=!1}function Ag(){D.call(this);this.type="AudioListener";this.context=Bg.getContext();this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.filter=null;this.timeDelta=0;this._clock=new zg}function dd(a){D.call(this);this.type="Audio";this.listener=a;this.context=a.context;this.gain=this.context.createGain();this.gain.connect(a.getInput());this.autoplay=!1;this.buffer= +null;this.detune=0;this.loop=!1;this.offset=this.loopEnd=this.loopStart=0;this.duration=void 0;this.playbackRate=1;this.isPlaying=!1;this.hasPlaybackControl=!0;this.sourceType="empty";this._pausedAt=this._startedAt=0;this.filters=[]}function Cg(a){dd.call(this,a);this.panner=this.context.createPanner();this.panner.panningModel="HRTF";this.panner.connect(this.gain)}function Dg(a,b){this.analyser=a.context.createAnalyser();this.analyser.fftSize=void 0!==b?b:2048;this.data=new Uint8Array(this.analyser.frequencyBinCount); +a.getOutput().connect(this.analyser)}function Eg(a,b,c){this.binding=a;this.valueSize=c;a=Float64Array;switch(b){case "quaternion":b=this._slerp;break;case "string":case "bool":a=Array;b=this._select;break;default:b=this._lerp}this.buffer=new a(4*c);this._mixBufferRegion=b;this.referenceCount=this.useCount=this.cumulativeWeight=0}function bi(a,b,c){c=c||ya.parseTrackName(b);this._targetGroup=a;this._bindings=a.subscribe_(b,c)}function ya(a,b,c){this.path=b;this.parsedPath=c||ya.parseTrackName(b); +this.node=ya.findNode(a,this.parsedPath.nodeName)||a;this.rootNode=a}function ci(){this.uuid=P.generateUUID();this._objects=Array.prototype.slice.call(arguments);this.nCachedObjects_=0;var a={};this._indicesByUUID=a;for(var b=0,c=arguments.length;b!==c;++b)a[arguments[b].uuid]=b;this._paths=[];this._parsedPaths=[];this._bindings=[];this._bindingsIndicesByPath={};var d=this;this.stats={objects:{get total(){return d._objects.length},get inUse(){return this.total-d.nCachedObjects_}},get bindingsPerObject(){return d._bindings.length}}} +function di(a,b,c){this._mixer=a;this._clip=b;this._localRoot=c||null;a=b.tracks;b=a.length;c=Array(b);for(var d={endingStart:2400,endingEnd:2400},e=0;e!==b;++e){var f=a[e].createInterpolant(null);c[e]=f;f.settings=d}this._interpolantSettings=d;this._interpolants=c;this._propertyBindings=Array(b);this._weightInterpolant=this._timeScaleInterpolant=this._byClipCacheIndex=this._cacheIndex=null;this.loop=2201;this._loopCount=-1;this._startTime=null;this.time=0;this._effectiveWeight=this.weight=this._effectiveTimeScale= +this.timeScale=1;this.repetitions=Infinity;this.paused=!1;this.enabled=!0;this.clampWhenFinished=!1;this.zeroSlopeAtEnd=this.zeroSlopeAtStart=!0}function Fg(a){this._root=a;this._initMemoryManager();this.time=this._accuIndex=0;this.timeScale=1}function pf(a,b){"string"===typeof a&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),a=b);this.value=a}function Gg(a,b,c){pb.call(this,a,b);this.meshPerAttribute=c||1}function ei(a,b,c,d){this.ray=new Rb(a,b);this.near=c||0;this.far=d|| +Infinity;this.camera=null;this.params={Mesh:{},Line:{},LOD:{},Points:{threshold:1},Sprite:{}};Object.defineProperties(this.params,{PointCloud:{get:function(){console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points.");return this.Points}}})}function fi(a,b){return a.distance-b.distance}function Hg(a,b,c,d){if(!1!==a.visible&&(a.raycast(b,c),!0===d)){a=a.children;d=0;for(var e=a.length;d<e;d++)Hg(a[d],b,c,!0)}}function gi(a,b,c){this.radius=void 0!==a?a:1;this.phi=void 0!== +b?b:0;this.theta=void 0!==c?c:0;return this}function hi(a,b,c){this.radius=void 0!==a?a:1;this.theta=void 0!==b?b:0;this.y=void 0!==c?c:0;return this}function Ig(a,b){this.min=void 0!==a?a:new B(Infinity,Infinity);this.max=void 0!==b?b:new B(-Infinity,-Infinity)}function Jg(a,b){this.start=void 0!==a?a:new n;this.end=void 0!==b?b:new n}function pe(a){D.call(this);this.material=a;this.render=function(){}}function qe(a,b,c,d){this.object=a;this.size=void 0!==b?b:1;a=void 0!==c?c:16711680;d=void 0!== +d?d:1;b=0;(c=this.object.geometry)&&c.isGeometry?b=3*c.faces.length:c&&c.isBufferGeometry&&(b=c.attributes.normal.count);c=new E;b=new A(6*b,3);c.setAttribute("position",b);X.call(this,c,new R({color:a,linewidth:d}));this.matrixAutoUpdate=!1;this.update()}function ed(a,b){D.call(this);this.light=a;this.light.updateMatrixWorld();this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1;this.color=b;a=new E;b=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(var c=0,d=1;32>c;c++,d++){var e= +c/32*Math.PI*2,f=d/32*Math.PI*2;b.push(Math.cos(e),Math.sin(e),1,Math.cos(f),Math.sin(f),1)}a.setAttribute("position",new A(b,3));b=new R({fog:!1});this.cone=new X(a,b);this.add(this.cone);this.update()}function ii(a){var b=[];a&&a.isBone&&b.push(a);for(var c=0;c<a.children.length;c++)b.push.apply(b,ii(a.children[c]));return b}function fd(a){for(var b=ii(a),c=new E,d=[],e=[],f=new J(0,0,1),g=new J(0,1,0),h=0;h<b.length;h++){var l=b[h];l.parent&&l.parent.isBone&&(d.push(0,0,0),d.push(0,0,0),e.push(f.r, +f.g,f.b),e.push(g.r,g.g,g.b))}c.setAttribute("position",new A(d,3));c.setAttribute("color",new A(e,3));d=new R({vertexColors:2,depthTest:!1,depthWrite:!1,transparent:!0});X.call(this,c,d);this.root=a;this.bones=b;this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1}function gd(a,b,c){this.light=a;this.light.updateMatrixWorld();this.color=c;a=new Hb(b,4,2);b=new Ga({wireframe:!0,fog:!1});ea.call(this,a,b);this.matrix=this.light.matrixWorld;this.matrixAutoUpdate=!1;this.update()}function hd(a,b){this.type= +"RectAreaLightHelper";this.light=a;this.color=b;a=new E;a.setAttribute("position",new A([1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],3));a.computeBoundingSphere();b=new R({fog:!1});ra.call(this,a,b);a=new E;a.setAttribute("position",new A([1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],3));a.computeBoundingSphere();this.add(new ea(a,new Ga({side:1,fog:!1})));this.update()}function id(a,b,c){D.call(this);this.light=a;this.light.updateMatrixWorld();this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1;this.color=c; +a=new bc(b);a.rotateY(.5*Math.PI);this.material=new Ga({wireframe:!0,fog:!1});void 0===this.color&&(this.material.vertexColors=2);b=a.getAttribute("position");b=new Float32Array(3*b.count);a.setAttribute("color",new N(b,3));this.add(new ea(a,this.material));this.update()}function jd(a,b){this.lightProbe=a;this.size=b;a=new va({defines:{GAMMA_OUTPUT:""},uniforms:{sh:{value:this.lightProbe.sh.coefficients},intensity:{value:this.lightProbe.intensity}},vertexShader:"varying vec3 vNormal;\nvoid main() {\n\tvNormal = normalize( normalMatrix * normal );\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}", +fragmentShader:"#define RECIPROCAL_PI 0.318309886\nvec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {\n\t// matrix is assumed to be orthogonal\n\treturn normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );\n}\nvec3 linearToOutput( in vec3 a ) {\n\t#ifdef GAMMA_OUTPUT\n\t\treturn pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );\n\t#else\n\t\treturn a;\n\t#endif\n}\n// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\t// normal is assumed to have unit length\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\t// band 0\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\t// band 1\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\t// band 2\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nuniform vec3 sh[ 9 ]; // sh coefficients\nuniform float intensity; // light probe intensity\nvarying vec3 vNormal;\nvoid main() {\n\tvec3 normal = normalize( vNormal );\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, sh );\n\tvec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;\n\toutgoingLight = linearToOutput( outgoingLight );\n\tgl_FragColor = vec4( outgoingLight, 1.0 );\n}"}); +b=new Hb(1,32,16);ea.call(this,b,a);this.onBeforeRender()}function qf(a,b,c,d){a=a||10;b=b||10;c=new J(void 0!==c?c:4473924);d=new J(void 0!==d?d:8947848);var e=b/2,f=a/b,g=a/2;a=[];for(var h=[],l=0,m=0,k=-g;l<=b;l++,k+=f){a.push(-g,0,k,g,0,k);a.push(k,0,-g,k,0,g);var q=l===e?c:d;q.toArray(h,m);m+=3;q.toArray(h,m);m+=3;q.toArray(h,m);m+=3;q.toArray(h,m);m+=3}b=new E;b.setAttribute("position",new A(a,3));b.setAttribute("color",new A(h,3));c=new R({vertexColors:2});X.call(this,b,c)}function rf(a,b, +c,d,e,f){a=a||10;b=b||16;c=c||8;d=d||64;e=new J(void 0!==e?e:4473924);f=new J(void 0!==f?f:8947848);var g=[],h=[],l;for(l=0;l<=b;l++){var m=l/b*2*Math.PI;var k=Math.sin(m)*a;m=Math.cos(m)*a;g.push(0,0,0);g.push(k,0,m);var q=l&1?e:f;h.push(q.r,q.g,q.b);h.push(q.r,q.g,q.b)}for(l=0;l<=c;l++){q=l&1?e:f;var n=a-a/c*l;for(b=0;b<d;b++)m=b/d*2*Math.PI,k=Math.sin(m)*n,m=Math.cos(m)*n,g.push(k,0,m),h.push(q.r,q.g,q.b),m=(b+1)/d*2*Math.PI,k=Math.sin(m)*n,m=Math.cos(m)*n,g.push(k,0,m),h.push(q.r,q.g,q.b)}a=new E; +a.setAttribute("position",new A(g,3));a.setAttribute("color",new A(h,3));g=new R({vertexColors:2});X.call(this,a,g)}function kd(a,b,c,d){this.audio=a;this.range=b||1;this.divisionsInnerAngle=c||16;this.divisionsOuterAngle=d||2;a=new E;b=new Float32Array(3*(3*(this.divisionsInnerAngle+2*this.divisionsOuterAngle)+3));a.setAttribute("position",new N(b,3));b=new R({color:65280});c=new R({color:16776960});ra.call(this,a,[c,b]);this.update()}function re(a,b,c,d){this.object=a;this.size=void 0!==b?b:1;a= +void 0!==c?c:16776960;d=void 0!==d?d:1;b=0;(c=this.object.geometry)&&c.isGeometry?b=c.faces.length:console.warn("THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.");c=new E;b=new A(6*b,3);c.setAttribute("position",b);X.call(this,c,new R({color:a,linewidth:d}));this.matrixAutoUpdate=!1;this.update()}function ld(a,b,c){D.call(this);this.light=a;this.light.updateMatrixWorld();this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1;this.color=c;void 0===b&& +(b=1);a=new E;a.setAttribute("position",new A([-b,b,0,b,b,0,b,-b,0,-b,-b,0,-b,b,0],3));b=new R({fog:!1});this.lightPlane=new ra(a,b);this.add(this.lightPlane);a=new E;a.setAttribute("position",new A([0,0,0,0,0,1],3));this.targetLine=new ra(a,b);this.add(this.targetLine);this.update()}function se(a){function b(a,b,d){c(a,d);c(b,d)}function c(a,b){f.push(0,0,0);g.push(b.r,b.g,b.b);void 0===h[a]&&(h[a]=[]);h[a].push(f.length/3-1)}var d=new E,e=new R({color:16777215,vertexColors:1}),f=[],g=[],h={},l= +new J(16755200),m=new J(16711680),k=new J(43775),q=new J(16777215),n=new J(3355443);b("n1","n2",l);b("n2","n4",l);b("n4","n3",l);b("n3","n1",l);b("f1","f2",l);b("f2","f4",l);b("f4","f3",l);b("f3","f1",l);b("n1","f1",l);b("n2","f2",l);b("n3","f3",l);b("n4","f4",l);b("p","n1",m);b("p","n2",m);b("p","n3",m);b("p","n4",m);b("u1","u2",k);b("u2","u3",k);b("u3","u1",k);b("c","t",q);b("p","c",n);b("cn1","cn2",n);b("cn3","cn4",n);b("cf1","cf2",n);b("cf3","cf4",n);d.setAttribute("position",new A(f,3));d.setAttribute("color", +new A(g,3));X.call(this,d,e);this.camera=a;this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix();this.matrix=a.matrixWorld;this.matrixAutoUpdate=!1;this.pointMap=h;this.update()}function oa(a,b,c,d,e,f,g){sf.set(e,f,g).unproject(d);a=b[a];if(void 0!==a)for(c=c.getAttribute("position"),b=0,d=a.length;b<d;b++)c.setXYZ(a[b],sf.x,sf.y,sf.z)}function tb(a,b){this.object=a;void 0===b&&(b=16776960);a=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]);var c=new Float32Array(24), +d=new E;d.setIndex(new N(a,1));d.setAttribute("position",new N(c,3));X.call(this,d,new R({color:b}));this.matrixAutoUpdate=!1;this.update()}function te(a,b){this.type="Box3Helper";this.box=a;b=b||16776960;a=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]);var c=new E;c.setIndex(new N(a,1));c.setAttribute("position",new A([1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],3));X.call(this,c,new R({color:b}));this.geometry.computeBoundingSphere()}function ue(a,b,c){this.type= +"PlaneHelper";this.plane=a;this.size=void 0===b?1:b;a=void 0!==c?c:16776960;b=new E;b.setAttribute("position",new A([1,-1,1,-1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,0,0,1,0,0,0],3));b.computeBoundingSphere();ra.call(this,b,new R({color:a}));b=new E;b.setAttribute("position",new A([1,1,1,-1,1,1,-1,-1,1,1,1,1,-1,-1,1,1,-1,1],3));b.computeBoundingSphere();this.add(new ea(b,new Ga({color:a,opacity:.2,transparent:!0,depthWrite:!1})))}function ub(a,b,c,d,e,f){D.call(this);void 0===a&&(a=new n(0, +0,1));void 0===b&&(b=new n(0,0,0));void 0===c&&(c=1);void 0===d&&(d=16776960);void 0===e&&(e=.2*c);void 0===f&&(f=.2*e);void 0===tf&&(tf=new E,tf.setAttribute("position",new A([0,0,0,0,1,0],3)),Kg=new rb(0,.5,1,5,1),Kg.translate(0,-.5,0));this.position.copy(b);this.line=new ra(tf,new R({color:d}));this.line.matrixAutoUpdate=!1;this.add(this.line);this.cone=new ea(Kg,new Ga({color:d}));this.cone.matrixAutoUpdate=!1;this.add(this.cone);this.setDirection(a);this.setLength(c,e,f)}function ve(a){a=a|| +1;var b=[0,0,0,a,0,0,0,0,0,0,a,0,0,0,0,0,0,a];a=new E;a.setAttribute("position",new A(b,3));a.setAttribute("color",new A([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3));b=new R({vertexColors:2});X.call(this,a,b)}function ji(a){console.warn("THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.");na.call(this,a);this.type="catmullrom";this.closed=!0}function ki(a){console.warn("THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.");na.call(this,a);this.type= +"catmullrom"}function Lg(a){console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.");na.call(this,a);this.type="catmullrom"}void 0===Number.EPSILON&&(Number.EPSILON=Math.pow(2,-52));void 0===Number.isInteger&&(Number.isInteger=function(a){return"number"===typeof a&&isFinite(a)&&Math.floor(a)===a});void 0===Math.sign&&(Math.sign=function(a){return 0>a?-1:0<a?1:+a});!1==="name"in Function.prototype&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}}); +void 0===Object.assign&&(Object.assign=function(a){if(void 0===a||null===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1;c<arguments.length;c++){var d=arguments[c];if(void 0!==d&&null!==d)for(var e in d)Object.prototype.hasOwnProperty.call(d,e)&&(b[e]=d[e])}return b});Object.assign(Ba.prototype,{addEventListener:function(a,b){void 0===this._listeners&&(this._listeners={});var c=this._listeners;void 0===c[a]&&(c[a]=[]);-1===c[a].indexOf(b)&&c[a].push(b)}, +hasEventListener:function(a,b){if(void 0===this._listeners)return!1;var c=this._listeners;return void 0!==c[a]&&-1!==c[a].indexOf(b)},removeEventListener:function(a,b){void 0!==this._listeners&&(a=this._listeners[a],void 0!==a&&(b=a.indexOf(b),-1!==b&&a.splice(b,1)))},dispatchEvent:function(a){if(void 0!==this._listeners){var b=this._listeners[a.type];if(void 0!==b){a.target=this;b=b.slice(0);for(var c=0,d=b.length;c<d;c++)b[c].call(this,a)}}}});for(var pa=[],we=0;256>we;we++)pa[we]=(16>we?"0":"")+ +we.toString(16);var P={DEG2RAD:Math.PI/180,RAD2DEG:180/Math.PI,generateUUID:function(){var a=4294967295*Math.random()|0,b=4294967295*Math.random()|0,c=4294967295*Math.random()|0,d=4294967295*Math.random()|0;return(pa[a&255]+pa[a>>8&255]+pa[a>>16&255]+pa[a>>24&255]+"-"+pa[b&255]+pa[b>>8&255]+"-"+pa[b>>16&15|64]+pa[b>>24&255]+"-"+pa[c&63|128]+pa[c>>8&255]+"-"+pa[c>>16&255]+pa[c>>24&255]+pa[d&255]+pa[d>>8&255]+pa[d>>16&255]+pa[d>>24&255]).toUpperCase()},clamp:function(a,b,c){return Math.max(b,Math.min(c, +a))},euclideanModulo:function(a,b){return(a%b+b)%b},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},lerp:function(a,b,c){return(1-c)*a+c*b},smoothstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*(3-2*a)},smootherstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*a*(a*(6*a-15)+10)},randInt:function(a,b){return a+Math.floor(Math.random()*(b-a+1))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a* +(.5-Math.random())},degToRad:function(a){return a*P.DEG2RAD},radToDeg:function(a){return a*P.RAD2DEG},isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a},ceilPowerOfTwo:function(a){return Math.pow(2,Math.ceil(Math.log(a)/Math.LN2))},floorPowerOfTwo:function(a){return Math.pow(2,Math.floor(Math.log(a)/Math.LN2))}};Object.defineProperties(B.prototype,{width:{get:function(){return this.x},set:function(a){this.x=a}},height:{get:function(){return this.y},set:function(a){this.y=a}}});Object.assign(B.prototype, +{isVector2:!0,set:function(a,b){this.x=a;this.y=b;return this},setScalar:function(a){this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x, +this.y)},copy:function(a){this.x=a.x;this.y=a.y;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;return this},addScalar:function(a){this.x+=a;this.y+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), +this.subVectors(a,b);this.x-=a.x;this.y-=a.y;return this},subScalar:function(a){this.x-=a;this.y-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiply:function(a){this.x*=a.x;this.y*=a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},divide:function(a){this.x/=a.x;this.y/=a.y;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},applyMatrix3:function(a){var b=this.x,c=this.y;a=a.elements;this.x=a[0]*b+a[3]*c+a[6];this.y= +a[1]*b+a[4]*c+a[7];return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));return this},clampScalar:function(a,b){this.x=Math.max(a,Math.min(b,this.x));this.y=Math.max(a,Math.min(b,this.y));return this},clampLength:function(a,b){var c=this.length();return this.divideScalar(c|| +1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);return this},negate:function(){this.x=-this.x;this.y=-this.y;return this},dot:function(a){return this.x* +a.x+this.y*a.y},cross:function(a){return this.x*a.y-this.y*a.x},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var a=Math.atan2(this.y,this.x);0>a&&(a+=2*Math.PI);return a},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b= +this.x-a.x;a=this.y-a.y;return b*b+a*a},manhattanDistanceTo:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];return this},toArray:function(a, +b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);return this},rotateAround:function(a,b){var c=Math.cos(b);b=Math.sin(b);var d=this.x-a.x,e=this.y-a.y;this.x=d*c-e*b+a.x;this.y=d*b+e*c+a.y;return this}});Object.assign(wa,{slerp:function(a,b,c,d){return c.copy(a).slerp(b,d)},slerpFlat:function(a,b,c,d,e,f,g){var h= +c[d+0],l=c[d+1],m=c[d+2];c=c[d+3];d=e[f+0];var k=e[f+1],q=e[f+2];e=e[f+3];if(c!==e||h!==d||l!==k||m!==q){f=1-g;var n=h*d+l*k+m*q+c*e,p=0<=n?1:-1,t=1-n*n;t>Number.EPSILON&&(t=Math.sqrt(t),n=Math.atan2(t,n*p),f=Math.sin(f*n)/t,g=Math.sin(g*n)/t);p*=g;h=h*f+d*p;l=l*f+k*p;m=m*f+q*p;c=c*f+e*p;f===1-g&&(g=1/Math.sqrt(h*h+l*l+m*m+c*c),h*=g,l*=g,m*=g,c*=g)}a[b]=h;a[b+1]=l;a[b+2]=m;a[b+3]=c}});Object.defineProperties(wa.prototype,{x:{get:function(){return this._x},set:function(a){this._x=a;this._onChangeCallback()}}, +y:{get:function(){return this._y},set:function(a){this._y=a;this._onChangeCallback()}},z:{get:function(){return this._z},set:function(a){this._z=a;this._onChangeCallback()}},w:{get:function(){return this._w},set:function(a){this._w=a;this._onChangeCallback()}}});Object.assign(wa.prototype,{isQuaternion:!0,set:function(a,b,c,d){this._x=a;this._y=b;this._z=c;this._w=d;this._onChangeCallback();return this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(a){this._x= +a.x;this._y=a.y;this._z=a.z;this._w=a.w;this._onChangeCallback();return this},setFromEuler:function(a,b){if(!a||!a.isEuler)throw Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var c=a._x,d=a._y,e=a._z;a=a.order;var f=Math.cos,g=Math.sin,h=f(c/2),l=f(d/2);f=f(e/2);c=g(c/2);d=g(d/2);e=g(e/2);"XYZ"===a?(this._x=c*l*f+h*d*e,this._y=h*d*f-c*l*e,this._z=h*l*e+c*d*f,this._w=h*l*f-c*d*e):"YXZ"===a?(this._x=c*l*f+h*d*e,this._y=h*d*f-c*l*e,this._z= +h*l*e-c*d*f,this._w=h*l*f+c*d*e):"ZXY"===a?(this._x=c*l*f-h*d*e,this._y=h*d*f+c*l*e,this._z=h*l*e+c*d*f,this._w=h*l*f-c*d*e):"ZYX"===a?(this._x=c*l*f-h*d*e,this._y=h*d*f+c*l*e,this._z=h*l*e-c*d*f,this._w=h*l*f+c*d*e):"YZX"===a?(this._x=c*l*f+h*d*e,this._y=h*d*f+c*l*e,this._z=h*l*e-c*d*f,this._w=h*l*f-c*d*e):"XZY"===a&&(this._x=c*l*f-h*d*e,this._y=h*d*f-c*l*e,this._z=h*l*e+c*d*f,this._w=h*l*f+c*d*e);!1!==b&&this._onChangeCallback();return this},setFromAxisAngle:function(a,b){b/=2;var c=Math.sin(b); +this._x=a.x*c;this._y=a.y*c;this._z=a.z*c;this._w=Math.cos(b);this._onChangeCallback();return this},setFromRotationMatrix:function(a){var b=a.elements,c=b[0];a=b[4];var d=b[8],e=b[1],f=b[5],g=b[9],h=b[2],l=b[6];b=b[10];var m=c+f+b;0<m?(c=.5/Math.sqrt(m+1),this._w=.25/c,this._x=(l-g)*c,this._y=(d-h)*c,this._z=(e-a)*c):c>f&&c>b?(c=2*Math.sqrt(1+c-f-b),this._w=(l-g)/c,this._x=.25*c,this._y=(a+e)/c,this._z=(d+h)/c):f>b?(c=2*Math.sqrt(1+f-c-b),this._w=(d-h)/c,this._x=(a+e)/c,this._y=.25*c,this._z=(g+l)/ +c):(c=2*Math.sqrt(1+b-c-f),this._w=(e-a)/c,this._x=(d+h)/c,this._y=(g+l)/c,this._z=.25*c);this._onChangeCallback();return this},setFromUnitVectors:function(a,b){var c=a.dot(b)+1;1E-6>c?(c=0,Math.abs(a.x)>Math.abs(a.z)?(this._x=-a.y,this._y=a.x,this._z=0):(this._x=0,this._y=-a.z,this._z=a.y)):(this._x=a.y*b.z-a.z*b.y,this._y=a.z*b.x-a.x*b.z,this._z=a.x*b.y-a.y*b.x);this._w=c;return this.normalize()},angleTo:function(a){return 2*Math.acos(Math.abs(P.clamp(this.dot(a),-1,1)))},rotateTowards:function(a, +b){var c=this.angleTo(a);if(0===c)return this;this.slerp(a,Math.min(1,b/c));return this},inverse:function(){return this.conjugate()},conjugate:function(){this._x*=-1;this._y*=-1;this._z*=-1;this._onChangeCallback();return this},dot:function(a){return this._x*a._x+this._y*a._y+this._z*a._z+this._w*a._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var a= +this.length();0===a?(this._z=this._y=this._x=0,this._w=1):(a=1/a,this._x*=a,this._y*=a,this._z*=a,this._w*=a);this._onChangeCallback();return this},multiply:function(a,b){return void 0!==b?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this,a)},premultiply:function(a){return this.multiplyQuaternions(a,this)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z;a=a._w; +var f=b._x,g=b._y,h=b._z;b=b._w;this._x=c*b+a*f+d*h-e*g;this._y=d*b+a*g+e*f-c*h;this._z=e*b+a*h+c*g-d*f;this._w=a*b-c*f-d*g-e*h;this._onChangeCallback();return this},slerp:function(a,b){if(0===b)return this;if(1===b)return this.copy(a);var c=this._x,d=this._y,e=this._z,f=this._w,g=f*a._w+c*a._x+d*a._y+e*a._z;0>g?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,g=-g):this.copy(a);if(1<=g)return this._w=f,this._x=c,this._y=d,this._z=e,this;a=1-g*g;if(a<=Number.EPSILON)return g=1-b,this._w=g* +f+b*this._w,this._x=g*c+b*this._x,this._y=g*d+b*this._y,this._z=g*e+b*this._z,this.normalize(),this._onChangeCallback(),this;a=Math.sqrt(a);var h=Math.atan2(a,g);g=Math.sin((1-b)*h)/a;b=Math.sin(b*h)/a;this._w=f*g+this._w*b;this._x=c*g+this._x*b;this._y=d*g+this._y*b;this._z=e*g+this._z*b;this._onChangeCallback();return this},equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._w===this._w},fromArray:function(a,b){void 0===b&&(b=0);this._x=a[b];this._y=a[b+1];this._z=a[b+2]; +this._w=a[b+3];this._onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._w;return a},_onChange:function(a){this._onChangeCallback=a;return this},_onChangeCallback:function(){}});var Mg=new n,li=new wa;Object.assign(n.prototype,{isVector3:!0,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this},setScalar:function(a){this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y= +a;return this},setZ:function(a){this.z=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this}, +add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+=a.z*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."), +this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},multiply:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(a,b);this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*= +a;return this},multiplyVectors:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},applyEuler:function(a){a&&a.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.");return this.applyQuaternion(li.setFromEuler(a))},applyAxisAngle:function(a,b){return this.applyQuaternion(li.setFromAxisAngle(a,b))},applyMatrix3:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[3]*c+a[6]*d;this.y=a[1]*b+a[4]*c+a[7]* +d;this.z=a[2]*b+a[5]*c+a[8]*d;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;var e=1/(a[3]*b+a[7]*c+a[11]*d+a[15]);this.x=(a[0]*b+a[4]*c+a[8]*d+a[12])*e;this.y=(a[1]*b+a[5]*c+a[9]*d+a[13])*e;this.z=(a[2]*b+a[6]*c+a[10]*d+a[14])*e;return this},applyQuaternion:function(a){var b=this.x,c=this.y,d=this.z,e=a.x,f=a.y,g=a.z;a=a.w;var h=a*b+f*d-g*c,l=a*c+g*b-e*d,m=a*d+e*c-f*b;b=-e*b-f*c-g*d;this.x=h*a+b*-e+l*-g-m*-f;this.y=l*a+b*-f+m*-e-h*-g;this.z=m*a+b*-g+h*-f-l*-e;return this}, +project:function(a){return this.applyMatrix4(a.matrixWorldInverse).applyMatrix4(a.projectionMatrix)},unproject:function(a){return this.applyMatrix4(a.projectionMatrixInverse).applyMatrix4(a.matrixWorld)},transformDirection:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d;this.y=a[1]*b+a[5]*c+a[9]*d;this.z=a[2]*b+a[6]*c+a[10]*d;return this.normalize()},divide:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){return this.multiplyScalar(1/ +a)},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));return this},clampScalar:function(a,b){this.x=Math.max(a,Math.min(b,this.x));this.y=Math.max(a,Math.min(b,this.y));this.z=Math.max(a, +Math.min(b,this.z));return this},clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);return this},roundToZero:function(){this.x= +0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+ +Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},cross:function(a,b){return void 0!==b?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b)):this.crossVectors(this, +a)},crossVectors:function(a,b){var c=a.x,d=a.y;a=a.z;var e=b.x,f=b.y;b=b.z;this.x=d*b-a*f;this.y=a*e-c*b;this.z=c*f-d*e;return this},projectOnVector:function(a){var b=a.dot(this)/a.lengthSq();return this.copy(a).multiplyScalar(b)},projectOnPlane:function(a){Mg.copy(this).projectOnVector(a);return this.sub(Mg)},reflect:function(a){return this.sub(Mg.copy(a).multiplyScalar(2*this.dot(a)))},angleTo:function(a){var b=Math.sqrt(this.lengthSq()*a.lengthSq());0===b&&console.error("THREE.Vector3: angleTo() can't handle zero length vectors."); +a=this.dot(a)/b;return Math.acos(P.clamp(a,-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;a=this.z-a.z;return b*b+c*c+a*a},manhattanDistanceTo:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)+Math.abs(this.z-a.z)},setFromSpherical:function(a){return this.setFromSphericalCoords(a.radius,a.phi,a.theta)},setFromSphericalCoords:function(a,b,c){var d=Math.sin(b)*a;this.x=d*Math.sin(c);this.y=Math.cos(b)* +a;this.z=d*Math.cos(c);return this},setFromCylindrical:function(a){return this.setFromCylindricalCoords(a.radius,a.theta,a.y)},setFromCylindricalCoords:function(a,b,c){this.x=a*Math.sin(b);this.y=c;this.z=a*Math.cos(b);return this},setFromMatrixPosition:function(a){a=a.elements;this.x=a[12];this.y=a[13];this.z=a[14];return this},setFromMatrixScale:function(a){var b=this.setFromMatrixColumn(a,0).length(),c=this.setFromMatrixColumn(a,1).length();a=this.setFromMatrixColumn(a,2).length();this.x=b;this.y= +c;this.z=a;return this},setFromMatrixColumn:function(a,b){return this.fromArray(a.elements,4*b)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."); +this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);return this}});var pc=new n;Object.assign(Z.prototype,{isMatrix3:!0,set:function(a,b,c,d,e,f,g,h,l){var m=this.elements;m[0]=a;m[1]=d;m[2]=g;m[3]=b;m[4]=e;m[5]=h;m[6]=c;m[7]=f;m[8]=l;return this},identity:function(){this.set(1,0,0,0,1,0,0,0,1);return this},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]= +a[7];b[8]=a[8];return this},setFromMatrix4:function(a){a=a.elements;this.set(a[0],a[4],a[8],a[1],a[5],a[9],a[2],a[6],a[10]);return this},applyToBufferAttribute:function(a){for(var b=0,c=a.count;b<c;b++)pc.x=a.getX(b),pc.y=a.getY(b),pc.z=a.getZ(b),pc.applyMatrix3(this),a.setXYZ(b,pc.x,pc.y,pc.z);return a},multiply:function(a){return this.multiplyMatrices(this,a)},premultiply:function(a){return this.multiplyMatrices(a,this)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements;b=this.elements; +a=c[0];var e=c[3],f=c[6],g=c[1],h=c[4],l=c[7],m=c[2],k=c[5];c=c[8];var q=d[0],n=d[3],p=d[6],t=d[1],v=d[4],y=d[7],w=d[2],x=d[5];d=d[8];b[0]=a*q+e*t+f*w;b[3]=a*n+e*v+f*x;b[6]=a*p+e*y+f*d;b[1]=g*q+h*t+l*w;b[4]=g*n+h*v+l*x;b[7]=g*p+h*y+l*d;b[2]=m*q+k*t+c*w;b[5]=m*n+k*v+c*x;b[8]=m*p+k*y+c*d;return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[3]*=a;b[6]*=a;b[1]*=a;b[4]*=a;b[7]*=a;b[2]*=a;b[5]*=a;b[8]*=a;return this},determinant:function(){var a=this.elements,b=a[0],c=a[1],d=a[2],e=a[3], +f=a[4],g=a[5],h=a[6],l=a[7];a=a[8];return b*f*a-b*g*l-c*e*a+c*g*h+d*e*l-d*f*h},getInverse:function(a,b){a&&a.isMatrix4&&console.error("THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.");var c=a.elements;a=this.elements;var d=c[0],e=c[1],f=c[2],g=c[3],h=c[4],l=c[5],m=c[6],k=c[7];c=c[8];var q=c*h-l*k,n=l*m-c*g,p=k*g-h*m,t=d*q+e*n+f*p;if(0===t){if(!0===b)throw Error("THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0");console.warn("THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0"); +return this.identity()}b=1/t;a[0]=q*b;a[1]=(f*k-c*e)*b;a[2]=(l*e-f*h)*b;a[3]=n*b;a[4]=(c*d-f*m)*b;a[5]=(f*g-l*d)*b;a[6]=p*b;a[7]=(e*m-k*d)*b;a[8]=(h*d-e*g)*b;return this},transpose:function(){var a=this.elements;var b=a[1];a[1]=a[3];a[3]=b;b=a[2];a[2]=a[6];a[6]=b;b=a[5];a[5]=a[7];a[7]=b;return this},getNormalMatrix:function(a){return this.setFromMatrix4(a).getInverse(this).transpose()},transposeIntoArray:function(a){var b=this.elements;a[0]=b[0];a[1]=b[3];a[2]=b[6];a[3]=b[1];a[4]=b[4];a[5]=b[7];a[6]= +b[2];a[7]=b[5];a[8]=b[8];return this},setUvTransform:function(a,b,c,d,e,f,g){var h=Math.cos(e);e=Math.sin(e);this.set(c*h,c*e,-c*(h*f+e*g)+f+a,-d*e,d*h,-d*(-e*f+h*g)+g+b,0,0,1)},scale:function(a,b){var c=this.elements;c[0]*=a;c[3]*=a;c[6]*=a;c[1]*=b;c[4]*=b;c[7]*=b;return this},rotate:function(a){var b=Math.cos(a);a=Math.sin(a);var c=this.elements,d=c[0],e=c[3],f=c[6],g=c[1],h=c[4],l=c[7];c[0]=b*d+a*g;c[3]=b*e+a*h;c[6]=b*f+a*l;c[1]=-a*d+b*g;c[4]=-a*e+b*h;c[7]=-a*f+b*l;return this},translate:function(a, +b){var c=this.elements;c[0]+=a*c[2];c[3]+=a*c[5];c[6]+=a*c[8];c[1]+=b*c[2];c[4]+=b*c[5];c[7]+=b*c[8];return this},equals:function(a){var b=this.elements;a=a.elements;for(var c=0;9>c;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;9>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8]; +return a}});var md,Jb={getDataURL:function(a){if("undefined"==typeof HTMLCanvasElement)return a.src;if(!(a instanceof HTMLCanvasElement)){void 0===md&&(md=document.createElementNS("http://www.w3.org/1999/xhtml","canvas"));md.width=a.width;md.height=a.height;var b=md.getContext("2d");a instanceof ImageData?b.putImageData(a,0,0):b.drawImage(a,0,0,a.width,a.height);a=md}return 2048<a.width||2048<a.height?a.toDataURL("image/jpeg",.6):a.toDataURL("image/png")}},Si=0;Y.DEFAULT_IMAGE=void 0;Y.DEFAULT_MAPPING= +300;Y.prototype=Object.assign(Object.create(Ba.prototype),{constructor:Y,isTexture:!0,updateMatrix:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.name=a.name;this.image=a.image;this.mipmaps=a.mipmaps.slice(0);this.mapping=a.mapping;this.wrapS=a.wrapS;this.wrapT=a.wrapT;this.magFilter=a.magFilter;this.minFilter=a.minFilter;this.anisotropy= +a.anisotropy;this.format=a.format;this.type=a.type;this.offset.copy(a.offset);this.repeat.copy(a.repeat);this.center.copy(a.center);this.rotation=a.rotation;this.matrixAutoUpdate=a.matrixAutoUpdate;this.matrix.copy(a.matrix);this.generateMipmaps=a.generateMipmaps;this.premultiplyAlpha=a.premultiplyAlpha;this.flipY=a.flipY;this.unpackAlignment=a.unpackAlignment;this.encoding=a.encoding;return this},toJSON:function(a){var b=void 0===a||"string"===typeof a;if(!b&&void 0!==a.textures[this.uuid])return a.textures[this.uuid]; +var c={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment}; +if(void 0!==this.image){var d=this.image;void 0===d.uuid&&(d.uuid=P.generateUUID());if(!b&&void 0===a.images[d.uuid]){if(Array.isArray(d)){var e=[];for(var f=0,g=d.length;f<g;f++)e.push(Jb.getDataURL(d[f]))}else e=Jb.getDataURL(d);a.images[d.uuid]={uuid:d.uuid,url:e}}c.image=d.uuid}b||(a.textures[this.uuid]=c);return c},dispose:function(){this.dispatchEvent({type:"dispose"})},transformUv:function(a){if(300!==this.mapping)return a;a.applyMatrix3(this.matrix);if(0>a.x||1<a.x)switch(this.wrapS){case 1E3:a.x-= +Math.floor(a.x);break;case 1001:a.x=0>a.x?0:1;break;case 1002:a.x=1===Math.abs(Math.floor(a.x)%2)?Math.ceil(a.x)-a.x:a.x-Math.floor(a.x)}if(0>a.y||1<a.y)switch(this.wrapT){case 1E3:a.y-=Math.floor(a.y);break;case 1001:a.y=0>a.y?0:1;break;case 1002:a.y=1===Math.abs(Math.floor(a.y)%2)?Math.ceil(a.y)-a.y:a.y-Math.floor(a.y)}this.flipY&&(a.y=1-a.y);return a}});Object.defineProperty(Y.prototype,"needsUpdate",{set:function(a){!0===a&&this.version++}});Object.defineProperties(da.prototype,{width:{get:function(){return this.z}, +set:function(a){this.z=a}},height:{get:function(){return this.w},set:function(a){this.w=a}}});Object.assign(da.prototype,{isVector4:!0,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},setScalar:function(a){this.w=this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setW:function(a){this.w=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b; +break;case 2:this.z=b;break;case 3:this.w=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=void 0!==a.w?a.w:1;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), +this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;this.w+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+=a.z*b;this.w+=a.w*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a, +b);this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;this.w-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=this.w;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12]*e;this.y=a[1]*b+a[5]*c+a[9]*d+a[13]*e;this.z=a[2]*b+a[6]*c+a[10]*d+a[14]* +e;this.w=a[3]*b+a[7]*c+a[11]*d+a[15]*e;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);1E-4>b?(this.x=1,this.z=this.y=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b);return this},setAxisAngleFromRotationMatrix:function(a){a=a.elements;var b=a[0];var c=a[4];var d=a[8],e=a[1],f=a[5],g=a[9];var h=a[2];var l=a[6];var m=a[10];if(.01>Math.abs(c-e)&&.01>Math.abs(d-h)&&.01>Math.abs(g-l)){if(.1>Math.abs(c+ +e)&&.1>Math.abs(d+h)&&.1>Math.abs(g+l)&&.1>Math.abs(b+f+m-3))return this.set(1,0,0,0),this;a=Math.PI;b=(b+1)/2;f=(f+1)/2;m=(m+1)/2;c=(c+e)/4;d=(d+h)/4;g=(g+l)/4;b>f&&b>m?.01>b?(l=0,c=h=.707106781):(l=Math.sqrt(b),h=c/l,c=d/l):f>m?.01>f?(l=.707106781,h=0,c=.707106781):(h=Math.sqrt(f),l=c/h,c=g/h):.01>m?(h=l=.707106781,c=0):(c=Math.sqrt(m),l=d/c,h=g/c);this.set(l,h,c,a);return this}a=Math.sqrt((l-g)*(l-g)+(d-h)*(d-h)+(e-c)*(e-c));.001>Math.abs(a)&&(a=1);this.x=(l-g)/a;this.y=(d-h)/a;this.z=(e-c)/a; +this.w=Math.acos((b+f+m-1)/2);return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);this.w=Math.min(this.w,a.w);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);this.w=Math.max(this.w,a.w);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));this.w=Math.max(a.w,Math.min(b.w, +this.w));return this},clampScalar:function(a,b){this.x=Math.max(a,Math.min(b,this.x));this.y=Math.max(a,Math.min(b,this.y));this.z=Math.max(a,Math.min(b,this.z));this.w=Math.max(a,Math.min(b,this.w));return this},clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);this.w=Math.floor(this.w);return this},ceil:function(){this.x=Math.ceil(this.x); +this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);this.w=Math.ceil(this.w);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);this.w=Math.round(this.w);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);this.w=0>this.w?Math.ceil(this.w):Math.floor(this.w);return this},negate:function(){this.x=-this.x; +this.y=-this.y;this.z=-this.z;this.w=-this.w;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},manhattanLength:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(a){return this.normalize().multiplyScalar(a)}, +lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];this.w=a[b+3];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;a[b+3]= +this.w;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);this.w=a.getW(b);return this}});la.prototype=Object.assign(Object.create(Ba.prototype),{constructor:la,isWebGLRenderTarget:!0,setSize:function(a,b){if(this.width!==a||this.height!==b)this.width=a,this.height=b,this.texture.image.width=a,this.texture.image.height=b,this.dispose();this.viewport.set(0,0, +a,b);this.scissor.set(0,0,a,b)},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.width=a.width;this.height=a.height;this.viewport.copy(a.viewport);this.texture=a.texture.clone();this.depthBuffer=a.depthBuffer;this.stencilBuffer=a.stencilBuffer;this.depthTexture=a.depthTexture;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});Sf.prototype=Object.assign(Object.create(la.prototype),{constructor:Sf,isWebGLMultisampleRenderTarget:!0,copy:function(a){la.prototype.copy.call(this, +a);this.samples=a.samples;return this}});var Ka=new n,ca=new Q,tk=new n(0,0,0),uk=new n(1,1,1),Kb=new n,uf=new n,ja=new n;Object.assign(Q.prototype,{isMatrix4:!0,set:function(a,b,c,d,e,f,g,h,l,m,k,q,n,p,t,v){var r=this.elements;r[0]=a;r[4]=b;r[8]=c;r[12]=d;r[1]=e;r[5]=f;r[9]=g;r[13]=h;r[2]=l;r[6]=m;r[10]=k;r[14]=q;r[3]=n;r[7]=p;r[11]=t;r[15]=v;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},clone:function(){return(new Q).fromArray(this.elements)},copy:function(a){var b= +this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return this},copyPosition:function(a){var b=this.elements;a=a.elements;b[12]=a[12];b[13]=a[13];b[14]=a[14];return this},extractBasis:function(a,b,c){a.setFromMatrixColumn(this,0);b.setFromMatrixColumn(this,1);c.setFromMatrixColumn(this,2);return this},makeBasis:function(a,b,c){this.set(a.x,b.x,c.x,0,a.y, +b.y,c.y,0,a.z,b.z,c.z,0,0,0,0,1);return this},extractRotation:function(a){var b=this.elements,c=a.elements,d=1/Ka.setFromMatrixColumn(a,0).length(),e=1/Ka.setFromMatrixColumn(a,1).length();a=1/Ka.setFromMatrixColumn(a,2).length();b[0]=c[0]*d;b[1]=c[1]*d;b[2]=c[2]*d;b[3]=0;b[4]=c[4]*e;b[5]=c[5]*e;b[6]=c[6]*e;b[7]=0;b[8]=c[8]*a;b[9]=c[9]*a;b[10]=c[10]*a;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},makeRotationFromEuler:function(a){a&&a.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order."); +var b=this.elements,c=a.x,d=a.y,e=a.z,f=Math.cos(c);c=Math.sin(c);var g=Math.cos(d);d=Math.sin(d);var h=Math.cos(e);e=Math.sin(e);if("XYZ"===a.order){a=f*h;var l=f*e,m=c*h,k=c*e;b[0]=g*h;b[4]=-g*e;b[8]=d;b[1]=l+m*d;b[5]=a-k*d;b[9]=-c*g;b[2]=k-a*d;b[6]=m+l*d;b[10]=f*g}else"YXZ"===a.order?(a=g*h,l=g*e,m=d*h,k=d*e,b[0]=a+k*c,b[4]=m*c-l,b[8]=f*d,b[1]=f*e,b[5]=f*h,b[9]=-c,b[2]=l*c-m,b[6]=k+a*c,b[10]=f*g):"ZXY"===a.order?(a=g*h,l=g*e,m=d*h,k=d*e,b[0]=a-k*c,b[4]=-f*e,b[8]=m+l*c,b[1]=l+m*c,b[5]=f*h,b[9]= +k-a*c,b[2]=-f*d,b[6]=c,b[10]=f*g):"ZYX"===a.order?(a=f*h,l=f*e,m=c*h,k=c*e,b[0]=g*h,b[4]=m*d-l,b[8]=a*d+k,b[1]=g*e,b[5]=k*d+a,b[9]=l*d-m,b[2]=-d,b[6]=c*g,b[10]=f*g):"YZX"===a.order?(a=f*g,l=f*d,m=c*g,k=c*d,b[0]=g*h,b[4]=k-a*e,b[8]=m*e+l,b[1]=e,b[5]=f*h,b[9]=-c*h,b[2]=-d*h,b[6]=l*e+m,b[10]=a-k*e):"XZY"===a.order&&(a=f*g,l=f*d,m=c*g,k=c*d,b[0]=g*h,b[4]=-e,b[8]=d*h,b[1]=a*e+k,b[5]=f*h,b[9]=l*e-m,b[2]=m*e-l,b[6]=c*h,b[10]=k*e+a);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},makeRotationFromQuaternion:function(a){return this.compose(tk, +a,uk)},lookAt:function(a,b,c){var d=this.elements;ja.subVectors(a,b);0===ja.lengthSq()&&(ja.z=1);ja.normalize();Kb.crossVectors(c,ja);0===Kb.lengthSq()&&(1===Math.abs(c.z)?ja.x+=1E-4:ja.z+=1E-4,ja.normalize(),Kb.crossVectors(c,ja));Kb.normalize();uf.crossVectors(ja,Kb);d[0]=Kb.x;d[4]=uf.x;d[8]=ja.x;d[1]=Kb.y;d[5]=uf.y;d[9]=ja.y;d[2]=Kb.z;d[6]=uf.z;d[10]=ja.z;return this},multiply:function(a,b){return void 0!==b?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."), +this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},premultiply:function(a){return this.multiplyMatrices(a,this)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements;b=this.elements;a=c[0];var e=c[4],f=c[8],g=c[12],h=c[1],l=c[5],m=c[9],k=c[13],q=c[2],n=c[6],p=c[10],t=c[14],v=c[3],y=c[7],w=c[11];c=c[15];var x=d[0],B=d[4],H=d[8],z=d[12],A=d[1],D=d[5],E=d[9],C=d[13],I=d[2],G=d[6],J=d[10],L=d[14],N=d[3],O=d[7],P=d[11];d=d[15];b[0]=a*x+e*A+f*I+g*N;b[4]=a*B+e*D+f*G+g*O;b[8]=a*H+e*E+f*J+ +g*P;b[12]=a*z+e*C+f*L+g*d;b[1]=h*x+l*A+m*I+k*N;b[5]=h*B+l*D+m*G+k*O;b[9]=h*H+l*E+m*J+k*P;b[13]=h*z+l*C+m*L+k*d;b[2]=q*x+n*A+p*I+t*N;b[6]=q*B+n*D+p*G+t*O;b[10]=q*H+n*E+p*J+t*P;b[14]=q*z+n*C+p*L+t*d;b[3]=v*x+y*A+w*I+c*N;b[7]=v*B+y*D+w*G+c*O;b[11]=v*H+y*E+w*J+c*P;b[15]=v*z+y*C+w*L+c*d;return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*=a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*=a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*=a;b[15]*=a;return this},applyToBufferAttribute:function(a){for(var b= +0,c=a.count;b<c;b++)Ka.x=a.getX(b),Ka.y=a.getY(b),Ka.z=a.getZ(b),Ka.applyMatrix4(this),a.setXYZ(b,Ka.x,Ka.y,Ka.z);return a},determinant:function(){var a=this.elements,b=a[0],c=a[4],d=a[8],e=a[12],f=a[1],g=a[5],h=a[9],l=a[13],m=a[2],k=a[6],q=a[10],n=a[14];return a[3]*(+e*h*k-d*l*k-e*g*q+c*l*q+d*g*n-c*h*n)+a[7]*(+b*h*n-b*l*q+e*f*q-d*f*n+d*l*m-e*h*m)+a[11]*(+b*l*k-b*g*n-e*f*k+c*f*n+e*g*m-c*l*m)+a[15]*(-d*g*m-b*h*k+b*g*q+d*f*k-c*f*q+c*h*m)},transpose:function(){var a=this.elements;var b=a[1];a[1]=a[4]; +a[4]=b;b=a[2];a[2]=a[8];a[8]=b;b=a[6];a[6]=a[9];a[9]=b;b=a[3];a[3]=a[12];a[12]=b;b=a[7];a[7]=a[13];a[13]=b;b=a[11];a[11]=a[14];a[14]=b;return this},setPosition:function(a,b,c){var d=this.elements;a.isVector3?(d[12]=a.x,d[13]=a.y,d[14]=a.z):(d[12]=a,d[13]=b,d[14]=c);return this},getInverse:function(a,b){var c=this.elements,d=a.elements;a=d[0];var e=d[1],f=d[2],g=d[3],h=d[4],l=d[5],m=d[6],k=d[7],q=d[8],n=d[9],p=d[10],t=d[11],v=d[12],y=d[13],w=d[14];d=d[15];var x=n*w*k-y*p*k+y*m*t-l*w*t-n*m*d+l*p*d, +B=v*p*k-q*w*k-v*m*t+h*w*t+q*m*d-h*p*d,H=q*y*k-v*n*k+v*l*t-h*y*t-q*l*d+h*n*d,z=v*n*m-q*y*m-v*l*p+h*y*p+q*l*w-h*n*w,A=a*x+e*B+f*H+g*z;if(0===A){if(!0===b)throw Error("THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0");console.warn("THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0");return this.identity()}b=1/A;c[0]=x*b;c[1]=(y*p*g-n*w*g-y*f*t+e*w*t+n*f*d-e*p*d)*b;c[2]=(l*w*g-y*m*g+y*f*k-e*w*k-l*f*d+e*m*d)*b;c[3]=(n*m*g-l*p*g-n*f*k+e*p*k+l*f*t-e*m*t)*b;c[4]=B*b;c[5]= +(q*w*g-v*p*g+v*f*t-a*w*t-q*f*d+a*p*d)*b;c[6]=(v*m*g-h*w*g-v*f*k+a*w*k+h*f*d-a*m*d)*b;c[7]=(h*p*g-q*m*g+q*f*k-a*p*k-h*f*t+a*m*t)*b;c[8]=H*b;c[9]=(v*n*g-q*y*g-v*e*t+a*y*t+q*e*d-a*n*d)*b;c[10]=(h*y*g-v*l*g+v*e*k-a*y*k-h*e*d+a*l*d)*b;c[11]=(q*l*g-h*n*g-q*e*k+a*n*k+h*e*t-a*l*t)*b;c[12]=z*b;c[13]=(q*y*f-v*n*f+v*e*p-a*y*p-q*e*w+a*n*w)*b;c[14]=(v*l*f-h*y*f-v*e*m+a*y*m+h*e*w-a*l*w)*b;c[15]=(h*n*f-q*l*f+q*e*m-a*n*m-h*e*p+a*l*p)*b;return this},scale:function(a){var b=this.elements,c=a.x,d=a.y;a=a.z;b[0]*=c; +b[4]*=d;b[8]*=a;b[1]*=c;b[5]*=d;b[9]*=a;b[2]*=c;b[6]*=d;b[10]*=a;b[3]*=c;b[7]*=d;b[11]*=a;return this},getMaxScaleOnAxis:function(){var a=this.elements;return Math.sqrt(Math.max(a[0]*a[0]+a[1]*a[1]+a[2]*a[2],a[4]*a[4]+a[5]*a[5]+a[6]*a[6],a[8]*a[8]+a[9]*a[9]+a[10]*a[10]))},makeTranslation:function(a,b,c){this.set(1,0,0,a,0,1,0,b,0,0,1,c,0,0,0,1);return this},makeRotationX:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1);return this},makeRotationY:function(a){var b= +Math.cos(a);a=Math.sin(a);this.set(b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1);return this},makeRotationZ:function(a){var b=Math.cos(a);a=Math.sin(a);this.set(b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1);return this},makeRotationAxis:function(a,b){var c=Math.cos(b);b=Math.sin(b);var d=1-c,e=a.x,f=a.y;a=a.z;var g=d*e,h=d*f;this.set(g*e+c,g*f-b*a,g*a+b*f,0,g*f+b*a,h*f+c,h*a-b*e,0,g*a-b*f,h*a+b*e,d*a*a+c,0,0,0,0,1);return this},makeScale:function(a,b,c){this.set(a,0,0,0,0,b,0,0,0,0,c,0,0,0,0,1);return this},makeShear:function(a, +b,c){this.set(1,b,c,0,a,1,c,0,a,b,1,0,0,0,0,1);return this},compose:function(a,b,c){var d=this.elements,e=b._x,f=b._y,g=b._z,h=b._w,l=e+e,m=f+f,k=g+g;b=e*l;var n=e*m;e*=k;var u=f*m;f*=k;g*=k;l*=h;m*=h;h*=k;k=c.x;var p=c.y;c=c.z;d[0]=(1-(u+g))*k;d[1]=(n+h)*k;d[2]=(e-m)*k;d[3]=0;d[4]=(n-h)*p;d[5]=(1-(b+g))*p;d[6]=(f+l)*p;d[7]=0;d[8]=(e+m)*c;d[9]=(f-l)*c;d[10]=(1-(b+u))*c;d[11]=0;d[12]=a.x;d[13]=a.y;d[14]=a.z;d[15]=1;return this},decompose:function(a,b,c){var d=this.elements,e=Ka.set(d[0],d[1],d[2]).length(), +f=Ka.set(d[4],d[5],d[6]).length(),g=Ka.set(d[8],d[9],d[10]).length();0>this.determinant()&&(e=-e);a.x=d[12];a.y=d[13];a.z=d[14];ca.copy(this);a=1/e;d=1/f;var h=1/g;ca.elements[0]*=a;ca.elements[1]*=a;ca.elements[2]*=a;ca.elements[4]*=d;ca.elements[5]*=d;ca.elements[6]*=d;ca.elements[8]*=h;ca.elements[9]*=h;ca.elements[10]*=h;b.setFromRotationMatrix(ca);c.x=e;c.y=f;c.z=g;return this},makePerspective:function(a,b,c,d,e,f){void 0===f&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs."); +var g=this.elements;g[0]=2*e/(b-a);g[4]=0;g[8]=(b+a)/(b-a);g[12]=0;g[1]=0;g[5]=2*e/(c-d);g[9]=(c+d)/(c-d);g[13]=0;g[2]=0;g[6]=0;g[10]=-(f+e)/(f-e);g[14]=-2*f*e/(f-e);g[3]=0;g[7]=0;g[11]=-1;g[15]=0;return this},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=1/(b-a),l=1/(c-d),m=1/(f-e);g[0]=2*h;g[4]=0;g[8]=0;g[12]=-((b+a)*h);g[1]=0;g[5]=2*l;g[9]=0;g[13]=-((c+d)*l);g[2]=0;g[6]=0;g[10]=-2*m;g[14]=-((f+e)*m);g[3]=0;g[7]=0;g[11]=0;g[15]=1;return this},equals:function(a){var b=this.elements; +a=a.elements;for(var c=0;16>c;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;16>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];a[b+9]=c[9];a[b+10]=c[10];a[b+11]=c[11];a[b+12]=c[12];a[b+13]=c[13];a[b+14]=c[14];a[b+15]=c[15];return a}});var mi=new Q,ni=new wa;Pb.RotationOrders= +"XYZ YZX ZXY XZY YXZ ZYX".split(" ");Pb.DefaultOrder="XYZ";Object.defineProperties(Pb.prototype,{x:{get:function(){return this._x},set:function(a){this._x=a;this._onChangeCallback()}},y:{get:function(){return this._y},set:function(a){this._y=a;this._onChangeCallback()}},z:{get:function(){return this._z},set:function(a){this._z=a;this._onChangeCallback()}},order:{get:function(){return this._order},set:function(a){this._order=a;this._onChangeCallback()}}});Object.assign(Pb.prototype,{isEuler:!0,set:function(a, +b,c,d){this._x=a;this._y=b;this._z=c;this._order=d||this._order;this._onChangeCallback();return this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._order)},copy:function(a){this._x=a._x;this._y=a._y;this._z=a._z;this._order=a._order;this._onChangeCallback();return this},setFromRotationMatrix:function(a,b,c){var d=P.clamp,e=a.elements;a=e[0];var f=e[4],g=e[8],h=e[1],l=e[5],m=e[9],k=e[2],n=e[6];e=e[10];b=b||this._order;"XYZ"===b?(this._y=Math.asin(d(g,-1,1)),.9999999>Math.abs(g)? +(this._x=Math.atan2(-m,e),this._z=Math.atan2(-f,a)):(this._x=Math.atan2(n,l),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(m,-1,1)),.9999999>Math.abs(m)?(this._y=Math.atan2(g,e),this._z=Math.atan2(h,l)):(this._y=Math.atan2(-k,a),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(n,-1,1)),.9999999>Math.abs(n)?(this._y=Math.atan2(-k,e),this._z=Math.atan2(-f,l)):(this._y=0,this._z=Math.atan2(h,a))):"ZYX"===b?(this._y=Math.asin(-d(k,-1,1)),.9999999>Math.abs(k)?(this._x=Math.atan2(n,e),this._z=Math.atan2(h,a)): +(this._x=0,this._z=Math.atan2(-f,l))):"YZX"===b?(this._z=Math.asin(d(h,-1,1)),.9999999>Math.abs(h)?(this._x=Math.atan2(-m,l),this._y=Math.atan2(-k,a)):(this._x=0,this._y=Math.atan2(g,e))):"XZY"===b?(this._z=Math.asin(-d(f,-1,1)),.9999999>Math.abs(f)?(this._x=Math.atan2(n,l),this._y=Math.atan2(g,a)):(this._x=Math.atan2(-m,e),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+b);this._order=b;!1!==c&&this._onChangeCallback();return this},setFromQuaternion:function(a, +b,c){mi.makeRotationFromQuaternion(a);return this.setFromRotationMatrix(mi,b,c)},setFromVector3:function(a,b){return this.set(a.x,a.y,a.z,b||this._order)},reorder:function(a){ni.setFromEuler(this);return this.setFromQuaternion(ni,a)},equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){this._x=a[0];this._y=a[1];this._z=a[2];void 0!==a[3]&&(this._order=a[3]);this._onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a= +[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._order;return a},toVector3:function(a){return a?a.set(this._x,this._y,this._z):new n(this._x,this._y,this._z)},_onChange:function(a){this._onChangeCallback=a;return this},_onChangeCallback:function(){}});Object.assign(Tf.prototype,{set:function(a){this.mask=1<<a|0},enable:function(a){this.mask=this.mask|1<<a|0},enableAll:function(){this.mask=-1},toggle:function(a){this.mask^=1<<a|0},disable:function(a){this.mask&=~(1<<a| +0)},disableAll:function(){this.mask=0},test:function(a){return 0!==(this.mask&a.mask)}});var Ti=0,oi=new n,nd=new wa,vb=new Q,vf=new n,xe=new n,vk=new n,wk=new wa,pi=new n(1,0,0),qi=new n(0,1,0),ri=new n(0,0,1),xk={type:"added"},yk={type:"removed"};D.DefaultUp=new n(0,1,0);D.DefaultMatrixAutoUpdate=!0;D.prototype=Object.assign(Object.create(Ba.prototype),{constructor:D,isObject3D:!0,onBeforeRender:function(){},onAfterRender:function(){},applyMatrix:function(a){this.matrixAutoUpdate&&this.updateMatrix(); +this.matrix.premultiply(a);this.matrix.decompose(this.position,this.quaternion,this.scale)},applyQuaternion:function(a){this.quaternion.premultiply(a);return this},setRotationFromAxisAngle:function(a,b){this.quaternion.setFromAxisAngle(a,b)},setRotationFromEuler:function(a){this.quaternion.setFromEuler(a,!0)},setRotationFromMatrix:function(a){this.quaternion.setFromRotationMatrix(a)},setRotationFromQuaternion:function(a){this.quaternion.copy(a)},rotateOnAxis:function(a,b){nd.setFromAxisAngle(a,b); +this.quaternion.multiply(nd);return this},rotateOnWorldAxis:function(a,b){nd.setFromAxisAngle(a,b);this.quaternion.premultiply(nd);return this},rotateX:function(a){return this.rotateOnAxis(pi,a)},rotateY:function(a){return this.rotateOnAxis(qi,a)},rotateZ:function(a){return this.rotateOnAxis(ri,a)},translateOnAxis:function(a,b){oi.copy(a).applyQuaternion(this.quaternion);this.position.add(oi.multiplyScalar(b));return this},translateX:function(a){return this.translateOnAxis(pi,a)},translateY:function(a){return this.translateOnAxis(qi, +a)},translateZ:function(a){return this.translateOnAxis(ri,a)},localToWorld:function(a){return a.applyMatrix4(this.matrixWorld)},worldToLocal:function(a){return a.applyMatrix4(vb.getInverse(this.matrixWorld))},lookAt:function(a,b,c){a.isVector3?vf.copy(a):vf.set(a,b,c);a=this.parent;this.updateWorldMatrix(!0,!1);xe.setFromMatrixPosition(this.matrixWorld);this.isCamera||this.isLight?vb.lookAt(xe,vf,this.up):vb.lookAt(vf,xe,this.up);this.quaternion.setFromRotationMatrix(vb);a&&(vb.extractRotation(a.matrixWorld), +nd.setFromRotationMatrix(vb),this.quaternion.premultiply(nd.inverse()))},add:function(a){if(1<arguments.length){for(var b=0;b<arguments.length;b++)this.add(arguments[b]);return this}if(a===this)return console.error("THREE.Object3D.add: object can't be added as a child of itself.",a),this;a&&a.isObject3D?(null!==a.parent&&a.parent.remove(a),a.parent=this,this.children.push(a),a.dispatchEvent(xk)):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",a);return this},remove:function(a){if(1< +arguments.length){for(var b=0;b<arguments.length;b++)this.remove(arguments[b]);return this}b=this.children.indexOf(a);-1!==b&&(a.parent=null,this.children.splice(b,1),a.dispatchEvent(yk));return this},attach:function(a){this.updateWorldMatrix(!0,!1);vb.getInverse(this.matrixWorld);null!==a.parent&&(a.parent.updateWorldMatrix(!0,!1),vb.multiply(a.parent.matrixWorld));a.applyMatrix(vb);a.updateWorldMatrix(!1,!1);this.add(a);return this},getObjectById:function(a){return this.getObjectByProperty("id", +a)},getObjectByName:function(a){return this.getObjectByProperty("name",a)},getObjectByProperty:function(a,b){if(this[a]===b)return this;for(var c=0,d=this.children.length;c<d;c++){var e=this.children[c].getObjectByProperty(a,b);if(void 0!==e)return e}},getWorldPosition:function(a){void 0===a&&(console.warn("THREE.Object3D: .getWorldPosition() target is now required"),a=new n);this.updateMatrixWorld(!0);return a.setFromMatrixPosition(this.matrixWorld)},getWorldQuaternion:function(a){void 0===a&&(console.warn("THREE.Object3D: .getWorldQuaternion() target is now required"), +a=new wa);this.updateMatrixWorld(!0);this.matrixWorld.decompose(xe,a,vk);return a},getWorldScale:function(a){void 0===a&&(console.warn("THREE.Object3D: .getWorldScale() target is now required"),a=new n);this.updateMatrixWorld(!0);this.matrixWorld.decompose(xe,wk,a);return a},getWorldDirection:function(a){void 0===a&&(console.warn("THREE.Object3D: .getWorldDirection() target is now required"),a=new n);this.updateMatrixWorld(!0);var b=this.matrixWorld.elements;return a.set(b[8],b[9],b[10]).normalize()}, +raycast:function(){},traverse:function(a){a(this);for(var b=this.children,c=0,d=b.length;c<d;c++)b[c].traverse(a)},traverseVisible:function(a){if(!1!==this.visible){a(this);for(var b=this.children,c=0,d=b.length;c<d;c++)b[c].traverseVisible(a)}},traverseAncestors:function(a){var b=this.parent;null!==b&&(a(b),b.traverseAncestors(a))},updateMatrix:function(){this.matrix.compose(this.position,this.quaternion,this.scale);this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(a){this.matrixAutoUpdate&& +this.updateMatrix();if(this.matrixWorldNeedsUpdate||a)null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,a=!0;for(var b=this.children,c=0,d=b.length;c<d;c++)b[c].updateMatrixWorld(a)},updateWorldMatrix:function(a,b){var c=this.parent;!0===a&&null!==c&&c.updateWorldMatrix(!0,!1);this.matrixAutoUpdate&&this.updateMatrix();null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, +this.matrix);if(!0===b)for(a=this.children,b=0,c=a.length;b<c;b++)a[b].updateWorldMatrix(!1,!0)},toJSON:function(a){function b(b,c){void 0===b[c.uuid]&&(b[c.uuid]=c.toJSON(a));return c.uuid}function c(a){var b=[],c;for(c in a){var d=a[c];delete d.metadata;b.push(d)}return b}var d=void 0===a||"string"===typeof a,e={};d&&(a={geometries:{},materials:{},textures:{},images:{},shapes:{}},e.metadata={version:4.5,type:"Object",generator:"Object3D.toJSON"});var f={};f.uuid=this.uuid;f.type=this.type;""!== +this.name&&(f.name=this.name);!0===this.castShadow&&(f.castShadow=!0);!0===this.receiveShadow&&(f.receiveShadow=!0);!1===this.visible&&(f.visible=!1);!1===this.frustumCulled&&(f.frustumCulled=!1);0!==this.renderOrder&&(f.renderOrder=this.renderOrder);"{}"!==JSON.stringify(this.userData)&&(f.userData=this.userData);f.layers=this.layers.mask;f.matrix=this.matrix.toArray();!1===this.matrixAutoUpdate&&(f.matrixAutoUpdate=!1);this.isMesh&&0!==this.drawMode&&(f.drawMode=this.drawMode);this.isInstancedMesh&& +(f.type="InstancedMesh",f.count=this.count,f.instanceMatrix=this.instanceMatrix.toJSON());if(this.isMesh||this.isLine||this.isPoints){f.geometry=b(a.geometries,this.geometry);var g=this.geometry.parameters;if(void 0!==g&&void 0!==g.shapes)if(g=g.shapes,Array.isArray(g))for(var h=0,l=g.length;h<l;h++)b(a.shapes,g[h]);else b(a.shapes,g)}if(void 0!==this.material)if(Array.isArray(this.material)){g=[];h=0;for(l=this.material.length;h<l;h++)g.push(b(a.materials,this.material[h]));f.material=g}else f.material= +b(a.materials,this.material);if(0<this.children.length)for(f.children=[],h=0;h<this.children.length;h++)f.children.push(this.children[h].toJSON(a).object);if(d){d=c(a.geometries);h=c(a.materials);l=c(a.textures);var m=c(a.images);g=c(a.shapes);0<d.length&&(e.geometries=d);0<h.length&&(e.materials=h);0<l.length&&(e.textures=l);0<m.length&&(e.images=m);0<g.length&&(e.shapes=g)}e.object=f;return e},clone:function(a){return(new this.constructor).copy(this,a)},copy:function(a,b){void 0===b&&(b=!0);this.name= +a.name;this.up.copy(a.up);this.position.copy(a.position);this.quaternion.copy(a.quaternion);this.scale.copy(a.scale);this.matrix.copy(a.matrix);this.matrixWorld.copy(a.matrixWorld);this.matrixAutoUpdate=a.matrixAutoUpdate;this.matrixWorldNeedsUpdate=a.matrixWorldNeedsUpdate;this.layers.mask=a.layers.mask;this.visible=a.visible;this.castShadow=a.castShadow;this.receiveShadow=a.receiveShadow;this.frustumCulled=a.frustumCulled;this.renderOrder=a.renderOrder;this.userData=JSON.parse(JSON.stringify(a.userData)); +if(!0===b)for(b=0;b<a.children.length;b++)this.add(a.children[b].clone());return this}});wd.prototype=Object.assign(Object.create(D.prototype),{constructor:wd,isScene:!0,copy:function(a,b){D.prototype.copy.call(this,a,b);null!==a.background&&(this.background=a.background.clone());null!==a.fog&&(this.fog=a.fog.clone());null!==a.overrideMaterial&&(this.overrideMaterial=a.overrideMaterial.clone());this.autoUpdate=a.autoUpdate;this.matrixAutoUpdate=a.matrixAutoUpdate;return this},toJSON:function(a){var b= +D.prototype.toJSON.call(this,a);null!==this.background&&(b.object.background=this.background.toJSON(a));null!==this.fog&&(b.object.fog=this.fog.toJSON());return b},dispose:function(){this.dispatchEvent({type:"dispose"})}});var wb=[new n,new n,new n,new n,new n,new n,new n,new n],ib=new n,od=new n,pd=new n,qd=new n,Lb=new n,Mb=new n,qc=new n,ye=new n,wf=new n,xf=new n,Qb=new n;Object.assign(ab.prototype,{isBox3:!0,set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromArray:function(a){for(var b= +Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,l=a.length;h<l;h+=3){var m=a[h],k=a[h+1],n=a[h+2];m<b&&(b=m);k<c&&(c=k);n<d&&(d=n);m>e&&(e=m);k>f&&(f=k);n>g&&(g=n)}this.min.set(b,c,d);this.max.set(e,f,g);return this},setFromBufferAttribute:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,l=a.count;h<l;h++){var m=a.getX(h),k=a.getY(h),n=a.getZ(h);m<b&&(b=m);k<c&&(c=k);n<d&&(d=n);m>e&&(e=m);k>f&&(f=k);n>g&&(g=n)}this.min.set(b,c,d); +this.max.set(e,f,g);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;b<c;b++)this.expandByPoint(a[b]);return this},setFromCenterAndSize:function(a,b){b=ib.copy(b).multiplyScalar(.5);this.min.copy(a).sub(b);this.max.copy(a).add(b);return this},setFromObject:function(a){this.makeEmpty();return this.expandByObject(a)},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.min.copy(a.min);this.max.copy(a.max);return this},makeEmpty:function(){this.min.x= +this.min.y=this.min.z=Infinity;this.max.x=this.max.y=this.max.z=-Infinity;return this},isEmpty:function(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z},getCenter:function(a){void 0===a&&(console.warn("THREE.Box3: .getCenter() target is now required"),a=new n);return this.isEmpty()?a.set(0,0,0):a.addVectors(this.min,this.max).multiplyScalar(.5)},getSize:function(a){void 0===a&&(console.warn("THREE.Box3: .getSize() target is now required"),a=new n);return this.isEmpty()? +a.set(0,0,0):a.subVectors(this.max,this.min)},expandByPoint:function(a){this.min.min(a);this.max.max(a);return this},expandByVector:function(a){this.min.sub(a);this.max.add(a);return this},expandByScalar:function(a){this.min.addScalar(-a);this.max.addScalar(a);return this},expandByObject:function(a){var b;a.updateWorldMatrix(!1,!1);var c=a.geometry;if(void 0!==c)if(c.isGeometry){var d=c.vertices;c=0;for(b=d.length;c<b;c++)ib.copy(d[c]),ib.applyMatrix4(a.matrixWorld),this.expandByPoint(ib)}else if(c.isBufferGeometry&& +(d=c.attributes.position,void 0!==d))for(c=0,b=d.count;c<b;c++)ib.fromBufferAttribute(d,c).applyMatrix4(a.matrixWorld),this.expandByPoint(ib);a=a.children;c=0;for(b=a.length;c<b;c++)this.expandByObject(a[c]);return this},containsPoint:function(a){return a.x<this.min.x||a.x>this.max.x||a.y<this.min.y||a.y>this.max.y||a.z<this.min.z||a.z>this.max.z?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y&&this.min.z<=a.min.z&&a.max.z<= +this.max.z},getParameter:function(a,b){void 0===b&&(console.warn("THREE.Box3: .getParameter() target is now required"),b=new n);return b.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y),(a.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(a){return a.max.x<this.min.x||a.min.x>this.max.x||a.max.y<this.min.y||a.min.y>this.max.y||a.max.z<this.min.z||a.min.z>this.max.z?!1:!0},intersectsSphere:function(a){this.clampPoint(a.center,ib);return ib.distanceToSquared(a.center)<= +a.radius*a.radius},intersectsPlane:function(a){if(0<a.normal.x){var b=a.normal.x*this.min.x;var c=a.normal.x*this.max.x}else b=a.normal.x*this.max.x,c=a.normal.x*this.min.x;0<a.normal.y?(b+=a.normal.y*this.min.y,c+=a.normal.y*this.max.y):(b+=a.normal.y*this.max.y,c+=a.normal.y*this.min.y);0<a.normal.z?(b+=a.normal.z*this.min.z,c+=a.normal.z*this.max.z):(b+=a.normal.z*this.max.z,c+=a.normal.z*this.min.z);return b<=-a.constant&&c>=-a.constant},intersectsTriangle:function(a){if(this.isEmpty())return!1; +this.getCenter(ye);wf.subVectors(this.max,ye);od.subVectors(a.a,ye);pd.subVectors(a.b,ye);qd.subVectors(a.c,ye);Lb.subVectors(pd,od);Mb.subVectors(qd,pd);qc.subVectors(od,qd);a=[0,-Lb.z,Lb.y,0,-Mb.z,Mb.y,0,-qc.z,qc.y,Lb.z,0,-Lb.x,Mb.z,0,-Mb.x,qc.z,0,-qc.x,-Lb.y,Lb.x,0,-Mb.y,Mb.x,0,-qc.y,qc.x,0];if(!Uf(a,od,pd,qd,wf))return!1;a=[1,0,0,0,1,0,0,0,1];if(!Uf(a,od,pd,qd,wf))return!1;xf.crossVectors(Lb,Mb);a=[xf.x,xf.y,xf.z];return Uf(a,od,pd,qd,wf)},clampPoint:function(a,b){void 0===b&&(console.warn("THREE.Box3: .clampPoint() target is now required"), +b=new n);return b.copy(a).clamp(this.min,this.max)},distanceToPoint:function(a){return ib.copy(a).clamp(this.min,this.max).sub(a).length()},getBoundingSphere:function(a){void 0===a&&console.error("THREE.Box3: .getBoundingSphere() target is now required");this.getCenter(a.center);a.radius=.5*this.getSize(ib).length();return a},intersect:function(a){this.min.max(a.min);this.max.min(a.max);this.isEmpty()&&this.makeEmpty();return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this}, +applyMatrix4:function(a){if(this.isEmpty())return this;wb[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(a);wb[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(a);wb[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(a);wb[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(a);wb[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(a);wb[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(a);wb[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(a);wb[7].set(this.max.x,this.max.y, +this.max.z).applyMatrix4(a);this.setFromPoints(wb);return this},translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});var zk=new ab;Object.assign(mb.prototype,{set:function(a,b){this.center.copy(a);this.radius=b;return this},setFromPoints:function(a,b){var c=this.center;void 0!==b?c.copy(b):zk.setFromPoints(a).getCenter(c);for(var d=b=0,e=a.length;d<e;d++)b=Math.max(b,c.distanceToSquared(a[d]));this.radius=Math.sqrt(b); +return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.center.copy(a.center);this.radius=a.radius;return this},empty:function(){return 0>=this.radius},containsPoint:function(a){return a.distanceToSquared(this.center)<=this.radius*this.radius},distanceToPoint:function(a){return a.distanceTo(this.center)-this.radius},intersectsSphere:function(a){var b=this.radius+a.radius;return a.center.distanceToSquared(this.center)<=b*b},intersectsBox:function(a){return a.intersectsSphere(this)}, +intersectsPlane:function(a){return Math.abs(a.distanceToPoint(this.center))<=this.radius},clampPoint:function(a,b){var c=this.center.distanceToSquared(a);void 0===b&&(console.warn("THREE.Sphere: .clampPoint() target is now required"),b=new n);b.copy(a);c>this.radius*this.radius&&(b.sub(this.center).normalize(),b.multiplyScalar(this.radius).add(this.center));return b},getBoundingBox:function(a){void 0===a&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),a=new ab);a.set(this.center, +this.center);a.expandByScalar(this.radius);return a},applyMatrix4:function(a){this.center.applyMatrix4(a);this.radius*=a.getMaxScaleOnAxis();return this},translate:function(a){this.center.add(a);return this},equals:function(a){return a.center.equals(this.center)&&a.radius===this.radius}});var xb=new n,Ng=new n,yf=new n,Nb=new n,Og=new n,zf=new n,Pg=new n;Object.assign(Rb.prototype,{set:function(a,b){this.origin.copy(a);this.direction.copy(b);return this},clone:function(){return(new this.constructor).copy(this)}, +copy:function(a){this.origin.copy(a.origin);this.direction.copy(a.direction);return this},at:function(a,b){void 0===b&&(console.warn("THREE.Ray: .at() target is now required"),b=new n);return b.copy(this.direction).multiplyScalar(a).add(this.origin)},lookAt:function(a){this.direction.copy(a).sub(this.origin).normalize();return this},recast:function(a){this.origin.copy(this.at(a,xb));return this},closestPointToPoint:function(a,b){void 0===b&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"), +b=new n);b.subVectors(a,this.origin);a=b.dot(this.direction);return 0>a?b.copy(this.origin):b.copy(this.direction).multiplyScalar(a).add(this.origin)},distanceToPoint:function(a){return Math.sqrt(this.distanceSqToPoint(a))},distanceSqToPoint:function(a){var b=xb.subVectors(a,this.origin).dot(this.direction);if(0>b)return this.origin.distanceToSquared(a);xb.copy(this.direction).multiplyScalar(b).add(this.origin);return xb.distanceToSquared(a)},distanceSqToSegment:function(a,b,c,d){Ng.copy(a).add(b).multiplyScalar(.5); +yf.copy(b).sub(a).normalize();Nb.copy(this.origin).sub(Ng);var e=.5*a.distanceTo(b),f=-this.direction.dot(yf),g=Nb.dot(this.direction),h=-Nb.dot(yf),l=Nb.lengthSq(),m=Math.abs(1-f*f);if(0<m){a=f*h-g;b=f*g-h;var k=e*m;0<=a?b>=-k?b<=k?(e=1/m,a*=e,b*=e,f=a*(a+f*b+2*g)+b*(f*a+b+2*h)+l):(b=e,a=Math.max(0,-(f*b+g)),f=-a*a+b*(b+2*h)+l):(b=-e,a=Math.max(0,-(f*b+g)),f=-a*a+b*(b+2*h)+l):b<=-k?(a=Math.max(0,-(-f*e+g)),b=0<a?-e:Math.min(Math.max(-e,-h),e),f=-a*a+b*(b+2*h)+l):b<=k?(a=0,b=Math.min(Math.max(-e, +-h),e),f=b*(b+2*h)+l):(a=Math.max(0,-(f*e+g)),b=0<a?e:Math.min(Math.max(-e,-h),e),f=-a*a+b*(b+2*h)+l)}else b=0<f?-e:e,a=Math.max(0,-(f*b+g)),f=-a*a+b*(b+2*h)+l;c&&c.copy(this.direction).multiplyScalar(a).add(this.origin);d&&d.copy(yf).multiplyScalar(b).add(Ng);return f},intersectSphere:function(a,b){xb.subVectors(a.center,this.origin);var c=xb.dot(this.direction),d=xb.dot(xb)-c*c;a=a.radius*a.radius;if(d>a)return null;a=Math.sqrt(a-d);d=c-a;c+=a;return 0>d&&0>c?null:0>d?this.at(c,b):this.at(d,b)}, +intersectsSphere:function(a){return this.distanceSqToPoint(a.center)<=a.radius*a.radius},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0===b)return 0===a.distanceToPoint(this.origin)?0:null;a=-(this.origin.dot(a.normal)+a.constant)/b;return 0<=a?a:null},intersectPlane:function(a,b){a=this.distanceToPlane(a);return null===a?null:this.at(a,b)},intersectsPlane:function(a){var b=a.distanceToPoint(this.origin);return 0===b||0>a.normal.dot(this.direction)*b?!0:!1},intersectBox:function(a, +b){var c=1/this.direction.x;var d=1/this.direction.y;var e=1/this.direction.z,f=this.origin;if(0<=c){var g=(a.min.x-f.x)*c;c*=a.max.x-f.x}else g=(a.max.x-f.x)*c,c*=a.min.x-f.x;if(0<=d){var h=(a.min.y-f.y)*d;d*=a.max.y-f.y}else h=(a.max.y-f.y)*d,d*=a.min.y-f.y;if(g>d||h>c)return null;if(h>g||g!==g)g=h;if(d<c||c!==c)c=d;0<=e?(h=(a.min.z-f.z)*e,a=(a.max.z-f.z)*e):(h=(a.max.z-f.z)*e,a=(a.min.z-f.z)*e);if(g>a||h>c)return null;if(h>g||g!==g)g=h;if(a<c||c!==c)c=a;return 0>c?null:this.at(0<=g?g:c,b)},intersectsBox:function(a){return null!== +this.intersectBox(a,xb)},intersectTriangle:function(a,b,c,d,e){Og.subVectors(b,a);zf.subVectors(c,a);Pg.crossVectors(Og,zf);b=this.direction.dot(Pg);if(0<b){if(d)return null;d=1}else if(0>b)d=-1,b=-b;else return null;Nb.subVectors(this.origin,a);a=d*this.direction.dot(zf.crossVectors(Nb,zf));if(0>a)return null;c=d*this.direction.dot(Og.cross(Nb));if(0>c||a+c>b)return null;a=-d*Nb.dot(Pg);return 0>a?null:this.at(a/b,e)},applyMatrix4:function(a){this.origin.applyMatrix4(a);this.direction.transformDirection(a); +return this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)}});var Qg=new n,Ak=new n,Bk=new Z;Object.assign(Oa.prototype,{isPlane:!0,set:function(a,b){this.normal.copy(a);this.constant=b;return this},setComponents:function(a,b,c,d){this.normal.set(a,b,c);this.constant=d;return this},setFromNormalAndCoplanarPoint:function(a,b){this.normal.copy(a);this.constant=-b.dot(this.normal);return this},setFromCoplanarPoints:function(a,b,c){b=Qg.subVectors(c,b).cross(Ak.subVectors(a, +b)).normalize();this.setFromNormalAndCoplanarPoint(b,a);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.normal.copy(a.normal);this.constant=a.constant;return this},normalize:function(){var a=1/this.normal.length();this.normal.multiplyScalar(a);this.constant*=a;return this},negate:function(){this.constant*=-1;this.normal.negate();return this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)- +a.radius},projectPoint:function(a,b){void 0===b&&(console.warn("THREE.Plane: .projectPoint() target is now required"),b=new n);return b.copy(this.normal).multiplyScalar(-this.distanceToPoint(a)).add(a)},intersectLine:function(a,b){void 0===b&&(console.warn("THREE.Plane: .intersectLine() target is now required"),b=new n);var c=a.delta(Qg),d=this.normal.dot(c);if(0===d){if(0===this.distanceToPoint(a.start))return b.copy(a.start)}else if(d=-(a.start.dot(this.normal)+this.constant)/d,!(0>d||1<d))return b.copy(c).multiplyScalar(d).add(a.start)}, +intersectsLine:function(a){var b=this.distanceToPoint(a.start);a=this.distanceToPoint(a.end);return 0>b&&0<a||0>a&&0<b},intersectsBox:function(a){return a.intersectsPlane(this)},intersectsSphere:function(a){return a.intersectsPlane(this)},coplanarPoint:function(a){void 0===a&&(console.warn("THREE.Plane: .coplanarPoint() target is now required"),a=new n);return a.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(a,b){b=b||Bk.getNormalMatrix(a);a=this.coplanarPoint(Qg).applyMatrix4(a); +b=this.normal.applyMatrix3(b).normalize();this.constant=-a.dot(b);return this},translate:function(a){this.constant-=a.dot(this.normal);return this},equals:function(a){return a.normal.equals(this.normal)&&a.constant===this.constant}});var Ya=new n,yb=new n,Rg=new n,zb=new n,rd=new n,sd=new n,si=new n,Sg=new n,Tg=new n,Ug=new n;Object.assign(ba,{getNormal:function(a,b,c,d){void 0===d&&(console.warn("THREE.Triangle: .getNormal() target is now required"),d=new n);d.subVectors(c,b);Ya.subVectors(a,b); +d.cross(Ya);a=d.lengthSq();return 0<a?d.multiplyScalar(1/Math.sqrt(a)):d.set(0,0,0)},getBarycoord:function(a,b,c,d,e){Ya.subVectors(d,b);yb.subVectors(c,b);Rg.subVectors(a,b);a=Ya.dot(Ya);b=Ya.dot(yb);c=Ya.dot(Rg);var f=yb.dot(yb);d=yb.dot(Rg);var g=a*f-b*b;void 0===e&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),e=new n);if(0===g)return e.set(-2,-1,-1);g=1/g;f=(f*c-b*d)*g;a=(a*d-b*c)*g;return e.set(1-f-a,a,f)},containsPoint:function(a,b,c,d){ba.getBarycoord(a,b,c,d,zb); +return 0<=zb.x&&0<=zb.y&&1>=zb.x+zb.y},getUV:function(a,b,c,d,e,f,g,h){this.getBarycoord(a,b,c,d,zb);h.set(0,0);h.addScaledVector(e,zb.x);h.addScaledVector(f,zb.y);h.addScaledVector(g,zb.z);return h},isFrontFacing:function(a,b,c,d){Ya.subVectors(c,b);yb.subVectors(a,b);return 0>Ya.cross(yb).dot(d)?!0:!1}});Object.assign(ba.prototype,{set:function(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this},setFromPointsAndIndices:function(a,b,c,d){this.a.copy(a[b]);this.b.copy(a[c]);this.c.copy(a[d]); +return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.a.copy(a.a);this.b.copy(a.b);this.c.copy(a.c);return this},getArea:function(){Ya.subVectors(this.c,this.b);yb.subVectors(this.a,this.b);return.5*Ya.cross(yb).length()},getMidpoint:function(a){void 0===a&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),a=new n);return a.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(a){return ba.getNormal(this.a,this.b, +this.c,a)},getPlane:function(a){void 0===a&&(console.warn("THREE.Triangle: .getPlane() target is now required"),a=new Oa);return a.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(a,b){return ba.getBarycoord(a,this.a,this.b,this.c,b)},getUV:function(a,b,c,d,e){return ba.getUV(a,this.a,this.b,this.c,b,c,d,e)},containsPoint:function(a){return ba.containsPoint(a,this.a,this.b,this.c)},isFrontFacing:function(a){return ba.isFrontFacing(this.a,this.b,this.c,a)},intersectsBox:function(a){return a.intersectsTriangle(this)}, +closestPointToPoint:function(a,b){void 0===b&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),b=new n);var c=this.a,d=this.b,e=this.c;rd.subVectors(d,c);sd.subVectors(e,c);Sg.subVectors(a,c);var f=rd.dot(Sg),g=sd.dot(Sg);if(0>=f&&0>=g)return b.copy(c);Tg.subVectors(a,d);var h=rd.dot(Tg),l=sd.dot(Tg);if(0<=h&&l<=h)return b.copy(d);var m=f*l-h*g;if(0>=m&&0<=f&&0>=h)return d=f/(f-h),b.copy(c).addScaledVector(rd,d);Ug.subVectors(a,e);a=rd.dot(Ug);var k=sd.dot(Ug);if(0<= +k&&a<=k)return b.copy(e);f=a*g-f*k;if(0>=f&&0<=g&&0>=k)return m=g/(g-k),b.copy(c).addScaledVector(sd,m);g=h*k-a*l;if(0>=g&&0<=l-h&&0<=a-k)return si.subVectors(e,d),m=(l-h)/(l-h+(a-k)),b.copy(d).addScaledVector(si,m);e=1/(g+f+m);d=f*e;m*=e;return b.copy(c).addScaledVector(rd,d).addScaledVector(sd,m)},equals:function(a){return a.a.equals(this.a)&&a.b.equals(this.b)&&a.c.equals(this.c)}});var ti={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244, +black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347, +darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365, +lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683, +mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910, +purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074}, +za={h:0,s:0,l:0},Af={h:0,s:0,l:0};Object.assign(J.prototype,{isColor:!0,r:1,g:1,b:1,set:function(a){a&&a.isColor?this.copy(a):"number"===typeof a?this.setHex(a):"string"===typeof a&&this.setStyle(a);return this},setScalar:function(a){this.b=this.g=this.r=a;return this},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSL:function(a,b,c){a=P.euclideanModulo(a,1);b=P.clamp(b, +0,1);c=P.clamp(c,0,1);0===b?this.r=this.g=this.b=c:(b=.5>=c?c*(1+b):c+b-c*b,c=2*c-b,this.r=Vf(c,b,a+1/3),this.g=Vf(c,b,a),this.b=Vf(c,b,a-1/3));return this},setStyle:function(a){function b(b){void 0!==b&&1>parseFloat(b)&&console.warn("THREE.Color: Alpha component of "+a+" will be ignored.")}var c;if(c=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(a)){var d=c[2];switch(c[1]){case "rgb":case "rgba":if(c=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r=Math.min(255,parseInt(c[1], +10))/255,this.g=Math.min(255,parseInt(c[2],10))/255,this.b=Math.min(255,parseInt(c[3],10))/255,b(c[5]),this;if(c=/^(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r=Math.min(100,parseInt(c[1],10))/100,this.g=Math.min(100,parseInt(c[2],10))/100,this.b=Math.min(100,parseInt(c[3],10))/100,b(c[5]),this;break;case "hsl":case "hsla":if(c=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d)){d=parseFloat(c[1])/360;var e=parseInt(c[2], +10)/100,f=parseInt(c[3],10)/100;b(c[5]);return this.setHSL(d,e,f)}}}else if(c=/^#([A-Fa-f0-9]+)$/.exec(a)){c=c[1];d=c.length;if(3===d)return this.r=parseInt(c.charAt(0)+c.charAt(0),16)/255,this.g=parseInt(c.charAt(1)+c.charAt(1),16)/255,this.b=parseInt(c.charAt(2)+c.charAt(2),16)/255,this;if(6===d)return this.r=parseInt(c.charAt(0)+c.charAt(1),16)/255,this.g=parseInt(c.charAt(2)+c.charAt(3),16)/255,this.b=parseInt(c.charAt(4)+c.charAt(5),16)/255,this}return a&&0<a.length?this.setColorName(a):this}, +setColorName:function(a){var b=ti[a];void 0!==b?this.setHex(b):console.warn("THREE.Color: Unknown color "+a);return this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function(a){this.r=a.r;this.g=a.g;this.b=a.b;return this},copyGammaToLinear:function(a,b){void 0===b&&(b=2);this.r=Math.pow(a.r,b);this.g=Math.pow(a.g,b);this.b=Math.pow(a.b,b);return this},copyLinearToGamma:function(a,b){void 0===b&&(b=2);b=0<b?1/b:1;this.r=Math.pow(a.r,b);this.g=Math.pow(a.g,b);this.b=Math.pow(a.b, +b);return this},convertGammaToLinear:function(a){this.copyGammaToLinear(this,a);return this},convertLinearToGamma:function(a){this.copyLinearToGamma(this,a);return this},copySRGBToLinear:function(a){this.r=Wf(a.r);this.g=Wf(a.g);this.b=Wf(a.b);return this},copyLinearToSRGB:function(a){this.r=Xf(a.r);this.g=Xf(a.g);this.b=Xf(a.b);return this},convertSRGBToLinear:function(){this.copySRGBToLinear(this);return this},convertLinearToSRGB:function(){this.copyLinearToSRGB(this);return this},getHex:function(){return 255* +this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(a){void 0===a&&(console.warn("THREE.Color: .getHSL() target is now required"),a={h:0,s:0,l:0});var b=this.r,c=this.g,d=this.b,e=Math.max(b,c,d),f=Math.min(b,c,d),g,h=(f+e)/2;if(f===e)f=g=0;else{var l=e-f;f=.5>=h?l/(e+f):l/(2-e-f);switch(e){case b:g=(c-d)/l+(c<d?6:0);break;case c:g=(d-b)/l+2;break;case d:g=(b-c)/l+4}g/=6}a.h=g;a.s=f;a.l=h;return a},getStyle:function(){return"rgb("+ +(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"},offsetHSL:function(a,b,c){this.getHSL(za);za.h+=a;za.s+=b;za.l+=c;this.setHSL(za.h,za.s,za.l);return this},add:function(a){this.r+=a.r;this.g+=a.g;this.b+=a.b;return this},addColors:function(a,b){this.r=a.r+b.r;this.g=a.g+b.g;this.b=a.b+b.b;return this},addScalar:function(a){this.r+=a;this.g+=a;this.b+=a;return this},sub:function(a){this.r=Math.max(0,this.r-a.r);this.g=Math.max(0,this.g-a.g);this.b=Math.max(0,this.b-a.b);return this},multiply:function(a){this.r*= +a.r;this.g*=a.g;this.b*=a.b;return this},multiplyScalar:function(a){this.r*=a;this.g*=a;this.b*=a;return this},lerp:function(a,b){this.r+=(a.r-this.r)*b;this.g+=(a.g-this.g)*b;this.b+=(a.b-this.b)*b;return this},lerpHSL:function(a,b){this.getHSL(za);a.getHSL(Af);a=P.lerp(za.h,Af.h,b);var c=P.lerp(za.s,Af.s,b);b=P.lerp(za.l,Af.l,b);this.setHSL(a,c,b);return this},equals:function(a){return a.r===this.r&&a.g===this.g&&a.b===this.b},fromArray:function(a,b){void 0===b&&(b=0);this.r=a[b];this.g=a[b+1]; +this.b=a[b+2];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.r;a[b+1]=this.g;a[b+2]=this.b;return a},toJSON:function(){return this.getHex()}});J.NAMES=ti;Object.assign(yc.prototype,{clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.a=a.a;this.b=a.b;this.c=a.c;this.normal.copy(a.normal);this.color.copy(a.color);this.materialIndex=a.materialIndex;for(var b=0,c=a.vertexNormals.length;b<c;b++)this.vertexNormals[b]=a.vertexNormals[b].clone(); +b=0;for(c=a.vertexColors.length;b<c;b++)this.vertexColors[b]=a.vertexColors[b].clone();return this}});var Ui=0;O.prototype=Object.assign(Object.create(Ba.prototype),{constructor:O,isMaterial:!0,onBeforeCompile:function(){},setValues:function(a){if(void 0!==a)for(var b in a){var c=a[b];if(void 0===c)console.warn("THREE.Material: '"+b+"' parameter is undefined.");else if("shading"===b)console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading= +1===c?!0:!1;else{var d=this[b];void 0===d?console.warn("THREE."+this.type+": '"+b+"' is not a property of this material."):d&&d.isColor?d.set(c):d&&d.isVector3&&c&&c.isVector3?d.copy(c):this[b]=c}}},toJSON:function(a){function b(a){var b=[],c;for(c in a){var d=a[c];delete d.metadata;b.push(d)}return b}var c=void 0===a||"string"===typeof a;c&&(a={textures:{},images:{}});var d={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};d.uuid=this.uuid;d.type=this.type;""!==this.name&&(d.name= +this.name);this.color&&this.color.isColor&&(d.color=this.color.getHex());void 0!==this.roughness&&(d.roughness=this.roughness);void 0!==this.metalness&&(d.metalness=this.metalness);this.sheen&&this.sheen.isColor&&(d.sheen=this.sheen.getHex());this.emissive&&this.emissive.isColor&&(d.emissive=this.emissive.getHex());this.emissiveIntensity&&1!==this.emissiveIntensity&&(d.emissiveIntensity=this.emissiveIntensity);this.specular&&this.specular.isColor&&(d.specular=this.specular.getHex());void 0!==this.shininess&& +(d.shininess=this.shininess);void 0!==this.clearcoat&&(d.clearcoat=this.clearcoat);void 0!==this.clearcoatRoughness&&(d.clearcoatRoughness=this.clearcoatRoughness);this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(d.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(a).uuid,d.clearcoatNormalScale=this.clearcoatNormalScale.toArray());this.map&&this.map.isTexture&&(d.map=this.map.toJSON(a).uuid);this.matcap&&this.matcap.isTexture&&(d.matcap=this.matcap.toJSON(a).uuid);this.alphaMap&&this.alphaMap.isTexture&& +(d.alphaMap=this.alphaMap.toJSON(a).uuid);this.lightMap&&this.lightMap.isTexture&&(d.lightMap=this.lightMap.toJSON(a).uuid);this.aoMap&&this.aoMap.isTexture&&(d.aoMap=this.aoMap.toJSON(a).uuid,d.aoMapIntensity=this.aoMapIntensity);this.bumpMap&&this.bumpMap.isTexture&&(d.bumpMap=this.bumpMap.toJSON(a).uuid,d.bumpScale=this.bumpScale);this.normalMap&&this.normalMap.isTexture&&(d.normalMap=this.normalMap.toJSON(a).uuid,d.normalMapType=this.normalMapType,d.normalScale=this.normalScale.toArray());this.displacementMap&& +this.displacementMap.isTexture&&(d.displacementMap=this.displacementMap.toJSON(a).uuid,d.displacementScale=this.displacementScale,d.displacementBias=this.displacementBias);this.roughnessMap&&this.roughnessMap.isTexture&&(d.roughnessMap=this.roughnessMap.toJSON(a).uuid);this.metalnessMap&&this.metalnessMap.isTexture&&(d.metalnessMap=this.metalnessMap.toJSON(a).uuid);this.emissiveMap&&this.emissiveMap.isTexture&&(d.emissiveMap=this.emissiveMap.toJSON(a).uuid);this.specularMap&&this.specularMap.isTexture&& +(d.specularMap=this.specularMap.toJSON(a).uuid);this.envMap&&this.envMap.isTexture&&(d.envMap=this.envMap.toJSON(a).uuid,d.reflectivity=this.reflectivity,d.refractionRatio=this.refractionRatio,void 0!==this.combine&&(d.combine=this.combine),void 0!==this.envMapIntensity&&(d.envMapIntensity=this.envMapIntensity));this.gradientMap&&this.gradientMap.isTexture&&(d.gradientMap=this.gradientMap.toJSON(a).uuid);void 0!==this.size&&(d.size=this.size);void 0!==this.sizeAttenuation&&(d.sizeAttenuation=this.sizeAttenuation); +1!==this.blending&&(d.blending=this.blending);!0===this.flatShading&&(d.flatShading=this.flatShading);0!==this.side&&(d.side=this.side);0!==this.vertexColors&&(d.vertexColors=this.vertexColors);1>this.opacity&&(d.opacity=this.opacity);!0===this.transparent&&(d.transparent=this.transparent);d.depthFunc=this.depthFunc;d.depthTest=this.depthTest;d.depthWrite=this.depthWrite;d.stencilWrite=this.stencilWrite;d.stencilWriteMask=this.stencilWriteMask;d.stencilFunc=this.stencilFunc;d.stencilRef=this.stencilRef; +d.stencilFuncMask=this.stencilFuncMask;d.stencilFail=this.stencilFail;d.stencilZFail=this.stencilZFail;d.stencilZPass=this.stencilZPass;this.rotation&&0!==this.rotation&&(d.rotation=this.rotation);!0===this.polygonOffset&&(d.polygonOffset=!0);0!==this.polygonOffsetFactor&&(d.polygonOffsetFactor=this.polygonOffsetFactor);0!==this.polygonOffsetUnits&&(d.polygonOffsetUnits=this.polygonOffsetUnits);this.linewidth&&1!==this.linewidth&&(d.linewidth=this.linewidth);void 0!==this.dashSize&&(d.dashSize=this.dashSize); +void 0!==this.gapSize&&(d.gapSize=this.gapSize);void 0!==this.scale&&(d.scale=this.scale);!0===this.dithering&&(d.dithering=!0);0<this.alphaTest&&(d.alphaTest=this.alphaTest);!0===this.premultipliedAlpha&&(d.premultipliedAlpha=this.premultipliedAlpha);!0===this.wireframe&&(d.wireframe=this.wireframe);1<this.wireframeLinewidth&&(d.wireframeLinewidth=this.wireframeLinewidth);"round"!==this.wireframeLinecap&&(d.wireframeLinecap=this.wireframeLinecap);"round"!==this.wireframeLinejoin&&(d.wireframeLinejoin= +this.wireframeLinejoin);!0===this.morphTargets&&(d.morphTargets=!0);!0===this.morphNormals&&(d.morphNormals=!0);!0===this.skinning&&(d.skinning=!0);!1===this.visible&&(d.visible=!1);!1===this.toneMapped&&(d.toneMapped=!1);"{}"!==JSON.stringify(this.userData)&&(d.userData=this.userData);c&&(c=b(a.textures),a=b(a.images),0<c.length&&(d.textures=c),0<a.length&&(d.images=a));return d},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.name=a.name;this.fog=a.fog;this.blending= +a.blending;this.side=a.side;this.flatShading=a.flatShading;this.vertexTangents=a.vertexTangents;this.vertexColors=a.vertexColors;this.opacity=a.opacity;this.transparent=a.transparent;this.blendSrc=a.blendSrc;this.blendDst=a.blendDst;this.blendEquation=a.blendEquation;this.blendSrcAlpha=a.blendSrcAlpha;this.blendDstAlpha=a.blendDstAlpha;this.blendEquationAlpha=a.blendEquationAlpha;this.depthFunc=a.depthFunc;this.depthTest=a.depthTest;this.depthWrite=a.depthWrite;this.stencilWriteMask=a.stencilWriteMask; +this.stencilFunc=a.stencilFunc;this.stencilRef=a.stencilRef;this.stencilFuncMask=a.stencilFuncMask;this.stencilFail=a.stencilFail;this.stencilZFail=a.stencilZFail;this.stencilZPass=a.stencilZPass;this.stencilWrite=a.stencilWrite;var b=a.clippingPlanes,c=null;if(null!==b){var d=b.length;c=Array(d);for(var e=0;e!==d;++e)c[e]=b[e].clone()}this.clippingPlanes=c;this.clipIntersection=a.clipIntersection;this.clipShadows=a.clipShadows;this.shadowSide=a.shadowSide;this.colorWrite=a.colorWrite;this.precision= +a.precision;this.polygonOffset=a.polygonOffset;this.polygonOffsetFactor=a.polygonOffsetFactor;this.polygonOffsetUnits=a.polygonOffsetUnits;this.dithering=a.dithering;this.alphaTest=a.alphaTest;this.premultipliedAlpha=a.premultipliedAlpha;this.visible=a.visible;this.toneMapped=a.toneMapped;this.userData=JSON.parse(JSON.stringify(a.userData));return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});Ga.prototype=Object.create(O.prototype);Ga.prototype.constructor=Ga;Ga.prototype.isMeshBasicMaterial= +!0;Ga.prototype.copy=function(a){O.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap; +this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;return this};Object.defineProperty(N.prototype,"needsUpdate",{set:function(a){!0===a&&this.version++}});Object.assign(N.prototype,{isBufferAttribute:!0,onUploadCallback:function(){},setUsage:function(a){this.usage=a;return this},copy:function(a){this.name=a.name;this.array=new a.array.constructor(a.array);this.itemSize=a.itemSize;this.count=a.count;this.normalized=a.normalized;this.usage=a.usage;return this}, +copyAt:function(a,b,c){a*=this.itemSize;c*=b.itemSize;for(var d=0,e=this.itemSize;d<e;d++)this.array[a+d]=b.array[c+d];return this},copyArray:function(a){this.array.set(a);return this},copyColorsArray:function(a){for(var b=this.array,c=0,d=0,e=a.length;d<e;d++){var f=a[d];void 0===f&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",d),f=new J);b[c++]=f.r;b[c++]=f.g;b[c++]=f.b}return this},copyVector2sArray:function(a){for(var b=this.array,c=0,d=0,e=a.length;d<e;d++){var f= +a[d];void 0===f&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",d),f=new B);b[c++]=f.x;b[c++]=f.y}return this},copyVector3sArray:function(a){for(var b=this.array,c=0,d=0,e=a.length;d<e;d++){var f=a[d];void 0===f&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",d),f=new n);b[c++]=f.x;b[c++]=f.y;b[c++]=f.z}return this},copyVector4sArray:function(a){for(var b=this.array,c=0,d=0,e=a.length;d<e;d++){var f=a[d];void 0===f&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined", +d),f=new da);b[c++]=f.x;b[c++]=f.y;b[c++]=f.z;b[c++]=f.w}return this},set:function(a,b){void 0===b&&(b=0);this.array.set(a,b);return this},getX:function(a){return this.array[a*this.itemSize]},setX:function(a,b){this.array[a*this.itemSize]=b;return this},getY:function(a){return this.array[a*this.itemSize+1]},setY:function(a,b){this.array[a*this.itemSize+1]=b;return this},getZ:function(a){return this.array[a*this.itemSize+2]},setZ:function(a,b){this.array[a*this.itemSize+2]=b;return this},getW:function(a){return this.array[a* +this.itemSize+3]},setW:function(a,b){this.array[a*this.itemSize+3]=b;return this},setXY:function(a,b,c){a*=this.itemSize;this.array[a+0]=b;this.array[a+1]=c;return this},setXYZ:function(a,b,c,d){a*=this.itemSize;this.array[a+0]=b;this.array[a+1]=c;this.array[a+2]=d;return this},setXYZW:function(a,b,c,d,e){a*=this.itemSize;this.array[a+0]=b;this.array[a+1]=c;this.array[a+2]=d;this.array[a+3]=e;return this},onUpload:function(a){this.onUploadCallback=a;return this},clone:function(){return(new this.constructor(this.array, +this.itemSize)).copy(this)},toJSON:function(){return{itemSize:this.itemSize,type:this.array.constructor.name,array:Array.prototype.slice.call(this.array),normalized:this.normalized}}});xd.prototype=Object.create(N.prototype);xd.prototype.constructor=xd;yd.prototype=Object.create(N.prototype);yd.prototype.constructor=yd;zd.prototype=Object.create(N.prototype);zd.prototype.constructor=zd;Ad.prototype=Object.create(N.prototype);Ad.prototype.constructor=Ad;Sb.prototype=Object.create(N.prototype);Sb.prototype.constructor= +Sb;Bd.prototype=Object.create(N.prototype);Bd.prototype.constructor=Bd;Tb.prototype=Object.create(N.prototype);Tb.prototype.constructor=Tb;A.prototype=Object.create(N.prototype);A.prototype.constructor=A;Cd.prototype=Object.create(N.prototype);Cd.prototype.constructor=Cd;Object.assign(ih.prototype,{computeGroups:function(a){var b=[],c=void 0;a=a.faces;for(var d=0;d<a.length;d++){var e=a[d];if(e.materialIndex!==c){c=e.materialIndex;void 0!==f&&(f.count=3*d-f.start,b.push(f));var f={start:3*d,materialIndex:c}}}void 0!== +f&&(f.count=3*d-f.start,b.push(f));this.groups=b},fromGeometry:function(a){var b=a.faces,c=a.vertices,d=a.faceVertexUvs,e=d[0]&&0<d[0].length,f=d[1]&&0<d[1].length,g=a.morphTargets,h=g.length;if(0<h){var l=[];for(var m=0;m<h;m++)l[m]={name:g[m].name,data:[]};this.morphTargets.position=l}var k=a.morphNormals,n=k.length;if(0<n){var u=[];for(m=0;m<n;m++)u[m]={name:k[m].name,data:[]};this.morphTargets.normal=u}var p=a.skinIndices,t=a.skinWeights,v=p.length===c.length,y=t.length===c.length;0<c.length&& +0===b.length&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(m=0;m<b.length;m++){var w=b[m];this.vertices.push(c[w.a],c[w.b],c[w.c]);var x=w.vertexNormals;3===x.length?this.normals.push(x[0],x[1],x[2]):(x=w.normal,this.normals.push(x,x,x));x=w.vertexColors;3===x.length?this.colors.push(x[0],x[1],x[2]):(x=w.color,this.colors.push(x,x,x));!0===e&&(x=d[0][m],void 0!==x?this.uvs.push(x[0],x[1],x[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ", +m),this.uvs.push(new B,new B,new B)));!0===f&&(x=d[1][m],void 0!==x?this.uvs2.push(x[0],x[1],x[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",m),this.uvs2.push(new B,new B,new B)));for(x=0;x<h;x++){var A=g[x].vertices;l[x].data.push(A[w.a],A[w.b],A[w.c])}for(x=0;x<n;x++)A=k[x].vertexNormals[m],u[x].data.push(A.a,A.b,A.c);v&&this.skinIndices.push(p[w.a],p[w.b],p[w.c]);y&&this.skinWeights.push(t[w.a],t[w.b],t[w.c])}this.computeGroups(a);this.verticesNeedUpdate=a.verticesNeedUpdate; +this.normalsNeedUpdate=a.normalsNeedUpdate;this.colorsNeedUpdate=a.colorsNeedUpdate;this.uvsNeedUpdate=a.uvsNeedUpdate;this.groupsNeedUpdate=a.groupsNeedUpdate;null!==a.boundingSphere&&(this.boundingSphere=a.boundingSphere.clone());null!==a.boundingBox&&(this.boundingBox=a.boundingBox.clone());return this}});var Vi=1,jb=new Q,Vg=new D,Bf=new n,rc=new ab,Wg=new ab,Za=new n;E.prototype=Object.assign(Object.create(Ba.prototype),{constructor:E,isBufferGeometry:!0,getIndex:function(){return this.index}, +setIndex:function(a){Array.isArray(a)?this.index=new (65535<jh(a)?Tb:Sb)(a,1):this.index=a},getAttribute:function(a){return this.attributes[a]},setAttribute:function(a,b){this.attributes[a]=b;return this},deleteAttribute:function(a){delete this.attributes[a];return this},addGroup:function(a,b,c){this.groups.push({start:a,count:b,materialIndex:void 0!==c?c:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(a,b){this.drawRange.start=a;this.drawRange.count=b},applyMatrix:function(a){var b= +this.attributes.position;void 0!==b&&(a.applyToBufferAttribute(b),b.needsUpdate=!0);var c=this.attributes.normal;void 0!==c&&(b=(new Z).getNormalMatrix(a),b.applyToBufferAttribute(c),c.needsUpdate=!0);c=this.attributes.tangent;void 0!==c&&(b=(new Z).getNormalMatrix(a),b.applyToBufferAttribute(c),c.needsUpdate=!0);null!==this.boundingBox&&this.computeBoundingBox();null!==this.boundingSphere&&this.computeBoundingSphere();return this},rotateX:function(a){jb.makeRotationX(a);this.applyMatrix(jb);return this}, +rotateY:function(a){jb.makeRotationY(a);this.applyMatrix(jb);return this},rotateZ:function(a){jb.makeRotationZ(a);this.applyMatrix(jb);return this},translate:function(a,b,c){jb.makeTranslation(a,b,c);this.applyMatrix(jb);return this},scale:function(a,b,c){jb.makeScale(a,b,c);this.applyMatrix(jb);return this},lookAt:function(a){Vg.lookAt(a);Vg.updateMatrix();this.applyMatrix(Vg.matrix);return this},center:function(){this.computeBoundingBox();this.boundingBox.getCenter(Bf).negate();this.translate(Bf.x, +Bf.y,Bf.z);return this},setFromObject:function(a){var b=a.geometry;if(a.isPoints||a.isLine){a=new A(3*b.vertices.length,3);var c=new A(3*b.colors.length,3);this.setAttribute("position",a.copyVector3sArray(b.vertices));this.setAttribute("color",c.copyColorsArray(b.colors));b.lineDistances&&b.lineDistances.length===b.vertices.length&&(a=new A(b.lineDistances.length,1),this.setAttribute("lineDistance",a.copyArray(b.lineDistances)));null!==b.boundingSphere&&(this.boundingSphere=b.boundingSphere.clone()); +null!==b.boundingBox&&(this.boundingBox=b.boundingBox.clone())}else a.isMesh&&b&&b.isGeometry&&this.fromGeometry(b);return this},setFromPoints:function(a){for(var b=[],c=0,d=a.length;c<d;c++){var e=a[c];b.push(e.x,e.y,e.z||0)}this.setAttribute("position",new A(b,3));return this},updateFromObject:function(a){var b=a.geometry;if(a.isMesh){var c=b.__directGeometry;!0===b.elementsNeedUpdate&&(c=void 0,b.elementsNeedUpdate=!1);if(void 0===c)return this.fromGeometry(b);c.verticesNeedUpdate=b.verticesNeedUpdate; +c.normalsNeedUpdate=b.normalsNeedUpdate;c.colorsNeedUpdate=b.colorsNeedUpdate;c.uvsNeedUpdate=b.uvsNeedUpdate;c.groupsNeedUpdate=b.groupsNeedUpdate;b.verticesNeedUpdate=!1;b.normalsNeedUpdate=!1;b.colorsNeedUpdate=!1;b.uvsNeedUpdate=!1;b.groupsNeedUpdate=!1;b=c}!0===b.verticesNeedUpdate&&(c=this.attributes.position,void 0!==c&&(c.copyVector3sArray(b.vertices),c.needsUpdate=!0),b.verticesNeedUpdate=!1);!0===b.normalsNeedUpdate&&(c=this.attributes.normal,void 0!==c&&(c.copyVector3sArray(b.normals), +c.needsUpdate=!0),b.normalsNeedUpdate=!1);!0===b.colorsNeedUpdate&&(c=this.attributes.color,void 0!==c&&(c.copyColorsArray(b.colors),c.needsUpdate=!0),b.colorsNeedUpdate=!1);b.uvsNeedUpdate&&(c=this.attributes.uv,void 0!==c&&(c.copyVector2sArray(b.uvs),c.needsUpdate=!0),b.uvsNeedUpdate=!1);b.lineDistancesNeedUpdate&&(c=this.attributes.lineDistance,void 0!==c&&(c.copyArray(b.lineDistances),c.needsUpdate=!0),b.lineDistancesNeedUpdate=!1);b.groupsNeedUpdate&&(b.computeGroups(a.geometry),this.groups= +b.groups,b.groupsNeedUpdate=!1);return this},fromGeometry:function(a){a.__directGeometry=(new ih).fromGeometry(a);return this.fromDirectGeometry(a.__directGeometry)},fromDirectGeometry:function(a){var b=new Float32Array(3*a.vertices.length);this.setAttribute("position",(new N(b,3)).copyVector3sArray(a.vertices));0<a.normals.length&&(b=new Float32Array(3*a.normals.length),this.setAttribute("normal",(new N(b,3)).copyVector3sArray(a.normals)));0<a.colors.length&&(b=new Float32Array(3*a.colors.length), +this.setAttribute("color",(new N(b,3)).copyColorsArray(a.colors)));0<a.uvs.length&&(b=new Float32Array(2*a.uvs.length),this.setAttribute("uv",(new N(b,2)).copyVector2sArray(a.uvs)));0<a.uvs2.length&&(b=new Float32Array(2*a.uvs2.length),this.setAttribute("uv2",(new N(b,2)).copyVector2sArray(a.uvs2)));this.groups=a.groups;for(var c in a.morphTargets){b=[];for(var d=a.morphTargets[c],e=0,f=d.length;e<f;e++){var g=d[e],h=new A(3*g.data.length,3);h.name=g.name;b.push(h.copyVector3sArray(g.data))}this.morphAttributes[c]= +b}0<a.skinIndices.length&&(c=new A(4*a.skinIndices.length,4),this.setAttribute("skinIndex",c.copyVector4sArray(a.skinIndices)));0<a.skinWeights.length&&(c=new A(4*a.skinWeights.length,4),this.setAttribute("skinWeight",c.copyVector4sArray(a.skinWeights)));null!==a.boundingSphere&&(this.boundingSphere=a.boundingSphere.clone());null!==a.boundingBox&&(this.boundingBox=a.boundingBox.clone());return this},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new ab);var a=this.attributes.position, +b=this.morphAttributes.position;if(void 0!==a){if(this.boundingBox.setFromBufferAttribute(a),b){a=0;for(var c=b.length;a<c;a++)rc.setFromBufferAttribute(b[a]),this.boundingBox.expandByPoint(rc.min),this.boundingBox.expandByPoint(rc.max)}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', +this)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new mb);var a=this.attributes.position,b=this.morphAttributes.position;if(a){var c=this.boundingSphere.center;rc.setFromBufferAttribute(a);if(b)for(var d=0,e=b.length;d<e;d++){var f=b[d];Wg.setFromBufferAttribute(f);rc.expandByPoint(Wg.min);rc.expandByPoint(Wg.max)}rc.getCenter(c);var g=0;d=0;for(e=a.count;d<e;d++)Za.fromBufferAttribute(a,d),g=Math.max(g,c.distanceToSquared(Za));if(b)for(d=0,e=b.length;d<e;d++){f= +b[d];a=0;for(var h=f.count;a<h;a++)Za.fromBufferAttribute(f,a),g=Math.max(g,c.distanceToSquared(Za))}this.boundingSphere.radius=Math.sqrt(g);isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}},computeFaceNormals:function(){},computeVertexNormals:function(){var a=this.index,b=this.attributes;if(b.position){var c=b.position.array;if(void 0===b.normal)this.setAttribute("normal", +new N(new Float32Array(c.length),3));else for(var d=b.normal.array,e=0,f=d.length;e<f;e++)d[e]=0;d=b.normal.array;var g=new n,h=new n,l=new n,m=new n,k=new n;if(a){var q=a.array;e=0;for(f=a.count;e<f;e+=3){a=3*q[e+0];var u=3*q[e+1];var p=3*q[e+2];g.fromArray(c,a);h.fromArray(c,u);l.fromArray(c,p);m.subVectors(l,h);k.subVectors(g,h);m.cross(k);d[a]+=m.x;d[a+1]+=m.y;d[a+2]+=m.z;d[u]+=m.x;d[u+1]+=m.y;d[u+2]+=m.z;d[p]+=m.x;d[p+1]+=m.y;d[p+2]+=m.z}}else for(e=0,f=c.length;e<f;e+=9)g.fromArray(c,e),h.fromArray(c, +e+3),l.fromArray(c,e+6),m.subVectors(l,h),k.subVectors(g,h),m.cross(k),d[e]=m.x,d[e+1]=m.y,d[e+2]=m.z,d[e+3]=m.x,d[e+4]=m.y,d[e+5]=m.z,d[e+6]=m.x,d[e+7]=m.y,d[e+8]=m.z;this.normalizeNormals();b.normal.needsUpdate=!0}},merge:function(a,b){if(a&&a.isBufferGeometry){void 0===b&&(b=0,console.warn("THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge."));var c=this.attributes,d;for(d in c)if(void 0!==a.attributes[d]){var e= +c[d].array,f=a.attributes[d],g=f.array,h=f.itemSize*b;f=Math.min(g.length,e.length-h);for(var l=0;l<f;l++,h++)e[h]=g[l]}return this}console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.",a)},normalizeNormals:function(){for(var a=this.attributes.normal,b=0,c=a.count;b<c;b++)Za.x=a.getX(b),Za.y=a.getY(b),Za.z=a.getZ(b),Za.normalize(),a.setXYZ(b,Za.x,Za.y,Za.z)},toNonIndexed:function(){function a(a,b){var c=a.array;a=a.itemSize;for(var d=new c.constructor(b.length* +a),e,f=0,g=0,h=b.length;g<h;g++){e=b[g]*a;for(var l=0;l<a;l++)d[f++]=c[e++]}return new N(d,a)}if(null===this.index)return console.warn("THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed."),this;var b=new E,c=this.index.array,d=this.attributes,e;for(e in d){var f=d[e];f=a(f,c);b.setAttribute(e,f)}var g=this.morphAttributes;for(e in g){var h=[],l=g[e];d=0;for(var m=l.length;d<m;d++)f=l[d],f=a(f,c),h.push(f);b.morphAttributes[e]=h}c=this.groups;d=0;for(e=c.length;d<e;d++)f=c[d],b.addGroup(f.start, +f.count,f.materialIndex);return b},toJSON:function(){var a={metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};a.uuid=this.uuid;a.type=this.type;""!==this.name&&(a.name=this.name);0<Object.keys(this.userData).length&&(a.userData=this.userData);if(void 0!==this.parameters){var b=this.parameters;for(m in b)void 0!==b[m]&&(a[m]=b[m]);return a}a.data={attributes:{}};b=this.index;null!==b&&(a.data.index={type:b.array.constructor.name,array:Array.prototype.slice.call(b.array)}); +var c=this.attributes;for(m in c){b=c[m];var d=b.toJSON();""!==b.name&&(d.name=b.name);a.data.attributes[m]=d}c={};var e=!1;for(m in this.morphAttributes){for(var f=this.morphAttributes[m],g=[],h=0,l=f.length;h<l;h++)b=f[h],d=b.toJSON(),""!==b.name&&(d.name=b.name),g.push(d);0<g.length&&(c[m]=g,e=!0)}e&&(a.data.morphAttributes=c);var m=this.groups;0<m.length&&(a.data.groups=JSON.parse(JSON.stringify(m)));m=this.boundingSphere;null!==m&&(a.data.boundingSphere={center:m.center.toArray(),radius:m.radius}); +return a},clone:function(){return(new E).copy(this)},copy:function(a){var b;this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingSphere=this.boundingBox=null;this.name=a.name;var c=a.index;null!==c&&this.setIndex(c.clone());c=a.attributes;for(g in c)this.setAttribute(g,c[g].clone());var d=a.morphAttributes;for(g in d){var e=[],f=d[g];c=0;for(b=f.length;c<b;c++)e.push(f[c].clone());this.morphAttributes[g]=e}var g=a.groups;c=0;for(b=g.length;c<b;c++)d=g[c],this.addGroup(d.start, +d.count,d.materialIndex);g=a.boundingBox;null!==g&&(this.boundingBox=g.clone());g=a.boundingSphere;null!==g&&(this.boundingSphere=g.clone());this.drawRange.start=a.drawRange.start;this.drawRange.count=a.drawRange.count;this.userData=a.userData;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});var ui=new Q,sc=new Rb,Xg=new mb,Ub=new n,Vb=new n,Wb=new n,lh=new n,mh=new n,nh=new n,Yf=new n,Zf=new n,$f=new n,zc=new B,Ac=new B,Bc=new B,Dd=new n,Ee=new n;ea.prototype=Object.assign(Object.create(D.prototype), +{constructor:ea,isMesh:!0,setDrawMode:function(a){this.drawMode=a},copy:function(a){D.prototype.copy.call(this,a);this.drawMode=a.drawMode;void 0!==a.morphTargetInfluences&&(this.morphTargetInfluences=a.morphTargetInfluences.slice());void 0!==a.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},a.morphTargetDictionary));return this},updateMorphTargets:function(){var a=this.geometry;if(a.isBufferGeometry){a=a.morphAttributes;var b=Object.keys(a);if(0<b.length){var c=a[b[0]];if(void 0!== +c)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},a=0,b=c.length;a<b;a++){var d=c[a].name||String(a);this.morphTargetInfluences.push(0);this.morphTargetDictionary[d]=a}}}else a=a.morphTargets,void 0!==a&&0<a.length&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")},raycast:function(a,b){var c=this.geometry,d=this.material,e=this.matrixWorld;if(void 0!==d&&(null===c.boundingSphere&&c.computeBoundingSphere(),Xg.copy(c.boundingSphere), +Xg.applyMatrix4(e),!1!==a.ray.intersectsSphere(Xg)&&(ui.getInverse(e),sc.copy(a.ray).applyMatrix4(ui),null===c.boundingBox||!1!==sc.intersectsBox(c.boundingBox))))if(c.isBufferGeometry){var f=c.index;e=c.attributes.position;var g=c.morphAttributes.position,h=c.attributes.uv,l=c.attributes.uv2,m=c.groups,k=c.drawRange,n,u;if(null!==f)if(Array.isArray(d)){var p=0;for(n=m.length;p<n;p++){var t=m[p];var v=d[t.materialIndex];var y=Math.max(t.start,k.start);for(u=c=Math.min(t.start+t.count,k.start+k.count);y< +u;y+=3){c=f.getX(y);var w=f.getX(y+1);var x=f.getX(y+2);if(c=Fe(this,v,a,sc,e,g,h,l,c,w,x))c.faceIndex=Math.floor(y/3),c.face.materialIndex=t.materialIndex,b.push(c)}}}else for(y=Math.max(0,k.start),c=Math.min(f.count,k.start+k.count),p=y,n=c;p<n;p+=3){if(c=f.getX(p),w=f.getX(p+1),x=f.getX(p+2),c=Fe(this,d,a,sc,e,g,h,l,c,w,x))c.faceIndex=Math.floor(p/3),b.push(c)}else if(void 0!==e)if(Array.isArray(d))for(p=0,n=m.length;p<n;p++)for(t=m[p],v=d[t.materialIndex],y=Math.max(t.start,k.start),u=c=Math.min(t.start+ +t.count,k.start+k.count);y<u;y+=3){if(c=y,w=y+1,x=y+2,c=Fe(this,v,a,sc,e,g,h,l,c,w,x))c.faceIndex=Math.floor(y/3),c.face.materialIndex=t.materialIndex,b.push(c)}else for(y=Math.max(0,k.start),c=Math.min(e.count,k.start+k.count),p=y,n=c;p<n;p+=3)if(c=p,w=p+1,x=p+2,c=Fe(this,d,a,sc,e,g,h,l,c,w,x))c.faceIndex=Math.floor(p/3),b.push(c)}else if(c.isGeometry)for(e=Array.isArray(d),g=c.vertices,h=c.faces,c=c.faceVertexUvs[0],0<c.length&&(f=c),p=0,n=h.length;p<n;p++)if(t=h[p],c=e?d[t.materialIndex]:d,void 0!== +c&&(l=g[t.a],m=g[t.b],k=g[t.c],c=kh(this,c,a,sc,l,m,k,Dd)))f&&f[p]&&(v=f[p],zc.copy(v[0]),Ac.copy(v[1]),Bc.copy(v[2]),c.uv=ba.getUV(Dd,l,m,k,zc,Ac,Bc,new B)),c.face=t,c.faceIndex=p,b.push(c)},clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});var Wi=0,kb=new Q,Yg=new D,Cf=new n;C.prototype=Object.assign(Object.create(Ba.prototype),{constructor:C,isGeometry:!0,applyMatrix:function(a){for(var b=(new Z).getNormalMatrix(a),c=0,d=this.vertices.length;c<d;c++)this.vertices[c].applyMatrix4(a); +c=0;for(d=this.faces.length;c<d;c++){a=this.faces[c];a.normal.applyMatrix3(b).normalize();for(var e=0,f=a.vertexNormals.length;e<f;e++)a.vertexNormals[e].applyMatrix3(b).normalize()}null!==this.boundingBox&&this.computeBoundingBox();null!==this.boundingSphere&&this.computeBoundingSphere();this.normalsNeedUpdate=this.verticesNeedUpdate=!0;return this},rotateX:function(a){kb.makeRotationX(a);this.applyMatrix(kb);return this},rotateY:function(a){kb.makeRotationY(a);this.applyMatrix(kb);return this}, +rotateZ:function(a){kb.makeRotationZ(a);this.applyMatrix(kb);return this},translate:function(a,b,c){kb.makeTranslation(a,b,c);this.applyMatrix(kb);return this},scale:function(a,b,c){kb.makeScale(a,b,c);this.applyMatrix(kb);return this},lookAt:function(a){Yg.lookAt(a);Yg.updateMatrix();this.applyMatrix(Yg.matrix);return this},fromBufferGeometry:function(a){function b(a,b,d,e){var f=void 0===h?[]:[c.colors[a].clone(),c.colors[b].clone(),c.colors[d].clone()],k=void 0===g?[]:[(new n).fromArray(g,3*a), +(new n).fromArray(g,3*b),(new n).fromArray(g,3*d)];e=new yc(a,b,d,k,f,e);c.faces.push(e);void 0!==l&&c.faceVertexUvs[0].push([(new B).fromArray(l,2*a),(new B).fromArray(l,2*b),(new B).fromArray(l,2*d)]);void 0!==m&&c.faceVertexUvs[1].push([(new B).fromArray(m,2*a),(new B).fromArray(m,2*b),(new B).fromArray(m,2*d)])}var c=this,d=null!==a.index?a.index.array:void 0,e=a.attributes;if(void 0===e.position)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."), +this;var f=e.position.array,g=void 0!==e.normal?e.normal.array:void 0,h=void 0!==e.color?e.color.array:void 0,l=void 0!==e.uv?e.uv.array:void 0,m=void 0!==e.uv2?e.uv2.array:void 0;void 0!==m&&(this.faceVertexUvs[1]=[]);for(e=0;e<f.length;e+=3)c.vertices.push((new n).fromArray(f,e)),void 0!==h&&c.colors.push((new J).fromArray(h,e));var k=a.groups;if(0<k.length)for(e=0;e<k.length;e++){f=k[e];var q=f.start,u=q;for(q+=f.count;u<q;u+=3)void 0!==d?b(d[u],d[u+1],d[u+2],f.materialIndex):b(u,u+1,u+2,f.materialIndex)}else if(void 0!== +d)for(e=0;e<d.length;e+=3)b(d[e],d[e+1],d[e+2]);else for(e=0;e<f.length/3;e+=3)b(e,e+1,e+2);this.computeFaceNormals();null!==a.boundingBox&&(this.boundingBox=a.boundingBox.clone());null!==a.boundingSphere&&(this.boundingSphere=a.boundingSphere.clone());return this},center:function(){this.computeBoundingBox();this.boundingBox.getCenter(Cf).negate();this.translate(Cf.x,Cf.y,Cf.z);return this},normalize:function(){this.computeBoundingSphere();var a=this.boundingSphere.center,b=this.boundingSphere.radius; +b=0===b?1:1/b;var c=new Q;c.set(b,0,0,-b*a.x,0,b,0,-b*a.y,0,0,b,-b*a.z,0,0,0,1);this.applyMatrix(c);return this},computeFaceNormals:function(){for(var a=new n,b=new n,c=0,d=this.faces.length;c<d;c++){var e=this.faces[c],f=this.vertices[e.a],g=this.vertices[e.b];a.subVectors(this.vertices[e.c],g);b.subVectors(f,g);a.cross(b);a.normalize();e.normal.copy(a)}},computeVertexNormals:function(a){void 0===a&&(a=!0);var b;var c=Array(this.vertices.length);var d=0;for(b=this.vertices.length;d<b;d++)c[d]=new n; +if(a){var e=new n,f=new n;a=0;for(d=this.faces.length;a<d;a++){b=this.faces[a];var g=this.vertices[b.a];var h=this.vertices[b.b];var l=this.vertices[b.c];e.subVectors(l,h);f.subVectors(g,h);e.cross(f);c[b.a].add(e);c[b.b].add(e);c[b.c].add(e)}}else for(this.computeFaceNormals(),a=0,d=this.faces.length;a<d;a++)b=this.faces[a],c[b.a].add(b.normal),c[b.b].add(b.normal),c[b.c].add(b.normal);d=0;for(b=this.vertices.length;d<b;d++)c[d].normalize();a=0;for(d=this.faces.length;a<d;a++)b=this.faces[a],g=b.vertexNormals, +3===g.length?(g[0].copy(c[b.a]),g[1].copy(c[b.b]),g[2].copy(c[b.c])):(g[0]=c[b.a].clone(),g[1]=c[b.b].clone(),g[2]=c[b.c].clone());0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){var a;this.computeFaceNormals();var b=0;for(a=this.faces.length;b<a;b++){var c=this.faces[b];var d=c.vertexNormals;3===d.length?(d[0].copy(c.normal),d[1].copy(c.normal),d[2].copy(c.normal)):(d[0]=c.normal.clone(),d[1]=c.normal.clone(),d[2]=c.normal.clone())}0<this.faces.length&&(this.normalsNeedUpdate= +!0)},computeMorphNormals:function(){var a,b;var c=0;for(b=this.faces.length;c<b;c++){var d=this.faces[c];d.__originalFaceNormal?d.__originalFaceNormal.copy(d.normal):d.__originalFaceNormal=d.normal.clone();d.__originalVertexNormals||(d.__originalVertexNormals=[]);var e=0;for(a=d.vertexNormals.length;e<a;e++)d.__originalVertexNormals[e]?d.__originalVertexNormals[e].copy(d.vertexNormals[e]):d.__originalVertexNormals[e]=d.vertexNormals[e].clone()}var f=new C;f.faces=this.faces;e=0;for(a=this.morphTargets.length;e< +a;e++){if(!this.morphNormals[e]){this.morphNormals[e]={};this.morphNormals[e].faceNormals=[];this.morphNormals[e].vertexNormals=[];d=this.morphNormals[e].faceNormals;var g=this.morphNormals[e].vertexNormals;c=0;for(b=this.faces.length;c<b;c++){var h=new n;var l={a:new n,b:new n,c:new n};d.push(h);g.push(l)}}g=this.morphNormals[e];f.vertices=this.morphTargets[e].vertices;f.computeFaceNormals();f.computeVertexNormals();c=0;for(b=this.faces.length;c<b;c++)d=this.faces[c],h=g.faceNormals[c],l=g.vertexNormals[c], +h.copy(d.normal),l.a.copy(d.vertexNormals[0]),l.b.copy(d.vertexNormals[1]),l.c.copy(d.vertexNormals[2])}c=0;for(b=this.faces.length;c<b;c++)d=this.faces[c],d.normal=d.__originalFaceNormal,d.vertexNormals=d.__originalVertexNormals},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new ab);this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new mb);this.boundingSphere.setFromPoints(this.vertices)},merge:function(a, +b,c){if(a&&a.isGeometry){var d,e=this.vertices.length,f=this.vertices,g=a.vertices,h=this.faces,l=a.faces,m=this.colors,k=a.colors;void 0===c&&(c=0);void 0!==b&&(d=(new Z).getNormalMatrix(b));for(var n=0,u=g.length;n<u;n++){var p=g[n].clone();void 0!==b&&p.applyMatrix4(b);f.push(p)}n=0;for(u=k.length;n<u;n++)m.push(k[n].clone());n=0;for(u=l.length;n<u;n++){g=l[n];var t=g.vertexNormals;k=g.vertexColors;m=new yc(g.a+e,g.b+e,g.c+e);m.normal.copy(g.normal);void 0!==d&&m.normal.applyMatrix3(d).normalize(); +b=0;for(f=t.length;b<f;b++)p=t[b].clone(),void 0!==d&&p.applyMatrix3(d).normalize(),m.vertexNormals.push(p);m.color.copy(g.color);b=0;for(f=k.length;b<f;b++)p=k[b],m.vertexColors.push(p.clone());m.materialIndex=g.materialIndex+c;h.push(m)}n=0;for(u=a.faceVertexUvs.length;n<u;n++)for(c=a.faceVertexUvs[n],void 0===this.faceVertexUvs[n]&&(this.faceVertexUvs[n]=[]),b=0,f=c.length;b<f;b++){d=c[b];e=[];h=0;for(l=d.length;h<l;h++)e.push(d[h].clone());this.faceVertexUvs[n].push(e)}}else console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.", +a)},mergeMesh:function(a){a&&a.isMesh?(a.matrixAutoUpdate&&a.updateMatrix(),this.merge(a.geometry,a.matrix)):console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",a)},mergeVertices:function(){var a={},b=[],c=[],d=Math.pow(10,4),e;var f=0;for(e=this.vertices.length;f<e;f++){var g=this.vertices[f];g=Math.round(g.x*d)+"_"+Math.round(g.y*d)+"_"+Math.round(g.z*d);void 0===a[g]?(a[g]=f,b.push(this.vertices[f]),c[f]=b.length-1):c[f]=c[a[g]]}a=[];f=0;for(e=this.faces.length;f<e;f++)for(d= +this.faces[f],d.a=c[d.a],d.b=c[d.b],d.c=c[d.c],d=[d.a,d.b,d.c],g=0;3>g;g++)if(d[g]===d[(g+1)%3]){a.push(f);break}for(f=a.length-1;0<=f;f--)for(d=a[f],this.faces.splice(d,1),c=0,e=this.faceVertexUvs.length;c<e;c++)this.faceVertexUvs[c].splice(d,1);f=this.vertices.length-b.length;this.vertices=b;return f},setFromPoints:function(a){this.vertices=[];for(var b=0,c=a.length;b<c;b++){var d=a[b];this.vertices.push(new n(d.x,d.y,d.z||0))}return this},sortFacesByMaterialIndex:function(){for(var a=this.faces, +b=a.length,c=0;c<b;c++)a[c]._id=c;a.sort(function(a,b){return a.materialIndex-b.materialIndex});var d=this.faceVertexUvs[0],e=this.faceVertexUvs[1],f,g;d&&d.length===b&&(f=[]);e&&e.length===b&&(g=[]);for(c=0;c<b;c++){var h=a[c]._id;f&&f.push(d[h]);g&&g.push(e[h])}f&&(this.faceVertexUvs[0]=f);g&&(this.faceVertexUvs[1]=g)},toJSON:function(){function a(a,b,c){return c?a|1<<b:a&~(1<<b)}function b(a){var b=a.x.toString()+a.y.toString()+a.z.toString();if(void 0!==m[b])return m[b];m[b]=l.length/3;l.push(a.x, +a.y,a.z);return m[b]}function c(a){var b=a.r.toString()+a.g.toString()+a.b.toString();if(void 0!==n[b])return n[b];n[b]=k.length;k.push(a.getHex());return n[b]}function d(a){var b=a.x.toString()+a.y.toString();if(void 0!==p[b])return p[b];p[b]=u.length/2;u.push(a.x,a.y);return p[b]}var e={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};e.uuid=this.uuid;e.type=this.type;""!==this.name&&(e.name=this.name);if(void 0!==this.parameters){var f=this.parameters,g;for(g in f)void 0!==f[g]&& +(e[g]=f[g]);return e}f=[];for(g=0;g<this.vertices.length;g++){var h=this.vertices[g];f.push(h.x,h.y,h.z)}h=[];var l=[],m={},k=[],n={},u=[],p={};for(g=0;g<this.faces.length;g++){var t=this.faces[g],v=void 0!==this.faceVertexUvs[0][g],y=0<t.normal.length(),w=0<t.vertexNormals.length,x=1!==t.color.r||1!==t.color.g||1!==t.color.b,B=0<t.vertexColors.length,A=0;A=a(A,0,0);A=a(A,1,!0);A=a(A,2,!1);A=a(A,3,v);A=a(A,4,y);A=a(A,5,w);A=a(A,6,x);A=a(A,7,B);h.push(A);h.push(t.a,t.b,t.c);h.push(t.materialIndex); +v&&(v=this.faceVertexUvs[0][g],h.push(d(v[0]),d(v[1]),d(v[2])));y&&h.push(b(t.normal));w&&(y=t.vertexNormals,h.push(b(y[0]),b(y[1]),b(y[2])));x&&h.push(c(t.color));B&&(t=t.vertexColors,h.push(c(t[0]),c(t[1]),c(t[2])))}e.data={};e.data.vertices=f;e.data.normals=l;0<k.length&&(e.data.colors=k);0<u.length&&(e.data.uvs=[u]);e.data.faces=h;return e},clone:function(){return(new C).copy(this)},copy:function(a){var b,c,d;this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets= +[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingSphere=this.boundingBox=null;this.name=a.name;var e=a.vertices;var f=0;for(b=e.length;f<b;f++)this.vertices.push(e[f].clone());e=a.colors;f=0;for(b=e.length;f<b;f++)this.colors.push(e[f].clone());e=a.faces;f=0;for(b=e.length;f<b;f++)this.faces.push(e[f].clone());f=0;for(b=a.faceVertexUvs.length;f<b;f++){var g=a.faceVertexUvs[f];void 0===this.faceVertexUvs[f]&&(this.faceVertexUvs[f]=[]);e=0;for(c=g.length;e< +c;e++){var h=g[e],l=[];var m=0;for(d=h.length;m<d;m++)l.push(h[m].clone());this.faceVertexUvs[f].push(l)}}m=a.morphTargets;f=0;for(b=m.length;f<b;f++){d={};d.name=m[f].name;if(void 0!==m[f].vertices)for(d.vertices=[],e=0,c=m[f].vertices.length;e<c;e++)d.vertices.push(m[f].vertices[e].clone());if(void 0!==m[f].normals)for(d.normals=[],e=0,c=m[f].normals.length;e<c;e++)d.normals.push(m[f].normals[e].clone());this.morphTargets.push(d)}m=a.morphNormals;f=0;for(b=m.length;f<b;f++){d={};if(void 0!==m[f].vertexNormals)for(d.vertexNormals= +[],e=0,c=m[f].vertexNormals.length;e<c;e++)g=m[f].vertexNormals[e],h={},h.a=g.a.clone(),h.b=g.b.clone(),h.c=g.c.clone(),d.vertexNormals.push(h);if(void 0!==m[f].faceNormals)for(d.faceNormals=[],e=0,c=m[f].faceNormals.length;e<c;e++)d.faceNormals.push(m[f].faceNormals[e].clone());this.morphNormals.push(d)}e=a.skinWeights;f=0;for(b=e.length;f<b;f++)this.skinWeights.push(e[f].clone());e=a.skinIndices;f=0;for(b=e.length;f<b;f++)this.skinIndices.push(e[f].clone());e=a.lineDistances;f=0;for(b=e.length;f< +b;f++)this.lineDistances.push(e[f]);f=a.boundingBox;null!==f&&(this.boundingBox=f.clone());f=a.boundingSphere;null!==f&&(this.boundingSphere=f.clone());this.elementsNeedUpdate=a.elementsNeedUpdate;this.verticesNeedUpdate=a.verticesNeedUpdate;this.uvsNeedUpdate=a.uvsNeedUpdate;this.normalsNeedUpdate=a.normalsNeedUpdate;this.colorsNeedUpdate=a.colorsNeedUpdate;this.lineDistancesNeedUpdate=a.lineDistancesNeedUpdate;this.groupsNeedUpdate=a.groupsNeedUpdate;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}}); +var Zg=function(a){function b(b,d,e,f,g,h){a.call(this);this.type="BoxGeometry";this.parameters={width:b,height:d,depth:e,widthSegments:f,heightSegments:g,depthSegments:h};this.fromBufferGeometry(new Gd(b,d,e,f,g,h));this.mergeVertices()}a&&(b.__proto__=a);b.prototype=Object.create(a&&a.prototype);return b.prototype.constructor=b}(C),Gd=function(a){function b(b,d,e,f,g,h){function c(a,b,c,d,e,f,g,h,l,r,A){var w=f/l,y=g/r,x=f/2,z=g/2,B=h/2;g=l+1;var D=r+1,E=f=0,H,F,C=new n;for(F=0;F<D;F++){var G=F* +y-z;for(H=0;H<g;H++)C[a]=(H*w-x)*d,C[b]=G*e,C[c]=B,q.push(C.x,C.y,C.z),C[a]=0,C[b]=0,C[c]=0<h?1:-1,u.push(C.x,C.y,C.z),p.push(H/l),p.push(1-F/r),f+=1}for(F=0;F<r;F++)for(H=0;H<l;H++)a=t+H+g*(F+1),b=t+(H+1)+g*(F+1),c=t+(H+1)+g*F,k.push(t+H+g*F,a,c),k.push(a,b,c),E+=6;m.addGroup(v,E,A);v+=E;t+=f}a.call(this);this.type="BoxBufferGeometry";this.parameters={width:b,height:d,depth:e,widthSegments:f,heightSegments:g,depthSegments:h};var m=this;b=b||1;d=d||1;e=e||1;f=Math.floor(f)||1;g=Math.floor(g)||1;h= +Math.floor(h)||1;var k=[],q=[],u=[],p=[],t=0,v=0;c("z","y","x",-1,-1,e,d,b,h,g,0);c("z","y","x",1,-1,e,d,-b,h,g,1);c("x","z","y",1,1,b,e,d,f,h,2);c("x","z","y",1,-1,b,e,-d,f,h,3);c("x","y","z",1,-1,b,d,e,f,g,4);c("x","y","z",-1,-1,b,d,-e,f,g,5);this.setIndex(k);this.setAttribute("position",new A(q,3));this.setAttribute("normal",new A(u,3));this.setAttribute("uv",new A(p,2))}a&&(b.__proto__=a);b.prototype=Object.create(a&&a.prototype);return b.prototype.constructor=b}(E),Ck={clone:Xb,merge:ua};va.prototype= +Object.create(O.prototype);va.prototype.constructor=va;va.prototype.isShaderMaterial=!0;va.prototype.copy=function(a){O.prototype.copy.call(this,a);this.fragmentShader=a.fragmentShader;this.vertexShader=a.vertexShader;this.uniforms=Xb(a.uniforms);this.defines=Object.assign({},a.defines);this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.lights=a.lights;this.clipping=a.clipping;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;this.extensions= +a.extensions;return this};va.prototype.toJSON=function(a){var b=O.prototype.toJSON.call(this,a);b.uniforms={};for(var c in this.uniforms){var d=this.uniforms[c].value;b.uniforms[c]=d&&d.isTexture?{type:"t",value:d.toJSON(a).uuid}:d&&d.isColor?{type:"c",value:d.getHex()}:d&&d.isVector2?{type:"v2",value:d.toArray()}:d&&d.isVector3?{type:"v3",value:d.toArray()}:d&&d.isVector4?{type:"v4",value:d.toArray()}:d&&d.isMatrix3?{type:"m3",value:d.toArray()}:d&&d.isMatrix4?{type:"m4",value:d.toArray()}:{value:d}}0< +Object.keys(this.defines).length&&(b.defines=this.defines);b.vertexShader=this.vertexShader;b.fragmentShader=this.fragmentShader;a={};for(var e in this.extensions)!0===this.extensions[e]&&(a[e]=!0);0<Object.keys(a).length&&(b.extensions=a);return b};bb.prototype=Object.assign(Object.create(D.prototype),{constructor:bb,isCamera:!0,copy:function(a,b){D.prototype.copy.call(this,a,b);this.matrixWorldInverse.copy(a.matrixWorldInverse);this.projectionMatrix.copy(a.projectionMatrix);this.projectionMatrixInverse.copy(a.projectionMatrixInverse); +return this},getWorldDirection:function(a){void 0===a&&(console.warn("THREE.Camera: .getWorldDirection() target is now required"),a=new n);this.updateMatrixWorld(!0);var b=this.matrixWorld.elements;return a.set(-b[8],-b[9],-b[10]).normalize()},updateMatrixWorld:function(a){D.prototype.updateMatrixWorld.call(this,a);this.matrixWorldInverse.getInverse(this.matrixWorld)},clone:function(){return(new this.constructor).copy(this)}});U.prototype=Object.assign(Object.create(bb.prototype),{constructor:U,isPerspectiveCamera:!0, +copy:function(a,b){bb.prototype.copy.call(this,a,b);this.fov=a.fov;this.zoom=a.zoom;this.near=a.near;this.far=a.far;this.focus=a.focus;this.aspect=a.aspect;this.view=null===a.view?null:Object.assign({},a.view);this.filmGauge=a.filmGauge;this.filmOffset=a.filmOffset;return this},setFocalLength:function(a){a=.5*this.getFilmHeight()/a;this.fov=2*P.RAD2DEG*Math.atan(a);this.updateProjectionMatrix()},getFocalLength:function(){var a=Math.tan(.5*P.DEG2RAD*this.fov);return.5*this.getFilmHeight()/a},getEffectiveFOV:function(){return 2* +P.RAD2DEG*Math.atan(Math.tan(.5*P.DEG2RAD*this.fov)/this.zoom)},getFilmWidth:function(){return this.filmGauge*Math.min(this.aspect,1)},getFilmHeight:function(){return this.filmGauge/Math.max(this.aspect,1)},setViewOffset:function(a,b,c,d,e,f){this.aspect=a/b;null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1});this.view.enabled=!0;this.view.fullWidth=a;this.view.fullHeight=b;this.view.offsetX=c;this.view.offsetY=d;this.view.width=e;this.view.height= +f;this.updateProjectionMatrix()},clearViewOffset:function(){null!==this.view&&(this.view.enabled=!1);this.updateProjectionMatrix()},updateProjectionMatrix:function(){var a=this.near,b=a*Math.tan(.5*P.DEG2RAD*this.fov)/this.zoom,c=2*b,d=this.aspect*c,e=-.5*d,f=this.view;if(null!==this.view&&this.view.enabled){var g=f.fullWidth,h=f.fullHeight;e+=f.offsetX*d/g;b-=f.offsetY*c/h;d*=f.width/g;c*=f.height/h}f=this.filmOffset;0!==f&&(e+=a*f/this.getFilmWidth());this.projectionMatrix.makePerspective(e,e+d, +b,b-c,a,this.far);this.projectionMatrixInverse.getInverse(this.projectionMatrix)},toJSON:function(a){a=D.prototype.toJSON.call(this,a);a.object.fov=this.fov;a.object.zoom=this.zoom;a.object.near=this.near;a.object.far=this.far;a.object.focus=this.focus;a.object.aspect=this.aspect;null!==this.view&&(a.object.view=Object.assign({},this.view));a.object.filmGauge=this.filmGauge;a.object.filmOffset=this.filmOffset;return a}});Cc.prototype=Object.create(D.prototype);Cc.prototype.constructor=Cc;Bb.prototype= +Object.create(la.prototype);Bb.prototype.constructor=Bb;Bb.prototype.isWebGLRenderTargetCube=!0;Bb.prototype.fromEquirectangularTexture=function(a,b){this.texture.type=b.type;this.texture.format=b.format;this.texture.encoding=b.encoding;var c=new wd,d=new va({type:"CubemapFromEquirect",uniforms:Xb({tEquirect:{value:null}}),vertexShader:"varying vec3 vWorldDirection;\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}", +fragmentShader:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n}",side:1,blending:0});d.uniforms.tEquirect.value=b;b=new ea(new Gd(5, +5,5),d);c.add(b);d=new Cc(1,10,1);d.renderTarget=this;d.renderTarget.texture.name="CubeCameraTexture";d.update(a,c);b.geometry.dispose();b.material.dispose();return this};Yb.prototype=Object.create(Y.prototype);Yb.prototype.constructor=Yb;Yb.prototype.isDataTexture=!0;var td=new mb,Df=new n;Object.assign(Ed.prototype,{set:function(a,b,c,d,e,f){var g=this.planes;g[0].copy(a);g[1].copy(b);g[2].copy(c);g[3].copy(d);g[4].copy(e);g[5].copy(f);return this},clone:function(){return(new this.constructor).copy(this)}, +copy:function(a){for(var b=this.planes,c=0;6>c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements;a=c[0];var d=c[1],e=c[2],f=c[3],g=c[4],h=c[5],l=c[6],m=c[7],k=c[8],n=c[9],u=c[10],p=c[11],t=c[12],v=c[13],y=c[14];c=c[15];b[0].setComponents(f-a,m-g,p-k,c-t).normalize();b[1].setComponents(f+a,m+g,p+k,c+t).normalize();b[2].setComponents(f+d,m+h,p+n,c+v).normalize();b[3].setComponents(f-d,m-h,p-n,c-v).normalize();b[4].setComponents(f-e,m-l,p-u,c-y).normalize(); +b[5].setComponents(f+e,m+l,p+u,c+y).normalize();return this},intersectsObject:function(a){var b=a.geometry;null===b.boundingSphere&&b.computeBoundingSphere();td.copy(b.boundingSphere).applyMatrix4(a.matrixWorld);return this.intersectsSphere(td)},intersectsSprite:function(a){td.center.set(0,0,0);td.radius=.7071067811865476;td.applyMatrix4(a.matrixWorld);return this.intersectsSphere(td)},intersectsSphere:function(a){var b=this.planes,c=a.center;a=-a.radius;for(var d=0;6>d;d++)if(b[d].distanceToPoint(c)< +a)return!1;return!0},intersectsBox:function(a){for(var b=this.planes,c=0;6>c;c++){var d=b[c];Df.x=0<d.normal.x?a.max.x:a.min.x;Df.y=0<d.normal.y?a.max.y:a.min.y;Df.z=0<d.normal.z?a.max.z:a.min.z;if(0>d.distanceToPoint(Df))return!1}return!0},containsPoint:function(a){for(var b=this.planes,c=0;6>c;c++)if(0>b[c].distanceToPoint(a))return!1;return!0}});var S={alphamap_fragment:"#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif", +alphatest_fragment:"#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif", +aomap_pars_fragment:"#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",begin_vertex:"vec3 transformed = vec3( position );",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\n\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie(float roughness, float NoH) {\n\tfloat invAlpha = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\n}\nfloat V_Neubelt(float NoV, float NoL) {\n\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\n}\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif", +bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif", +clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif", +clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvarying vec3 vViewPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif", +color_fragment:"#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif",common:"#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n}", +cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif", +defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\ttransformedNormal = mat3( instanceMatrix ) * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = normalMatrix * objectTangent;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif", +displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif", +encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}", +envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif", +envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif", +envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t vec3 reflectVec = reflect( -viewDir, normal );\n\t\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t#else\n\t\t vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, roughness );\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif", +envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif", +fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif", +gradientmap_pars_fragment:"#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif", +lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif", +lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif", +lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)", +lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef REFLECTIVITY\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#endif\n#ifdef CLEARCOAT\n\tmaterial.clearcoat = saturate( clearcoat );\tmaterial.clearcoatRoughness = clamp( clearcoatRoughness, 0.04, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheen;\n#endif", +lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n#ifdef CLEARCOAT\n\tfloat clearcoat;\n\tfloat clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tvec3 sheenColor;\n#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = ccDotNL * directLight.color;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tccIrradiance *= PI;\n\t\t#endif\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\n\t\t\tmaterial.specularRoughness,\n\t\t\tdirectLight.direction,\n\t\t\tgeometry,\n\t\t\tmaterial.sheenColor\n\t\t);\n\t#else\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\n\t#endif\n\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t\tfloat ccDotNL = ccDotNV;\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\tfloat clearcoatInv = 1.0 - clearcoatDHR;\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}", +lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\n#ifdef CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( pointLight.shadow, directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( spotLight.shadow, directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( directionalLight.shadow, directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif", +lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\n\t#ifdef CLEARCOAT\n\t\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\n\t#endif\n#endif", +lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif", +logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif", +map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif", +map_particle_pars_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif", +morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif", +morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif", +normal_fragment_begin:"#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;", +normal_fragment_maps:"#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\t#ifdef USE_TANGENT\n\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = normalScale * mapN.xy;\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal, normalScale, normalMap );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif", +normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec2 normalScale, in sampler2D normalMap ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\tvec3 N = normalize( surf_norm );\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy *= normalScale;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tbool frontFacing = dot( cross( S, T ), N ) > 0.0;\n\t\t\tmapN.xy *= ( float( frontFacing ) * 2.0 - 1.0 );\n\t\t#else\n\t\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\tmat3 tsn = mat3( S, T, N );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif", +clearcoat_normal_fragment_begin:"#ifdef CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\t#ifdef USE_TANGENT\n\t\tmat3 vTBN = mat3( tangent, bitangent, clearcoatNormal );\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = clearcoatNormalScale * mapN.xy;\n\t\tclearcoatNormal = normalize( vTBN * mapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatNormalScale, clearcoatNormalMap );\n\t#endif\n#endif", +clearcoat_normalmap_pars_fragment:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 encodeHalfRGBA ( vec2 v ) {\n\tvec4 encoded = vec4( 0.0 );\n\tconst vec2 offset = vec2( 1.0 / 255.0, 0.0 );\n\tencoded.xy = vec2( v.x, fract( v.x * 255.0 ) );\n\tencoded.xy = encoded.xy - ( encoded.yy * offset );\n\tencoded.zw = vec2( v.y, fract( v.y * 255.0 ) );\n\tencoded.zw = encoded.zw - ( encoded.ww * offset );\n\treturn encoded;\n}\nvec2 decodeHalfRGBA( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}", +premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif", +roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn decodeHalfRGBA( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = ( floor( uv * size - 0.5 ) + 0.5 ) * texelSize;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif", +shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif", +shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif", +shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= all( bvec2( directionalLight.shadow, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= all( bvec2( spotLight.shadow, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= all( bvec2( pointLight.shadow, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}", +skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif", +skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif", +specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}", +uv_pars_fragment:"#ifdef USE_UV\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#ifdef USE_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif",uv_vertex:"#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif", +worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}", +background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\tgl_FragColor.a *= opacity;\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}", +cube_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <logdepthbuf_fragment>\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}", +depth_vert:"#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n}", +distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}", +distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}", +equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}", +equirect_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}", +linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <color_vertex>\n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}", +meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include <aomap_fragment>\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}", +meshbasic_vert:"#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_ENVMAP\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <envmap_vertex>\n\t#include <fog_vertex>\n}", +meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <fog_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <emissivemap_fragment>\n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include <lightmap_fragment>\n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}", +meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <lights_lambert_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}", +meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}", +meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n\tvViewPosition = - mvPosition.xyz;\n}", +meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_phong_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}", +meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}", +meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define REFLECTIVITY\n\t#define CLEARCOAT\n\t#define TRANSPARENCY\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef TRANSPARENCY\n\tuniform float transparency;\n#endif\n#ifdef REFLECTIVITY\n\tuniform float reflectivity;\n#endif\n#ifdef CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheen;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <bsdfs>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <lights_physical_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_normalmap_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <roughnessmap_fragment>\n\t#include <metalnessmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#ifdef TRANSPARENCY\n\t\tdiffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\n\t#endif\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}", +meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}", +normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}", +normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}", +points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}", +points_vert:"uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <color_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n}", +shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <fog_fragment>\n}",shadow_vert:"#include <fog_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}", +sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}", +sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include <common>\n#include <uv_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}"}, +L={common:{diffuse:{value:new J(15658734)},opacity:{value:1},map:{value:null},uvTransform:{value:new Z},alphaMap:{value:null}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null}, +normalScale:{value:new B(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:2.5E-4},fogNear:{value:1},fogFar:{value:2E3},fogColor:{value:new J(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{},shadow:{},shadowBias:{}, +shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{},shadow:{},shadowBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}}, +pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}}},points:{diffuse:{value:new J(15658734)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Z}},sprite:{diffuse:{value:new J(15658734)},opacity:{value:1},center:{value:new B(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null}, +uvTransform:{value:new Z}}},cb={basic:{uniforms:ua([L.common,L.specularmap,L.envmap,L.aomap,L.lightmap,L.fog]),vertexShader:S.meshbasic_vert,fragmentShader:S.meshbasic_frag},lambert:{uniforms:ua([L.common,L.specularmap,L.envmap,L.aomap,L.lightmap,L.emissivemap,L.fog,L.lights,{emissive:{value:new J(0)}}]),vertexShader:S.meshlambert_vert,fragmentShader:S.meshlambert_frag},phong:{uniforms:ua([L.common,L.specularmap,L.envmap,L.aomap,L.lightmap,L.emissivemap,L.bumpmap,L.normalmap,L.displacementmap,L.gradientmap, +L.fog,L.lights,{emissive:{value:new J(0)},specular:{value:new J(1118481)},shininess:{value:30}}]),vertexShader:S.meshphong_vert,fragmentShader:S.meshphong_frag},standard:{uniforms:ua([L.common,L.envmap,L.aomap,L.lightmap,L.emissivemap,L.bumpmap,L.normalmap,L.displacementmap,L.roughnessmap,L.metalnessmap,L.fog,L.lights,{emissive:{value:new J(0)},roughness:{value:.5},metalness:{value:.5},envMapIntensity:{value:1}}]),vertexShader:S.meshphysical_vert,fragmentShader:S.meshphysical_frag},matcap:{uniforms:ua([L.common, +L.bumpmap,L.normalmap,L.displacementmap,L.fog,{matcap:{value:null}}]),vertexShader:S.meshmatcap_vert,fragmentShader:S.meshmatcap_frag},points:{uniforms:ua([L.points,L.fog]),vertexShader:S.points_vert,fragmentShader:S.points_frag},dashed:{uniforms:ua([L.common,L.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:S.linedashed_vert,fragmentShader:S.linedashed_frag},depth:{uniforms:ua([L.common,L.displacementmap]),vertexShader:S.depth_vert,fragmentShader:S.depth_frag},normal:{uniforms:ua([L.common, +L.bumpmap,L.normalmap,L.displacementmap,{opacity:{value:1}}]),vertexShader:S.normal_vert,fragmentShader:S.normal_frag},sprite:{uniforms:ua([L.sprite,L.fog]),vertexShader:S.sprite_vert,fragmentShader:S.sprite_frag},background:{uniforms:{uvTransform:{value:new Z},t2D:{value:null}},vertexShader:S.background_vert,fragmentShader:S.background_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:S.cube_vert,fragmentShader:S.cube_frag},equirect:{uniforms:{tEquirect:{value:null}}, +vertexShader:S.equirect_vert,fragmentShader:S.equirect_frag},distanceRGBA:{uniforms:ua([L.common,L.displacementmap,{referencePosition:{value:new n},nearDistance:{value:1},farDistance:{value:1E3}}]),vertexShader:S.distanceRGBA_vert,fragmentShader:S.distanceRGBA_frag},shadow:{uniforms:ua([L.lights,L.fog,{color:{value:new J(0)},opacity:{value:1}}]),vertexShader:S.shadow_vert,fragmentShader:S.shadow_frag}};cb.physical={uniforms:ua([cb.standard.uniforms,{transparency:{value:0},clearcoat:{value:0},clearcoatRoughness:{value:0}, +sheen:{value:new J(0)},clearcoatNormalScale:{value:new B(1,1)},clearcoatNormalMap:{value:null}}]),vertexShader:S.meshphysical_vert,fragmentShader:S.meshphysical_frag};Fd.prototype=Object.create(C.prototype);Fd.prototype.constructor=Fd;Zb.prototype=Object.create(E.prototype);Zb.prototype.constructor=Zb;nb.prototype=Object.create(Y.prototype);nb.prototype.constructor=nb;nb.prototype.isCubeTexture=!0;Object.defineProperty(nb.prototype,"images",{get:function(){return this.image},set:function(a){this.image= +a}});Dc.prototype=Object.create(Y.prototype);Dc.prototype.constructor=Dc;Dc.prototype.isDataTexture2DArray=!0;Ec.prototype=Object.create(Y.prototype);Ec.prototype.constructor=Ec;Ec.prototype.isDataTexture3D=!0;var uh=new Y,rj=new Dc,tj=new Ec,vh=new nb,oh=[],qh=[],th=new Float32Array(16),sh=new Float32Array(9),rh=new Float32Array(4);wh.prototype.updateCache=function(a){var b=this.cache;a instanceof Float32Array&&b.length!==a.length&&(this.cache=new Float32Array(a.length));Ha(b,a)};xh.prototype.setValue= +function(a,b,c){for(var d=this.seq,e=0,f=d.length;e!==f;++e){var g=d[e];g.setValue(a,b[g.id],c)}};var bg=/([\w\d_]+)(\])?(\[|\.)?/g;Cb.prototype.setValue=function(a,b,c,d){b=this.map[b];void 0!==b&&b.setValue(a,c,d)};Cb.prototype.setOptional=function(a,b,c){b=b[c];void 0!==b&&this.setValue(a,c,b)};Cb.upload=function(a,b,c,d){for(var e=0,f=b.length;e!==f;++e){var g=b[e],h=c[g.id];!1!==h.needsUpdate&&g.setValue(a,h.value,d)}};Cb.seqWithValue=function(a,b){for(var c=[],d=0,e=a.length;d!==e;++d){var f= +a[d];f.id in b&&c.push(f)}return c};var Yj=0,dg=/^[ \t]*#include +<([\w\d./]+)>/gm,Fh=/#pragma unroll_loop[\s]+?for \( int i = (\d+); i < (\d+); i \+\+ \) \{([\s\S]+?)(?=\})\}/g,hk=0;Db.prototype=Object.create(O.prototype);Db.prototype.constructor=Db;Db.prototype.isMeshDepthMaterial=!0;Db.prototype.copy=function(a){O.prototype.copy.call(this,a);this.depthPacking=a.depthPacking;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.map=a.map;this.alphaMap=a.alphaMap;this.displacementMap=a.displacementMap; +this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;return this};Eb.prototype=Object.create(O.prototype);Eb.prototype.constructor=Eb;Eb.prototype.isMeshDistanceMaterial=!0;Eb.prototype.copy=function(a){O.prototype.copy.call(this,a);this.referencePosition.copy(a.referencePosition);this.nearDistance=a.nearDistance;this.farDistance=a.farDistance;this.skinning=a.skinning;this.morphTargets=a.morphTargets; +this.map=a.map;this.alphaMap=a.alphaMap;this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;return this};fg.prototype=Object.assign(Object.create(la.prototype),{constructor:fg,isWebGLMultiviewRenderTarget:!0,copy:function(a){la.prototype.copy.call(this,a);this.numViews=a.numViews;return this},setNumViews:function(a){this.numViews!==a&&(this.numViews=a,this.dispose());return this}});Hc.prototype=Object.assign(Object.create(D.prototype), +{constructor:Hc,isGroup:!0});Kd.prototype=Object.assign(Object.create(U.prototype),{constructor:Kd,isArrayCamera:!0});var Mh=new n,Nh=new n;Object.assign(gg.prototype,Ba.prototype);Object.assign(Oh.prototype,Ba.prototype);Object.assign(Le.prototype,{isFogExp2:!0,clone:function(){return new Le(this.color,this.density)},toJSON:function(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}});Object.assign(Me.prototype,{isFog:!0,clone:function(){return new Me(this.color,this.near,this.far)}, +toJSON:function(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}});Object.defineProperty(pb.prototype,"needsUpdate",{set:function(a){!0===a&&this.version++}});Object.assign(pb.prototype,{isInterleavedBuffer:!0,onUploadCallback:function(){},setUsage:function(a){this.usage=a;return this},copy:function(a){this.array=new a.array.constructor(a.array);this.count=a.count;this.stride=a.stride;this.usage=a.usage;return this},copyAt:function(a,b,c){a*=this.stride;c*=b.stride;for(var d= +0,e=this.stride;d<e;d++)this.array[a+d]=b.array[c+d];return this},set:function(a,b){void 0===b&&(b=0);this.array.set(a,b);return this},clone:function(){return(new this.constructor).copy(this)},onUpload:function(a){this.onUploadCallback=a;return this}});Object.defineProperties(Ld.prototype,{count:{get:function(){return this.data.count}},array:{get:function(){return this.data.array}}});Object.assign(Ld.prototype,{isInterleavedBufferAttribute:!0,setX:function(a,b){this.data.array[a*this.data.stride+ +this.offset]=b;return this},setY:function(a,b){this.data.array[a*this.data.stride+this.offset+1]=b;return this},setZ:function(a,b){this.data.array[a*this.data.stride+this.offset+2]=b;return this},setW:function(a,b){this.data.array[a*this.data.stride+this.offset+3]=b;return this},getX:function(a){return this.data.array[a*this.data.stride+this.offset]},getY:function(a){return this.data.array[a*this.data.stride+this.offset+1]},getZ:function(a){return this.data.array[a*this.data.stride+this.offset+2]}, +getW:function(a){return this.data.array[a*this.data.stride+this.offset+3]},setXY:function(a,b,c){a=a*this.data.stride+this.offset;this.data.array[a+0]=b;this.data.array[a+1]=c;return this},setXYZ:function(a,b,c,d){a=a*this.data.stride+this.offset;this.data.array[a+0]=b;this.data.array[a+1]=c;this.data.array[a+2]=d;return this},setXYZW:function(a,b,c,d,e){a=a*this.data.stride+this.offset;this.data.array[a+0]=b;this.data.array[a+1]=c;this.data.array[a+2]=d;this.data.array[a+3]=e;return this}});Gb.prototype= +Object.create(O.prototype);Gb.prototype.constructor=Gb;Gb.prototype.isSpriteMaterial=!0;Gb.prototype.copy=function(a){O.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.alphaMap=a.alphaMap;this.rotation=a.rotation;this.sizeAttenuation=a.sizeAttenuation;return this};var Ic,ze=new n,ud=new n,vd=new n,Jc=new B,Nd=new B,Qh=new Q,Ef=new n,Ae=new n,Ff=new n,vi=new B,$g=new B,wi=new B;Md.prototype=Object.assign(Object.create(D.prototype),{constructor:Md,isSprite:!0,raycast:function(a, +b){null===a.camera&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.');ud.setFromMatrixScale(this.matrixWorld);Qh.copy(a.camera.matrixWorld);this.modelViewMatrix.multiplyMatrices(a.camera.matrixWorldInverse,this.matrixWorld);vd.setFromMatrixPosition(this.modelViewMatrix);a.camera.isPerspectiveCamera&&!1===this.material.sizeAttenuation&&ud.multiplyScalar(-vd.z);var c=this.material.rotation;if(0!==c){var d=Math.cos(c);var e=Math.sin(c)}c=this.center; +Ne(Ef.set(-.5,-.5,0),vd,c,ud,e,d);Ne(Ae.set(.5,-.5,0),vd,c,ud,e,d);Ne(Ff.set(.5,.5,0),vd,c,ud,e,d);vi.set(0,0);$g.set(1,0);wi.set(1,1);var f=a.ray.intersectTriangle(Ef,Ae,Ff,!1,ze);if(null===f&&(Ne(Ae.set(-.5,.5,0),vd,c,ud,e,d),$g.set(0,1),f=a.ray.intersectTriangle(Ef,Ff,Ae,!1,ze),null===f))return;e=a.ray.origin.distanceTo(ze);e<a.near||e>a.far||b.push({distance:e,point:ze.clone(),uv:ba.getUV(ze,Ef,Ae,Ff,vi,$g,wi,new B),face:null,object:this})},clone:function(){return(new this.constructor(this.material)).copy(this)}, +copy:function(a){D.prototype.copy.call(this,a);void 0!==a.center&&this.center.copy(a.center);return this}});var Gf=new n,xi=new n;Od.prototype=Object.assign(Object.create(D.prototype),{constructor:Od,isLOD:!0,copy:function(a){D.prototype.copy.call(this,a,!1);a=a.levels;for(var b=0,c=a.length;b<c;b++){var d=a[b];this.addLevel(d.object.clone(),d.distance)}return this},addLevel:function(a,b){void 0===b&&(b=0);b=Math.abs(b);for(var c=this.levels,d=0;d<c.length&&!(b<c[d].distance);d++);c.splice(d,0,{distance:b, +object:a});this.add(a);return this},getObjectForDistance:function(a){for(var b=this.levels,c=1,d=b.length;c<d&&!(a<b[c].distance);c++);return b[c-1].object},raycast:function(a,b){Gf.setFromMatrixPosition(this.matrixWorld);var c=a.ray.origin.distanceTo(Gf);this.getObjectForDistance(c).raycast(a,b)},update:function(a){var b=this.levels;if(1<b.length){Gf.setFromMatrixPosition(a.matrixWorld);xi.setFromMatrixPosition(this.matrixWorld);a=Gf.distanceTo(xi);b[0].object.visible=!0;for(var c=1,d=b.length;c< +d;c++)if(a>=b[c].distance)b[c-1].object.visible=!1,b[c].object.visible=!0;else break;for(;c<d;c++)b[c].object.visible=!1}},toJSON:function(a){a=D.prototype.toJSON.call(this,a);a.object.levels=[];for(var b=this.levels,c=0,d=b.length;c<d;c++){var e=b[c];a.object.levels.push({object:e.object.uuid,distance:e.distance})}return a}});Pd.prototype=Object.assign(Object.create(ea.prototype),{constructor:Pd,isSkinnedMesh:!0,bind:function(a,b){this.skeleton=a;void 0===b&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(), +b=this.matrixWorld);this.bindMatrix.copy(b);this.bindMatrixInverse.getInverse(b)},pose:function(){this.skeleton.pose()},normalizeSkinWeights:function(){for(var a=new da,b=this.geometry.attributes.skinWeight,c=0,d=b.count;c<d;c++){a.x=b.getX(c);a.y=b.getY(c);a.z=b.getZ(c);a.w=b.getW(c);var e=1/a.manhattanLength();Infinity!==e?a.multiplyScalar(e):a.set(1,0,0,0);b.setXYZW(c,a.x,a.y,a.z,a.w)}},updateMatrixWorld:function(a){ea.prototype.updateMatrixWorld.call(this,a);"attached"===this.bindMode?this.bindMatrixInverse.getInverse(this.matrixWorld): +"detached"===this.bindMode?this.bindMatrixInverse.getInverse(this.bindMatrix):console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)},clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});var yi=new Q,Dk=new Q;Object.assign(Oe.prototype,{calculateInverses:function(){this.boneInverses=[];for(var a=0,b=this.bones.length;a<b;a++){var c=new Q;this.bones[a]&&c.getInverse(this.bones[a].matrixWorld);this.boneInverses.push(c)}},pose:function(){var a,b; +var c=0;for(b=this.bones.length;c<b;c++)(a=this.bones[c])&&a.matrixWorld.getInverse(this.boneInverses[c]);c=0;for(b=this.bones.length;c<b;c++)if(a=this.bones[c])a.parent&&a.parent.isBone?(a.matrix.getInverse(a.parent.matrixWorld),a.matrix.multiply(a.matrixWorld)):a.matrix.copy(a.matrixWorld),a.matrix.decompose(a.position,a.quaternion,a.scale)},update:function(){for(var a=this.bones,b=this.boneInverses,c=this.boneMatrices,d=this.boneTexture,e=0,f=a.length;e<f;e++)yi.multiplyMatrices(a[e]?a[e].matrixWorld: +Dk,b[e]),yi.toArray(c,16*e);void 0!==d&&(d.needsUpdate=!0)},clone:function(){return new Oe(this.bones,this.boneInverses)},getBoneByName:function(a){for(var b=0,c=this.bones.length;b<c;b++){var d=this.bones[b];if(d.name===a)return d}}});ig.prototype=Object.assign(Object.create(D.prototype),{constructor:ig,isBone:!0});Pe.prototype=Object.assign(Object.create(ea.prototype),{constructor:Pe,isInstancedMesh:!0,raycast:function(){},setMatrixAt:function(a,b){b.toArray(this.instanceMatrix.array,16*a)},updateMorphTargets:function(){}}); +R.prototype=Object.create(O.prototype);R.prototype.constructor=R;R.prototype.isLineBasicMaterial=!0;R.prototype.copy=function(a){O.prototype.copy.call(this,a);this.color.copy(a.color);this.linewidth=a.linewidth;this.linecap=a.linecap;this.linejoin=a.linejoin;return this};var zi=new n,Ai=new n,Bi=new Q,Hf=new Rb,Be=new mb;ra.prototype=Object.assign(Object.create(D.prototype),{constructor:ra,isLine:!0,computeLineDistances:function(){var a=this.geometry;if(a.isBufferGeometry)if(null===a.index){for(var b= +a.attributes.position,c=[0],d=1,e=b.count;d<e;d++)zi.fromBufferAttribute(b,d-1),Ai.fromBufferAttribute(b,d),c[d]=c[d-1],c[d]+=zi.distanceTo(Ai);a.setAttribute("lineDistance",new A(c,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");else if(a.isGeometry)for(b=a.vertices,c=a.lineDistances,c[0]=0,d=1,e=b.length;d<e;d++)c[d]=c[d-1],c[d]+=b[d-1].distanceTo(b[d]);return this},raycast:function(a,b){var c=a.linePrecision,d=this.geometry, +e=this.matrixWorld;null===d.boundingSphere&&d.computeBoundingSphere();Be.copy(d.boundingSphere);Be.applyMatrix4(e);Be.radius+=c;if(!1!==a.ray.intersectsSphere(Be)){Bi.getInverse(e);Hf.copy(a.ray).applyMatrix4(Bi);c/=(this.scale.x+this.scale.y+this.scale.z)/3;c*=c;var f=new n,g=new n;e=new n;var h=new n,l=this&&this.isLineSegments?2:1;if(d.isBufferGeometry){var m=d.index,k=d.attributes.position.array;if(null!==m){m=m.array;d=0;for(var q=m.length-1;d<q;d+=l){var u=m[d+1];f.fromArray(k,3*m[d]);g.fromArray(k, +3*u);u=Hf.distanceSqToSegment(f,g,h,e);u>c||(h.applyMatrix4(this.matrixWorld),u=a.ray.origin.distanceTo(h),u<a.near||u>a.far||b.push({distance:u,point:e.clone().applyMatrix4(this.matrixWorld),index:d,face:null,faceIndex:null,object:this}))}}else for(d=0,q=k.length/3-1;d<q;d+=l)f.fromArray(k,3*d),g.fromArray(k,3*d+3),u=Hf.distanceSqToSegment(f,g,h,e),u>c||(h.applyMatrix4(this.matrixWorld),u=a.ray.origin.distanceTo(h),u<a.near||u>a.far||b.push({distance:u,point:e.clone().applyMatrix4(this.matrixWorld), +index:d,face:null,faceIndex:null,object:this}))}else if(d.isGeometry)for(f=d.vertices,g=f.length,d=0;d<g-1;d+=l)u=Hf.distanceSqToSegment(f[d],f[d+1],h,e),u>c||(h.applyMatrix4(this.matrixWorld),u=a.ray.origin.distanceTo(h),u<a.near||u>a.far||b.push({distance:u,point:e.clone().applyMatrix4(this.matrixWorld),index:d,face:null,faceIndex:null,object:this}))}},clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});var If=new n,Jf=new n;X.prototype=Object.assign(Object.create(ra.prototype), +{constructor:X,isLineSegments:!0,computeLineDistances:function(){var a=this.geometry;if(a.isBufferGeometry)if(null===a.index){for(var b=a.attributes.position,c=[],d=0,e=b.count;d<e;d+=2)If.fromBufferAttribute(b,d),Jf.fromBufferAttribute(b,d+1),c[d]=0===d?0:c[d-1],c[d+1]=c[d]+If.distanceTo(Jf);a.setAttribute("lineDistance",new A(c,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");else if(a.isGeometry)for(b=a.vertices,c=a.lineDistances, +d=0,e=b.length;d<e;d+=2)If.copy(b[d]),Jf.copy(b[d+1]),c[d]=0===d?0:c[d-1],c[d+1]=c[d]+If.distanceTo(Jf);return this}});Qe.prototype=Object.assign(Object.create(ra.prototype),{constructor:Qe,isLineLoop:!0});Qa.prototype=Object.create(O.prototype);Qa.prototype.constructor=Qa;Qa.prototype.isPointsMaterial=!0;Qa.prototype.copy=function(a){O.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.alphaMap=a.alphaMap;this.size=a.size;this.sizeAttenuation=a.sizeAttenuation;this.morphTargets= +a.morphTargets;return this};var Ci=new Q,kg=new Rb,Ce=new mb,Kf=new n;Kc.prototype=Object.assign(Object.create(D.prototype),{constructor:Kc,isPoints:!0,raycast:function(a,b){var c=this.geometry,d=this.matrixWorld,e=a.params.Points.threshold;null===c.boundingSphere&&c.computeBoundingSphere();Ce.copy(c.boundingSphere);Ce.applyMatrix4(d);Ce.radius+=e;if(!1!==a.ray.intersectsSphere(Ce))if(Ci.getInverse(d),kg.copy(a.ray).applyMatrix4(Ci),e/=(this.scale.x+this.scale.y+this.scale.z)/3,e*=e,c.isBufferGeometry){var f= +c.index;c=c.attributes.position.array;if(null!==f){var g=f.array;f=0;for(var h=g.length;f<h;f++){var l=g[f];Kf.fromArray(c,3*l);jg(Kf,l,e,d,a,b,this)}}else for(f=0,g=c.length/3;f<g;f++)Kf.fromArray(c,3*f),jg(Kf,f,e,d,a,b,this)}else for(c=c.vertices,f=0,g=c.length;f<g;f++)jg(c[f],f,e,d,a,b,this)},updateMorphTargets:function(){var a=this.geometry;if(a.isBufferGeometry){a=a.morphAttributes;var b=Object.keys(a);if(0<b.length){var c=a[b[0]];if(void 0!==c)for(this.morphTargetInfluences=[],this.morphTargetDictionary= +{},a=0,b=c.length;a<b;a++){var d=c[a].name||String(a);this.morphTargetInfluences.push(0);this.morphTargetDictionary[d]=a}}}else a=a.morphTargets,void 0!==a&&0<a.length&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")},clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});lg.prototype=Object.assign(Object.create(Y.prototype),{constructor:lg,isVideoTexture:!0,update:function(){var a=this.image;a.readyState>= +a.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}});Lc.prototype=Object.create(Y.prototype);Lc.prototype.constructor=Lc;Lc.prototype.isCompressedTexture=!0;Qd.prototype=Object.create(Y.prototype);Qd.prototype.constructor=Qd;Qd.prototype.isCanvasTexture=!0;Rd.prototype=Object.create(Y.prototype);Rd.prototype.constructor=Rd;Rd.prototype.isDepthTexture=!0;Mc.prototype=Object.create(E.prototype);Mc.prototype.constructor=Mc;Nc.prototype=Object.create(C.prototype);Nc.prototype.constructor=Nc;Nc.prototype.toJSON= +function(){var a=C.prototype.toJSON.call(this);a.func=this.parameters.func.toString();return a};ac.prototype=Object.create(E.prototype);ac.prototype.constructor=ac;ac.prototype.toJSON=function(){var a=E.prototype.toJSON.call(this);a.func=this.parameters.func.toString();return a};Sd.prototype=Object.create(C.prototype);Sd.prototype.constructor=Sd;Ea.prototype=Object.create(E.prototype);Ea.prototype.constructor=Ea;Td.prototype=Object.create(C.prototype);Td.prototype.constructor=Td;Oc.prototype=Object.create(Ea.prototype); +Oc.prototype.constructor=Oc;Ud.prototype=Object.create(C.prototype);Ud.prototype.constructor=Ud;bc.prototype=Object.create(Ea.prototype);bc.prototype.constructor=bc;Vd.prototype=Object.create(C.prototype);Vd.prototype.constructor=Vd;Pc.prototype=Object.create(Ea.prototype);Pc.prototype.constructor=Pc;Wd.prototype=Object.create(C.prototype);Wd.prototype.constructor=Wd;Qc.prototype=Object.create(Ea.prototype);Qc.prototype.constructor=Qc;Xd.prototype=Object.create(C.prototype);Xd.prototype.constructor= +Xd;cc.prototype=Object.create(E.prototype);cc.prototype.constructor=cc;cc.prototype.toJSON=function(){var a=E.prototype.toJSON.call(this);a.path=this.parameters.path.toJSON();return a};Yd.prototype=Object.create(C.prototype);Yd.prototype.constructor=Yd;Rc.prototype=Object.create(E.prototype);Rc.prototype.constructor=Rc;Zd.prototype=Object.create(C.prototype);Zd.prototype.constructor=Zd;Sc.prototype=Object.create(E.prototype);Sc.prototype.constructor=Sc;var Ek={triangulate:function(a,b,c){c=c||2;var d= +b&&b.length,e=d?b[0]*c:a.length,f=Rh(a,0,e,c,!0),g=[];if(!f||f.next===f.prev)return g;var h;if(d){var l=c;d=[];var m;var k=0;for(m=b.length;k<m;k++){var n=b[k]*l;var u=k<m-1?b[k+1]*l:a.length;n=Rh(a,n,u,l,!1);n===n.next&&(n.steiner=!0);d.push(pk(n))}d.sort(nk);for(k=0;k<d.length;k++){b=d[k];l=f;if(l=ok(b,l))b=Uh(l,b),ae(b,b.next);f=ae(f,f.next)}}if(a.length>80*c){var p=h=a[0];var t=d=a[1];for(l=c;l<e;l+=c)k=a[l],b=a[l+1],k<p&&(p=k),b<t&&(t=b),k>h&&(h=k),b>d&&(d=b);h=Math.max(h-p,d-t);h=0!==h?1/h: +0}be(f,g,c,p,t,h);return g}},qb={area:function(a){for(var b=a.length,c=0,d=b-1,e=0;e<b;d=e++)c+=a[d].x*a[e].y-a[e].x*a[d].y;return.5*c},isClockWise:function(a){return 0>qb.area(a)},triangulateShape:function(a,b){var c=[],d=[],e=[];Vh(a);Wh(c,a);var f=a.length;b.forEach(Vh);for(a=0;a<b.length;a++)d.push(f),f+=b[a].length,Wh(c,b[a]);b=Ek.triangulate(c,d);for(a=0;a<b.length;a+=3)e.push(b.slice(a,a+3));return e}};ec.prototype=Object.create(C.prototype);ec.prototype.constructor=ec;ec.prototype.toJSON= +function(){var a=C.prototype.toJSON.call(this);return Xh(this.parameters.shapes,this.parameters.options,a)};db.prototype=Object.create(E.prototype);db.prototype.constructor=db;db.prototype.toJSON=function(){var a=E.prototype.toJSON.call(this);return Xh(this.parameters.shapes,this.parameters.options,a)};var qk={generateTopUV:function(a,b,c,d,e){a=b[3*d];d=b[3*d+1];var f=b[3*e];e=b[3*e+1];return[new B(b[3*c],b[3*c+1]),new B(a,d),new B(f,e)]},generateSideWallUV:function(a,b,c,d,e,f){a=b[3*c];var g=b[3* +c+1];c=b[3*c+2];var h=b[3*d],l=b[3*d+1];d=b[3*d+2];var k=b[3*e],n=b[3*e+1];e=b[3*e+2];var q=b[3*f],u=b[3*f+1];b=b[3*f+2];return.01>Math.abs(g-l)?[new B(a,1-c),new B(h,1-d),new B(k,1-e),new B(q,1-b)]:[new B(g,1-c),new B(l,1-d),new B(n,1-e),new B(u,1-b)]}};de.prototype=Object.create(C.prototype);de.prototype.constructor=de;Uc.prototype=Object.create(db.prototype);Uc.prototype.constructor=Uc;ee.prototype=Object.create(C.prototype);ee.prototype.constructor=ee;Hb.prototype=Object.create(E.prototype);Hb.prototype.constructor= +Hb;fe.prototype=Object.create(C.prototype);fe.prototype.constructor=fe;Vc.prototype=Object.create(E.prototype);Vc.prototype.constructor=Vc;ge.prototype=Object.create(C.prototype);ge.prototype.constructor=ge;Wc.prototype=Object.create(E.prototype);Wc.prototype.constructor=Wc;fc.prototype=Object.create(C.prototype);fc.prototype.constructor=fc;fc.prototype.toJSON=function(){var a=C.prototype.toJSON.call(this);return Yh(this.parameters.shapes,a)};gc.prototype=Object.create(E.prototype);gc.prototype.constructor= +gc;gc.prototype.toJSON=function(){var a=E.prototype.toJSON.call(this);return Yh(this.parameters.shapes,a)};Xc.prototype=Object.create(E.prototype);Xc.prototype.constructor=Xc;hc.prototype=Object.create(C.prototype);hc.prototype.constructor=hc;rb.prototype=Object.create(E.prototype);rb.prototype.constructor=rb;he.prototype=Object.create(hc.prototype);he.prototype.constructor=he;ie.prototype=Object.create(rb.prototype);ie.prototype.constructor=ie;je.prototype=Object.create(C.prototype);je.prototype.constructor= +je;Yc.prototype=Object.create(E.prototype);Yc.prototype.constructor=Yc;var Aa=Object.freeze({WireframeGeometry:Mc,ParametricGeometry:Nc,ParametricBufferGeometry:ac,TetrahedronGeometry:Td,TetrahedronBufferGeometry:Oc,OctahedronGeometry:Ud,OctahedronBufferGeometry:bc,IcosahedronGeometry:Vd,IcosahedronBufferGeometry:Pc,DodecahedronGeometry:Wd,DodecahedronBufferGeometry:Qc,PolyhedronGeometry:Sd,PolyhedronBufferGeometry:Ea,TubeGeometry:Xd,TubeBufferGeometry:cc,TorusKnotGeometry:Yd,TorusKnotBufferGeometry:Rc, +TorusGeometry:Zd,TorusBufferGeometry:Sc,TextGeometry:de,TextBufferGeometry:Uc,SphereGeometry:ee,SphereBufferGeometry:Hb,RingGeometry:fe,RingBufferGeometry:Vc,PlaneGeometry:Fd,PlaneBufferGeometry:Zb,LatheGeometry:ge,LatheBufferGeometry:Wc,ShapeGeometry:fc,ShapeBufferGeometry:gc,ExtrudeGeometry:ec,ExtrudeBufferGeometry:db,EdgesGeometry:Xc,ConeGeometry:he,ConeBufferGeometry:ie,CylinderGeometry:hc,CylinderBufferGeometry:rb,CircleGeometry:je,CircleBufferGeometry:Yc,BoxGeometry:Zg,BoxBufferGeometry:Gd}); +ic.prototype=Object.create(O.prototype);ic.prototype.constructor=ic;ic.prototype.isShadowMaterial=!0;ic.prototype.copy=function(a){O.prototype.copy.call(this,a);this.color.copy(a.color);return this};Zc.prototype=Object.create(va.prototype);Zc.prototype.constructor=Zc;Zc.prototype.isRawShaderMaterial=!0;eb.prototype=Object.create(O.prototype);eb.prototype.constructor=eb;eb.prototype.isMeshStandardMaterial=!0;eb.prototype.copy=function(a){O.prototype.copy.call(this,a);this.defines={STANDARD:""};this.color.copy(a.color); +this.roughness=a.roughness;this.metalness=a.metalness;this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale= +a.displacementScale;this.displacementBias=a.displacementBias;this.roughnessMap=a.roughnessMap;this.metalnessMap=a.metalnessMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.envMapIntensity=a.envMapIntensity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this}; +jc.prototype=Object.create(eb.prototype);jc.prototype.constructor=jc;jc.prototype.isMeshPhysicalMaterial=!0;jc.prototype.copy=function(a){eb.prototype.copy.call(this,a);this.defines={STANDARD:"",PHYSICAL:""};this.reflectivity=a.reflectivity;this.clearcoat=a.clearcoat;this.clearcoatRoughness=a.clearcoatRoughness;this.sheen=a.sheen?(this.sheen||new J).copy(a.sheen):null;this.clearcoatNormalMap=a.clearcoatNormalMap;this.clearcoatNormalScale.copy(a.clearcoatNormalScale);this.transparency=a.transparency; +return this};Ra.prototype=Object.create(O.prototype);Ra.prototype.constructor=Ra;Ra.prototype.isMeshPhongMaterial=!0;Ra.prototype.copy=function(a){O.prototype.copy.call(this,a);this.color.copy(a.color);this.specular.copy(a.specular);this.shininess=a.shininess;this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity; +this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth; +this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};kc.prototype=Object.create(Ra.prototype);kc.prototype.constructor=kc;kc.prototype.isMeshToonMaterial=!0;kc.prototype.copy=function(a){Ra.prototype.copy.call(this,a);this.gradientMap=a.gradientMap;return this};lc.prototype=Object.create(O.prototype);lc.prototype.constructor=lc;lc.prototype.isMeshNormalMaterial=!0; +lc.prototype.copy=function(a){O.prototype.copy.call(this,a);this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this}; +mc.prototype=Object.create(O.prototype);mc.prototype.constructor=mc;mc.prototype.isMeshLambertMaterial=!0;mc.prototype.copy=function(a){O.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap= +a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};nc.prototype=Object.create(O.prototype);nc.prototype.constructor=nc;nc.prototype.isMeshMatcapMaterial=!0;nc.prototype.copy=function(a){O.prototype.copy.call(this, +a);this.defines={MATCAP:""};this.color.copy(a.color);this.matcap=a.matcap;this.map=a.map;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.alphaMap=a.alphaMap;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};oc.prototype= +Object.create(R.prototype);oc.prototype.constructor=oc;oc.prototype.isLineDashedMaterial=!0;oc.prototype.copy=function(a){R.prototype.copy.call(this,a);this.scale=a.scale;this.dashSize=a.dashSize;this.gapSize=a.gapSize;return this};var Fk=Object.freeze({ShadowMaterial:ic,SpriteMaterial:Gb,RawShaderMaterial:Zc,ShaderMaterial:va,PointsMaterial:Qa,MeshPhysicalMaterial:jc,MeshStandardMaterial:eb,MeshPhongMaterial:Ra,MeshToonMaterial:kc,MeshNormalMaterial:lc,MeshLambertMaterial:mc,MeshDepthMaterial:Db, +MeshDistanceMaterial:Eb,MeshBasicMaterial:Ga,MeshMatcapMaterial:nc,LineDashedMaterial:oc,LineBasicMaterial:R,Material:O}),ta={arraySlice:function(a,b,c){return ta.isTypedArray(a)?new a.constructor(a.subarray(b,void 0!==c?c:a.length)):a.slice(b,c)},convertArray:function(a,b,c){return!a||!c&&a.constructor===b?a:"number"===typeof b.BYTES_PER_ELEMENT?new b(a):Array.prototype.slice.call(a)},isTypedArray:function(a){return ArrayBuffer.isView(a)&&!(a instanceof DataView)},getKeyframeOrder:function(a){for(var b= +a.length,c=Array(b),d=0;d!==b;++d)c[d]=d;c.sort(function(b,c){return a[b]-a[c]});return c},sortedArray:function(a,b,c){for(var d=a.length,e=new a.constructor(d),f=0,g=0;g!==d;++f)for(var h=c[f]*b,l=0;l!==b;++l)e[g++]=a[h+l];return e},flattenJSON:function(a,b,c,d){for(var e=1,f=a[0];void 0!==f&&void 0===f[d];)f=a[e++];if(void 0!==f){var g=f[d];if(void 0!==g)if(Array.isArray(g)){do g=f[d],void 0!==g&&(b.push(f.time),c.push.apply(c,g)),f=a[e++];while(void 0!==f)}else if(void 0!==g.toArray){do g=f[d], +void 0!==g&&(b.push(f.time),g.toArray(c,c.length)),f=a[e++];while(void 0!==f)}else{do g=f[d],void 0!==g&&(b.push(f.time),c.push(g)),f=a[e++];while(void 0!==f)}}},subclip:function(a,b,c,d,e){e=e||30;a=a.clone();a.name=b;var f=[];for(b=0;b<a.tracks.length;++b){for(var g=a.tracks[b],h=g.getValueSize(),l=[],k=[],n=0;n<g.times.length;++n){var q=g.times[n]*e;if(!(q<c||q>=d))for(l.push(g.times[n]),q=0;q<h;++q)k.push(g.values[n*h+q])}0!==l.length&&(g.times=ta.convertArray(l,g.times.constructor),g.values= +ta.convertArray(k,g.values.constructor),f.push(g))}a.tracks=f;c=Infinity;for(b=0;b<a.tracks.length;++b)c>a.tracks[b].times[0]&&(c=a.tracks[b].times[0]);for(b=0;b<a.tracks.length;++b)a.tracks[b].shift(-1*c);a.resetDuration();return a}};Object.assign(Ia.prototype,{evaluate:function(a){var b=this.parameterPositions,c=this._cachedIndex,d=b[c],e=b[c-1];a:{b:{c:{d:if(!(a<d)){for(var f=c+2;;){if(void 0===d){if(a<e)break d;this._cachedIndex=c=b.length;return this.afterEnd_(c-1,a,e)}if(c===f)break;e=d;d=b[++c]; +if(a<d)break b}d=b.length;break c}if(a>=e)break a;else{f=b[1];a<f&&(c=2,e=f);for(f=c-2;;){if(void 0===e)return this._cachedIndex=0,this.beforeStart_(0,a,d);if(c===f)break;d=e;e=b[--c-1];if(a>=e)break b}d=c;c=0}}for(;c<d;)e=c+d>>>1,a<b[e]?d=e:c=e+1;d=b[c];e=b[c-1];if(void 0===e)return this._cachedIndex=0,this.beforeStart_(0,a,d);if(void 0===d)return this._cachedIndex=c=b.length,this.afterEnd_(c-1,e,a)}this._cachedIndex=c;this.intervalChanged_(c,e,d)}return this.interpolate_(c,e,a,d)},settings:null, +DefaultSettings_:{},getSettings_:function(){return this.settings||this.DefaultSettings_},copySampleValue_:function(a){var b=this.resultBuffer,c=this.sampleValues,d=this.valueSize;a*=d;for(var e=0;e!==d;++e)b[e]=c[a+e];return b},interpolate_:function(){throw Error("call to abstract method");},intervalChanged_:function(){}});Object.assign(Ia.prototype,{beforeStart_:Ia.prototype.copySampleValue_,afterEnd_:Ia.prototype.copySampleValue_});Re.prototype=Object.assign(Object.create(Ia.prototype),{constructor:Re, +DefaultSettings_:{endingStart:2400,endingEnd:2400},intervalChanged_:function(a,b,c){var d=this.parameterPositions,e=a-2,f=a+1,g=d[e],h=d[f];if(void 0===g)switch(this.getSettings_().endingStart){case 2401:e=a;g=2*b-c;break;case 2402:e=d.length-2;g=b+d[e]-d[e+1];break;default:e=a,g=c}if(void 0===h)switch(this.getSettings_().endingEnd){case 2401:f=a;h=2*c-b;break;case 2402:f=1;h=c+d[1]-d[0];break;default:f=a-1,h=b}a=.5*(c-b);d=this.valueSize;this._weightPrev=a/(b-g);this._weightNext=a/(h-c);this._offsetPrev= +e*d;this._offsetNext=f*d},interpolate_:function(a,b,c,d){var e=this.resultBuffer,f=this.sampleValues,g=this.valueSize;a*=g;var h=a-g,l=this._offsetPrev,k=this._offsetNext,n=this._weightPrev,q=this._weightNext,u=(c-b)/(d-b);c=u*u;d=c*u;b=-n*d+2*n*c-n*u;n=(1+n)*d+(-1.5-2*n)*c+(-.5+n)*u+1;u=(-1-q)*d+(1.5+q)*c+.5*u;q=q*d-q*c;for(c=0;c!==g;++c)e[c]=b*f[l+c]+n*f[h+c]+u*f[a+c]+q*f[k+c];return e}});ke.prototype=Object.assign(Object.create(Ia.prototype),{constructor:ke,interpolate_:function(a,b,c,d){var e= +this.resultBuffer,f=this.sampleValues,g=this.valueSize;a*=g;var h=a-g;b=(c-b)/(d-b);c=1-b;for(d=0;d!==g;++d)e[d]=f[h+d]*c+f[a+d]*b;return e}});Se.prototype=Object.assign(Object.create(Ia.prototype),{constructor:Se,interpolate_:function(a){return this.copySampleValue_(a-1)}});Object.assign(sa,{toJSON:function(a){var b=a.constructor;if(void 0!==b.toJSON)b=b.toJSON(a);else{b={name:a.name,times:ta.convertArray(a.times,Array),values:ta.convertArray(a.values,Array)};var c=a.getInterpolation();c!==a.DefaultInterpolation&& +(b.interpolation=c)}b.type=a.ValueTypeName;return b}});Object.assign(sa.prototype,{constructor:sa,TimeBufferType:Float32Array,ValueBufferType:Float32Array,DefaultInterpolation:2301,InterpolantFactoryMethodDiscrete:function(a){return new Se(this.times,this.values,this.getValueSize(),a)},InterpolantFactoryMethodLinear:function(a){return new ke(this.times,this.values,this.getValueSize(),a)},InterpolantFactoryMethodSmooth:function(a){return new Re(this.times,this.values,this.getValueSize(),a)},setInterpolation:function(a){switch(a){case 2300:var b= +this.InterpolantFactoryMethodDiscrete;break;case 2301:b=this.InterpolantFactoryMethodLinear;break;case 2302:b=this.InterpolantFactoryMethodSmooth}if(void 0===b){b="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(void 0===this.createInterpolant)if(a!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw Error(b);console.warn("THREE.KeyframeTrack:",b);return this}this.createInterpolant=b;return this},getInterpolation:function(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return 2300; +case this.InterpolantFactoryMethodLinear:return 2301;case this.InterpolantFactoryMethodSmooth:return 2302}},getValueSize:function(){return this.values.length/this.times.length},shift:function(a){if(0!==a)for(var b=this.times,c=0,d=b.length;c!==d;++c)b[c]+=a;return this},scale:function(a){if(1!==a)for(var b=this.times,c=0,d=b.length;c!==d;++c)b[c]*=a;return this},trim:function(a,b){for(var c=this.times,d=c.length,e=0,f=d-1;e!==d&&c[e]<a;)++e;for(;-1!==f&&c[f]>b;)--f;++f;if(0!==e||f!==d)e>=f&&(f=Math.max(f, +1),e=f-1),a=this.getValueSize(),this.times=ta.arraySlice(c,e,f),this.values=ta.arraySlice(this.values,e*a,f*a);return this},validate:function(){var a=!0,b=this.getValueSize();0!==b-Math.floor(b)&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),a=!1);var c=this.times;b=this.values;var d=c.length;0===d&&(console.error("THREE.KeyframeTrack: Track is empty.",this),a=!1);for(var e=null,f=0;f!==d;f++){var g=c[f];if("number"===typeof g&&isNaN(g)){console.error("THREE.KeyframeTrack: Time is not a valid number.", +this,f,g);a=!1;break}if(null!==e&&e>g){console.error("THREE.KeyframeTrack: Out of order keys.",this,f,g,e);a=!1;break}e=g}if(void 0!==b&&ta.isTypedArray(b))for(f=0,c=b.length;f!==c;++f)if(d=b[f],isNaN(d)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,f,d);a=!1;break}return a},optimize:function(){for(var a=this.times,b=this.values,c=this.getValueSize(),d=2302===this.getInterpolation(),e=1,f=a.length-1,g=1;g<f;++g){var h=!1,l=a[g];if(l!==a[g+1]&&(1!==g||l!==l[0]))if(d)h=!0; +else{var k=g*c,n=k-c,q=k+c;for(l=0;l!==c;++l){var u=b[k+l];if(u!==b[n+l]||u!==b[q+l]){h=!0;break}}}if(h){if(g!==e)for(a[e]=a[g],h=g*c,k=e*c,l=0;l!==c;++l)b[k+l]=b[h+l];++e}}if(0<f){a[e]=a[f];h=f*c;k=e*c;for(l=0;l!==c;++l)b[k+l]=b[h+l];++e}e!==a.length&&(this.times=ta.arraySlice(a,0,e),this.values=ta.arraySlice(b,0,e*c));return this},clone:function(){var a=ta.arraySlice(this.times,0),b=ta.arraySlice(this.values,0);a=new this.constructor(this.name,a,b);a.createInterpolant=this.createInterpolant;return a}}); +Te.prototype=Object.assign(Object.create(sa.prototype),{constructor:Te,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:2300,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0});Ue.prototype=Object.assign(Object.create(sa.prototype),{constructor:Ue,ValueTypeName:"color"});$c.prototype=Object.assign(Object.create(sa.prototype),{constructor:$c,ValueTypeName:"number"});Ve.prototype=Object.assign(Object.create(Ia.prototype),{constructor:Ve,interpolate_:function(a, +b,c,d){var e=this.resultBuffer,f=this.sampleValues,g=this.valueSize;a*=g;b=(c-b)/(d-b);for(c=a+g;a!==c;a+=4)wa.slerpFlat(e,0,f,a-g,f,a,b);return e}});le.prototype=Object.assign(Object.create(sa.prototype),{constructor:le,ValueTypeName:"quaternion",DefaultInterpolation:2301,InterpolantFactoryMethodLinear:function(a){return new Ve(this.times,this.values,this.getValueSize(),a)},InterpolantFactoryMethodSmooth:void 0});We.prototype=Object.assign(Object.create(sa.prototype),{constructor:We,ValueTypeName:"string", +ValueBufferType:Array,DefaultInterpolation:2300,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0});ad.prototype=Object.assign(Object.create(sa.prototype),{constructor:ad,ValueTypeName:"vector"});Object.assign(Ma,{parse:function(a){for(var b=[],c=a.tracks,d=1/(a.fps||1),e=0,f=c.length;e!==f;++e)b.push(sk(c[e]).scale(d));return new Ma(a.name,a.duration,b)},toJSON:function(a){var b=[],c=a.tracks;a={name:a.name,duration:a.duration,tracks:b,uuid:a.uuid};for(var d=0,e=c.length;d!== +e;++d)b.push(sa.toJSON(c[d]));return a},CreateFromMorphTargetSequence:function(a,b,c,d){for(var e=b.length,f=[],g=0;g<e;g++){var h=[],l=[];h.push((g+e-1)%e,g,(g+1)%e);l.push(0,1,0);var k=ta.getKeyframeOrder(h);h=ta.sortedArray(h,1,k);l=ta.sortedArray(l,1,k);d||0!==h[0]||(h.push(e),l.push(l[0]));f.push((new $c(".morphTargetInfluences["+b[g].name+"]",h,l)).scale(1/c))}return new Ma(a,-1,f)},findByName:function(a,b){var c=a;Array.isArray(a)||(c=a.geometry&&a.geometry.animations||a.animations);for(a= +0;a<c.length;a++)if(c[a].name===b)return c[a];return null},CreateClipsFromMorphTargetSequences:function(a,b,c){for(var d={},e=/^([\w-]*?)([\d]+)$/,f=0,g=a.length;f<g;f++){var h=a[f],l=h.name.match(e);if(l&&1<l.length){var k=l[1];(l=d[k])||(d[k]=l=[]);l.push(h)}}a=[];for(k in d)a.push(Ma.CreateFromMorphTargetSequence(k,d[k],b,c));return a},parseAnimation:function(a,b){if(!a)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;var c=function(a,b,c,d,e){if(0!==c.length){var f= +[],g=[];ta.flattenJSON(c,f,g,d);0!==f.length&&e.push(new a(b,f,g))}},d=[],e=a.name||"default",f=a.length||-1,g=a.fps||30;a=a.hierarchy||[];for(var h=0;h<a.length;h++){var l=a[h].keys;if(l&&0!==l.length)if(l[0].morphTargets){f={};for(var k=0;k<l.length;k++)if(l[k].morphTargets)for(var n=0;n<l[k].morphTargets.length;n++)f[l[k].morphTargets[n]]=-1;for(var q in f){var u=[],p=[];for(n=0;n!==l[k].morphTargets.length;++n){var t=l[k];u.push(t.time);p.push(t.morphTarget===q?1:0)}d.push(new $c(".morphTargetInfluence["+ +q+"]",u,p))}f=f.length*(g||1)}else k=".bones["+b[h].name+"]",c(ad,k+".position",l,"pos",d),c(le,k+".quaternion",l,"rot",d),c(ad,k+".scale",l,"scl",d)}return 0===d.length?null:new Ma(e,f,d)}});Object.assign(Ma.prototype,{resetDuration:function(){for(var a=0,b=0,c=this.tracks.length;b!==c;++b){var d=this.tracks[b];a=Math.max(a,d.times[d.times.length-1])}this.duration=a;return this},trim:function(){for(var a=0;a<this.tracks.length;a++)this.tracks[a].trim(0,this.duration);return this},validate:function(){for(var a= +!0,b=0;b<this.tracks.length;b++)a=a&&this.tracks[b].validate();return a},optimize:function(){for(var a=0;a<this.tracks.length;a++)this.tracks[a].optimize();return this},clone:function(){for(var a=[],b=0;b<this.tracks.length;b++)a.push(this.tracks[b].clone());return new Ma(this.name,this.duration,a)}});var tc={enabled:!1,files:{},add:function(a,b){!1!==this.enabled&&(this.files[a]=b)},get:function(a){if(!1!==this.enabled)return this.files[a]},remove:function(a){delete this.files[a]},clear:function(){this.files= +{}}},Zh=new og;Object.assign(V.prototype,{load:function(){},parse:function(){},setCrossOrigin:function(a){this.crossOrigin=a;return this},setPath:function(a){this.path=a;return this},setResourcePath:function(a){this.resourcePath=a;return this}});var $a={};Na.prototype=Object.assign(Object.create(V.prototype),{constructor:Na,load:function(a,b,c,d){void 0===a&&(a="");void 0!==this.path&&(a=this.path+a);a=this.manager.resolveURL(a);var e=this,f=tc.get(a);if(void 0!==f)return e.manager.itemStart(a),setTimeout(function(){b&& +b(f);e.manager.itemEnd(a)},0),f;if(void 0!==$a[a])$a[a].push({onLoad:b,onProgress:c,onError:d});else{var g=a.match(/^data:(.*?)(;base64)?,(.*)$/);if(g){c=g[1];var h=!!g[2];g=g[3];g=decodeURIComponent(g);h&&(g=atob(g));try{var l=(this.responseType||"").toLowerCase();switch(l){case "arraybuffer":case "blob":var k=new Uint8Array(g.length);for(h=0;h<g.length;h++)k[h]=g.charCodeAt(h);var n="blob"===l?new Blob([k.buffer],{type:c}):k.buffer;break;case "document":n=(new DOMParser).parseFromString(g,c);break; +case "json":n=JSON.parse(g);break;default:n=g}setTimeout(function(){b&&b(n);e.manager.itemEnd(a)},0)}catch(u){setTimeout(function(){d&&d(u);e.manager.itemError(a);e.manager.itemEnd(a)},0)}}else{$a[a]=[];$a[a].push({onLoad:b,onProgress:c,onError:d});var q=new XMLHttpRequest;q.open("GET",a,!0);q.addEventListener("load",function(b){var c=this.response,d=$a[a];delete $a[a];if(200===this.status||0===this.status){0===this.status&&console.warn("THREE.FileLoader: HTTP Status 0 received.");tc.add(a,c);for(var f= +0,g=d.length;f<g;f++){var h=d[f];if(h.onLoad)h.onLoad(c)}}else{f=0;for(g=d.length;f<g;f++)if(h=d[f],h.onError)h.onError(b);e.manager.itemError(a)}e.manager.itemEnd(a)},!1);q.addEventListener("progress",function(b){for(var c=$a[a],d=0,e=c.length;d<e;d++){var f=c[d];if(f.onProgress)f.onProgress(b)}},!1);q.addEventListener("error",function(b){var c=$a[a];delete $a[a];for(var d=0,f=c.length;d<f;d++){var g=c[d];if(g.onError)g.onError(b)}e.manager.itemError(a);e.manager.itemEnd(a)},!1);q.addEventListener("abort", +function(b){var c=$a[a];delete $a[a];for(var d=0,f=c.length;d<f;d++){var g=c[d];if(g.onError)g.onError(b)}e.manager.itemError(a);e.manager.itemEnd(a)},!1);void 0!==this.responseType&&(q.responseType=this.responseType);void 0!==this.withCredentials&&(q.withCredentials=this.withCredentials);q.overrideMimeType&&q.overrideMimeType(void 0!==this.mimeType?this.mimeType:"text/plain");for(h in this.requestHeader)q.setRequestHeader(h,this.requestHeader[h]);q.send(null)}e.manager.itemStart(a);return q}},setResponseType:function(a){this.responseType= +a;return this},setWithCredentials:function(a){this.withCredentials=a;return this},setMimeType:function(a){this.mimeType=a;return this},setRequestHeader:function(a){this.requestHeader=a;return this}});pg.prototype=Object.assign(Object.create(V.prototype),{constructor:pg,load:function(a,b,c,d){var e=this,f=new Na(e.manager);f.setPath(e.path);f.load(a,function(a){b(e.parse(JSON.parse(a)))},c,d)},parse:function(a){for(var b=[],c=0;c<a.length;c++){var d=Ma.parse(a[c]);b.push(d)}return b}});qg.prototype= +Object.assign(Object.create(V.prototype),{constructor:qg,load:function(a,b,c,d){function e(e){l.load(a[e],function(a){a=f.parse(a,!0);g[e]={width:a.width,height:a.height,format:a.format,mipmaps:a.mipmaps};k+=1;6===k&&(1===a.mipmapCount&&(h.minFilter=1006),h.format=a.format,h.needsUpdate=!0,b&&b(h))},c,d)}var f=this,g=[],h=new Lc;h.image=g;var l=new Na(this.manager);l.setPath(this.path);l.setResponseType("arraybuffer");if(Array.isArray(a))for(var k=0,n=0,q=a.length;n<q;++n)e(n);else l.load(a,function(a){a= +f.parse(a,!0);if(a.isCubemap)for(var c=a.mipmaps.length/a.mipmapCount,d=0;d<c;d++){g[d]={mipmaps:[]};for(var e=0;e<a.mipmapCount;e++)g[d].mipmaps.push(a.mipmaps[d*a.mipmapCount+e]),g[d].format=a.format,g[d].width=a.width,g[d].height=a.height}else h.image.width=a.width,h.image.height=a.height,h.mipmaps=a.mipmaps;1===a.mipmapCount&&(h.minFilter=1006);h.format=a.format;h.needsUpdate=!0;b&&b(h)},c,d);return h}});Xe.prototype=Object.assign(Object.create(V.prototype),{constructor:Xe,load:function(a,b,c, +d){var e=this,f=new Yb,g=new Na(this.manager);g.setResponseType("arraybuffer");g.setPath(this.path);g.load(a,function(a){if(a=e.parse(a))void 0!==a.image?f.image=a.image:void 0!==a.data&&(f.image.width=a.width,f.image.height=a.height,f.image.data=a.data),f.wrapS=void 0!==a.wrapS?a.wrapS:1001,f.wrapT=void 0!==a.wrapT?a.wrapT:1001,f.magFilter=void 0!==a.magFilter?a.magFilter:1006,f.minFilter=void 0!==a.minFilter?a.minFilter:1006,f.anisotropy=void 0!==a.anisotropy?a.anisotropy:1,void 0!==a.format&&(f.format= +a.format),void 0!==a.type&&(f.type=a.type),void 0!==a.mipmaps&&(f.mipmaps=a.mipmaps,f.minFilter=1008),1===a.mipmapCount&&(f.minFilter=1006),f.needsUpdate=!0,b&&b(f,a)},c,d);return f}});bd.prototype=Object.assign(Object.create(V.prototype),{constructor:bd,load:function(a,b,c,d){function e(){l.removeEventListener("load",e,!1);l.removeEventListener("error",f,!1);tc.add(a,this);b&&b(this);g.manager.itemEnd(a)}function f(b){l.removeEventListener("load",e,!1);l.removeEventListener("error",f,!1);d&&d(b); +g.manager.itemError(a);g.manager.itemEnd(a)}void 0!==this.path&&(a=this.path+a);a=this.manager.resolveURL(a);var g=this,h=tc.get(a);if(void 0!==h)return g.manager.itemStart(a),setTimeout(function(){b&&b(h);g.manager.itemEnd(a)},0),h;var l=document.createElementNS("http://www.w3.org/1999/xhtml","img");l.addEventListener("load",e,!1);l.addEventListener("error",f,!1);"data:"!==a.substr(0,5)&&void 0!==this.crossOrigin&&(l.crossOrigin=this.crossOrigin);g.manager.itemStart(a);l.src=a;return l}});Ye.prototype= +Object.assign(Object.create(V.prototype),{constructor:Ye,load:function(a,b,c,d){function e(c){g.load(a[c],function(a){f.images[c]=a;h++;6===h&&(f.needsUpdate=!0,b&&b(f))},void 0,d)}var f=new nb,g=new bd(this.manager);g.setCrossOrigin(this.crossOrigin);g.setPath(this.path);var h=0;for(c=0;c<a.length;++c)e(c);return f}});Ze.prototype=Object.assign(Object.create(V.prototype),{constructor:Ze,load:function(a,b,c,d){var e=new Y,f=new bd(this.manager);f.setCrossOrigin(this.crossOrigin);f.setPath(this.path); +f.load(a,function(c){e.image=c;c=0<a.search(/\.jpe?g($|\?)/i)||0===a.search(/^data:image\/jpeg/);e.format=c?1022:1023;e.needsUpdate=!0;void 0!==b&&b(e)},c,d);return e}});Object.assign(G.prototype,{getPoint:function(){console.warn("THREE.Curve: .getPoint() not implemented.");return null},getPointAt:function(a,b){a=this.getUtoTmapping(a);return this.getPoint(a,b)},getPoints:function(a){void 0===a&&(a=5);for(var b=[],c=0;c<=a;c++)b.push(this.getPoint(c/a));return b},getSpacedPoints:function(a){void 0=== +a&&(a=5);for(var b=[],c=0;c<=a;c++)b.push(this.getPointAt(c/a));return b},getLength:function(){var a=this.getLengths();return a[a.length-1]},getLengths:function(a){void 0===a&&(a=this.arcLengthDivisions);if(this.cacheArcLengths&&this.cacheArcLengths.length===a+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var b=[],c=this.getPoint(0),d,e=0;b.push(0);for(d=1;d<=a;d++){var f=this.getPoint(d/a);e+=f.distanceTo(c);b.push(e);c=f}return this.cacheArcLengths=b},updateArcLengths:function(){this.needsUpdate= +!0;this.getLengths()},getUtoTmapping:function(a,b){var c=this.getLengths(),d=c.length;b=b?b:a*c[d-1];for(var e=0,f=d-1,g;e<=f;)if(a=Math.floor(e+(f-e)/2),g=c[a]-b,0>g)e=a+1;else if(0<g)f=a-1;else{f=a;break}a=f;if(c[a]===b)return a/(d-1);e=c[a];return(a+(b-e)/(c[a+1]-e))/(d-1)},getTangent:function(a){var b=a-1E-4;a+=1E-4;0>b&&(b=0);1<a&&(a=1);b=this.getPoint(b);return this.getPoint(a).clone().sub(b).normalize()},getTangentAt:function(a){a=this.getUtoTmapping(a);return this.getTangent(a)},computeFrenetFrames:function(a, +b){var c=new n,d=[],e=[],f=[],g=new n,h=new Q,l;for(l=0;l<=a;l++){var k=l/a;d[l]=this.getTangentAt(k);d[l].normalize()}e[0]=new n;f[0]=new n;l=Number.MAX_VALUE;k=Math.abs(d[0].x);var r=Math.abs(d[0].y),q=Math.abs(d[0].z);k<=l&&(l=k,c.set(1,0,0));r<=l&&(l=r,c.set(0,1,0));q<=l&&c.set(0,0,1);g.crossVectors(d[0],c).normalize();e[0].crossVectors(d[0],g);f[0].crossVectors(d[0],e[0]);for(l=1;l<=a;l++)e[l]=e[l-1].clone(),f[l]=f[l-1].clone(),g.crossVectors(d[l-1],d[l]),g.length()>Number.EPSILON&&(g.normalize(), +c=Math.acos(P.clamp(d[l-1].dot(d[l]),-1,1)),e[l].applyMatrix4(h.makeRotationAxis(g,c))),f[l].crossVectors(d[l],e[l]);if(!0===b)for(c=Math.acos(P.clamp(e[0].dot(e[a]),-1,1)),c/=a,0<d[0].dot(g.crossVectors(e[0],e[a]))&&(c=-c),l=1;l<=a;l++)e[l].applyMatrix4(h.makeRotationAxis(d[l],c*l)),f[l].crossVectors(d[l],e[l]);return{tangents:d,normals:e,binormals:f}},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.arcLengthDivisions=a.arcLengthDivisions;return this},toJSON:function(){var a= +{metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};a.arcLengthDivisions=this.arcLengthDivisions;a.type=this.type;return a},fromJSON:function(a){this.arcLengthDivisions=a.arcLengthDivisions;return this}});Ja.prototype=Object.create(G.prototype);Ja.prototype.constructor=Ja;Ja.prototype.isEllipseCurve=!0;Ja.prototype.getPoint=function(a,b){b=b||new B;for(var c=2*Math.PI,d=this.aEndAngle-this.aStartAngle,e=Math.abs(d)<Number.EPSILON;0>d;)d+=c;for(;d>c;)d-=c;d<Number.EPSILON&&(d=e?0:c);!0!== +this.aClockwise||e||(d=d===c?-c:d-c);c=this.aStartAngle+a*d;a=this.aX+this.xRadius*Math.cos(c);var f=this.aY+this.yRadius*Math.sin(c);0!==this.aRotation&&(c=Math.cos(this.aRotation),d=Math.sin(this.aRotation),e=a-this.aX,f-=this.aY,a=e*c-f*d+this.aX,f=e*d+f*c+this.aY);return b.set(a,f)};Ja.prototype.copy=function(a){G.prototype.copy.call(this,a);this.aX=a.aX;this.aY=a.aY;this.xRadius=a.xRadius;this.yRadius=a.yRadius;this.aStartAngle=a.aStartAngle;this.aEndAngle=a.aEndAngle;this.aClockwise=a.aClockwise; +this.aRotation=a.aRotation;return this};Ja.prototype.toJSON=function(){var a=G.prototype.toJSON.call(this);a.aX=this.aX;a.aY=this.aY;a.xRadius=this.xRadius;a.yRadius=this.yRadius;a.aStartAngle=this.aStartAngle;a.aEndAngle=this.aEndAngle;a.aClockwise=this.aClockwise;a.aRotation=this.aRotation;return a};Ja.prototype.fromJSON=function(a){G.prototype.fromJSON.call(this,a);this.aX=a.aX;this.aY=a.aY;this.xRadius=a.xRadius;this.yRadius=a.yRadius;this.aStartAngle=a.aStartAngle;this.aEndAngle=a.aEndAngle; +this.aClockwise=a.aClockwise;this.aRotation=a.aRotation;return this};cd.prototype=Object.create(Ja.prototype);cd.prototype.constructor=cd;cd.prototype.isArcCurve=!0;var Lf=new n,ah=new rg,bh=new rg,ch=new rg;na.prototype=Object.create(G.prototype);na.prototype.constructor=na;na.prototype.isCatmullRomCurve3=!0;na.prototype.getPoint=function(a,b){b=b||new n;var c=this.points,d=c.length;a*=d-(this.closed?0:1);var e=Math.floor(a);a-=e;this.closed?e+=0<e?0:(Math.floor(Math.abs(e)/d)+1)*d:0===a&&e===d- +1&&(e=d-2,a=1);if(this.closed||0<e)var f=c[(e-1)%d];else Lf.subVectors(c[0],c[1]).add(c[0]),f=Lf;var g=c[e%d];var h=c[(e+1)%d];this.closed||e+2<d?c=c[(e+2)%d]:(Lf.subVectors(c[d-1],c[d-2]).add(c[d-1]),c=Lf);if("centripetal"===this.curveType||"chordal"===this.curveType){var l="chordal"===this.curveType?.5:.25;d=Math.pow(f.distanceToSquared(g),l);e=Math.pow(g.distanceToSquared(h),l);l=Math.pow(h.distanceToSquared(c),l);1E-4>e&&(e=1);1E-4>d&&(d=e);1E-4>l&&(l=e);ah.initNonuniformCatmullRom(f.x,g.x,h.x, +c.x,d,e,l);bh.initNonuniformCatmullRom(f.y,g.y,h.y,c.y,d,e,l);ch.initNonuniformCatmullRom(f.z,g.z,h.z,c.z,d,e,l)}else"catmullrom"===this.curveType&&(ah.initCatmullRom(f.x,g.x,h.x,c.x,this.tension),bh.initCatmullRom(f.y,g.y,h.y,c.y,this.tension),ch.initCatmullRom(f.z,g.z,h.z,c.z,this.tension));b.set(ah.calc(a),bh.calc(a),ch.calc(a));return b};na.prototype.copy=function(a){G.prototype.copy.call(this,a);this.points=[];for(var b=0,c=a.points.length;b<c;b++)this.points.push(a.points[b].clone());this.closed= +a.closed;this.curveType=a.curveType;this.tension=a.tension;return this};na.prototype.toJSON=function(){var a=G.prototype.toJSON.call(this);a.points=[];for(var b=0,c=this.points.length;b<c;b++)a.points.push(this.points[b].toArray());a.closed=this.closed;a.curveType=this.curveType;a.tension=this.tension;return a};na.prototype.fromJSON=function(a){G.prototype.fromJSON.call(this,a);this.points=[];for(var b=0,c=a.points.length;b<c;b++){var d=a.points[b];this.points.push((new n).fromArray(d))}this.closed= +a.closed;this.curveType=a.curveType;this.tension=a.tension;return this};Sa.prototype=Object.create(G.prototype);Sa.prototype.constructor=Sa;Sa.prototype.isCubicBezierCurve=!0;Sa.prototype.getPoint=function(a,b){b=b||new B;var c=this.v0,d=this.v1,e=this.v2,f=this.v3;b.set(ne(a,c.x,d.x,e.x,f.x),ne(a,c.y,d.y,e.y,f.y));return b};Sa.prototype.copy=function(a){G.prototype.copy.call(this,a);this.v0.copy(a.v0);this.v1.copy(a.v1);this.v2.copy(a.v2);this.v3.copy(a.v3);return this};Sa.prototype.toJSON=function(){var a= +G.prototype.toJSON.call(this);a.v0=this.v0.toArray();a.v1=this.v1.toArray();a.v2=this.v2.toArray();a.v3=this.v3.toArray();return a};Sa.prototype.fromJSON=function(a){G.prototype.fromJSON.call(this,a);this.v0.fromArray(a.v0);this.v1.fromArray(a.v1);this.v2.fromArray(a.v2);this.v3.fromArray(a.v3);return this};fb.prototype=Object.create(G.prototype);fb.prototype.constructor=fb;fb.prototype.isCubicBezierCurve3=!0;fb.prototype.getPoint=function(a,b){b=b||new n;var c=this.v0,d=this.v1,e=this.v2,f=this.v3; +b.set(ne(a,c.x,d.x,e.x,f.x),ne(a,c.y,d.y,e.y,f.y),ne(a,c.z,d.z,e.z,f.z));return b};fb.prototype.copy=function(a){G.prototype.copy.call(this,a);this.v0.copy(a.v0);this.v1.copy(a.v1);this.v2.copy(a.v2);this.v3.copy(a.v3);return this};fb.prototype.toJSON=function(){var a=G.prototype.toJSON.call(this);a.v0=this.v0.toArray();a.v1=this.v1.toArray();a.v2=this.v2.toArray();a.v3=this.v3.toArray();return a};fb.prototype.fromJSON=function(a){G.prototype.fromJSON.call(this,a);this.v0.fromArray(a.v0);this.v1.fromArray(a.v1); +this.v2.fromArray(a.v2);this.v3.fromArray(a.v3);return this};Da.prototype=Object.create(G.prototype);Da.prototype.constructor=Da;Da.prototype.isLineCurve=!0;Da.prototype.getPoint=function(a,b){b=b||new B;1===a?b.copy(this.v2):(b.copy(this.v2).sub(this.v1),b.multiplyScalar(a).add(this.v1));return b};Da.prototype.getPointAt=function(a,b){return this.getPoint(a,b)};Da.prototype.getTangent=function(){return this.v2.clone().sub(this.v1).normalize()};Da.prototype.copy=function(a){G.prototype.copy.call(this, +a);this.v1.copy(a.v1);this.v2.copy(a.v2);return this};Da.prototype.toJSON=function(){var a=G.prototype.toJSON.call(this);a.v1=this.v1.toArray();a.v2=this.v2.toArray();return a};Da.prototype.fromJSON=function(a){G.prototype.fromJSON.call(this,a);this.v1.fromArray(a.v1);this.v2.fromArray(a.v2);return this};Ta.prototype=Object.create(G.prototype);Ta.prototype.constructor=Ta;Ta.prototype.isLineCurve3=!0;Ta.prototype.getPoint=function(a,b){b=b||new n;1===a?b.copy(this.v2):(b.copy(this.v2).sub(this.v1), +b.multiplyScalar(a).add(this.v1));return b};Ta.prototype.getPointAt=function(a,b){return this.getPoint(a,b)};Ta.prototype.copy=function(a){G.prototype.copy.call(this,a);this.v1.copy(a.v1);this.v2.copy(a.v2);return this};Ta.prototype.toJSON=function(){var a=G.prototype.toJSON.call(this);a.v1=this.v1.toArray();a.v2=this.v2.toArray();return a};Ta.prototype.fromJSON=function(a){G.prototype.fromJSON.call(this,a);this.v1.fromArray(a.v1);this.v2.fromArray(a.v2);return this};Ua.prototype=Object.create(G.prototype); +Ua.prototype.constructor=Ua;Ua.prototype.isQuadraticBezierCurve=!0;Ua.prototype.getPoint=function(a,b){b=b||new B;var c=this.v0,d=this.v1,e=this.v2;b.set(me(a,c.x,d.x,e.x),me(a,c.y,d.y,e.y));return b};Ua.prototype.copy=function(a){G.prototype.copy.call(this,a);this.v0.copy(a.v0);this.v1.copy(a.v1);this.v2.copy(a.v2);return this};Ua.prototype.toJSON=function(){var a=G.prototype.toJSON.call(this);a.v0=this.v0.toArray();a.v1=this.v1.toArray();a.v2=this.v2.toArray();return a};Ua.prototype.fromJSON=function(a){G.prototype.fromJSON.call(this, +a);this.v0.fromArray(a.v0);this.v1.fromArray(a.v1);this.v2.fromArray(a.v2);return this};gb.prototype=Object.create(G.prototype);gb.prototype.constructor=gb;gb.prototype.isQuadraticBezierCurve3=!0;gb.prototype.getPoint=function(a,b){b=b||new n;var c=this.v0,d=this.v1,e=this.v2;b.set(me(a,c.x,d.x,e.x),me(a,c.y,d.y,e.y),me(a,c.z,d.z,e.z));return b};gb.prototype.copy=function(a){G.prototype.copy.call(this,a);this.v0.copy(a.v0);this.v1.copy(a.v1);this.v2.copy(a.v2);return this};gb.prototype.toJSON=function(){var a= +G.prototype.toJSON.call(this);a.v0=this.v0.toArray();a.v1=this.v1.toArray();a.v2=this.v2.toArray();return a};gb.prototype.fromJSON=function(a){G.prototype.fromJSON.call(this,a);this.v0.fromArray(a.v0);this.v1.fromArray(a.v1);this.v2.fromArray(a.v2);return this};Va.prototype=Object.create(G.prototype);Va.prototype.constructor=Va;Va.prototype.isSplineCurve=!0;Va.prototype.getPoint=function(a,b){b=b||new B;var c=this.points,d=(c.length-1)*a;a=Math.floor(d);d-=a;var e=c[0===a?a:a-1],f=c[a],g=c[a>c.length- +2?c.length-1:a+1];c=c[a>c.length-3?c.length-1:a+2];b.set($h(d,e.x,f.x,g.x,c.x),$h(d,e.y,f.y,g.y,c.y));return b};Va.prototype.copy=function(a){G.prototype.copy.call(this,a);this.points=[];for(var b=0,c=a.points.length;b<c;b++)this.points.push(a.points[b].clone());return this};Va.prototype.toJSON=function(){var a=G.prototype.toJSON.call(this);a.points=[];for(var b=0,c=this.points.length;b<c;b++)a.points.push(this.points[b].toArray());return a};Va.prototype.fromJSON=function(a){G.prototype.fromJSON.call(this, +a);this.points=[];for(var b=0,c=a.points.length;b<c;b++){var d=a.points[b];this.points.push((new B).fromArray(d))}return this};var dh=Object.freeze({ArcCurve:cd,CatmullRomCurve3:na,CubicBezierCurve:Sa,CubicBezierCurve3:fb,EllipseCurve:Ja,LineCurve:Da,LineCurve3:Ta,QuadraticBezierCurve:Ua,QuadraticBezierCurve3:gb,SplineCurve:Va});sb.prototype=Object.assign(Object.create(G.prototype),{constructor:sb,add:function(a){this.curves.push(a)},closePath:function(){var a=this.curves[0].getPoint(0),b=this.curves[this.curves.length- +1].getPoint(1);a.equals(b)||this.curves.push(new Da(b,a))},getPoint:function(a){var b=a*this.getLength(),c=this.getCurveLengths();for(a=0;a<c.length;){if(c[a]>=b)return b=c[a]-b,a=this.curves[a],c=a.getLength(),a.getPointAt(0===c?0:1-b/c);a++}return null},getLength:function(){var a=this.getCurveLengths();return a[a.length-1]},updateArcLengths:function(){this.needsUpdate=!0;this.cacheLengths=null;this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths; +for(var a=[],b=0,c=0,d=this.curves.length;c<d;c++)b+=this.curves[c].getLength(),a.push(b);return this.cacheLengths=a},getSpacedPoints:function(a){void 0===a&&(a=40);for(var b=[],c=0;c<=a;c++)b.push(this.getPoint(c/a));this.autoClose&&b.push(b[0]);return b},getPoints:function(a){a=a||12;for(var b=[],c,d=0,e=this.curves;d<e.length;d++){var f=e[d];f=f.getPoints(f&&f.isEllipseCurve?2*a:f&&(f.isLineCurve||f.isLineCurve3)?1:f&&f.isSplineCurve?a*f.points.length:a);for(var g=0;g<f.length;g++){var h=f[g]; +c&&c.equals(h)||(b.push(h),c=h)}}this.autoClose&&1<b.length&&!b[b.length-1].equals(b[0])&&b.push(b[0]);return b},copy:function(a){G.prototype.copy.call(this,a);this.curves=[];for(var b=0,c=a.curves.length;b<c;b++)this.curves.push(a.curves[b].clone());this.autoClose=a.autoClose;return this},toJSON:function(){var a=G.prototype.toJSON.call(this);a.autoClose=this.autoClose;a.curves=[];for(var b=0,c=this.curves.length;b<c;b++)a.curves.push(this.curves[b].toJSON());return a},fromJSON:function(a){G.prototype.fromJSON.call(this, +a);this.autoClose=a.autoClose;this.curves=[];for(var b=0,c=a.curves.length;b<c;b++){var d=a.curves[b];this.curves.push((new dh[d.type]).fromJSON(d))}return this}});Wa.prototype=Object.assign(Object.create(sb.prototype),{constructor:Wa,setFromPoints:function(a){this.moveTo(a[0].x,a[0].y);for(var b=1,c=a.length;b<c;b++)this.lineTo(a[b].x,a[b].y);return this},moveTo:function(a,b){this.currentPoint.set(a,b);return this},lineTo:function(a,b){var c=new Da(this.currentPoint.clone(),new B(a,b));this.curves.push(c); +this.currentPoint.set(a,b);return this},quadraticCurveTo:function(a,b,c,d){a=new Ua(this.currentPoint.clone(),new B(a,b),new B(c,d));this.curves.push(a);this.currentPoint.set(c,d);return this},bezierCurveTo:function(a,b,c,d,e,f){a=new Sa(this.currentPoint.clone(),new B(a,b),new B(c,d),new B(e,f));this.curves.push(a);this.currentPoint.set(e,f);return this},splineThru:function(a){var b=[this.currentPoint.clone()].concat(a);b=new Va(b);this.curves.push(b);this.currentPoint.copy(a[a.length-1]);return this}, +arc:function(a,b,c,d,e,f){this.absarc(a+this.currentPoint.x,b+this.currentPoint.y,c,d,e,f);return this},absarc:function(a,b,c,d,e,f){this.absellipse(a,b,c,c,d,e,f);return this},ellipse:function(a,b,c,d,e,f,g,h){this.absellipse(a+this.currentPoint.x,b+this.currentPoint.y,c,d,e,f,g,h);return this},absellipse:function(a,b,c,d,e,f,g,h){a=new Ja(a,b,c,d,e,f,g,h);0<this.curves.length&&(b=a.getPoint(0),b.equals(this.currentPoint)||this.lineTo(b.x,b.y));this.curves.push(a);a=a.getPoint(1);this.currentPoint.copy(a); +return this},copy:function(a){sb.prototype.copy.call(this,a);this.currentPoint.copy(a.currentPoint);return this},toJSON:function(){var a=sb.prototype.toJSON.call(this);a.currentPoint=this.currentPoint.toArray();return a},fromJSON:function(a){sb.prototype.fromJSON.call(this,a);this.currentPoint.fromArray(a.currentPoint);return this}});Ib.prototype=Object.assign(Object.create(Wa.prototype),{constructor:Ib,getPointsHoles:function(a){for(var b=[],c=0,d=this.holes.length;c<d;c++)b[c]=this.holes[c].getPoints(a); +return b},extractPoints:function(a){return{shape:this.getPoints(a),holes:this.getPointsHoles(a)}},copy:function(a){Wa.prototype.copy.call(this,a);this.holes=[];for(var b=0,c=a.holes.length;b<c;b++)this.holes.push(a.holes[b].clone());return this},toJSON:function(){var a=Wa.prototype.toJSON.call(this);a.uuid=this.uuid;a.holes=[];for(var b=0,c=this.holes.length;b<c;b++)a.holes.push(this.holes[b].toJSON());return a},fromJSON:function(a){Wa.prototype.fromJSON.call(this,a);this.uuid=a.uuid;this.holes=[]; +for(var b=0,c=a.holes.length;b<c;b++){var d=a.holes[b];this.holes.push((new Wa).fromJSON(d))}return this}});T.prototype=Object.assign(Object.create(D.prototype),{constructor:T,isLight:!0,copy:function(a){D.prototype.copy.call(this,a);this.color.copy(a.color);this.intensity=a.intensity;return this},toJSON:function(a){a=D.prototype.toJSON.call(this,a);a.object.color=this.color.getHex();a.object.intensity=this.intensity;void 0!==this.groundColor&&(a.object.groundColor=this.groundColor.getHex());void 0!== +this.distance&&(a.object.distance=this.distance);void 0!==this.angle&&(a.object.angle=this.angle);void 0!==this.decay&&(a.object.decay=this.decay);void 0!==this.penumbra&&(a.object.penumbra=this.penumbra);void 0!==this.shadow&&(a.object.shadow=this.shadow.toJSON());return a}});$e.prototype=Object.assign(Object.create(T.prototype),{constructor:$e,isHemisphereLight:!0,copy:function(a){T.prototype.copy.call(this,a);this.groundColor.copy(a.groundColor);return this}});Object.assign(hb.prototype,{_projScreenMatrix:new Q, +_lightPositionWorld:new n,_lookTarget:new n,getViewportCount:function(){return this._viewportCount},getFrustum:function(){return this._frustum},updateMatrices:function(a){var b=this.camera,c=this.matrix,d=this._projScreenMatrix,e=this._lookTarget,f=this._lightPositionWorld;f.setFromMatrixPosition(a.matrixWorld);b.position.copy(f);e.setFromMatrixPosition(a.target.matrixWorld);b.lookAt(e);b.updateMatrixWorld();d.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);this._frustum.setFromMatrix(d); +c.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);c.multiply(b.projectionMatrix);c.multiply(b.matrixWorldInverse)},getViewport:function(a){return this._viewports[a]},getFrameExtents:function(){return this._frameExtents},copy:function(a){this.camera=a.camera.clone();this.bias=a.bias;this.radius=a.radius;this.mapSize.copy(a.mapSize);return this},clone:function(){return(new this.constructor).copy(this)},toJSON:function(){var a={};0!==this.bias&&(a.bias=this.bias);1!==this.radius&&(a.radius=this.radius);if(512!== +this.mapSize.x||512!==this.mapSize.y)a.mapSize=this.mapSize.toArray();a.camera=this.camera.toJSON(!1).object;delete a.camera.matrix;return a}});af.prototype=Object.assign(Object.create(hb.prototype),{constructor:af,isSpotLightShadow:!0,updateMatrices:function(a){var b=this.camera,c=2*P.RAD2DEG*a.angle,d=this.mapSize.width/this.mapSize.height,e=a.distance||b.far;if(c!==b.fov||d!==b.aspect||e!==b.far)b.fov=c,b.aspect=d,b.far=e,b.updateProjectionMatrix();hb.prototype.updateMatrices.call(this,a)}});bf.prototype= +Object.assign(Object.create(T.prototype),{constructor:bf,isSpotLight:!0,copy:function(a){T.prototype.copy.call(this,a);this.distance=a.distance;this.angle=a.angle;this.penumbra=a.penumbra;this.decay=a.decay;this.target=a.target.clone();this.shadow=a.shadow.clone();return this}});sg.prototype=Object.assign(Object.create(hb.prototype),{constructor:sg,isPointLightShadow:!0,updateMatrices:function(a,b){void 0===b&&(b=0);var c=this.camera,d=this.matrix,e=this._lightPositionWorld,f=this._lookTarget,g=this._projScreenMatrix; +e.setFromMatrixPosition(a.matrixWorld);c.position.copy(e);f.copy(c.position);f.add(this._cubeDirections[b]);c.up.copy(this._cubeUps[b]);c.lookAt(f);c.updateMatrixWorld();d.makeTranslation(-e.x,-e.y,-e.z);g.multiplyMatrices(c.projectionMatrix,c.matrixWorldInverse);this._frustum.setFromMatrix(g)}});cf.prototype=Object.assign(Object.create(T.prototype),{constructor:cf,isPointLight:!0,copy:function(a){T.prototype.copy.call(this,a);this.distance=a.distance;this.decay=a.decay;this.shadow=a.shadow.clone(); +return this}});oe.prototype=Object.assign(Object.create(bb.prototype),{constructor:oe,isOrthographicCamera:!0,copy:function(a,b){bb.prototype.copy.call(this,a,b);this.left=a.left;this.right=a.right;this.top=a.top;this.bottom=a.bottom;this.near=a.near;this.far=a.far;this.zoom=a.zoom;this.view=null===a.view?null:Object.assign({},a.view);return this},setViewOffset:function(a,b,c,d,e,f){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1});this.view.enabled= +!0;this.view.fullWidth=a;this.view.fullHeight=b;this.view.offsetX=c;this.view.offsetY=d;this.view.width=e;this.view.height=f;this.updateProjectionMatrix()},clearViewOffset:function(){null!==this.view&&(this.view.enabled=!1);this.updateProjectionMatrix()},updateProjectionMatrix:function(){var a=(this.right-this.left)/(2*this.zoom),b=(this.top-this.bottom)/(2*this.zoom),c=(this.right+this.left)/2,d=(this.top+this.bottom)/2,e=c-a;c+=a;a=d+b;b=d-b;if(null!==this.view&&this.view.enabled){c=this.zoom/(this.view.width/ +this.view.fullWidth);b=this.zoom/(this.view.height/this.view.fullHeight);var f=(this.right-this.left)/this.view.width;d=(this.top-this.bottom)/this.view.height;e+=this.view.offsetX/c*f;c=e+this.view.width/c*f;a-=this.view.offsetY/b*d;b=a-this.view.height/b*d}this.projectionMatrix.makeOrthographic(e,c,a,b,this.near,this.far);this.projectionMatrixInverse.getInverse(this.projectionMatrix)},toJSON:function(a){a=D.prototype.toJSON.call(this,a);a.object.zoom=this.zoom;a.object.left=this.left;a.object.right= +this.right;a.object.top=this.top;a.object.bottom=this.bottom;a.object.near=this.near;a.object.far=this.far;null!==this.view&&(a.object.view=Object.assign({},this.view));return a}});df.prototype=Object.assign(Object.create(hb.prototype),{constructor:df,isDirectionalLightShadow:!0,updateMatrices:function(a){hb.prototype.updateMatrices.call(this,a)}});ef.prototype=Object.assign(Object.create(T.prototype),{constructor:ef,isDirectionalLight:!0,copy:function(a){T.prototype.copy.call(this,a);this.target= +a.target.clone();this.shadow=a.shadow.clone();return this}});ff.prototype=Object.assign(Object.create(T.prototype),{constructor:ff,isAmbientLight:!0});gf.prototype=Object.assign(Object.create(T.prototype),{constructor:gf,isRectAreaLight:!0,copy:function(a){T.prototype.copy.call(this,a);this.width=a.width;this.height=a.height;return this},toJSON:function(a){a=T.prototype.toJSON.call(this,a);a.object.width=this.width;a.object.height=this.height;return a}});hf.prototype=Object.assign(Object.create(V.prototype), +{constructor:hf,load:function(a,b,c,d){var e=this,f=new Na(e.manager);f.setPath(e.path);f.load(a,function(a){b(e.parse(JSON.parse(a)))},c,d)},parse:function(a){function b(a){void 0===c[a]&&console.warn("THREE.MaterialLoader: Undefined texture",a);return c[a]}var c=this.textures,d=new Fk[a.type];void 0!==a.uuid&&(d.uuid=a.uuid);void 0!==a.name&&(d.name=a.name);void 0!==a.color&&d.color.setHex(a.color);void 0!==a.roughness&&(d.roughness=a.roughness);void 0!==a.metalness&&(d.metalness=a.metalness);void 0!== +a.sheen&&(d.sheen=(new J).setHex(a.sheen));void 0!==a.emissive&&d.emissive.setHex(a.emissive);void 0!==a.specular&&d.specular.setHex(a.specular);void 0!==a.shininess&&(d.shininess=a.shininess);void 0!==a.clearcoat&&(d.clearcoat=a.clearcoat);void 0!==a.clearcoatRoughness&&(d.clearcoatRoughness=a.clearcoatRoughness);void 0!==a.vertexColors&&(d.vertexColors=a.vertexColors);void 0!==a.fog&&(d.fog=a.fog);void 0!==a.flatShading&&(d.flatShading=a.flatShading);void 0!==a.blending&&(d.blending=a.blending); +void 0!==a.combine&&(d.combine=a.combine);void 0!==a.side&&(d.side=a.side);void 0!==a.opacity&&(d.opacity=a.opacity);void 0!==a.transparent&&(d.transparent=a.transparent);void 0!==a.alphaTest&&(d.alphaTest=a.alphaTest);void 0!==a.depthTest&&(d.depthTest=a.depthTest);void 0!==a.depthWrite&&(d.depthWrite=a.depthWrite);void 0!==a.colorWrite&&(d.colorWrite=a.colorWrite);void 0!==a.stencilWrite&&(d.stencilWrite=a.stencilWrite);void 0!==a.stencilWriteMask&&(d.stencilWriteMask=a.stencilWriteMask);void 0!== +a.stencilFunc&&(d.stencilFunc=a.stencilFunc);void 0!==a.stencilRef&&(d.stencilRef=a.stencilRef);void 0!==a.stencilFuncMask&&(d.stencilFuncMask=a.stencilFuncMask);void 0!==a.stencilFail&&(d.stencilFail=a.stencilFail);void 0!==a.stencilZFail&&(d.stencilZFail=a.stencilZFail);void 0!==a.stencilZPass&&(d.stencilZPass=a.stencilZPass);void 0!==a.wireframe&&(d.wireframe=a.wireframe);void 0!==a.wireframeLinewidth&&(d.wireframeLinewidth=a.wireframeLinewidth);void 0!==a.wireframeLinecap&&(d.wireframeLinecap= +a.wireframeLinecap);void 0!==a.wireframeLinejoin&&(d.wireframeLinejoin=a.wireframeLinejoin);void 0!==a.rotation&&(d.rotation=a.rotation);1!==a.linewidth&&(d.linewidth=a.linewidth);void 0!==a.dashSize&&(d.dashSize=a.dashSize);void 0!==a.gapSize&&(d.gapSize=a.gapSize);void 0!==a.scale&&(d.scale=a.scale);void 0!==a.polygonOffset&&(d.polygonOffset=a.polygonOffset);void 0!==a.polygonOffsetFactor&&(d.polygonOffsetFactor=a.polygonOffsetFactor);void 0!==a.polygonOffsetUnits&&(d.polygonOffsetUnits=a.polygonOffsetUnits); +void 0!==a.skinning&&(d.skinning=a.skinning);void 0!==a.morphTargets&&(d.morphTargets=a.morphTargets);void 0!==a.morphNormals&&(d.morphNormals=a.morphNormals);void 0!==a.dithering&&(d.dithering=a.dithering);void 0!==a.visible&&(d.visible=a.visible);void 0!==a.toneMapped&&(d.toneMapped=a.toneMapped);void 0!==a.userData&&(d.userData=a.userData);if(void 0!==a.uniforms)for(var e in a.uniforms){var f=a.uniforms[e];d.uniforms[e]={};switch(f.type){case "t":d.uniforms[e].value=b(f.value);break;case "c":d.uniforms[e].value= +(new J).setHex(f.value);break;case "v2":d.uniforms[e].value=(new B).fromArray(f.value);break;case "v3":d.uniforms[e].value=(new n).fromArray(f.value);break;case "v4":d.uniforms[e].value=(new da).fromArray(f.value);break;case "m3":d.uniforms[e].value=(new Z).fromArray(f.value);case "m4":d.uniforms[e].value=(new Q).fromArray(f.value);break;default:d.uniforms[e].value=f.value}}void 0!==a.defines&&(d.defines=a.defines);void 0!==a.vertexShader&&(d.vertexShader=a.vertexShader);void 0!==a.fragmentShader&& +(d.fragmentShader=a.fragmentShader);if(void 0!==a.extensions)for(var g in a.extensions)d.extensions[g]=a.extensions[g];void 0!==a.shading&&(d.flatShading=1===a.shading);void 0!==a.size&&(d.size=a.size);void 0!==a.sizeAttenuation&&(d.sizeAttenuation=a.sizeAttenuation);void 0!==a.map&&(d.map=b(a.map));void 0!==a.matcap&&(d.matcap=b(a.matcap));void 0!==a.alphaMap&&(d.alphaMap=b(a.alphaMap),d.transparent=!0);void 0!==a.bumpMap&&(d.bumpMap=b(a.bumpMap));void 0!==a.bumpScale&&(d.bumpScale=a.bumpScale); +void 0!==a.normalMap&&(d.normalMap=b(a.normalMap));void 0!==a.normalMapType&&(d.normalMapType=a.normalMapType);void 0!==a.normalScale&&(e=a.normalScale,!1===Array.isArray(e)&&(e=[e,e]),d.normalScale=(new B).fromArray(e));void 0!==a.displacementMap&&(d.displacementMap=b(a.displacementMap));void 0!==a.displacementScale&&(d.displacementScale=a.displacementScale);void 0!==a.displacementBias&&(d.displacementBias=a.displacementBias);void 0!==a.roughnessMap&&(d.roughnessMap=b(a.roughnessMap));void 0!==a.metalnessMap&& +(d.metalnessMap=b(a.metalnessMap));void 0!==a.emissiveMap&&(d.emissiveMap=b(a.emissiveMap));void 0!==a.emissiveIntensity&&(d.emissiveIntensity=a.emissiveIntensity);void 0!==a.specularMap&&(d.specularMap=b(a.specularMap));void 0!==a.envMap&&(d.envMap=b(a.envMap));void 0!==a.envMapIntensity&&(d.envMapIntensity=a.envMapIntensity);void 0!==a.reflectivity&&(d.reflectivity=a.reflectivity);void 0!==a.refractionRatio&&(d.refractionRatio=a.refractionRatio);void 0!==a.lightMap&&(d.lightMap=b(a.lightMap));void 0!== +a.lightMapIntensity&&(d.lightMapIntensity=a.lightMapIntensity);void 0!==a.aoMap&&(d.aoMap=b(a.aoMap));void 0!==a.aoMapIntensity&&(d.aoMapIntensity=a.aoMapIntensity);void 0!==a.gradientMap&&(d.gradientMap=b(a.gradientMap));void 0!==a.clearcoatNormalMap&&(d.clearcoatNormalMap=b(a.clearcoatNormalMap));void 0!==a.clearcoatNormalScale&&(d.clearcoatNormalScale=(new B).fromArray(a.clearcoatNormalScale));return d},setTextures:function(a){this.textures=a;return this}});var eh={decodeText:function(a){if("undefined"!== +typeof TextDecoder)return(new TextDecoder).decode(a);for(var b="",c=0,d=a.length;c<d;c++)b+=String.fromCharCode(a[c]);try{return decodeURIComponent(escape(b))}catch(e){return b}},extractUrlBase:function(a){var b=a.lastIndexOf("/");return-1===b?"./":a.substr(0,b+1)}};jf.prototype=Object.assign(Object.create(E.prototype),{constructor:jf,isInstancedBufferGeometry:!0,copy:function(a){E.prototype.copy.call(this,a);this.maxInstancedCount=a.maxInstancedCount;return this},clone:function(){return(new this.constructor).copy(this)}, +toJSON:function(){var a=E.prototype.toJSON.call(this);a.maxInstancedCount=this.maxInstancedCount;a.isInstancedBufferGeometry=!0;return a}});kf.prototype=Object.assign(Object.create(N.prototype),{constructor:kf,isInstancedBufferAttribute:!0,copy:function(a){N.prototype.copy.call(this,a);this.meshPerAttribute=a.meshPerAttribute;return this},toJSON:function(){var a=N.prototype.toJSON.call(this);a.meshPerAttribute=this.meshPerAttribute;a.isInstancedBufferAttribute=!0;return a}});lf.prototype=Object.assign(Object.create(V.prototype), +{constructor:lf,load:function(a,b,c,d){var e=this,f=new Na(e.manager);f.setPath(e.path);f.load(a,function(a){b(e.parse(JSON.parse(a)))},c,d)},parse:function(a){var b=a.isInstancedBufferGeometry?new jf:new E,c=a.data.index;if(void 0!==c){var d=new fh[c.type](c.array);b.setIndex(new N(d,1))}c=a.data.attributes;for(var e in c){var f=c[e];d=new fh[f.type](f.array);d=new (f.isInstancedBufferAttribute?kf:N)(d,f.itemSize,f.normalized);void 0!==f.name&&(d.name=f.name);b.setAttribute(e,d)}var g=a.data.morphAttributes; +if(g)for(e in g){var h=g[e],l=[];c=0;for(var k=h.length;c<k;c++)f=h[c],d=new fh[f.type](f.array),d=new N(d,f.itemSize,f.normalized),void 0!==f.name&&(d.name=f.name),l.push(d);b.morphAttributes[e]=l}e=a.data.groups||a.data.drawcalls||a.data.offsets;if(void 0!==e)for(c=0,f=e.length;c!==f;++c)d=e[c],b.addGroup(d.start,d.count,d.materialIndex);c=a.data.boundingSphere;void 0!==c&&(e=new n,void 0!==c.center&&e.fromArray(c.center),b.boundingSphere=new mb(e,c.radius));a.name&&(b.name=a.name);a.userData&& +(b.userData=a.userData);return b}});var fh={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:"undefined"!==typeof Uint8ClampedArray?Uint8ClampedArray:Uint8Array,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};mf.prototype=Object.assign(Object.create(V.prototype),{constructor:mf,load:function(a,b,c,d){var e=this,f=""===this.path?eh.extractUrlBase(a):this.path;this.resourcePath=this.resourcePath|| +f;f=new Na(e.manager);f.setPath(this.path);f.load(a,function(c){var f=null;try{f=JSON.parse(c)}catch(l){void 0!==d&&d(l);console.error("THREE:ObjectLoader: Can't parse "+a+".",l.message);return}c=f.metadata;void 0===c||void 0===c.type||"geometry"===c.type.toLowerCase()?console.error("THREE.ObjectLoader: Can't load "+a):e.parse(f,b)},c,d)},parse:function(a,b){var c=this.parseShape(a.shapes);c=this.parseGeometries(a.geometries,c);var d=this.parseImages(a.images,function(){void 0!==b&&b(e)});d=this.parseTextures(a.textures, +d);d=this.parseMaterials(a.materials,d);var e=this.parseObject(a.object,c,d);a.animations&&(e.animations=this.parseAnimations(a.animations));void 0!==a.images&&0!==a.images.length||void 0===b||b(e);return e},parseShape:function(a){var b={};if(void 0!==a)for(var c=0,d=a.length;c<d;c++){var e=(new Ib).fromJSON(a[c]);b[e.uuid]=e}return b},parseGeometries:function(a,b){var c={};if(void 0!==a)for(var d=new lf,e=0,f=a.length;e<f;e++){var g=a[e];switch(g.type){case "PlaneGeometry":case "PlaneBufferGeometry":var h= +new Aa[g.type](g.width,g.height,g.widthSegments,g.heightSegments);break;case "BoxGeometry":case "BoxBufferGeometry":case "CubeGeometry":h=new Aa[g.type](g.width,g.height,g.depth,g.widthSegments,g.heightSegments,g.depthSegments);break;case "CircleGeometry":case "CircleBufferGeometry":h=new Aa[g.type](g.radius,g.segments,g.thetaStart,g.thetaLength);break;case "CylinderGeometry":case "CylinderBufferGeometry":h=new Aa[g.type](g.radiusTop,g.radiusBottom,g.height,g.radialSegments,g.heightSegments,g.openEnded, +g.thetaStart,g.thetaLength);break;case "ConeGeometry":case "ConeBufferGeometry":h=new Aa[g.type](g.radius,g.height,g.radialSegments,g.heightSegments,g.openEnded,g.thetaStart,g.thetaLength);break;case "SphereGeometry":case "SphereBufferGeometry":h=new Aa[g.type](g.radius,g.widthSegments,g.heightSegments,g.phiStart,g.phiLength,g.thetaStart,g.thetaLength);break;case "DodecahedronGeometry":case "DodecahedronBufferGeometry":case "IcosahedronGeometry":case "IcosahedronBufferGeometry":case "OctahedronGeometry":case "OctahedronBufferGeometry":case "TetrahedronGeometry":case "TetrahedronBufferGeometry":h= +new Aa[g.type](g.radius,g.detail);break;case "RingGeometry":case "RingBufferGeometry":h=new Aa[g.type](g.innerRadius,g.outerRadius,g.thetaSegments,g.phiSegments,g.thetaStart,g.thetaLength);break;case "TorusGeometry":case "TorusBufferGeometry":h=new Aa[g.type](g.radius,g.tube,g.radialSegments,g.tubularSegments,g.arc);break;case "TorusKnotGeometry":case "TorusKnotBufferGeometry":h=new Aa[g.type](g.radius,g.tube,g.tubularSegments,g.radialSegments,g.p,g.q);break;case "TubeGeometry":case "TubeBufferGeometry":h= +new Aa[g.type]((new dh[g.path.type]).fromJSON(g.path),g.tubularSegments,g.radius,g.radialSegments,g.closed);break;case "LatheGeometry":case "LatheBufferGeometry":h=new Aa[g.type](g.points,g.segments,g.phiStart,g.phiLength);break;case "PolyhedronGeometry":case "PolyhedronBufferGeometry":h=new Aa[g.type](g.vertices,g.indices,g.radius,g.details);break;case "ShapeGeometry":case "ShapeBufferGeometry":h=[];for(var l=0,k=g.shapes.length;l<k;l++){var n=b[g.shapes[l]];h.push(n)}h=new Aa[g.type](h,g.curveSegments); +break;case "ExtrudeGeometry":case "ExtrudeBufferGeometry":h=[];l=0;for(k=g.shapes.length;l<k;l++)n=b[g.shapes[l]],h.push(n);l=g.options.extrudePath;void 0!==l&&(g.options.extrudePath=(new dh[l.type]).fromJSON(l));h=new Aa[g.type](h,g.options);break;case "ParametricGeometry":case "ParametricBufferGeometry":h=(new Function("return "+g.func))();h=new Aa[g.type](h,g.slices,g.stacks);break;case "BufferGeometry":case "InstancedBufferGeometry":h=d.parse(g);break;case "Geometry":"THREE"in window&&"LegacyJSONLoader"in +THREE?h=(new THREE.LegacyJSONLoader).parse(g,this.resourcePath).geometry:console.error('THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type "Geometry".');break;default:console.warn('THREE.ObjectLoader: Unsupported geometry type "'+g.type+'"');continue}h.uuid=g.uuid;void 0!==g.name&&(h.name=g.name);!0===h.isBufferGeometry&&void 0!==g.userData&&(h.userData=g.userData);c[g.uuid]=h}return c},parseMaterials:function(a,b){var c={},d={};if(void 0!==a){var e=new hf; +e.setTextures(b);b=0;for(var f=a.length;b<f;b++){var g=a[b];if("MultiMaterial"===g.type){for(var h=[],l=0;l<g.materials.length;l++){var k=g.materials[l];void 0===c[k.uuid]&&(c[k.uuid]=e.parse(k));h.push(c[k.uuid])}d[g.uuid]=h}else void 0===c[g.uuid]&&(c[g.uuid]=e.parse(g)),d[g.uuid]=c[g.uuid]}}return d},parseAnimations:function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=Ma.parse(d);void 0!==d.uuid&&(e.uuid=d.uuid);b.push(e)}return b},parseImages:function(a,b){function c(a){d.manager.itemStart(a); +return f.load(a,function(){d.manager.itemEnd(a)},void 0,function(){d.manager.itemError(a);d.manager.itemEnd(a)})}var d=this,e={};if(void 0!==a&&0<a.length){b=new og(b);var f=new bd(b);f.setCrossOrigin(this.crossOrigin);b=0;for(var g=a.length;b<g;b++){var h=a[b],l=h.url;if(Array.isArray(l)){e[h.uuid]=[];for(var k=0,n=l.length;k<n;k++){var q=l[k];q=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(q)?q:d.resourcePath+q;e[h.uuid].push(c(q))}}else q=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(h.url)?h.url:d.resourcePath+h.url,e[h.uuid]= +c(q)}}return e},parseTextures:function(a,b){function c(a,b){if("number"===typeof a)return a;console.warn("THREE.ObjectLoader.parseTexture: Constant should be in numeric form.",a);return b[a]}var d={};if(void 0!==a)for(var e=0,f=a.length;e<f;e++){var g=a[e];void 0===g.image&&console.warn('THREE.ObjectLoader: No "image" specified for',g.uuid);void 0===b[g.image]&&console.warn("THREE.ObjectLoader: Undefined image",g.image);var h=Array.isArray(b[g.image])?new nb(b[g.image]):new Y(b[g.image]);h.needsUpdate= +!0;h.uuid=g.uuid;void 0!==g.name&&(h.name=g.name);void 0!==g.mapping&&(h.mapping=c(g.mapping,Gk));void 0!==g.offset&&h.offset.fromArray(g.offset);void 0!==g.repeat&&h.repeat.fromArray(g.repeat);void 0!==g.center&&h.center.fromArray(g.center);void 0!==g.rotation&&(h.rotation=g.rotation);void 0!==g.wrap&&(h.wrapS=c(g.wrap[0],Di),h.wrapT=c(g.wrap[1],Di));void 0!==g.format&&(h.format=g.format);void 0!==g.type&&(h.type=g.type);void 0!==g.encoding&&(h.encoding=g.encoding);void 0!==g.minFilter&&(h.minFilter= +c(g.minFilter,Ei));void 0!==g.magFilter&&(h.magFilter=c(g.magFilter,Ei));void 0!==g.anisotropy&&(h.anisotropy=g.anisotropy);void 0!==g.flipY&&(h.flipY=g.flipY);void 0!==g.premultiplyAlpha&&(h.premultiplyAlpha=g.premultiplyAlpha);void 0!==g.unpackAlignment&&(h.unpackAlignment=g.unpackAlignment);d[g.uuid]=h}return d},parseObject:function(a,b,c){function d(a){void 0===b[a]&&console.warn("THREE.ObjectLoader: Undefined geometry",a);return b[a]}function e(a){if(void 0!==a){if(Array.isArray(a)){for(var b= +[],d=0,e=a.length;d<e;d++){var f=a[d];void 0===c[f]&&console.warn("THREE.ObjectLoader: Undefined material",f);b.push(c[f])}return b}void 0===c[a]&&console.warn("THREE.ObjectLoader: Undefined material",a);return c[a]}}switch(a.type){case "Scene":var f=new wd;void 0!==a.background&&Number.isInteger(a.background)&&(f.background=new J(a.background));void 0!==a.fog&&("Fog"===a.fog.type?f.fog=new Me(a.fog.color,a.fog.near,a.fog.far):"FogExp2"===a.fog.type&&(f.fog=new Le(a.fog.color,a.fog.density)));break; +case "PerspectiveCamera":f=new U(a.fov,a.aspect,a.near,a.far);void 0!==a.focus&&(f.focus=a.focus);void 0!==a.zoom&&(f.zoom=a.zoom);void 0!==a.filmGauge&&(f.filmGauge=a.filmGauge);void 0!==a.filmOffset&&(f.filmOffset=a.filmOffset);void 0!==a.view&&(f.view=Object.assign({},a.view));break;case "OrthographicCamera":f=new oe(a.left,a.right,a.top,a.bottom,a.near,a.far);void 0!==a.zoom&&(f.zoom=a.zoom);void 0!==a.view&&(f.view=Object.assign({},a.view));break;case "AmbientLight":f=new ff(a.color,a.intensity); +break;case "DirectionalLight":f=new ef(a.color,a.intensity);break;case "PointLight":f=new cf(a.color,a.intensity,a.distance,a.decay);break;case "RectAreaLight":f=new gf(a.color,a.intensity,a.width,a.height);break;case "SpotLight":f=new bf(a.color,a.intensity,a.distance,a.angle,a.penumbra,a.decay);break;case "HemisphereLight":f=new $e(a.color,a.groundColor,a.intensity);break;case "SkinnedMesh":console.warn("THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.");case "Mesh":f=d(a.geometry); +var g=e(a.material);f=f.bones&&0<f.bones.length?new Pd(f,g):new ea(f,g);break;case "InstancedMesh":f=d(a.geometry);g=e(a.material);var h=a.instanceMatrix;f=new Pe(f,g,a.count);f.instanceMatrix=new N(new Float32Array(h.array),16);break;case "LOD":f=new Od;break;case "Line":f=new ra(d(a.geometry),e(a.material),a.mode);break;case "LineLoop":f=new Qe(d(a.geometry),e(a.material));break;case "LineSegments":f=new X(d(a.geometry),e(a.material));break;case "PointCloud":case "Points":f=new Kc(d(a.geometry), +e(a.material));break;case "Sprite":f=new Md(e(a.material));break;case "Group":f=new Hc;break;default:f=new D}f.uuid=a.uuid;void 0!==a.name&&(f.name=a.name);void 0!==a.matrix?(f.matrix.fromArray(a.matrix),void 0!==a.matrixAutoUpdate&&(f.matrixAutoUpdate=a.matrixAutoUpdate),f.matrixAutoUpdate&&f.matrix.decompose(f.position,f.quaternion,f.scale)):(void 0!==a.position&&f.position.fromArray(a.position),void 0!==a.rotation&&f.rotation.fromArray(a.rotation),void 0!==a.quaternion&&f.quaternion.fromArray(a.quaternion), +void 0!==a.scale&&f.scale.fromArray(a.scale));void 0!==a.castShadow&&(f.castShadow=a.castShadow);void 0!==a.receiveShadow&&(f.receiveShadow=a.receiveShadow);a.shadow&&(void 0!==a.shadow.bias&&(f.shadow.bias=a.shadow.bias),void 0!==a.shadow.radius&&(f.shadow.radius=a.shadow.radius),void 0!==a.shadow.mapSize&&f.shadow.mapSize.fromArray(a.shadow.mapSize),void 0!==a.shadow.camera&&(f.shadow.camera=this.parseObject(a.shadow.camera)));void 0!==a.visible&&(f.visible=a.visible);void 0!==a.frustumCulled&& +(f.frustumCulled=a.frustumCulled);void 0!==a.renderOrder&&(f.renderOrder=a.renderOrder);void 0!==a.userData&&(f.userData=a.userData);void 0!==a.layers&&(f.layers.mask=a.layers);void 0!==a.drawMode&&f.setDrawMode(a.drawMode);if(void 0!==a.children)for(h=a.children,g=0;g<h.length;g++)f.add(this.parseObject(h[g],b,c));if("LOD"===a.type)for(a=a.levels,h=0;h<a.length;h++){g=a[h];var l=f.getObjectByProperty("uuid",g.object);void 0!==l&&f.addLevel(l,g.distance)}return f}});var Gk={UVMapping:300,CubeReflectionMapping:301, +CubeRefractionMapping:302,EquirectangularReflectionMapping:303,EquirectangularRefractionMapping:304,SphericalReflectionMapping:305,CubeUVReflectionMapping:306,CubeUVRefractionMapping:307},Di={RepeatWrapping:1E3,ClampToEdgeWrapping:1001,MirroredRepeatWrapping:1002},Ei={NearestFilter:1003,NearestMipmapNearestFilter:1004,NearestMipmapLinearFilter:1005,LinearFilter:1006,LinearMipmapNearestFilter:1007,LinearMipmapLinearFilter:1008};tg.prototype=Object.assign(Object.create(V.prototype),{constructor:tg, +setOptions:function(a){this.options=a;return this},load:function(a,b,c,d){void 0===a&&(a="");void 0!==this.path&&(a=this.path+a);a=this.manager.resolveURL(a);var e=this,f=tc.get(a);if(void 0!==f)return e.manager.itemStart(a),setTimeout(function(){b&&b(f);e.manager.itemEnd(a)},0),f;fetch(a).then(function(a){return a.blob()}).then(function(a){return void 0===e.options?createImageBitmap(a):createImageBitmap(a,e.options)}).then(function(c){tc.add(a,c);b&&b(c);e.manager.itemEnd(a)}).catch(function(b){d&& +d(b);e.manager.itemError(a);e.manager.itemEnd(a)});e.manager.itemStart(a)}});Object.assign(ug.prototype,{moveTo:function(a,b){this.currentPath=new Wa;this.subPaths.push(this.currentPath);this.currentPath.moveTo(a,b);return this},lineTo:function(a,b){this.currentPath.lineTo(a,b);return this},quadraticCurveTo:function(a,b,c,d){this.currentPath.quadraticCurveTo(a,b,c,d);return this},bezierCurveTo:function(a,b,c,d,e,f){this.currentPath.bezierCurveTo(a,b,c,d,e,f);return this},splineThru:function(a){this.currentPath.splineThru(a); +return this},toShapes:function(a,b){function c(a){for(var b=[],c=0,d=a.length;c<d;c++){var e=a[c],f=new Ib;f.curves=e.curves;b.push(f)}return b}function d(a,b){for(var c=b.length,d=!1,e=c-1,f=0;f<c;e=f++){var g=b[e],h=b[f],l=h.x-g.x,k=h.y-g.y;if(Math.abs(k)>Number.EPSILON){if(0>k&&(g=b[f],l=-l,h=b[e],k=-k),!(a.y<g.y||a.y>h.y))if(a.y===g.y){if(a.x===g.x)return!0}else{e=k*(a.x-g.x)-l*(a.y-g.y);if(0===e)return!0;0>e||(d=!d)}}else if(a.y===g.y&&(h.x<=a.x&&a.x<=g.x||g.x<=a.x&&a.x<=h.x))return!0}return d} +var e=qb.isClockWise,f=this.subPaths;if(0===f.length)return[];if(!0===b)return c(f);b=[];if(1===f.length){var g=f[0];var h=new Ib;h.curves=g.curves;b.push(h);return b}var l=!e(f[0].getPoints());l=a?!l:l;h=[];var k=[],n=[],q=0;k[q]=void 0;n[q]=[];for(var u=0,p=f.length;u<p;u++){g=f[u];var t=g.getPoints();var v=e(t);(v=a?!v:v)?(!l&&k[q]&&q++,k[q]={s:new Ib,p:t},k[q].s.curves=g.curves,l&&q++,n[q]=[]):n[q].push({h:g,p:t[0]})}if(!k[0])return c(f);if(1<k.length){u=!1;a=[];e=0;for(f=k.length;e<f;e++)h[e]= +[];e=0;for(f=k.length;e<f;e++)for(g=n[e],v=0;v<g.length;v++){l=g[v];q=!0;for(t=0;t<k.length;t++)d(l.p,k[t].p)&&(e!==t&&a.push({froms:e,tos:t,hole:v}),q?(q=!1,h[t].push(l)):u=!0);q&&h[e].push(l)}0<a.length&&(u||(n=h))}u=0;for(e=k.length;u<e;u++)for(h=k[u].s,b.push(h),a=n[u],f=0,g=a.length;f<g;f++)h.holes.push(a[f].h);return b}});Object.assign(vg.prototype,{isFont:!0,generateShapes:function(a,b){void 0===b&&(b=100);var c=[],d=b;b=this.data;var e=Array.from?Array.from(a):String(a).split("");d/=b.resolution; +var f=(b.boundingBox.yMax-b.boundingBox.yMin+b.underlineThickness)*d;a=[];for(var g=0,h=0,l=0;l<e.length;l++){var k=e[l];if("\n"===k)g=0,h-=f;else{var n=k;k=d;var q=g,u=h,p=b,t=p.glyphs[n]||p.glyphs["?"];if(t){n=new ug;if(t.o){p=t._cachedOutline||(t._cachedOutline=t.o.split(" "));for(var v=0,y=p.length;v<y;)switch(p[v++]){case "m":var w=p[v++]*k+q;var x=p[v++]*k+u;n.moveTo(w,x);break;case "l":w=p[v++]*k+q;x=p[v++]*k+u;n.lineTo(w,x);break;case "q":var A=p[v++]*k+q;var B=p[v++]*k+u;var z=p[v++]*k+q; +var C=p[v++]*k+u;n.quadraticCurveTo(z,C,A,B);break;case "b":A=p[v++]*k+q,B=p[v++]*k+u,z=p[v++]*k+q,C=p[v++]*k+u,w=p[v++]*k+q,x=p[v++]*k+u,n.bezierCurveTo(z,C,w,x,A,B)}}k={offsetX:t.ha*k,path:n}}else console.error('THREE.Font: character "'+n+'" does not exists in font family '+p.familyName+"."),k=void 0;g+=k.offsetX;a.push(k.path)}}b=0;for(e=a.length;b<e;b++)Array.prototype.push.apply(c,a[b].toShapes());return c}});wg.prototype=Object.assign(Object.create(V.prototype),{constructor:wg,load:function(a, +b,c,d){var e=this,f=new Na(this.manager);f.setPath(this.path);f.load(a,function(a){try{var c=JSON.parse(a)}catch(l){console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."),c=JSON.parse(a.substring(65,a.length-2))}a=e.parse(c);b&&b(a)},c,d)},parse:function(a){return new vg(a)}});var Mf,Bg={getContext:function(){void 0===Mf&&(Mf=new (window.AudioContext||window.webkitAudioContext));return Mf},setContext:function(a){Mf=a}};nf.prototype=Object.assign(Object.create(V.prototype), +{constructor:nf,load:function(a,b,c,d){var e=new Na(this.manager);e.setResponseType("arraybuffer");e.setPath(this.path);e.load(a,function(a){a=a.slice(0);Bg.getContext().decodeAudioData(a,function(a){b(a)})},c,d)}});Object.assign(of.prototype,{isSphericalHarmonics3:!0,set:function(a){for(var b=0;9>b;b++)this.coefficients[b].copy(a[b]);return this},zero:function(){for(var a=0;9>a;a++)this.coefficients[a].set(0,0,0);return this},getAt:function(a,b){var c=a.x,d=a.y;a=a.z;var e=this.coefficients;b.copy(e[0]).multiplyScalar(.282095); +b.addScale(e[1],.488603*d);b.addScale(e[2],.488603*a);b.addScale(e[3],.488603*c);b.addScale(e[4],1.092548*c*d);b.addScale(e[5],1.092548*d*a);b.addScale(e[6],.315392*(3*a*a-1));b.addScale(e[7],1.092548*c*a);b.addScale(e[8],.546274*(c*c-d*d));return b},getIrradianceAt:function(a,b){var c=a.x,d=a.y;a=a.z;var e=this.coefficients;b.copy(e[0]).multiplyScalar(.886227);b.addScale(e[1],1.023328*d);b.addScale(e[2],1.023328*a);b.addScale(e[3],1.023328*c);b.addScale(e[4],.858086*c*d);b.addScale(e[5],.858086* +d*a);b.addScale(e[6],.743125*a*a-.247708);b.addScale(e[7],.858086*c*a);b.addScale(e[8],.429043*(c*c-d*d));return b},add:function(a){for(var b=0;9>b;b++)this.coefficients[b].add(a.coefficients[b]);return this},scale:function(a){for(var b=0;9>b;b++)this.coefficients[b].multiplyScalar(a);return this},lerp:function(a,b){for(var c=0;9>c;c++)this.coefficients[c].lerp(a.coefficients[c],b);return this},equals:function(a){for(var b=0;9>b;b++)if(!this.coefficients[b].equals(a.coefficients[b]))return!1;return!0}, +copy:function(a){return this.set(a.coefficients)},clone:function(){return(new this.constructor).copy(this)},fromArray:function(a,b){void 0===b&&(b=0);for(var c=this.coefficients,d=0;9>d;d++)c[d].fromArray(a,b+3*d);return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);for(var c=this.coefficients,d=0;9>d;d++)c[d].toArray(a,b+3*d);return a}});Object.assign(of,{getBasisAt:function(a,b){var c=a.x,d=a.y;a=a.z;b[0]=.282095;b[1]=.488603*d;b[2]=.488603*a;b[3]=.488603*c;b[4]=1.092548*c*d; +b[5]=1.092548*d*a;b[6]=.315392*(3*a*a-1);b[7]=1.092548*c*a;b[8]=.546274*(c*c-d*d)}});Xa.prototype=Object.assign(Object.create(T.prototype),{constructor:Xa,isLightProbe:!0,copy:function(a){T.prototype.copy.call(this,a);this.sh.copy(a.sh);this.intensity=a.intensity;return this},toJSON:function(a){return T.prototype.toJSON.call(this,a)}});xg.prototype=Object.assign(Object.create(Xa.prototype),{constructor:xg,isHemisphereLightProbe:!0,copy:function(a){Xa.prototype.copy.call(this,a);return this},toJSON:function(a){return Xa.prototype.toJSON.call(this, +a)}});yg.prototype=Object.assign(Object.create(Xa.prototype),{constructor:yg,isAmbientLightProbe:!0,copy:function(a){Xa.prototype.copy.call(this,a);return this},toJSON:function(a){return Xa.prototype.toJSON.call(this,a)}});var Fi=new Q,Gi=new Q;Object.assign(ai.prototype,{update:function(a){var b=this._cache;if(b.focus!==a.focus||b.fov!==a.fov||b.aspect!==a.aspect*this.aspect||b.near!==a.near||b.far!==a.far||b.zoom!==a.zoom||b.eyeSep!==this.eyeSep){b.focus=a.focus;b.fov=a.fov;b.aspect=a.aspect*this.aspect; +b.near=a.near;b.far=a.far;b.zoom=a.zoom;b.eyeSep=this.eyeSep;var c=a.projectionMatrix.clone(),d=b.eyeSep/2,e=d*b.near/b.focus,f=b.near*Math.tan(P.DEG2RAD*b.fov*.5)/b.zoom;Gi.elements[12]=-d;Fi.elements[12]=d;d=-f*b.aspect+e;var g=f*b.aspect+e;c.elements[0]=2*b.near/(g-d);c.elements[8]=(g+d)/(g-d);this.cameraL.projectionMatrix.copy(c);d=-f*b.aspect-e;g=f*b.aspect-e;c.elements[0]=2*b.near/(g-d);c.elements[8]=(g+d)/(g-d);this.cameraR.projectionMatrix.copy(c)}this.cameraL.matrixWorld.copy(a.matrixWorld).multiply(Gi); +this.cameraR.matrixWorld.copy(a.matrixWorld).multiply(Fi)}});Object.assign(zg.prototype,{start:function(){this.oldTime=this.startTime=("undefined"===typeof performance?Date:performance).now();this.elapsedTime=0;this.running=!0},stop:function(){this.getElapsedTime();this.autoStart=this.running=!1},getElapsedTime:function(){this.getDelta();return this.elapsedTime},getDelta:function(){var a=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){var b=("undefined"===typeof performance? +Date:performance).now();a=(b-this.oldTime)/1E3;this.oldTime=b;this.elapsedTime+=a}return a}});var uc=new n,Hi=new wa,Hk=new n,vc=new n;Ag.prototype=Object.assign(Object.create(D.prototype),{constructor:Ag,getInput:function(){return this.gain},removeFilter:function(){null!==this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null);return this},getFilter:function(){return this.filter},setFilter:function(a){null!== +this.filter?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination);this.filter=a;this.gain.connect(this.filter);this.filter.connect(this.context.destination);return this},getMasterVolume:function(){return this.gain.gain.value},setMasterVolume:function(a){this.gain.gain.setTargetAtTime(a,this.context.currentTime,.01);return this},updateMatrixWorld:function(a){D.prototype.updateMatrixWorld.call(this,a);a=this.context.listener; +var b=this.up;this.timeDelta=this._clock.getDelta();this.matrixWorld.decompose(uc,Hi,Hk);vc.set(0,0,-1).applyQuaternion(Hi);if(a.positionX){var c=this.context.currentTime+this.timeDelta;a.positionX.linearRampToValueAtTime(uc.x,c);a.positionY.linearRampToValueAtTime(uc.y,c);a.positionZ.linearRampToValueAtTime(uc.z,c);a.forwardX.linearRampToValueAtTime(vc.x,c);a.forwardY.linearRampToValueAtTime(vc.y,c);a.forwardZ.linearRampToValueAtTime(vc.z,c);a.upX.linearRampToValueAtTime(b.x,c);a.upY.linearRampToValueAtTime(b.y, +c);a.upZ.linearRampToValueAtTime(b.z,c)}else a.setPosition(uc.x,uc.y,uc.z),a.setOrientation(vc.x,vc.y,vc.z,b.x,b.y,b.z)}});dd.prototype=Object.assign(Object.create(D.prototype),{constructor:dd,getOutput:function(){return this.gain},setNodeSource:function(a){this.hasPlaybackControl=!1;this.sourceType="audioNode";this.source=a;this.connect();return this},setMediaElementSource:function(a){this.hasPlaybackControl=!1;this.sourceType="mediaNode";this.source=this.context.createMediaElementSource(a);this.connect(); +return this},setMediaStreamSource:function(a){this.hasPlaybackControl=!1;this.sourceType="mediaStreamNode";this.source=this.context.createMediaStreamSource(a);this.connect();return this},setBuffer:function(a){this.buffer=a;this.sourceType="buffer";this.autoplay&&this.play();return this},play:function(a){void 0===a&&(a=0);if(!0===this.isPlaying)console.warn("THREE.Audio: Audio is already playing.");else if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control."); +else return this._startedAt=this.context.currentTime+a,a=this.context.createBufferSource(),a.buffer=this.buffer,a.loop=this.loop,a.loopStart=this.loopStart,a.loopEnd=this.loopEnd,a.onended=this.onEnded.bind(this),a.start(this._startedAt,this._pausedAt+this.offset,this.duration),this.isPlaying=!0,this.source=a,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()},pause:function(){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control."); +else return!0===this.isPlaying&&(this._pausedAt=(this.context.currentTime-this._startedAt)*this.playbackRate,this.source.stop(),this.source.onended=null,this.isPlaying=!1),this},stop:function(){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else return this._pausedAt=0,this.source.stop(),this.source.onended=null,this.isPlaying=!1,this},connect:function(){if(0<this.filters.length){this.source.connect(this.filters[0]);for(var a=1,b=this.filters.length;a< +b;a++)this.filters[a-1].connect(this.filters[a]);this.filters[this.filters.length-1].connect(this.getOutput())}else this.source.connect(this.getOutput());return this},disconnect:function(){if(0<this.filters.length){this.source.disconnect(this.filters[0]);for(var a=1,b=this.filters.length;a<b;a++)this.filters[a-1].disconnect(this.filters[a]);this.filters[this.filters.length-1].disconnect(this.getOutput())}else this.source.disconnect(this.getOutput());return this},getFilters:function(){return this.filters}, +setFilters:function(a){a||(a=[]);!0===this.isPlaying?(this.disconnect(),this.filters=a,this.connect()):this.filters=a;return this},setDetune:function(a){this.detune=a;if(void 0!==this.source.detune)return!0===this.isPlaying&&this.source.detune.setTargetAtTime(this.detune,this.context.currentTime,.01),this},getDetune:function(){return this.detune},getFilter:function(){return this.getFilters()[0]},setFilter:function(a){return this.setFilters(a?[a]:[])},setPlaybackRate:function(a){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control."); +else return this.playbackRate=a,!0===this.isPlaying&&this.source.playbackRate.setTargetAtTime(this.playbackRate,this.context.currentTime,.01),this},getPlaybackRate:function(){return this.playbackRate},onEnded:function(){this.isPlaying=!1},getLoop:function(){return!1===this.hasPlaybackControl?(console.warn("THREE.Audio: this Audio has no playback control."),!1):this.loop},setLoop:function(a){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else return this.loop= +a,!0===this.isPlaying&&(this.source.loop=this.loop),this},setLoopStart:function(a){this.loopStart=a;return this},setLoopEnd:function(a){this.loopEnd=a;return this},getVolume:function(){return this.gain.gain.value},setVolume:function(a){this.gain.gain.setTargetAtTime(a,this.context.currentTime,.01);return this}});var wc=new n,Ii=new wa,Ik=new n,xc=new n;Cg.prototype=Object.assign(Object.create(dd.prototype),{constructor:Cg,getOutput:function(){return this.panner},getRefDistance:function(){return this.panner.refDistance}, +setRefDistance:function(a){this.panner.refDistance=a;return this},getRolloffFactor:function(){return this.panner.rolloffFactor},setRolloffFactor:function(a){this.panner.rolloffFactor=a;return this},getDistanceModel:function(){return this.panner.distanceModel},setDistanceModel:function(a){this.panner.distanceModel=a;return this},getMaxDistance:function(){return this.panner.maxDistance},setMaxDistance:function(a){this.panner.maxDistance=a;return this},setDirectionalCone:function(a,b,c){this.panner.coneInnerAngle= +a;this.panner.coneOuterAngle=b;this.panner.coneOuterGain=c;return this},updateMatrixWorld:function(a){D.prototype.updateMatrixWorld.call(this,a);if(!0!==this.hasPlaybackControl||!1!==this.isPlaying)if(this.matrixWorld.decompose(wc,Ii,Ik),xc.set(0,0,1).applyQuaternion(Ii),a=this.panner,a.positionX){var b=this.context.currentTime+this.listener.timeDelta;a.positionX.linearRampToValueAtTime(wc.x,b);a.positionY.linearRampToValueAtTime(wc.y,b);a.positionZ.linearRampToValueAtTime(wc.z,b);a.orientationX.linearRampToValueAtTime(xc.x, +b);a.orientationY.linearRampToValueAtTime(xc.y,b);a.orientationZ.linearRampToValueAtTime(xc.z,b)}else a.setPosition(wc.x,wc.y,wc.z),a.setOrientation(xc.x,xc.y,xc.z)}});Object.assign(Dg.prototype,{getFrequencyData:function(){this.analyser.getByteFrequencyData(this.data);return this.data},getAverageFrequency:function(){for(var a=0,b=this.getFrequencyData(),c=0;c<b.length;c++)a+=b[c];return a/b.length}});Object.assign(Eg.prototype,{accumulate:function(a,b){var c=this.buffer,d=this.valueSize;a=a*d+d; +var e=this.cumulativeWeight;if(0===e){for(e=0;e!==d;++e)c[a+e]=c[e];e=b}else e+=b,this._mixBufferRegion(c,a,0,b/e,d);this.cumulativeWeight=e},apply:function(a){var b=this.valueSize,c=this.buffer;a=a*b+b;var d=this.cumulativeWeight,e=this.binding;this.cumulativeWeight=0;1>d&&this._mixBufferRegion(c,a,3*b,1-d,b);d=b;for(var f=b+b;d!==f;++d)if(c[d]!==c[d+b]){e.setValue(c,a);break}},saveOriginalState:function(){var a=this.buffer,b=this.valueSize,c=3*b;this.binding.getValue(a,c);for(var d=b;d!==c;++d)a[d]= +a[c+d%b];this.cumulativeWeight=0},restoreOriginalState:function(){this.binding.setValue(this.buffer,3*this.valueSize)},_select:function(a,b,c,d,e){if(.5<=d)for(d=0;d!==e;++d)a[b+d]=a[c+d]},_slerp:function(a,b,c,d){wa.slerpFlat(a,b,a,b,a,c,d)},_lerp:function(a,b,c,d,e){for(var f=1-d,g=0;g!==e;++g){var h=b+g;a[h]=a[h]*f+a[c+g]*d}}});var Jk=/[\[\]\.:\/]/g,Kk="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]",Lk=/((?:WC+[\/:])*)/.source.replace("WC","[^\\[\\]\\.:\\/]"),Mk=/(WCOD+)?/.source.replace("WCOD",Kk), +Nk=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC","[^\\[\\]\\.:\\/]"),Ok=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC","[^\\[\\]\\.:\\/]"),Pk=new RegExp("^"+Lk+Mk+Nk+Ok+"$"),Qk=["material","materials","bones"];Object.assign(bi.prototype,{getValue:function(a,b){this.bind();var c=this._bindings[this._targetGroup.nCachedObjects_];void 0!==c&&c.getValue(a,b)},setValue:function(a,b){for(var c=this._bindings,d=this._targetGroup.nCachedObjects_,e=c.length;d!==e;++d)c[d].setValue(a,b)},bind:function(){for(var a= +this._bindings,b=this._targetGroup.nCachedObjects_,c=a.length;b!==c;++b)a[b].bind()},unbind:function(){for(var a=this._bindings,b=this._targetGroup.nCachedObjects_,c=a.length;b!==c;++b)a[b].unbind()}});Object.assign(ya,{Composite:bi,create:function(a,b,c){return a&&a.isAnimationObjectGroup?new ya.Composite(a,b,c):new ya(a,b,c)},sanitizeNodeName:function(a){return a.replace(/\s/g,"_").replace(Jk,"")},parseTrackName:function(a){var b=Pk.exec(a);if(!b)throw Error("PropertyBinding: Cannot parse trackName: "+ +a);b={nodeName:b[2],objectName:b[3],objectIndex:b[4],propertyName:b[5],propertyIndex:b[6]};var c=b.nodeName&&b.nodeName.lastIndexOf(".");if(void 0!==c&&-1!==c){var d=b.nodeName.substring(c+1);-1!==Qk.indexOf(d)&&(b.nodeName=b.nodeName.substring(0,c),b.objectName=d)}if(null===b.propertyName||0===b.propertyName.length)throw Error("PropertyBinding: can not parse propertyName from trackName: "+a);return b},findNode:function(a,b){if(!b||""===b||"root"===b||"."===b||-1===b||b===a.name||b===a.uuid)return a; +if(a.skeleton){var c=a.skeleton.getBoneByName(b);if(void 0!==c)return c}if(a.children){var d=function(a){for(var c=0;c<a.length;c++){var e=a[c];if(e.name===b||e.uuid===b||(e=d(e.children)))return e}return null};if(a=d(a.children))return a}return null}});Object.assign(ya.prototype,{_getValue_unavailable:function(){},_setValue_unavailable:function(){},BindingType:{Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},Versioning:{None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},GetterByBindingType:[function(a, +b){a[b]=this.node[this.propertyName]},function(a,b){for(var c=this.resolvedProperty,d=0,e=c.length;d!==e;++d)a[b++]=c[d]},function(a,b){a[b]=this.resolvedProperty[this.propertyIndex]},function(a,b){this.resolvedProperty.toArray(a,b)}],SetterByBindingTypeAndVersioning:[[function(a,b){this.targetObject[this.propertyName]=a[b]},function(a,b){this.targetObject[this.propertyName]=a[b];this.targetObject.needsUpdate=!0},function(a,b){this.targetObject[this.propertyName]=a[b];this.targetObject.matrixWorldNeedsUpdate= +!0}],[function(a,b){for(var c=this.resolvedProperty,d=0,e=c.length;d!==e;++d)c[d]=a[b++]},function(a,b){for(var c=this.resolvedProperty,d=0,e=c.length;d!==e;++d)c[d]=a[b++];this.targetObject.needsUpdate=!0},function(a,b){for(var c=this.resolvedProperty,d=0,e=c.length;d!==e;++d)c[d]=a[b++];this.targetObject.matrixWorldNeedsUpdate=!0}],[function(a,b){this.resolvedProperty[this.propertyIndex]=a[b]},function(a,b){this.resolvedProperty[this.propertyIndex]=a[b];this.targetObject.needsUpdate=!0},function(a, +b){this.resolvedProperty[this.propertyIndex]=a[b];this.targetObject.matrixWorldNeedsUpdate=!0}],[function(a,b){this.resolvedProperty.fromArray(a,b)},function(a,b){this.resolvedProperty.fromArray(a,b);this.targetObject.needsUpdate=!0},function(a,b){this.resolvedProperty.fromArray(a,b);this.targetObject.matrixWorldNeedsUpdate=!0}]],getValue:function(a,b){this.bind();this.getValue(a,b)},setValue:function(a,b){this.bind();this.setValue(a,b)},bind:function(){var a=this.node,b=this.parsedPath,c=b.objectName, +d=b.propertyName,e=b.propertyIndex;a||(this.node=a=ya.findNode(this.rootNode,b.nodeName)||this.rootNode);this.getValue=this._getValue_unavailable;this.setValue=this._setValue_unavailable;if(a){if(c){var f=b.objectIndex;switch(c){case "materials":if(!a.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!a.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.", +this);return}a=a.material.materials;break;case "bones":if(!a.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}a=a.skeleton.bones;for(c=0;c<a.length;c++)if(a[c].name===f){f=c;break}break;default:if(void 0===a[c]){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}a=a[c]}if(void 0!==f){if(void 0===a[f]){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.", +this,a);return}a=a[f]}}f=a[d];if(void 0===f)console.error("THREE.PropertyBinding: Trying to update property for track: "+b.nodeName+"."+d+" but it wasn't found.",a);else{b=this.Versioning.None;this.targetObject=a;void 0!==a.needsUpdate?b=this.Versioning.NeedsUpdate:void 0!==a.matrixWorldNeedsUpdate&&(b=this.Versioning.MatrixWorldNeedsUpdate);c=this.BindingType.Direct;if(void 0!==e){if("morphTargetInfluences"===d){if(!a.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.", +this);return}if(a.geometry.isBufferGeometry){if(!a.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}for(c=0;c<this.node.geometry.morphAttributes.position.length;c++)if(a.geometry.morphAttributes.position[c].name===e){e=c;break}}else{if(!a.geometry.morphTargets){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.", +this);return}for(c=0;c<this.node.geometry.morphTargets.length;c++)if(a.geometry.morphTargets[c].name===e){e=c;break}}}c=this.BindingType.ArrayElement;this.resolvedProperty=f;this.propertyIndex=e}else void 0!==f.fromArray&&void 0!==f.toArray?(c=this.BindingType.HasFromToArray,this.resolvedProperty=f):Array.isArray(f)?(c=this.BindingType.EntireArray,this.resolvedProperty=f):this.propertyName=d;this.getValue=this.GetterByBindingType[c];this.setValue=this.SetterByBindingTypeAndVersioning[c][b]}}else console.error("THREE.PropertyBinding: Trying to update node for track: "+ +this.path+" but it wasn't found.")},unbind:function(){this.node=null;this.getValue=this._getValue_unbound;this.setValue=this._setValue_unbound}});Object.assign(ya.prototype,{_getValue_unbound:ya.prototype.getValue,_setValue_unbound:ya.prototype.setValue});Object.assign(ci.prototype,{isAnimationObjectGroup:!0,add:function(){for(var a=this._objects,b=a.length,c=this.nCachedObjects_,d=this._indicesByUUID,e=this._paths,f=this._parsedPaths,g=this._bindings,h=g.length,k=void 0,m=0,n=arguments.length;m!== +n;++m){var q=arguments[m],u=q.uuid,p=d[u];if(void 0===p){p=b++;d[u]=p;a.push(q);u=0;for(var t=h;u!==t;++u)g[u].push(new ya(q,e[u],f[u]))}else if(p<c){k=a[p];var v=--c;t=a[v];d[t.uuid]=p;a[p]=t;d[u]=v;a[v]=q;u=0;for(t=h;u!==t;++u){var y=g[u],w=y[p];y[p]=y[v];void 0===w&&(w=new ya(q,e[u],f[u]));y[v]=w}}else a[p]!==k&&console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")}this.nCachedObjects_= +c},remove:function(){for(var a=this._objects,b=this.nCachedObjects_,c=this._indicesByUUID,d=this._bindings,e=d.length,f=0,g=arguments.length;f!==g;++f){var h=arguments[f],k=h.uuid,m=c[k];if(void 0!==m&&m>=b){var n=b++,q=a[n];c[q.uuid]=m;a[m]=q;c[k]=n;a[n]=h;h=0;for(k=e;h!==k;++h){q=d[h];var u=q[m];q[m]=q[n];q[n]=u}}}this.nCachedObjects_=b},uncache:function(){for(var a=this._objects,b=a.length,c=this.nCachedObjects_,d=this._indicesByUUID,e=this._bindings,f=e.length,g=0,h=arguments.length;g!==h;++g){var k= +arguments[g].uuid,m=d[k];if(void 0!==m)if(delete d[k],m<c){k=--c;var n=a[k],q=--b,u=a[q];d[n.uuid]=m;a[m]=n;d[u.uuid]=k;a[k]=u;a.pop();n=0;for(u=f;n!==u;++n){var p=e[n],t=p[q];p[m]=p[k];p[k]=t;p.pop()}}else for(q=--b,u=a[q],d[u.uuid]=m,a[m]=u,a.pop(),n=0,u=f;n!==u;++n)p=e[n],p[m]=p[q],p.pop()}this.nCachedObjects_=c},subscribe_:function(a,b){var c=this._bindingsIndicesByPath,d=c[a],e=this._bindings;if(void 0!==d)return e[d];var f=this._paths,g=this._parsedPaths,h=this._objects,k=this.nCachedObjects_, +m=Array(h.length);d=e.length;c[a]=d;f.push(a);g.push(b);e.push(m);c=k;for(d=h.length;c!==d;++c)m[c]=new ya(h[c],a,b);return m},unsubscribe_:function(a){var b=this._bindingsIndicesByPath,c=b[a];if(void 0!==c){var d=this._paths,e=this._parsedPaths,f=this._bindings,g=f.length-1,h=f[g];b[a[g]]=c;f[c]=h;f.pop();e[c]=e[g];e.pop();d[c]=d[g];d.pop()}}});Object.assign(di.prototype,{play:function(){this._mixer._activateAction(this);return this},stop:function(){this._mixer._deactivateAction(this);return this.reset()}, +reset:function(){this.paused=!1;this.enabled=!0;this.time=0;this._loopCount=-1;this._startTime=null;return this.stopFading().stopWarping()},isRunning:function(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)},isScheduled:function(){return this._mixer._isActiveAction(this)},startAt:function(a){this._startTime=a;return this},setLoop:function(a,b){this.loop=a;this.repetitions=b;return this},setEffectiveWeight:function(a){this.weight=a; +this._effectiveWeight=this.enabled?a:0;return this.stopFading()},getEffectiveWeight:function(){return this._effectiveWeight},fadeIn:function(a){return this._scheduleFading(a,0,1)},fadeOut:function(a){return this._scheduleFading(a,1,0)},crossFadeFrom:function(a,b,c){a.fadeOut(b);this.fadeIn(b);if(c){c=this._clip.duration;var d=a._clip.duration,e=c/d;a.warp(1,d/c,b);this.warp(e,1,b)}return this},crossFadeTo:function(a,b,c){return a.crossFadeFrom(this,b,c)},stopFading:function(){var a=this._weightInterpolant; +null!==a&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(a));return this},setEffectiveTimeScale:function(a){this.timeScale=a;this._effectiveTimeScale=this.paused?0:a;return this.stopWarping()},getEffectiveTimeScale:function(){return this._effectiveTimeScale},setDuration:function(a){this.timeScale=this._clip.duration/a;return this.stopWarping()},syncWith:function(a){this.time=a.time;this.timeScale=a.timeScale;return this.stopWarping()},halt:function(a){return this.warp(this._effectiveTimeScale, +0,a)},warp:function(a,b,c){var d=this._mixer,e=d.time,f=this._timeScaleInterpolant,g=this.timeScale;null===f&&(this._timeScaleInterpolant=f=d._lendControlInterpolant());d=f.parameterPositions;f=f.sampleValues;d[0]=e;d[1]=e+c;f[0]=a/g;f[1]=b/g;return this},stopWarping:function(){var a=this._timeScaleInterpolant;null!==a&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(a));return this},getMixer:function(){return this._mixer},getClip:function(){return this._clip},getRoot:function(){return this._localRoot|| +this._mixer._root},_update:function(a,b,c,d){if(this.enabled){var e=this._startTime;if(null!==e){b=(a-e)*c;if(0>b||0===c)return;this._startTime=null;b*=c}b*=this._updateTimeScale(a);c=this._updateTime(b);a=this._updateWeight(a);if(0<a){b=this._interpolants;e=this._propertyBindings;for(var f=0,g=b.length;f!==g;++f)b[f].evaluate(c),e[f].accumulate(d,a)}}else this._updateWeight(a)},_updateWeight:function(a){var b=0;if(this.enabled){b=this.weight;var c=this._weightInterpolant;if(null!==c){var d=c.evaluate(a)[0]; +b*=d;a>c.parameterPositions[1]&&(this.stopFading(),0===d&&(this.enabled=!1))}}return this._effectiveWeight=b},_updateTimeScale:function(a){var b=0;if(!this.paused){b=this.timeScale;var c=this._timeScaleInterpolant;if(null!==c){var d=c.evaluate(a)[0];b*=d;a>c.parameterPositions[1]&&(this.stopWarping(),0===b?this.paused=!0:this.timeScale=b)}}return this._effectiveTimeScale=b},_updateTime:function(a){var b=this.time+a,c=this._clip.duration,d=this.loop,e=this._loopCount,f=2202===d;if(0===a)return-1=== +e?b:f&&1===(e&1)?c-b:b;if(2200===d)a:{if(-1===e&&(this._loopCount=0,this._setEndings(!0,!0,!1)),b>=c)b=c;else if(0>b)b=0;else{this.time=b;break a}this.clampWhenFinished?this.paused=!0:this.enabled=!1;this.time=b;this._mixer.dispatchEvent({type:"finished",action:this,direction:0>a?-1:1})}else{-1===e&&(0<=a?(e=0,this._setEndings(!0,0===this.repetitions,f)):this._setEndings(0===this.repetitions,!0,f));if(b>=c||0>b){d=Math.floor(b/c);b-=c*d;e+=Math.abs(d);var g=this.repetitions-e;0>=g?(this.clampWhenFinished? +this.paused=!0:this.enabled=!1,this.time=b=0<a?c:0,this._mixer.dispatchEvent({type:"finished",action:this,direction:0<a?1:-1})):(1===g?(a=0>a,this._setEndings(a,!a,f)):this._setEndings(!1,!1,f),this._loopCount=e,this.time=b,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:d}))}else this.time=b;if(f&&1===(e&1))return c-b}return b},_setEndings:function(a,b,c){var d=this._interpolantSettings;c?(d.endingStart=2401,d.endingEnd=2401):(d.endingStart=a?this.zeroSlopeAtStart?2401:2400:2402,d.endingEnd= +b?this.zeroSlopeAtEnd?2401:2400:2402)},_scheduleFading:function(a,b,c){var d=this._mixer,e=d.time,f=this._weightInterpolant;null===f&&(this._weightInterpolant=f=d._lendControlInterpolant());d=f.parameterPositions;f=f.sampleValues;d[0]=e;f[0]=b;d[1]=e+a;f[1]=c;return this}});Fg.prototype=Object.assign(Object.create(Ba.prototype),{constructor:Fg,_bindAction:function(a,b){var c=a._localRoot||this._root,d=a._clip.tracks,e=d.length,f=a._propertyBindings;a=a._interpolants;var g=c.uuid,h=this._bindingsByRootAndName, +k=h[g];void 0===k&&(k={},h[g]=k);for(h=0;h!==e;++h){var m=d[h],n=m.name,q=k[n];if(void 0===q){q=f[h];if(void 0!==q){null===q._cacheIndex&&(++q.referenceCount,this._addInactiveBinding(q,g,n));continue}q=new Eg(ya.create(c,n,b&&b._propertyBindings[h].binding.parsedPath),m.ValueTypeName,m.getValueSize());++q.referenceCount;this._addInactiveBinding(q,g,n)}f[h]=q;a[h].resultBuffer=q.buffer}},_activateAction:function(a){if(!this._isActiveAction(a)){if(null===a._cacheIndex){var b=(a._localRoot||this._root).uuid, +c=a._clip.uuid,d=this._actionsByClip[c];this._bindAction(a,d&&d.knownActions[0]);this._addInactiveAction(a,c,b)}b=a._propertyBindings;c=0;for(d=b.length;c!==d;++c){var e=b[c];0===e.useCount++&&(this._lendBinding(e),e.saveOriginalState())}this._lendAction(a)}},_deactivateAction:function(a){if(this._isActiveAction(a)){for(var b=a._propertyBindings,c=0,d=b.length;c!==d;++c){var e=b[c];0===--e.useCount&&(e.restoreOriginalState(),this._takeBackBinding(e))}this._takeBackAction(a)}},_initMemoryManager:function(){this._actions= +[];this._nActiveActions=0;this._actionsByClip={};this._bindings=[];this._nActiveBindings=0;this._bindingsByRootAndName={};this._controlInterpolants=[];this._nActiveControlInterpolants=0;var a=this;this.stats={actions:{get total(){return a._actions.length},get inUse(){return a._nActiveActions}},bindings:{get total(){return a._bindings.length},get inUse(){return a._nActiveBindings}},controlInterpolants:{get total(){return a._controlInterpolants.length},get inUse(){return a._nActiveControlInterpolants}}}}, +_isActiveAction:function(a){a=a._cacheIndex;return null!==a&&a<this._nActiveActions},_addInactiveAction:function(a,b,c){var d=this._actions,e=this._actionsByClip,f=e[b];void 0===f?(f={knownActions:[a],actionByRoot:{}},a._byClipCacheIndex=0,e[b]=f):(b=f.knownActions,a._byClipCacheIndex=b.length,b.push(a));a._cacheIndex=d.length;d.push(a);f.actionByRoot[c]=a},_removeInactiveAction:function(a){var b=this._actions,c=b[b.length-1],d=a._cacheIndex;c._cacheIndex=d;b[d]=c;b.pop();a._cacheIndex=null;b=a._clip.uuid; +c=this._actionsByClip;d=c[b];var e=d.knownActions,f=e[e.length-1],g=a._byClipCacheIndex;f._byClipCacheIndex=g;e[g]=f;e.pop();a._byClipCacheIndex=null;delete d.actionByRoot[(a._localRoot||this._root).uuid];0===e.length&&delete c[b];this._removeInactiveBindingsForAction(a)},_removeInactiveBindingsForAction:function(a){a=a._propertyBindings;for(var b=0,c=a.length;b!==c;++b){var d=a[b];0===--d.referenceCount&&this._removeInactiveBinding(d)}},_lendAction:function(a){var b=this._actions,c=a._cacheIndex, +d=this._nActiveActions++,e=b[d];a._cacheIndex=d;b[d]=a;e._cacheIndex=c;b[c]=e},_takeBackAction:function(a){var b=this._actions,c=a._cacheIndex,d=--this._nActiveActions,e=b[d];a._cacheIndex=d;b[d]=a;e._cacheIndex=c;b[c]=e},_addInactiveBinding:function(a,b,c){var d=this._bindingsByRootAndName,e=d[b],f=this._bindings;void 0===e&&(e={},d[b]=e);e[c]=a;a._cacheIndex=f.length;f.push(a)},_removeInactiveBinding:function(a){var b=this._bindings,c=a.binding,d=c.rootNode.uuid;c=c.path;var e=this._bindingsByRootAndName, +f=e[d],g=b[b.length-1];a=a._cacheIndex;g._cacheIndex=a;b[a]=g;b.pop();delete f[c];0===Object.keys(f).length&&delete e[d]},_lendBinding:function(a){var b=this._bindings,c=a._cacheIndex,d=this._nActiveBindings++,e=b[d];a._cacheIndex=d;b[d]=a;e._cacheIndex=c;b[c]=e},_takeBackBinding:function(a){var b=this._bindings,c=a._cacheIndex,d=--this._nActiveBindings,e=b[d];a._cacheIndex=d;b[d]=a;e._cacheIndex=c;b[c]=e},_lendControlInterpolant:function(){var a=this._controlInterpolants,b=this._nActiveControlInterpolants++, +c=a[b];void 0===c&&(c=new ke(new Float32Array(2),new Float32Array(2),1,this._controlInterpolantsResultBuffer),c.__cacheIndex=b,a[b]=c);return c},_takeBackControlInterpolant:function(a){var b=this._controlInterpolants,c=a.__cacheIndex,d=--this._nActiveControlInterpolants,e=b[d];a.__cacheIndex=d;b[d]=a;e.__cacheIndex=c;b[c]=e},_controlInterpolantsResultBuffer:new Float32Array(1),clipAction:function(a,b){var c=b||this._root,d=c.uuid;c="string"===typeof a?Ma.findByName(c,a):a;a=null!==c?c.uuid:a;var e= +this._actionsByClip[a],f=null;if(void 0!==e){f=e.actionByRoot[d];if(void 0!==f)return f;f=e.knownActions[0];null===c&&(c=f._clip)}if(null===c)return null;b=new di(this,c,b);this._bindAction(b,f);this._addInactiveAction(b,a,d);return b},existingAction:function(a,b){var c=b||this._root;b=c.uuid;c="string"===typeof a?Ma.findByName(c,a):a;a=this._actionsByClip[c?c.uuid:a];return void 0!==a?a.actionByRoot[b]||null:null},stopAllAction:function(){for(var a=this._actions,b=this._nActiveActions,c=this._bindings, +d=this._nActiveBindings,e=this._nActiveBindings=this._nActiveActions=0;e!==b;++e)a[e].reset();for(e=0;e!==d;++e)c[e].useCount=0;return this},update:function(a){a*=this.timeScale;for(var b=this._actions,c=this._nActiveActions,d=this.time+=a,e=Math.sign(a),f=this._accuIndex^=1,g=0;g!==c;++g)b[g]._update(d,a,e,f);a=this._bindings;b=this._nActiveBindings;for(g=0;g!==b;++g)a[g].apply(f);return this},setTime:function(a){for(var b=this.time=0;b<this._actions.length;b++)this._actions[b].time=0;return this.update(a)}, +getRoot:function(){return this._root},uncacheClip:function(a){var b=this._actions;a=a.uuid;var c=this._actionsByClip,d=c[a];if(void 0!==d){d=d.knownActions;for(var e=0,f=d.length;e!==f;++e){var g=d[e];this._deactivateAction(g);var h=g._cacheIndex,k=b[b.length-1];g._cacheIndex=null;g._byClipCacheIndex=null;k._cacheIndex=h;b[h]=k;b.pop();this._removeInactiveBindingsForAction(g)}delete c[a]}},uncacheRoot:function(a){a=a.uuid;var b=this._actionsByClip;for(d in b){var c=b[d].actionByRoot[a];void 0!==c&& +(this._deactivateAction(c),this._removeInactiveAction(c))}var d=this._bindingsByRootAndName[a];if(void 0!==d)for(var e in d)a=d[e],a.restoreOriginalState(),this._removeInactiveBinding(a)},uncacheAction:function(a,b){a=this.existingAction(a,b);null!==a&&(this._deactivateAction(a),this._removeInactiveAction(a))}});pf.prototype.clone=function(){return new pf(void 0===this.value.clone?this.value:this.value.clone())};Gg.prototype=Object.assign(Object.create(pb.prototype),{constructor:Gg,isInstancedInterleavedBuffer:!0, +copy:function(a){pb.prototype.copy.call(this,a);this.meshPerAttribute=a.meshPerAttribute;return this}});Object.assign(ei.prototype,{linePrecision:1,set:function(a,b){this.ray.set(a,b)},setFromCamera:function(a,b){b&&b.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(b.matrixWorld),this.ray.direction.set(a.x,a.y,.5).unproject(b).sub(this.ray.origin).normalize(),this.camera=b):b&&b.isOrthographicCamera?(this.ray.origin.set(a.x,a.y,(b.near+b.far)/(b.near-b.far)).unproject(b),this.ray.direction.set(0, +0,-1).transformDirection(b.matrixWorld),this.camera=b):console.error("THREE.Raycaster: Unsupported camera type.")},intersectObject:function(a,b,c){c=c||[];Hg(a,this,c,b);c.sort(fi);return c},intersectObjects:function(a,b,c){c=c||[];if(!1===Array.isArray(a))return console.warn("THREE.Raycaster.intersectObjects: objects is not an Array."),c;for(var d=0,e=a.length;d<e;d++)Hg(a[d],this,c,b);c.sort(fi);return c}});Object.assign(gi.prototype,{set:function(a,b,c){this.radius=a;this.phi=b;this.theta=c;return this}, +clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.radius=a.radius;this.phi=a.phi;this.theta=a.theta;return this},makeSafe:function(){this.phi=Math.max(1E-6,Math.min(Math.PI-1E-6,this.phi));return this},setFromVector3:function(a){return this.setFromCartesianCoords(a.x,a.y,a.z)},setFromCartesianCoords:function(a,b,c){this.radius=Math.sqrt(a*a+b*b+c*c);0===this.radius?this.phi=this.theta=0:(this.theta=Math.atan2(a,c),this.phi=Math.acos(P.clamp(b/this.radius,-1,1)));return this}}); +Object.assign(hi.prototype,{set:function(a,b,c){this.radius=a;this.theta=b;this.y=c;return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.radius=a.radius;this.theta=a.theta;this.y=a.y;return this},setFromVector3:function(a){return this.setFromCartesianCoords(a.x,a.y,a.z)},setFromCartesianCoords:function(a,b,c){this.radius=Math.sqrt(a*a+c*c);this.theta=Math.atan2(a,c);this.y=b;return this}});var Ji=new B;Object.assign(Ig.prototype,{set:function(a,b){this.min.copy(a); +this.max.copy(b);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;b<c;b++)this.expandByPoint(a[b]);return this},setFromCenterAndSize:function(a,b){b=Ji.copy(b).multiplyScalar(.5);this.min.copy(a).sub(b);this.max.copy(a).add(b);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.min.copy(a.min);this.max.copy(a.max);return this},makeEmpty:function(){this.min.x=this.min.y=Infinity;this.max.x=this.max.y=-Infinity;return this},isEmpty:function(){return this.max.x< +this.min.x||this.max.y<this.min.y},getCenter:function(a){void 0===a&&(console.warn("THREE.Box2: .getCenter() target is now required"),a=new B);return this.isEmpty()?a.set(0,0):a.addVectors(this.min,this.max).multiplyScalar(.5)},getSize:function(a){void 0===a&&(console.warn("THREE.Box2: .getSize() target is now required"),a=new B);return this.isEmpty()?a.set(0,0):a.subVectors(this.max,this.min)},expandByPoint:function(a){this.min.min(a);this.max.max(a);return this},expandByVector:function(a){this.min.sub(a); +this.max.add(a);return this},expandByScalar:function(a){this.min.addScalar(-a);this.max.addScalar(a);return this},containsPoint:function(a){return a.x<this.min.x||a.x>this.max.x||a.y<this.min.y||a.y>this.max.y?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y},getParameter:function(a,b){void 0===b&&(console.warn("THREE.Box2: .getParameter() target is now required"),b=new B);return b.set((a.x-this.min.x)/(this.max.x-this.min.x), +(a.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(a){return a.max.x<this.min.x||a.min.x>this.max.x||a.max.y<this.min.y||a.min.y>this.max.y?!1:!0},clampPoint:function(a,b){void 0===b&&(console.warn("THREE.Box2: .clampPoint() target is now required"),b=new B);return b.copy(a).clamp(this.min,this.max)},distanceToPoint:function(a){return Ji.copy(a).clamp(this.min,this.max).sub(a).length()},intersect:function(a){this.min.max(a.min);this.max.min(a.max);return this},union:function(a){this.min.min(a.min); +this.max.max(a.max);return this},translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});var Ki=new n,Nf=new n;Object.assign(Jg.prototype,{set:function(a,b){this.start.copy(a);this.end.copy(b);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.start.copy(a.start);this.end.copy(a.end);return this},getCenter:function(a){void 0===a&&(console.warn("THREE.Line3: .getCenter() target is now required"), +a=new n);return a.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(a){void 0===a&&(console.warn("THREE.Line3: .delta() target is now required"),a=new n);return a.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(a,b){void 0===b&&(console.warn("THREE.Line3: .at() target is now required"),b=new n);return this.delta(b).multiplyScalar(a).add(this.start)},closestPointToPointParameter:function(a, +b){Ki.subVectors(a,this.start);Nf.subVectors(this.end,this.start);a=Nf.dot(Nf);a=Nf.dot(Ki)/a;b&&(a=P.clamp(a,0,1));return a},closestPointToPoint:function(a,b,c){a=this.closestPointToPointParameter(a,b);void 0===c&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),c=new n);return this.delta(c).multiplyScalar(a).add(this.start)},applyMatrix4:function(a){this.start.applyMatrix4(a);this.end.applyMatrix4(a);return this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)}}); +pe.prototype=Object.create(D.prototype);pe.prototype.constructor=pe;pe.prototype.isImmediateRenderObject=!0;var lb=new n,Ab=new n,gh=new Z,Rk=["a","b","c"];qe.prototype=Object.create(X.prototype);qe.prototype.constructor=qe;qe.prototype.update=function(){this.object.updateMatrixWorld(!0);gh.getNormalMatrix(this.object.matrixWorld);var a=this.object.matrixWorld,b=this.geometry.attributes.position,c=this.object.geometry;if(c&&c.isGeometry)for(var d=c.vertices,e=c.faces,f=c=0,g=e.length;f<g;f++)for(var h= +e[f],k=0,m=h.vertexNormals.length;k<m;k++){var n=h.vertexNormals[k];lb.copy(d[h[Rk[k]]]).applyMatrix4(a);Ab.copy(n).applyMatrix3(gh).normalize().multiplyScalar(this.size).add(lb);b.setXYZ(c,lb.x,lb.y,lb.z);c+=1;b.setXYZ(c,Ab.x,Ab.y,Ab.z);c+=1}else if(c&&c.isBufferGeometry)for(d=c.attributes.position,e=c.attributes.normal,k=c=0,m=d.count;k<m;k++)lb.set(d.getX(k),d.getY(k),d.getZ(k)).applyMatrix4(a),Ab.set(e.getX(k),e.getY(k),e.getZ(k)),Ab.applyMatrix3(gh).normalize().multiplyScalar(this.size).add(lb), +b.setXYZ(c,lb.x,lb.y,lb.z),c+=1,b.setXYZ(c,Ab.x,Ab.y,Ab.z),c+=1;b.needsUpdate=!0};var Li=new n;ed.prototype=Object.create(D.prototype);ed.prototype.constructor=ed;ed.prototype.dispose=function(){this.cone.geometry.dispose();this.cone.material.dispose()};ed.prototype.update=function(){this.light.updateMatrixWorld();var a=this.light.distance?this.light.distance:1E3,b=a*Math.tan(this.light.angle);this.cone.scale.set(b,b,a);Li.setFromMatrixPosition(this.light.target.matrixWorld);this.cone.lookAt(Li); +void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)};var Ob=new n,Of=new Q,hh=new Q;fd.prototype=Object.create(X.prototype);fd.prototype.constructor=fd;fd.prototype.updateMatrixWorld=function(a){var b=this.bones,c=this.geometry,d=c.getAttribute("position");hh.getInverse(this.root.matrixWorld);for(var e=0,f=0;e<b.length;e++){var g=b[e];g.parent&&g.parent.isBone&&(Of.multiplyMatrices(hh,g.matrixWorld),Ob.setFromMatrixPosition(Of),d.setXYZ(f,Ob.x, +Ob.y,Ob.z),Of.multiplyMatrices(hh,g.parent.matrixWorld),Ob.setFromMatrixPosition(Of),d.setXYZ(f+1,Ob.x,Ob.y,Ob.z),f+=2)}c.getAttribute("position").needsUpdate=!0;D.prototype.updateMatrixWorld.call(this,a)};gd.prototype=Object.create(ea.prototype);gd.prototype.constructor=gd;gd.prototype.dispose=function(){this.geometry.dispose();this.material.dispose()};gd.prototype.update=function(){void 0!==this.color?this.material.color.set(this.color):this.material.color.copy(this.light.color)};hd.prototype=Object.create(ra.prototype); +hd.prototype.constructor=hd;hd.prototype.update=function(){this.scale.set(.5*this.light.width,.5*this.light.height,1);if(void 0!==this.color)this.material.color.set(this.color),this.children[0].material.color.set(this.color);else{this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity);var a=this.material.color,b=Math.max(a.r,a.g,a.b);1<b&&a.multiplyScalar(1/b);this.children[0].material.color.copy(this.material.color)}};hd.prototype.dispose=function(){this.geometry.dispose(); +this.material.dispose();this.children[0].geometry.dispose();this.children[0].material.dispose()};var Sk=new n,Mi=new J,Ni=new J;id.prototype=Object.create(D.prototype);id.prototype.constructor=id;id.prototype.dispose=function(){this.children[0].geometry.dispose();this.children[0].material.dispose()};id.prototype.update=function(){var a=this.children[0];if(void 0!==this.color)this.material.color.set(this.color);else{var b=a.geometry.getAttribute("color");Mi.copy(this.light.color);Ni.copy(this.light.groundColor); +for(var c=0,d=b.count;c<d;c++){var e=c<d/2?Mi:Ni;b.setXYZ(c,e.r,e.g,e.b)}b.needsUpdate=!0}a.lookAt(Sk.setFromMatrixPosition(this.light.matrixWorld).negate())};jd.prototype=Object.create(ea.prototype);jd.prototype.constructor=jd;jd.prototype.dispose=function(){this.geometry.dispose();this.material.dispose()};jd.prototype.onBeforeRender=function(){this.position.copy(this.lightProbe.position);this.scale.set(1,1,1).multiplyScalar(this.size);this.material.uniforms.intensity.value=this.lightProbe.intensity}; +qf.prototype=Object.assign(Object.create(X.prototype),{constructor:qf,copy:function(a){X.prototype.copy.call(this,a);this.geometry.copy(a.geometry);this.material.copy(a.material);return this},clone:function(){return(new this.constructor).copy(this)}});rf.prototype=Object.create(X.prototype);rf.prototype.constructor=rf;kd.prototype=Object.create(ra.prototype);kd.prototype.constructor=kd;kd.prototype.update=function(){function a(a,b,d,e){d=(b-a)/d;p.setXYZ(k,0,0,0);m++;for(n=a;n<b;n+=d)q=k+m,p.setXYZ(q, +Math.sin(n)*c,0,Math.cos(n)*c),p.setXYZ(q+1,Math.sin(Math.min(n+d,b))*c,0,Math.cos(Math.min(n+d,b))*c),p.setXYZ(q+2,0,0,0),m+=3;u.addGroup(k,m,e);k+=m;m=0}var b=this.audio,c=this.range,d=this.divisionsInnerAngle,e=this.divisionsOuterAngle,f=P.degToRad(b.panner.coneInnerAngle);b=P.degToRad(b.panner.coneOuterAngle);var g=f/2,h=b/2,k=0,m=0,n,q,u=this.geometry,p=u.attributes.position;u.clearGroups();a(-h,-g,e,0);a(-g,g,d,1);a(g,h,e,0);p.needsUpdate=!0;f===b&&(this.material[0].visible=!1)};kd.prototype.dispose= +function(){this.geometry.dispose();this.material[0].dispose();this.material[1].dispose()};var De=new n,Pf=new n,Oi=new Z;re.prototype=Object.create(X.prototype);re.prototype.constructor=re;re.prototype.update=function(){this.object.updateMatrixWorld(!0);Oi.getNormalMatrix(this.object.matrixWorld);var a=this.object.matrixWorld,b=this.geometry.attributes.position,c=this.object.geometry,d=c.vertices;c=c.faces;for(var e=0,f=0,g=c.length;f<g;f++){var h=c[f],k=h.normal;De.copy(d[h.a]).add(d[h.b]).add(d[h.c]).divideScalar(3).applyMatrix4(a); +Pf.copy(k).applyMatrix3(Oi).normalize().multiplyScalar(this.size).add(De);b.setXYZ(e,De.x,De.y,De.z);e+=1;b.setXYZ(e,Pf.x,Pf.y,Pf.z);e+=1}b.needsUpdate=!0};var Pi=new n,Qf=new n,Qi=new n;ld.prototype=Object.create(D.prototype);ld.prototype.constructor=ld;ld.prototype.dispose=function(){this.lightPlane.geometry.dispose();this.lightPlane.material.dispose();this.targetLine.geometry.dispose();this.targetLine.material.dispose()};ld.prototype.update=function(){Pi.setFromMatrixPosition(this.light.matrixWorld); +Qf.setFromMatrixPosition(this.light.target.matrixWorld);Qi.subVectors(Qf,Pi);this.lightPlane.lookAt(Qf);void 0!==this.color?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color));this.targetLine.lookAt(Qf);this.targetLine.scale.z=Qi.length()};var sf=new n,ka=new bb;se.prototype=Object.create(X.prototype);se.prototype.constructor=se;se.prototype.update= +function(){var a=this.geometry,b=this.pointMap;ka.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse);oa("c",b,a,ka,0,0,-1);oa("t",b,a,ka,0,0,1);oa("n1",b,a,ka,-1,-1,-1);oa("n2",b,a,ka,1,-1,-1);oa("n3",b,a,ka,-1,1,-1);oa("n4",b,a,ka,1,1,-1);oa("f1",b,a,ka,-1,-1,1);oa("f2",b,a,ka,1,-1,1);oa("f3",b,a,ka,-1,1,1);oa("f4",b,a,ka,1,1,1);oa("u1",b,a,ka,.7,1.1,-1);oa("u2",b,a,ka,-.7,1.1,-1);oa("u3",b,a,ka,0,2,-1);oa("cf1",b,a,ka,-1,0,1);oa("cf2",b,a,ka,1,0,1);oa("cf3",b,a,ka,0,-1,1);oa("cf4", +b,a,ka,0,1,1);oa("cn1",b,a,ka,-1,0,-1);oa("cn2",b,a,ka,1,0,-1);oa("cn3",b,a,ka,0,-1,-1);oa("cn4",b,a,ka,0,1,-1);a.getAttribute("position").needsUpdate=!0};var Rf=new ab;tb.prototype=Object.create(X.prototype);tb.prototype.constructor=tb;tb.prototype.update=function(a){void 0!==a&&console.warn("THREE.BoxHelper: .update() has no longer arguments.");void 0!==this.object&&Rf.setFromObject(this.object);if(!Rf.isEmpty()){a=Rf.min;var b=Rf.max,c=this.geometry.attributes.position,d=c.array;d[0]=b.x;d[1]= +b.y;d[2]=b.z;d[3]=a.x;d[4]=b.y;d[5]=b.z;d[6]=a.x;d[7]=a.y;d[8]=b.z;d[9]=b.x;d[10]=a.y;d[11]=b.z;d[12]=b.x;d[13]=b.y;d[14]=a.z;d[15]=a.x;d[16]=b.y;d[17]=a.z;d[18]=a.x;d[19]=a.y;d[20]=a.z;d[21]=b.x;d[22]=a.y;d[23]=a.z;c.needsUpdate=!0;this.geometry.computeBoundingSphere()}};tb.prototype.setFromObject=function(a){this.object=a;this.update();return this};tb.prototype.copy=function(a){X.prototype.copy.call(this,a);this.object=a.object;return this};tb.prototype.clone=function(){return(new this.constructor).copy(this)}; +te.prototype=Object.create(X.prototype);te.prototype.constructor=te;te.prototype.updateMatrixWorld=function(a){var b=this.box;b.isEmpty()||(b.getCenter(this.position),b.getSize(this.scale),this.scale.multiplyScalar(.5),D.prototype.updateMatrixWorld.call(this,a))};ue.prototype=Object.create(ra.prototype);ue.prototype.constructor=ue;ue.prototype.updateMatrixWorld=function(a){var b=-this.plane.constant;1E-8>Math.abs(b)&&(b=1E-8);this.scale.set(.5*this.size,.5*this.size,b);this.children[0].material.side= +0>b?1:0;this.lookAt(this.plane.normal);D.prototype.updateMatrixWorld.call(this,a)};var Ri=new n,tf,Kg;ub.prototype=Object.create(D.prototype);ub.prototype.constructor=ub;ub.prototype.setDirection=function(a){.99999<a.y?this.quaternion.set(0,0,0,1):-.99999>a.y?this.quaternion.set(1,0,0,0):(Ri.set(a.z,0,-a.x).normalize(),this.quaternion.setFromAxisAngle(Ri,Math.acos(a.y)))};ub.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a);void 0===c&&(c=.2*b);this.line.scale.set(1,Math.max(1E-4,a-b),1);this.line.updateMatrix(); +this.cone.scale.set(c,b,c);this.cone.position.y=a;this.cone.updateMatrix()};ub.prototype.setColor=function(a){this.line.material.color.set(a);this.cone.material.color.set(a)};ub.prototype.copy=function(a){D.prototype.copy.call(this,a,!1);this.line.copy(a.line);this.cone.copy(a.cone);return this};ub.prototype.clone=function(){return(new this.constructor).copy(this)};ve.prototype=Object.create(X.prototype);ve.prototype.constructor=ve;G.create=function(a,b){console.log("THREE.Curve.create() has been deprecated"); +a.prototype=Object.create(G.prototype);a.prototype.constructor=a;a.prototype.getPoint=b;return a};Object.assign(sb.prototype,{createPointsGeometry:function(a){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");a=this.getPoints(a);return this.createGeometry(a)},createSpacedPointsGeometry:function(a){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead."); +a=this.getSpacedPoints(a);return this.createGeometry(a)},createGeometry:function(a){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");for(var b=new C,c=0,d=a.length;c<d;c++){var e=a[c];b.vertices.push(new n(e.x,e.y,e.z||0))}return b}});Object.assign(Wa.prototype,{fromPoints:function(a){console.warn("THREE.Path: .fromPoints() has been renamed to .setFromPoints().");return this.setFromPoints(a)}});ji.prototype=Object.create(na.prototype); +ki.prototype=Object.create(na.prototype);Lg.prototype=Object.create(na.prototype);Object.assign(Lg.prototype,{initFromArray:function(){console.error("THREE.Spline: .initFromArray() has been removed.")},getControlPointsArray:function(){console.error("THREE.Spline: .getControlPointsArray() has been removed.")},reparametrizeByArcLength:function(){console.error("THREE.Spline: .reparametrizeByArcLength() has been removed.")}});qf.prototype.setColors=function(){console.error("THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.")}; +fd.prototype.update=function(){console.error("THREE.SkeletonHelper: update() no longer needs to be called.")};Object.assign(V.prototype,{extractUrlBase:function(a){console.warn("THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.");return eh.extractUrlBase(a)}});V.Handlers={add:function(){console.error("THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.")},get:function(){console.error("THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.")}}; +Object.assign(mf.prototype,{setTexturePath:function(a){console.warn("THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().");return this.setResourcePath(a)}});Object.assign(Ig.prototype,{center:function(a){console.warn("THREE.Box2: .center() has been renamed to .getCenter().");return this.getCenter(a)},empty:function(){console.warn("THREE.Box2: .empty() has been renamed to .isEmpty().");return this.isEmpty()},isIntersectionBox:function(a){console.warn("THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox()."); +return this.intersectsBox(a)},size:function(a){console.warn("THREE.Box2: .size() has been renamed to .getSize().");return this.getSize(a)}});Object.assign(ab.prototype,{center:function(a){console.warn("THREE.Box3: .center() has been renamed to .getCenter().");return this.getCenter(a)},empty:function(){console.warn("THREE.Box3: .empty() has been renamed to .isEmpty().");return this.isEmpty()},isIntersectionBox:function(a){console.warn("THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox()."); +return this.intersectsBox(a)},isIntersectionSphere:function(a){console.warn("THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().");return this.intersectsSphere(a)},size:function(a){console.warn("THREE.Box3: .size() has been renamed to .getSize().");return this.getSize(a)}});Jg.prototype.center=function(a){console.warn("THREE.Line3: .center() has been renamed to .getCenter().");return this.getCenter(a)};Object.assign(P,{random16:function(){console.warn("THREE.Math: .random16() has been deprecated. Use Math.random() instead."); +return Math.random()},nearestPowerOfTwo:function(a){console.warn("THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().");return P.floorPowerOfTwo(a)},nextPowerOfTwo:function(a){console.warn("THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().");return P.ceilPowerOfTwo(a)}});Object.assign(Z.prototype,{flattenToArrayOffset:function(a,b){console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.");return this.toArray(a,b)},multiplyVector3:function(a){console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."); +return a.applyMatrix3(this)},multiplyVector3Array:function(){console.error("THREE.Matrix3: .multiplyVector3Array() has been removed.")},applyToBuffer:function(a){console.warn("THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.");return this.applyToBufferAttribute(a)},applyToVector3Array:function(){console.error("THREE.Matrix3: .applyToVector3Array() has been removed.")}});Object.assign(Q.prototype,{extractPosition:function(a){console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."); +return this.copyPosition(a)},flattenToArrayOffset:function(a,b){console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.");return this.toArray(a,b)},getPosition:function(){console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.");return(new n).setFromMatrixColumn(this,3)},setRotationFromQuaternion:function(a){console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."); +return this.makeRotationFromQuaternion(a)},multiplyToArray:function(){console.warn("THREE.Matrix4: .multiplyToArray() has been removed.")},multiplyVector3:function(a){console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},multiplyVector4:function(a){console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},multiplyVector3Array:function(){console.error("THREE.Matrix4: .multiplyVector3Array() has been removed.")}, +rotateAxis:function(a){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.");a.transformDirection(this)},crossVector:function(a){console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.");return a.applyMatrix4(this)},translate:function(){console.error("THREE.Matrix4: .translate() has been removed.")},rotateX:function(){console.error("THREE.Matrix4: .rotateX() has been removed.")},rotateY:function(){console.error("THREE.Matrix4: .rotateY() has been removed.")}, +rotateZ:function(){console.error("THREE.Matrix4: .rotateZ() has been removed.")},rotateByAxis:function(){console.error("THREE.Matrix4: .rotateByAxis() has been removed.")},applyToBuffer:function(a){console.warn("THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.");return this.applyToBufferAttribute(a)},applyToVector3Array:function(){console.error("THREE.Matrix4: .applyToVector3Array() has been removed.")},makeFrustum:function(a,b,c,d,e,f){console.warn("THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead."); +return this.makePerspective(a,b,d,c,e,f)}});Oa.prototype.isIntersectionLine=function(a){console.warn("THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().");return this.intersectsLine(a)};wa.prototype.multiplyVector3=function(a){console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.");return a.applyQuaternion(this)};Object.assign(Rb.prototype,{isIntersectionBox:function(a){console.warn("THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox()."); +return this.intersectsBox(a)},isIntersectionPlane:function(a){console.warn("THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().");return this.intersectsPlane(a)},isIntersectionSphere:function(a){console.warn("THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().");return this.intersectsSphere(a)}});Object.assign(ba.prototype,{area:function(){console.warn("THREE.Triangle: .area() has been renamed to .getArea().");return this.getArea()},barycoordFromPoint:function(a, +b){console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().");return this.getBarycoord(a,b)},midpoint:function(a){console.warn("THREE.Triangle: .midpoint() has been renamed to .getMidpoint().");return this.getMidpoint(a)},normal:function(a){console.warn("THREE.Triangle: .normal() has been renamed to .getNormal().");return this.getNormal(a)},plane:function(a){console.warn("THREE.Triangle: .plane() has been renamed to .getPlane().");return this.getPlane(a)}});Object.assign(ba, +{barycoordFromPoint:function(a,b,c,d,e){console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().");return ba.getBarycoord(a,b,c,d,e)},normal:function(a,b,c,d){console.warn("THREE.Triangle: .normal() has been renamed to .getNormal().");return ba.getNormal(a,b,c,d)}});Object.assign(Ib.prototype,{extractAllPoints:function(a){console.warn("THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.");return this.extractPoints(a)},extrude:function(a){console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead."); +return new ec(this,a)},makeGeometry:function(a){console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.");return new fc(this,a)}});Object.assign(B.prototype,{fromAttribute:function(a,b,c){console.warn("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().");return this.fromBufferAttribute(a,b,c)},distanceToManhattan:function(a){console.warn("THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().");return this.manhattanDistanceTo(a)}, +lengthManhattan:function(){console.warn("THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().");return this.manhattanLength()}});Object.assign(n.prototype,{setEulerFromRotationMatrix:function(){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(a){console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."); +return this.setFromMatrixPosition(a)},getScaleFromMatrix:function(a){console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().");return this.setFromMatrixScale(a)},getColumnFromMatrix:function(a,b){console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().");return this.setFromMatrixColumn(b,a)},applyProjection:function(a){console.warn("THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.");return this.applyMatrix4(a)}, +fromAttribute:function(a,b,c){console.warn("THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().");return this.fromBufferAttribute(a,b,c)},distanceToManhattan:function(a){console.warn("THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().");return this.manhattanDistanceTo(a)},lengthManhattan:function(){console.warn("THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().");return this.manhattanLength()}});Object.assign(da.prototype, +{fromAttribute:function(a,b,c){console.warn("THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().");return this.fromBufferAttribute(a,b,c)},lengthManhattan:function(){console.warn("THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().");return this.manhattanLength()}});Object.assign(C.prototype,{computeTangents:function(){console.error("THREE.Geometry: .computeTangents() has been removed.")},computeLineDistances:function(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}}); +Object.assign(D.prototype,{getChildByName:function(a){console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().");return this.getObjectByName(a)},renderDepth:function(){console.warn("THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.")},translate:function(a,b){console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.");return this.translateOnAxis(b,a)},getWorldRotation:function(){console.error("THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.")}}); +Object.defineProperties(D.prototype,{eulerOrder:{get:function(){console.warn("THREE.Object3D: .eulerOrder is now .rotation.order.");return this.rotation.order},set:function(a){console.warn("THREE.Object3D: .eulerOrder is now .rotation.order.");this.rotation.order=a}},useQuaternion:{get:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},set:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")}}}); +Object.defineProperties(Od.prototype,{objects:{get:function(){console.warn("THREE.LOD: .objects has been renamed to .levels.");return this.levels}}});Object.defineProperty(Oe.prototype,"useVertexTexture",{get:function(){console.warn("THREE.Skeleton: useVertexTexture has been removed.")},set:function(){console.warn("THREE.Skeleton: useVertexTexture has been removed.")}});Pd.prototype.initBones=function(){console.error("THREE.SkinnedMesh: initBones() has been removed.")};Object.defineProperty(G.prototype, +"__arcLengthDivisions",{get:function(){console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.");return this.arcLengthDivisions},set:function(a){console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.");this.arcLengthDivisions=a}});U.prototype.setLens=function(a,b){console.warn("THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup.");void 0!==b&&(this.filmGauge=b);this.setFocalLength(a)};Object.defineProperties(T.prototype, +{onlyShadow:{set:function(){console.warn("THREE.Light: .onlyShadow has been removed.")}},shadowCameraFov:{set:function(a){console.warn("THREE.Light: .shadowCameraFov is now .shadow.camera.fov.");this.shadow.camera.fov=a}},shadowCameraLeft:{set:function(a){console.warn("THREE.Light: .shadowCameraLeft is now .shadow.camera.left.");this.shadow.camera.left=a}},shadowCameraRight:{set:function(a){console.warn("THREE.Light: .shadowCameraRight is now .shadow.camera.right.");this.shadow.camera.right=a}},shadowCameraTop:{set:function(a){console.warn("THREE.Light: .shadowCameraTop is now .shadow.camera.top."); +this.shadow.camera.top=a}},shadowCameraBottom:{set:function(a){console.warn("THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.");this.shadow.camera.bottom=a}},shadowCameraNear:{set:function(a){console.warn("THREE.Light: .shadowCameraNear is now .shadow.camera.near.");this.shadow.camera.near=a}},shadowCameraFar:{set:function(a){console.warn("THREE.Light: .shadowCameraFar is now .shadow.camera.far.");this.shadow.camera.far=a}},shadowCameraVisible:{set:function(){console.warn("THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.")}}, +shadowBias:{set:function(a){console.warn("THREE.Light: .shadowBias is now .shadow.bias.");this.shadow.bias=a}},shadowDarkness:{set:function(){console.warn("THREE.Light: .shadowDarkness has been removed.")}},shadowMapWidth:{set:function(a){console.warn("THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.");this.shadow.mapSize.width=a}},shadowMapHeight:{set:function(a){console.warn("THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.");this.shadow.mapSize.height=a}}});Object.defineProperties(N.prototype, +{length:{get:function(){console.warn("THREE.BufferAttribute: .length has been deprecated. Use .count instead.");return this.array.length}},dynamic:{get:function(){console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.");return 35048===this.usage},set:function(){console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.");this.setUsage(35048)}}});Object.assign(N.prototype,{setDynamic:function(a){console.warn("THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead."); +this.setUsage(!0===a?35048:35044);return this},copyIndicesArray:function(){console.error("THREE.BufferAttribute: .copyIndicesArray() has been removed.")},setArray:function(){console.error("THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")}});Object.assign(E.prototype,{addIndex:function(a){console.warn("THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().");this.setIndex(a)},addAttribute:function(a,b,c){console.warn("THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute()."); +return b&&b.isBufferAttribute||b&&b.isInterleavedBufferAttribute?"index"===a?(console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),this.setIndex(b),this):this.setAttribute(a,b):(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.setAttribute(a,new N(b,c)))},addDrawCall:function(a,b,c){void 0!==c&&console.warn("THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.");console.warn("THREE.BufferGeometry: .addDrawCall() is now .addGroup()."); +this.addGroup(a,b)},clearDrawCalls:function(){console.warn("THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().");this.clearGroups()},computeTangents:function(){console.warn("THREE.BufferGeometry: .computeTangents() has been removed.")},computeOffsets:function(){console.warn("THREE.BufferGeometry: .computeOffsets() has been removed.")},removeAttribute:function(a){console.warn("THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().");return this.deleteAttribute(a)}}); +Object.defineProperties(E.prototype,{drawcalls:{get:function(){console.error("THREE.BufferGeometry: .drawcalls has been renamed to .groups.");return this.groups}},offsets:{get:function(){console.warn("THREE.BufferGeometry: .offsets has been renamed to .groups.");return this.groups}}});Object.defineProperties(pb.prototype,{dynamic:{get:function(){console.warn("THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.");return 35048===this.usage},set:function(a){console.warn("THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead."); +this.setUsage(a)}}});Object.assign(pb.prototype,{setDynamic:function(a){console.warn("THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.");this.setUsage(!0===a?35048:35044);return this},setArray:function(){console.error("THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")}});Object.assign(db.prototype,{getArrays:function(){console.error("THREE.ExtrudeBufferGeometry: .getArrays() has been removed.")}, +addShapeList:function(){console.error("THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.")},addShape:function(){console.error("THREE.ExtrudeBufferGeometry: .addShape() has been removed.")}});Object.defineProperties(pf.prototype,{dynamic:{set:function(){console.warn("THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.")}},onUpdate:{value:function(){console.warn("THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.");return this}}}); +Object.defineProperties(O.prototype,{wrapAround:{get:function(){console.warn("THREE.Material: .wrapAround has been removed.")},set:function(){console.warn("THREE.Material: .wrapAround has been removed.")}},overdraw:{get:function(){console.warn("THREE.Material: .overdraw has been removed.")},set:function(){console.warn("THREE.Material: .overdraw has been removed.")}},wrapRGB:{get:function(){console.warn("THREE.Material: .wrapRGB has been removed.");return new J}},shading:{get:function(){console.error("THREE."+ +this.type+": .shading has been removed. Use the boolean .flatShading instead.")},set:function(a){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead.");this.flatShading=1===a}},stencilMask:{get:function(){console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead.");return this.stencilFuncMask},set:function(a){console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead.");this.stencilFuncMask= +a}}});Object.defineProperties(Ra.prototype,{metal:{get:function(){console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.");return!1},set:function(){console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead")}}});Object.defineProperties(va.prototype,{derivatives:{get:function(){console.warn("THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.");return this.extensions.derivatives}, +set:function(a){console.warn("THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.");this.extensions.derivatives=a}}});Object.assign(hg.prototype,{clearTarget:function(a,b,c,d){console.warn("THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.");this.setRenderTarget(a);this.clear(b,c,d)},animate:function(a){console.warn("THREE.WebGLRenderer: .animate() is now .setAnimationLoop().");this.setAnimationLoop(a)},getCurrentRenderTarget:function(){console.warn("THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget()."); +return this.getRenderTarget()},getMaxAnisotropy:function(){console.warn("THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().");return this.capabilities.getMaxAnisotropy()},getPrecision:function(){console.warn("THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.");return this.capabilities.precision},resetGLState:function(){console.warn("THREE.WebGLRenderer: .resetGLState() is now .state.reset().");return this.state.reset()},supportsFloatTextures:function(){console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' )."); +return this.extensions.get("OES_texture_float")},supportsHalfFloatTextures:function(){console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' ).");return this.extensions.get("OES_texture_half_float")},supportsStandardDerivatives:function(){console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' ).");return this.extensions.get("OES_standard_derivatives")},supportsCompressedTextureS3TC:function(){console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' )."); +return this.extensions.get("WEBGL_compressed_texture_s3tc")},supportsCompressedTexturePVRTC:function(){console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' ).");return this.extensions.get("WEBGL_compressed_texture_pvrtc")},supportsBlendMinMax:function(){console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' ).");return this.extensions.get("EXT_blend_minmax")},supportsVertexTextures:function(){console.warn("THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures."); +return this.capabilities.vertexTextures},supportsInstancedArrays:function(){console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' ).");return this.extensions.get("ANGLE_instanced_arrays")},enableScissorTest:function(a){console.warn("THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().");this.setScissorTest(a)},initMaterial:function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")},addPrePlugin:function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")}, +addPostPlugin:function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")},updateShadowMap:function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")},setFaceCulling:function(){console.warn("THREE.WebGLRenderer: .setFaceCulling() has been removed.")},allocTextureUnit:function(){console.warn("THREE.WebGLRenderer: .allocTextureUnit() has been removed.")},setTexture:function(){console.warn("THREE.WebGLRenderer: .setTexture() has been removed.")},setTexture2D:function(){console.warn("THREE.WebGLRenderer: .setTexture2D() has been removed.")}, +setTextureCube:function(){console.warn("THREE.WebGLRenderer: .setTextureCube() has been removed.")},getActiveMipMapLevel:function(){console.warn("THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().");return this.getActiveMipmapLevel()}});Object.defineProperties(hg.prototype,{shadowMapEnabled:{get:function(){return this.shadowMap.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");this.shadowMap.enabled=a}},shadowMapType:{get:function(){return this.shadowMap.type}, +set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");this.shadowMap.type=a}},shadowMapCullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")}},context:{get:function(){console.warn("THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.");return this.getContext()}}}); +Object.defineProperties(Ih.prototype,{cullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")}},renderReverseSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")}}, +renderSingleSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")}}});Object.defineProperties(Bb.prototype,{activeCubeFace:{set:function(){console.warn("THREE.WebGLRenderTargetCube: .activeCubeFace has been removed. It is now the second parameter of WebGLRenderer.setRenderTarget().")}}, +activeMipMapLevel:{set:function(){console.warn("THREE.WebGLRenderTargetCube: .activeMipMapLevel has been removed. It is now the third parameter of WebGLRenderer.setRenderTarget().")}}});Object.defineProperties(la.prototype,{wrapS:{get:function(){console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.");return this.texture.wrapS},set:function(a){console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.");this.texture.wrapS=a}},wrapT:{get:function(){console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."); +return this.texture.wrapT},set:function(a){console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.");this.texture.wrapT=a}},magFilter:{get:function(){console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.");return this.texture.magFilter},set:function(a){console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.");this.texture.magFilter=a}},minFilter:{get:function(){console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.");return this.texture.minFilter}, +set:function(a){console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.");this.texture.minFilter=a}},anisotropy:{get:function(){console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.");return this.texture.anisotropy},set:function(a){console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.");this.texture.anisotropy=a}},offset:{get:function(){console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset.");return this.texture.offset}, +set:function(a){console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset.");this.texture.offset=a}},repeat:{get:function(){console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat.");return this.texture.repeat},set:function(a){console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat.");this.texture.repeat=a}},format:{get:function(){console.warn("THREE.WebGLRenderTarget: .format is now .texture.format.");return this.texture.format},set:function(a){console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."); +this.texture.format=a}},type:{get:function(){console.warn("THREE.WebGLRenderTarget: .type is now .texture.type.");return this.texture.type},set:function(a){console.warn("THREE.WebGLRenderTarget: .type is now .texture.type.");this.texture.type=a}},generateMipmaps:{get:function(){console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.");return this.texture.generateMipmaps},set:function(a){console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."); +this.texture.generateMipmaps=a}}});Object.defineProperties(gg.prototype,{standing:{set:function(){console.warn("THREE.WebVRManager: .standing has been removed.")}},userHeight:{set:function(){console.warn("THREE.WebVRManager: .userHeight has been removed.")}}});Object.defineProperties(dd.prototype,{load:{value:function(a){console.warn("THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.");var b=this;(new nf).load(a,function(a){b.setBuffer(a)});return this}},startTime:{set:function(){console.warn("THREE.Audio: .startTime is now .play( delay ).")}}}); +Dg.prototype.getData=function(){console.warn("THREE.AudioAnalyser: .getData() is now .getFrequencyData().");return this.getFrequencyData()};Cc.prototype.updateCubeMap=function(a,b){console.warn("THREE.CubeCamera: .updateCubeMap() is now .update().");return this.update(a,b)};Jb.crossOrigin=void 0;Jb.loadTexture=function(a,b,c,d){console.warn("THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.");var e=new Ze;e.setCrossOrigin(this.crossOrigin);a=e.load(a,c,void 0,d); +b&&(a.mapping=b);return a};Jb.loadTextureCube=function(a,b,c,d){console.warn("THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.");var e=new Ye;e.setCrossOrigin(this.crossOrigin);a=e.load(a,c,void 0,d);b&&(a.mapping=b);return a};Jb.loadCompressedTexture=function(){console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")};Jb.loadCompressedTextureCube=function(){console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")}; +"undefined"!==typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"110dev"}}));k.ACESFilmicToneMapping=5;k.AddEquation=100;k.AddOperation=2;k.AdditiveBlending=2;k.AlphaFormat=1021;k.AlwaysDepth=1;k.AlwaysStencilFunc=519;k.AmbientLight=ff;k.AmbientLightProbe=yg;k.AnimationClip=Ma;k.AnimationLoader=pg;k.AnimationMixer=Fg;k.AnimationObjectGroup=ci;k.AnimationUtils=ta;k.ArcCurve=cd;k.ArrayCamera=Kd;k.ArrowHelper=ub;k.Audio=dd;k.AudioAnalyser=Dg;k.AudioContext= +Bg;k.AudioListener=Ag;k.AudioLoader=nf;k.AxesHelper=ve;k.AxisHelper=function(a){console.warn("THREE.AxisHelper has been renamed to THREE.AxesHelper.");return new ve(a)};k.BackSide=1;k.BasicDepthPacking=3200;k.BasicShadowMap=0;k.BinaryTextureLoader=function(a){console.warn("THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.");return new Xe(a)};k.Bone=ig;k.BooleanKeyframeTrack=Te;k.BoundingBoxHelper=function(a,b){console.warn("THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead."); +return new tb(a,b)};k.Box2=Ig;k.Box3=ab;k.Box3Helper=te;k.BoxBufferGeometry=Gd;k.BoxGeometry=Zg;k.BoxHelper=tb;k.BufferAttribute=N;k.BufferGeometry=E;k.BufferGeometryLoader=lf;k.ByteType=1010;k.Cache=tc;k.Camera=bb;k.CameraHelper=se;k.CanvasRenderer=function(){console.error("THREE.CanvasRenderer has been removed")};k.CanvasTexture=Qd;k.CatmullRomCurve3=na;k.CineonToneMapping=4;k.CircleBufferGeometry=Yc;k.CircleGeometry=je;k.ClampToEdgeWrapping=1001;k.Clock=zg;k.ClosedSplineCurve3=ji;k.Color=J;k.ColorKeyframeTrack= +Ue;k.CompressedTexture=Lc;k.CompressedTextureLoader=qg;k.ConeBufferGeometry=ie;k.ConeGeometry=he;k.CubeCamera=Cc;k.CubeGeometry=Zg;k.CubeReflectionMapping=301;k.CubeRefractionMapping=302;k.CubeTexture=nb;k.CubeTextureLoader=Ye;k.CubeUVReflectionMapping=306;k.CubeUVRefractionMapping=307;k.CubicBezierCurve=Sa;k.CubicBezierCurve3=fb;k.CubicInterpolant=Re;k.CullFaceBack=1;k.CullFaceFront=2;k.CullFaceFrontBack=3;k.CullFaceNone=0;k.Curve=G;k.CurvePath=sb;k.CustomBlending=5;k.CylinderBufferGeometry=rb;k.CylinderGeometry= +hc;k.Cylindrical=hi;k.DataTexture=Yb;k.DataTexture2DArray=Dc;k.DataTexture3D=Ec;k.DataTextureLoader=Xe;k.DecrementStencilOp=7683;k.DecrementWrapStencilOp=34056;k.DefaultLoadingManager=Zh;k.DepthFormat=1026;k.DepthStencilFormat=1027;k.DepthTexture=Rd;k.DirectionalLight=ef;k.DirectionalLightHelper=ld;k.DirectionalLightShadow=df;k.DiscreteInterpolant=Se;k.DodecahedronBufferGeometry=Qc;k.DodecahedronGeometry=Wd;k.DoubleSide=2;k.DstAlphaFactor=206;k.DstColorFactor=208;k.DynamicBufferAttribute=function(a, +b){console.warn("THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.");return(new N(a,b)).setDynamic(!0)};k.DynamicCopyUsage=35050;k.DynamicDrawUsage=35048;k.DynamicReadUsage=35049;k.EdgesGeometry=Xc;k.EdgesHelper=function(a,b){console.warn("THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.");return new X(new Xc(a.geometry),new R({color:void 0!==b?b:16777215}))};k.EllipseCurve=Ja;k.EqualDepth=4;k.EqualStencilFunc=514;k.EquirectangularReflectionMapping= +303;k.EquirectangularRefractionMapping=304;k.Euler=Pb;k.EventDispatcher=Ba;k.ExtrudeBufferGeometry=db;k.ExtrudeGeometry=ec;k.Face3=yc;k.Face4=function(a,b,c,d,e,f,g){console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead.");return new yc(a,b,c,e,f,g)};k.FaceColors=1;k.FaceNormalsHelper=re;k.FileLoader=Na;k.FlatShading=1;k.Float32Attribute=function(a,b){console.warn("THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.");return new A(a, +b)};k.Float32BufferAttribute=A;k.Float64Attribute=function(a,b){console.warn("THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.");return new Cd(a,b)};k.Float64BufferAttribute=Cd;k.FloatType=1015;k.Fog=Me;k.FogExp2=Le;k.Font=vg;k.FontLoader=wg;k.FrontFaceDirectionCCW=1;k.FrontFaceDirectionCW=0;k.FrontSide=0;k.Frustum=Ed;k.GammaEncoding=3007;k.Geometry=C;k.GeometryUtils={merge:function(a,b,c){console.warn("THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead."); +if(b.isMesh){b.matrixAutoUpdate&&b.updateMatrix();var d=b.matrix;b=b.geometry}a.merge(b,d,c)},center:function(a){console.warn("THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.");return a.center()}};k.GreaterDepth=6;k.GreaterEqualDepth=5;k.GreaterEqualStencilFunc=518;k.GreaterStencilFunc=516;k.GridHelper=qf;k.Group=Hc;k.HalfFloatType=1016;k.HemisphereLight=$e;k.HemisphereLightHelper=id;k.HemisphereLightProbe=xg;k.IcosahedronBufferGeometry=Pc;k.IcosahedronGeometry= +Vd;k.ImageBitmapLoader=tg;k.ImageLoader=bd;k.ImageUtils=Jb;k.ImmediateRenderObject=pe;k.IncrementStencilOp=7682;k.IncrementWrapStencilOp=34055;k.InstancedBufferAttribute=kf;k.InstancedBufferGeometry=jf;k.InstancedInterleavedBuffer=Gg;k.InstancedMesh=Pe;k.Int16Attribute=function(a,b){console.warn("THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.");return new Ad(a,b)};k.Int16BufferAttribute=Ad;k.Int32Attribute=function(a,b){console.warn("THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead."); +return new Bd(a,b)};k.Int32BufferAttribute=Bd;k.Int8Attribute=function(a,b){console.warn("THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.");return new xd(a,b)};k.Int8BufferAttribute=xd;k.IntType=1013;k.InterleavedBuffer=pb;k.InterleavedBufferAttribute=Ld;k.Interpolant=Ia;k.InterpolateDiscrete=2300;k.InterpolateLinear=2301;k.InterpolateSmooth=2302;k.InvertStencilOp=5386;k.JSONLoader=function(){console.error("THREE.JSONLoader has been removed.")};k.KeepStencilOp=7680; +k.KeyframeTrack=sa;k.LOD=Od;k.LatheBufferGeometry=Wc;k.LatheGeometry=ge;k.Layers=Tf;k.LensFlare=function(){console.error("THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js")};k.LessDepth=2;k.LessEqualDepth=3;k.LessEqualStencilFunc=515;k.LessStencilFunc=513;k.Light=T;k.LightProbe=Xa;k.LightProbeHelper=jd;k.LightShadow=hb;k.Line=ra;k.Line3=Jg;k.LineBasicMaterial=R;k.LineCurve=Da;k.LineCurve3=Ta;k.LineDashedMaterial=oc;k.LineLoop=Qe;k.LinePieces=1;k.LineSegments=X;k.LineStrip=0;k.LinearEncoding= +3E3;k.LinearFilter=1006;k.LinearInterpolant=ke;k.LinearMipMapLinearFilter=1008;k.LinearMipMapNearestFilter=1007;k.LinearMipmapLinearFilter=1008;k.LinearMipmapNearestFilter=1007;k.LinearToneMapping=1;k.Loader=V;k.LoaderUtils=eh;k.LoadingManager=og;k.LogLuvEncoding=3003;k.LoopOnce=2200;k.LoopPingPong=2202;k.LoopRepeat=2201;k.LuminanceAlphaFormat=1025;k.LuminanceFormat=1024;k.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2};k.Material=O;k.MaterialLoader=hf;k.Math=P;k.Matrix3=Z;k.Matrix4=Q;k.MaxEquation= +104;k.Mesh=ea;k.MeshBasicMaterial=Ga;k.MeshDepthMaterial=Db;k.MeshDistanceMaterial=Eb;k.MeshFaceMaterial=function(a){console.warn("THREE.MeshFaceMaterial has been removed. Use an Array instead.");return a};k.MeshLambertMaterial=mc;k.MeshMatcapMaterial=nc;k.MeshNormalMaterial=lc;k.MeshPhongMaterial=Ra;k.MeshPhysicalMaterial=jc;k.MeshStandardMaterial=eb;k.MeshToonMaterial=kc;k.MinEquation=103;k.MirroredRepeatWrapping=1002;k.MixOperation=1;k.MultiMaterial=function(a){void 0===a&&(a=[]);console.warn("THREE.MultiMaterial has been removed. Use an Array instead."); +a.isMultiMaterial=!0;a.materials=a;a.clone=function(){return a.slice()};return a};k.MultiplyBlending=4;k.MultiplyOperation=0;k.NearestFilter=1003;k.NearestMipMapLinearFilter=1005;k.NearestMipMapNearestFilter=1004;k.NearestMipmapLinearFilter=1005;k.NearestMipmapNearestFilter=1004;k.NeverDepth=0;k.NeverStencilFunc=512;k.NoBlending=0;k.NoColors=0;k.NoToneMapping=0;k.NormalBlending=1;k.NotEqualDepth=7;k.NotEqualStencilFunc=517;k.NumberKeyframeTrack=$c;k.Object3D=D;k.ObjectLoader=mf;k.ObjectSpaceNormalMap= +1;k.OctahedronBufferGeometry=bc;k.OctahedronGeometry=Ud;k.OneFactor=201;k.OneMinusDstAlphaFactor=207;k.OneMinusDstColorFactor=209;k.OneMinusSrcAlphaFactor=205;k.OneMinusSrcColorFactor=203;k.OrthographicCamera=oe;k.PCFShadowMap=1;k.PCFSoftShadowMap=2;k.ParametricBufferGeometry=ac;k.ParametricGeometry=Nc;k.Particle=function(a){console.warn("THREE.Particle has been renamed to THREE.Sprite.");return new Md(a)};k.ParticleBasicMaterial=function(a){console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial."); +return new Qa(a)};k.ParticleSystem=function(a,b){console.warn("THREE.ParticleSystem has been renamed to THREE.Points.");return new Kc(a,b)};k.ParticleSystemMaterial=function(a){console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.");return new Qa(a)};k.Path=Wa;k.PerspectiveCamera=U;k.Plane=Oa;k.PlaneBufferGeometry=Zb;k.PlaneGeometry=Fd;k.PlaneHelper=ue;k.PointCloud=function(a,b){console.warn("THREE.PointCloud has been renamed to THREE.Points.");return new Kc(a,b)};k.PointCloudMaterial= +function(a){console.warn("THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.");return new Qa(a)};k.PointLight=cf;k.PointLightHelper=gd;k.Points=Kc;k.PointsMaterial=Qa;k.PolarGridHelper=rf;k.PolyhedronBufferGeometry=Ea;k.PolyhedronGeometry=Sd;k.PositionalAudio=Cg;k.PositionalAudioHelper=kd;k.PropertyBinding=ya;k.PropertyMixer=Eg;k.QuadraticBezierCurve=Ua;k.QuadraticBezierCurve3=gb;k.Quaternion=wa;k.QuaternionKeyframeTrack=le;k.QuaternionLinearInterpolant=Ve;k.REVISION="110dev";k.RGBADepthPacking= +3201;k.RGBAFormat=1023;k.RGBA_ASTC_10x10_Format=37819;k.RGBA_ASTC_10x5_Format=37816;k.RGBA_ASTC_10x6_Format=37817;k.RGBA_ASTC_10x8_Format=37818;k.RGBA_ASTC_12x10_Format=37820;k.RGBA_ASTC_12x12_Format=37821;k.RGBA_ASTC_4x4_Format=37808;k.RGBA_ASTC_5x4_Format=37809;k.RGBA_ASTC_5x5_Format=37810;k.RGBA_ASTC_6x5_Format=37811;k.RGBA_ASTC_6x6_Format=37812;k.RGBA_ASTC_8x5_Format=37813;k.RGBA_ASTC_8x6_Format=37814;k.RGBA_ASTC_8x8_Format=37815;k.RGBA_PVRTC_2BPPV1_Format=35843;k.RGBA_PVRTC_4BPPV1_Format=35842; +k.RGBA_S3TC_DXT1_Format=33777;k.RGBA_S3TC_DXT3_Format=33778;k.RGBA_S3TC_DXT5_Format=33779;k.RGBDEncoding=3006;k.RGBEEncoding=3002;k.RGBEFormat=1023;k.RGBFormat=1022;k.RGBM16Encoding=3005;k.RGBM7Encoding=3004;k.RGB_ETC1_Format=36196;k.RGB_PVRTC_2BPPV1_Format=35841;k.RGB_PVRTC_4BPPV1_Format=35840;k.RGB_S3TC_DXT1_Format=33776;k.RawShaderMaterial=Zc;k.Ray=Rb;k.Raycaster=ei;k.RectAreaLight=gf;k.RectAreaLightHelper=hd;k.RedFormat=1028;k.ReinhardToneMapping=2;k.RepeatWrapping=1E3;k.ReplaceStencilOp=7681; +k.ReverseSubtractEquation=102;k.RingBufferGeometry=Vc;k.RingGeometry=fe;k.Scene=wd;k.SceneUtils={createMultiMaterialObject:function(){console.error("THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js")},detach:function(){console.error("THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js")},attach:function(){console.error("THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js")}};k.ShaderChunk=S;k.ShaderLib=cb;k.ShaderMaterial=va;k.ShadowMaterial=ic;k.Shape= +Ib;k.ShapeBufferGeometry=gc;k.ShapeGeometry=fc;k.ShapePath=ug;k.ShapeUtils=qb;k.ShortType=1011;k.Skeleton=Oe;k.SkeletonHelper=fd;k.SkinnedMesh=Pd;k.SmoothShading=2;k.Sphere=mb;k.SphereBufferGeometry=Hb;k.SphereGeometry=ee;k.Spherical=gi;k.SphericalHarmonics3=of;k.SphericalReflectionMapping=305;k.Spline=Lg;k.SplineCurve=Va;k.SplineCurve3=ki;k.SpotLight=bf;k.SpotLightHelper=ed;k.SpotLightShadow=af;k.Sprite=Md;k.SpriteMaterial=Gb;k.SrcAlphaFactor=204;k.SrcAlphaSaturateFactor=210;k.SrcColorFactor=202; +k.StaticCopyUsage=35046;k.StaticDrawUsage=35044;k.StaticReadUsage=35045;k.StereoCamera=ai;k.StreamCopyUsage=35042;k.StreamDrawUsage=35040;k.StreamReadUsage=35041;k.StringKeyframeTrack=We;k.SubtractEquation=101;k.SubtractiveBlending=3;k.TOUCH={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3};k.TangentSpaceNormalMap=0;k.TetrahedronBufferGeometry=Oc;k.TetrahedronGeometry=Td;k.TextBufferGeometry=Uc;k.TextGeometry=de;k.Texture=Y;k.TextureLoader=Ze;k.TorusBufferGeometry=Sc;k.TorusGeometry=Zd;k.TorusKnotBufferGeometry= +Rc;k.TorusKnotGeometry=Yd;k.Triangle=ba;k.TriangleFanDrawMode=2;k.TriangleStripDrawMode=1;k.TrianglesDrawMode=0;k.TubeBufferGeometry=cc;k.TubeGeometry=Xd;k.UVMapping=300;k.Uint16Attribute=function(a,b){console.warn("THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.");return new Sb(a,b)};k.Uint16BufferAttribute=Sb;k.Uint32Attribute=function(a,b){console.warn("THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.");return new Tb(a, +b)};k.Uint32BufferAttribute=Tb;k.Uint8Attribute=function(a,b){console.warn("THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.");return new yd(a,b)};k.Uint8BufferAttribute=yd;k.Uint8ClampedAttribute=function(a,b){console.warn("THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.");return new zd(a,b)};k.Uint8ClampedBufferAttribute=zd;k.Uncharted2ToneMapping=3;k.Uniform=pf;k.UniformsLib=L;k.UniformsUtils=Ck;k.UnsignedByteType= +1009;k.UnsignedInt248Type=1020;k.UnsignedIntType=1014;k.UnsignedShort4444Type=1017;k.UnsignedShort5551Type=1018;k.UnsignedShort565Type=1019;k.UnsignedShortType=1012;k.VSMShadowMap=3;k.Vector2=B;k.Vector3=n;k.Vector4=da;k.VectorKeyframeTrack=ad;k.Vertex=function(a,b,c){console.warn("THREE.Vertex has been removed. Use THREE.Vector3 instead.");return new n(a,b,c)};k.VertexColors=2;k.VertexNormalsHelper=qe;k.VideoTexture=lg;k.WebGLMultisampleRenderTarget=Sf;k.WebGLRenderTarget=la;k.WebGLRenderTargetCube= +Bb;k.WebGLRenderer=hg;k.WebGLUtils=Kh;k.WireframeGeometry=Mc;k.WireframeHelper=function(a,b){console.warn("THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.");return new X(new Mc(a.geometry),new R({color:void 0!==b?b:16777215}))};k.WrapAroundEnding=2402;k.XHRLoader=function(a){console.warn("THREE.XHRLoader has been renamed to THREE.FileLoader.");return new Na(a)};k.ZeroCurvatureEnding=2400;k.ZeroFactor=200;k.ZeroSlopeEnding=2401;k.ZeroStencilOp=0;k.sRGBEncoding=3001;Object.defineProperty(k, +"__esModule",{value:!0})}); diff --git a/01_Code/physical_computing_interface/simulation/package-lock.json b/01_Code/physical_computing_interface/simulation/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..467c6d885eff7ffbce8b062fcc575bbcc2d2d06b --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/package-lock.json @@ -0,0 +1,1039 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@tensorflow/tfjs": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs/-/tfjs-1.3.2.tgz", + "integrity": "sha512-2QrKHtM6DraAgWL9DJwluz+/CJ5EbPN9tdNAFGq83fSUm3cNEK37UPsWdQ1QXXBqMczg1uyLEmPgFq6Lsy2/Vg==", + "requires": { + "@tensorflow/tfjs-converter": "1.3.2", + "@tensorflow/tfjs-core": "1.3.2", + "@tensorflow/tfjs-data": "1.3.2", + "@tensorflow/tfjs-layers": "1.3.2" + } + }, + "@tensorflow/tfjs-converter": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-1.3.2.tgz", + "integrity": "sha512-HTGT5sinSzayH/RXwoeebtc5pwTU9E3JzlcLfBa0HZVkkeKadhtzqh3QH+BFuuNsvX691AiIHv4P7SylUu1XQg==" + }, + "@tensorflow/tfjs-core": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-1.3.2.tgz", + "integrity": "sha512-42WlbkbD10F11qN7k+GMjdPB62DGGnz7czkvk+lT501qWUrQI8swTjZfgMijcTWyQSeJuLa97EOL9n/Gn3Yfpw==", + "requires": { + "@types/offscreencanvas": "~2019.3.0", + "@types/seedrandom": "2.4.27", + "@types/webgl-ext": "0.0.30", + "@types/webgl2": "0.0.4", + "node-fetch": "~2.1.2", + "seedrandom": "2.4.3" + } + }, + "@tensorflow/tfjs-data": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-data/-/tfjs-data-1.3.2.tgz", + "integrity": "sha512-1Ed6rb1OAcQc70jQqAN6UYch56p7FHafQ4cDzEDoS1tgfn0Of6Gb3KETa0RJMIpWvlrr/Oa5qwqDk8Tlusn7+Q==", + "requires": { + "@types/node-fetch": "^2.1.2", + "node-fetch": "~2.1.2" + } + }, + "@tensorflow/tfjs-layers": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-layers/-/tfjs-layers-1.3.2.tgz", + "integrity": "sha512-Y+zsoXlXWYopv+u3woMgE18TsEtzcRUVdgMQxuQm1FGRFAltyKxHzVO44b/nVdC59kRHIv0wrLU4G2hSQlprqA==" + }, + "@tensorflow/tfjs-node": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-node/-/tfjs-node-1.3.2.tgz", + "integrity": "sha512-inWEd+WmVUU/UdLjYSNugTAa2MBuKUd6QtcGDk8u1+yV54/ulxYQlsITB4g/6KPnABlnpM49J342pt+/j2Z8uA==", + "requires": { + "@tensorflow/tfjs": "1.3.2", + "adm-zip": "^0.4.11", + "google-protobuf": "^3.9.2", + "https-proxy-agent": "^2.2.1", + "node-pre-gyp": "0.13.0", + "progress": "^2.0.0", + "rimraf": "^2.6.2", + "tar": "^4.4.6" + } + }, + "@types/node": { + "version": "12.12.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz", + "integrity": "sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==" + }, + "@types/node-fetch": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.4.tgz", + "integrity": "sha512-Oz6id++2qAOFuOlE1j0ouk1dzl3mmI1+qINPNBhi9nt/gVOz0G+13Ao6qjhdF0Ys+eOkhu6JnFmt38bR3H0POQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/offscreencanvas": { + "version": "2019.3.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz", + "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==" + }, + "@types/seedrandom": { + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.27.tgz", + "integrity": "sha1-nbVjk33YaRX2kJK8QyWdL0hXjkE=" + }, + "@types/webgl-ext": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/webgl-ext/-/webgl-ext-0.0.30.tgz", + "integrity": "sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==" + }, + "@types/webgl2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/webgl2/-/webgl2-0.0.4.tgz", + "integrity": "sha512-PACt1xdErJbMUOUweSrbVM7gSIYm1vTncW2hF6Os/EeWi6TXYAYMPp+8v6rzHmypE5gHrxaxZNXgMkJVIdZpHw==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "adm-zip": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==" + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "edit-json-file": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/edit-json-file/-/edit-json-file-1.3.2.tgz", + "integrity": "sha512-0I7+oa195vpuiO/pOvO0F+ngoFLyU5dn0Zbr56D9lER1lwxq0ZM1jhCtTUqs4lvEPBUopnK9CHszRkfnqNi2Rg==", + "requires": { + "find-value": "^1.0.3", + "iterate-object": "^1.3.2", + "r-json": "^1.2.5", + "set-value": "^3.0.1", + "w-json": "^1.3.5" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-value": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/find-value/-/find-value-1.0.11.tgz", + "integrity": "sha512-ECGsf/85PJgK/kOv6q1/MA1pawuBvQi12td/7MQHakfE7/P2jFgUeo0BL1dbAF97DPOTrtsrFBHkwBnPMWZiKg==" + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "google-protobuf": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.11.0.tgz", + "integrity": "sha512-Pni0ZGKZc/FpaRiz2n11+FfjzeuoUpnMdtuqoBUandjsEPsLDLh5C0yacl/bgNAFaZkyUgIGcGowW34u6mVWPw==" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "iterate-object": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.3.tgz", + "integrity": "sha512-DximWbkke36cnrSfNJv6bgcB2QOMV9PRD2FiowwzCoMsh8RupFLdbNIzWe+cVDWT+NIMNJgGlB1dGxP6kpzGtA==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==" + }, + "mime-types": { + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "requires": { + "mime-db": "1.42.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "needle": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" + }, + "node-pre-gyp": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz", + "integrity": "sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==" + }, + "npm-packlist": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.6.tgz", + "integrity": "sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "r-json": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/r-json/-/r-json-1.2.9.tgz", + "integrity": "sha512-E5u25XBE7PpZmH5XwtthAmNvSLMTygDQMpcPtCTUBdvwPaqgIYJrxlRQJhG55Sgz7uC0Tuyh5nqNrsDT3uiefA==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "seedrandom": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz", + "integrity": "sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-value": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-3.0.1.tgz", + "integrity": "sha512-w6n3GUPYAWQj4ZyHWzD7K2FnFXHx9OTwJYbWg+6nXjG8sCLfs9DGv+KlqglKIIJx+ks7MlFuwFW2RBPb+8V+xg==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "three": { + "version": "0.110.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.110.0.tgz", + "integrity": "sha512-wlurH8XBO9Sd5VIw8nBa+taLR20kqaI4e9FiuMh6tqK8eOS2q2R+ZoUyufbyDTVTHhs8GiTbv0r2CMLkwerFJg==" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "w-json": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/w-json/-/w-json-1.3.9.tgz", + "integrity": "sha512-9hvWhnNZ5J3ypOJt2LzmAQBl1NrQBZED/E8MwkZQ+lGTq51hyR9zeH0dgaJzLfzOVoTbxe/yPqL10c5WVsHvbg==" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } +} diff --git a/01_Code/physical_computing_interface/simulation/visualization/geometry.js b/01_Code/physical_computing_interface/simulation/visualization/geometry.js new file mode 100644 index 0000000000000000000000000000000000000000..214eb64b4c02d040ec22f8fe912f6d7c0f15f8bd --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/visualization/geometry.js @@ -0,0 +1,620 @@ +// let _rhino3dm = null; +// // wait for the rhino3dm web assembly to load asynchronously +// rhino3dm().then(function(m) {// todo change call to app.js +// _rhino3dm = m; // global +// initRhino3dm(1,10,createVoxelnotRhino,true,true); +// //saveJSON(); +// }); + +// initialize +function initRhino3dm(latticeSize,voxelSize,voxelBuilder,addForces,solve) {//later change type to dictiary + console.log("Loaded RhinoScript"); + + // var voxelSize=10.0; + // var latticeSize=5; + + createLattice(voxelSize,latticeSize,latticeSize,latticeSize,voxelBuilder); + + restrainBelow(-voxelSize/2); + if(addForces){ //don't add forces chiral //todo fix + addForceAbove(0.75*voxelSize*latticeSize,{x:0,y:-400,z:0}); + } + + if(solve){ + solveFea(); + } + +} + +//////////////////////////////////////////////////////////// +function createLattice(size,sizeX,sizeY,sizeZ,voxelBuilder){ + + for(var i=0;i<sizeX;i++){ + for(var j=0;j<sizeY;j++){ + for(var k=0;k<sizeZ;k++){ + voxelBuilder(size,new THREE.Vector3(i*size,j*size,k*size)); + } + } + } + + +} +function simulate(size,timeline,voxelBuilder ){ + init(); + console.log(timeline.length) + for(var i=0;i<timeline.length;i++){ //TODO LATER CHANGE TO OCCUPANCY + console.log(timeline[i]); + voxelBuilder(size,new THREE.Vector3(timeline[i].x*size,timeline[i].y*size,timeline[i].z*size)); + } + drawStructure(); + colorEdges(); + animate(); +} + +function createVoxel(size,position){ + + + var sphere = new _rhino3dm.Sphere([0,0,0], size/2); + var box = sphere.toBrep().getBoundingBox(); + // console.log(box.min) + box = box.toBrep(); + + for(var i=0; i<6;i++){//for each face + + // var restrained=false; + // var force=new THREE.Vector3(0,0,0); + // if(i==0){ + // restrained=true; + // } + // if(i==2){ + // force=new THREE.Vector3(0,-200,0); + // // restrained=true; + // } + nodesIndices=[]; + var face=box.faces().get(i); + + + nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(size , size/2))))); + nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(size/2, 0 ))))); + nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(0 , size/2))))); + nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(size/2, size ))))); + + linkNodes(nodesIndices); + + } +} + +function createChiralVoxel(size,position){ + + + var sphere = new _rhino3dm.Sphere([0,0,0], size/2); + var box = sphere.toBrep().getBoundingBox(); + // console.log(box.min) + box = box.toBrep(); + + for(var i=0; i<6;i++){//for each face + + var nodesIndices=[]; + var face=box.faces().get(i); + + + nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(size , size/2))))); + nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(size/2, 0 ))))); + nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(0 , size/2))))); + nodesIndices.push(checkandAdd(add(position,toPosition(face.pointAt(size/2, size ))))); + + // linkNodes(nodesIndices); + + var n=8; + var c= new _rhino3dm.Circle(size/3.5); + c=c.toNurbsCurve(); + var rot=[1,0,0]; + + var nodesIndices1=[]; + + c.domain=[0,1]; + // console.log(rot); + // console.log(c.tangentAt(i*1/4+1/4)); + rot=c.tangentAt(i*1/4+1/4); + if(i>3){ + rot=face.normalAt(0, 0); + } + c.rotate(Math.PI/2,rot , [0,0,0]); + c.translate(face.pointAt(size/2, size/2)); + for(var ii=0; ii<n;ii++){//for each face + // createNode(toPosition(c.pointAt(ii*1/n)),'e',false,[]); + nodesIndices1.push(checkandAdd(add(position,toPosition(c.pointAt(ii*1/n))))); + } + linkNodes(nodesIndices1); + + if(i==0){ + addEdge(nodesIndices[0], nodesIndices1[1], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[1], nodesIndices1[3], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[2], nodesIndices1[5], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[3], nodesIndices1[7], 1.0, 0.284 , 30.0e6); + + }else if(i==1){ + addEdge(nodesIndices[3], nodesIndices1[1], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[0], nodesIndices1[3], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[1], nodesIndices1[5], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[2], nodesIndices1[7], 1.0, 0.284 , 30.0e6); + + }else if(i==2){ + addEdge(nodesIndices[0], nodesIndices1[5], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[1], nodesIndices1[7], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[2], nodesIndices1[1], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[3], nodesIndices1[3], 1.0, 0.284 , 30.0e6); + + var force=new THREE.Vector3(0,-400,0); + addForce('n'+nodesIndices[0],force); + addForce('n'+nodesIndices[1],force); + addForce('n'+nodesIndices[2],force); + addForce('n'+nodesIndices[3],force); + + }else if(i==3){ + + addEdge(nodesIndices[3], nodesIndices1[5], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[0], nodesIndices1[7], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[1], nodesIndices1[1], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[2], nodesIndices1[3], 1.0, 0.284 , 30.0e6); + }else if(i==4){ + addEdge(nodesIndices[0], nodesIndices1[5], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[1], nodesIndices1[7], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[2], nodesIndices1[1], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[3], nodesIndices1[3], 1.0, 0.284 , 30.0e6); + }else if(i==5){ + addEdge(nodesIndices[0], nodesIndices1[5], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[1], nodesIndices1[3], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[2], nodesIndices1[1], 1.0, 0.284 , 30.0e6); + addEdge(nodesIndices[3], nodesIndices1[7], 1.0, 0.284 , 30.0e6); + } + } +} + +///////////////// +function createOldVoxelnotRhino(size,position){ + addNode(position.clone().add(new THREE.Vector3(0,0,0)),true, new THREE.Vector3(0,0,0)); + + addNode(position.clone().add(new THREE.Vector3(-size, size*1.5,-size)),false, new THREE.Vector3(0,-200,0)); + addNode(position.clone().add(new THREE.Vector3(-size, size*1.5, size)),false, new THREE.Vector3(0,-200,0)); + addNode(position.clone().add(new THREE.Vector3( size, size*1.5, size)),false, new THREE.Vector3(0,-200,0)); + addNode(position.clone().add(new THREE.Vector3( size, size*1.5,-size)),false, new THREE.Vector3(0,-200,0)); + + addNode(position.clone().add(new THREE.Vector3(0, size*1.5*2,0)),false, new THREE.Vector3(0,-400,0)); + + addEdge(0, 1, 1.0, 0.284 , 30.0e6); + addEdge(0, 2, 1.0, 0.284 , 30.0e6); + addEdge(0, 3, 1.0, 0.284 , 30.0e6); + addEdge(0, 4, 1.0, 0.284 , 30.0e6); + + addEdge(1, 2, 1.0, 0.284 , 30.0e6); + addEdge(2, 3, 1.0, 0.284 , 30.0e6); + addEdge(3, 4, 1.0, 0.284 , 30.0e6); + addEdge(4, 1, 1.0, 0.284 , 30.0e6); + + addEdge(5, 1, 1.0, 0.284 , 30.0e6); + addEdge(5, 2, 1.0, 0.284 , 30.0e6); + addEdge(5, 3, 1.0, 0.284 , 30.0e6); + addEdge(5, 4, 1.0, 0.284 , 30.0e6); + + + + // console.log(setup) +} + +function createVoxelnotRhino(size,position){ + //down square + addNode(position.clone().add(new THREE.Vector3(-size, 0,-size)),true, new THREE.Vector3(0,0,0));//0 + addNode(position.clone().add(new THREE.Vector3(-size, 0, 0)),true, new THREE.Vector3(0,0,0));//1//mid + addNode(position.clone().add(new THREE.Vector3(-size, 0, size)),true, new THREE.Vector3(0,0,0));//2 + addNode(position.clone().add(new THREE.Vector3( 0, 0, size)),true, new THREE.Vector3(0,0,0));//3//mid + addNode(position.clone().add(new THREE.Vector3( size, 0, size)),true, new THREE.Vector3(0,0,0));//4 + addNode(position.clone().add(new THREE.Vector3( size, 0, 0)),true, new THREE.Vector3(0,0,0));//5//mid + addNode(position.clone().add(new THREE.Vector3( size, 0,-size)),true, new THREE.Vector3(0,0,0));//6 + addNode(position.clone().add(new THREE.Vector3( 0, 0,-size)),true, new THREE.Vector3(0,0,0));//7//mid + + addEdge(0, 1, 1.0, 0.284 , 30.0e6); + addEdge(1, 2, 1.0, 0.284 , 30.0e6); + addEdge(2, 3, 1.0, 0.284 , 30.0e6); + addEdge(3, 4, 1.0, 0.284 , 30.0e6); + addEdge(4, 5, 1.0, 0.284 , 30.0e6); + addEdge(5, 6, 1.0, 0.284 , 30.0e6); + addEdge(6, 7, 1.0, 0.284 , 30.0e6); + addEdge(7, 0, 1.0, 0.284 , 30.0e6); + + addEdge(1, 3, 1.0, 0.284 , 30.0e6); + addEdge(3, 5, 1.0, 0.284 , 30.0e6); + addEdge(5, 7, 1.0, 0.284 , 30.0e6); + addEdge(7, 1, 1.0, 0.284 , 30.0e6); + + //up square + addNode(position.clone().add(new THREE.Vector3(-size, size*2,-size)),false, new THREE.Vector3(0,-400,0));//0+8 + addNode(position.clone().add(new THREE.Vector3(-size, size*2, 0)),false, new THREE.Vector3(0,-400,0));//1+8//mid + addNode(position.clone().add(new THREE.Vector3(-size, size*2, size)),false, new THREE.Vector3(0,-400,0));//2+8 + addNode(position.clone().add(new THREE.Vector3( 0, size*2, size)),false, new THREE.Vector3(0,-400,0));//3+8//mid + addNode(position.clone().add(new THREE.Vector3( size, size*2, size)),false, new THREE.Vector3(0,-400,0));//4+8 + addNode(position.clone().add(new THREE.Vector3( size, size*2, 0)),false, new THREE.Vector3(0,-400,0));//5+8//mid + addNode(position.clone().add(new THREE.Vector3( size, size*2,-size)),false, new THREE.Vector3(0,-400,0));//6+8 + addNode(position.clone().add(new THREE.Vector3( 0, size*2,-size)),false, new THREE.Vector3(0,-400,0));//7+8//mid + + addEdge(0+8, 1+8, 1.0, 0.284 , 30.0e6); + addEdge(1+8, 2+8, 1.0, 0.284 , 30.0e6); + addEdge(2+8, 3+8, 1.0, 0.284 , 30.0e6); + addEdge(3+8, 4+8, 1.0, 0.284 , 30.0e6); + addEdge(4+8, 5+8, 1.0, 0.284 , 30.0e6); + addEdge(5+8, 6+8, 1.0, 0.284 , 30.0e6); + addEdge(6+8, 7+8, 1.0, 0.284 , 30.0e6); + addEdge(7+8, 0+8, 1.0, 0.284 , 30.0e6); + + addEdge(1+8, 3+8, 1.0, 0.284 , 30.0e6); + addEdge(3+8, 5+8, 1.0, 0.284 , 30.0e6); + addEdge(5+8, 7+8, 1.0, 0.284 , 30.0e6); + addEdge(7+8, 1+8, 1.0, 0.284 , 30.0e6); + + //left square + + addNode(position.clone().add(new THREE.Vector3(-size, size,-size)),false, new THREE.Vector3(0,0,0));//0+16 + addNode(position.clone().add(new THREE.Vector3( size, size,-size)),false, new THREE.Vector3(0,0,0));//1+16 + + addEdge(0, 16, 1.0, 0.284 , 30.0e6); + addEdge(16, 8, 1.0, 0.284 , 30.0e6); + + addEdge(6, 17, 1.0, 0.284 , 30.0e6); + addEdge(17, 14, 1.0, 0.284 , 30.0e6); + + addEdge(16, 07, 1.0, 0.284 , 30.0e6); + addEdge(15, 16, 1.0, 0.284 , 30.0e6); + addEdge(17, 15, 1.0, 0.284 , 30.0e6); + addEdge(07, 17, 1.0, 0.284 , 30.0e6); + + //right square + addNode(position.clone().add(new THREE.Vector3(-size, size, size)),false, new THREE.Vector3(0,0,0));//0+18 + addNode(position.clone().add(new THREE.Vector3( size, size, size)),false, new THREE.Vector3(0,0,0));//1+18 + + addEdge(2, 18, 1.0, 0.284 , 30.0e6); + addEdge(18, 10, 1.0, 0.284 , 30.0e6); + + addEdge(4, 19, 1.0, 0.284 , 30.0e6); + addEdge(19, 12, 1.0, 0.284 , 30.0e6); + + addEdge(18, 03, 1.0, 0.284 , 30.0e6); + addEdge(11, 18, 1.0, 0.284 , 30.0e6); + addEdge(19, 11, 1.0, 0.284 , 30.0e6); + addEdge(03, 19, 1.0, 0.284 , 30.0e6); + + //front square + addEdge(16, 01, 1.0, 0.284 , 30.0e6); + addEdge(09, 16, 1.0, 0.284 , 30.0e6); + addEdge(18, 09, 1.0, 0.284 , 30.0e6); + addEdge(01, 18, 1.0, 0.284 , 30.0e6); + + + //back square + addEdge(17, 05, 1.0, 0.284 , 30.0e6); + addEdge(13, 17, 1.0, 0.284 , 30.0e6); + addEdge(19, 13, 1.0, 0.284 , 30.0e6); + addEdge(05, 19, 1.0, 0.284 , 30.0e6); + +} + +function createSimpleSetupnotRhino(size,position){ + addNode(position.clone().add(new THREE.Vector3(-0, 2*size,-0)),true, new THREE.Vector3(0,0,0));//0 + addNode(position.clone().add(new THREE.Vector3(-0, 0,-0)),true, new THREE.Vector3(0,0,0));//0 + addNode(position.clone().add(new THREE.Vector3(2*size, size,)),false, new THREE.Vector3(0,-200,0));//0 + + addEdge(0, 2, 1.0, 0.284 , 30.0e6); + addEdge(1, 2, 2.0, 0.284 , 30.0e6); + +} + +///old setups +var setupSimple={ + nodes: [ + { + id: 'n0', + parent: '11', + degrees_of_freedom:[0,1,2,3,4,5] , + restrained_degrees_of_freedom:[true,true,true,true,true,true], + position: { x: 0, y: 10,z:0 }, + force:{ x: 0, y: 0,z:0 }, + displacement: { x: 0, y: -0,z:0 }, + angle: { x: 0, y: 0,z:0 } + }, + { + id: 'n1', + parent: '11', + degrees_of_freedom:[6,7,8,9,10,11] , + restrained_degrees_of_freedom:[true,true,true,true,true,true], + position: { x: 0, y: 0,z:0 }, + force:{ x: 0, y: 0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 } + }, + { + id: 'n2', + parent: '11', + degrees_of_freedom:[12,13,14,15,16,17,18] , + restrained_degrees_of_freedom:[false,false,false,false,false,false], + position: { x: 10, y: 5,z:0 }, + force:{ x: 0, y: -200,z:0 }, + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 } + } + ], + edges: [ + { id: 'e0', source: 0, target: 2 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + { id: 'e1', source: 1, target: 2 ,area:2.0,density:0.284,stiffness:30.0e6,stress:0} + ], + + //material properties - AISI 1095 Carbon Steel (Spring Steel) + ndofs : 3*6, + + animation : { + + showDisplacement : true, + exageration : 10000, + speed:3.0 + + }, + viz : { + + + minStress:-500, + maxStress: 500, + colorMaps:[YlGnBu, winter, coolwarm,jet], + colorMap:0, + + }, + solve: solveFea, + bar:false + +}; + +var oldVoxel={ + nodes: [ + { + id: 'n0', + parent: '11', + degrees_of_freedom:[0,1,2] , //todo automate + restrained_degrees_of_freedom:[true,true,true], + position: { x: 0, y: 0,z:0 }, + force:{ x: 0, y: 0,z:0 }, + displacement: { x: 0, y: 0,z:0 } + }, + { + id: 'n1', + parent: '11', + degrees_of_freedom:[3,4,5] , + restrained_degrees_of_freedom:[false,false,false], + position: { x: -5, y: 7.5,z:-5 }, + force:{ x: 0, y: -200,z:0 }, + displacement: { x: 0, y: 0,z:0 } + }, + { + id: 'n2', + parent: '11', + degrees_of_freedom:[6,7,8] , + restrained_degrees_of_freedom:[false,false,false], + position: { x: -5, y: 7.5,z:5 }, + force:{ x: 0, y: -200,z:0 }, + displacement: { x: 0, y: 0,z:0 } + }, + { + id: 'n3', + parent: '11', + degrees_of_freedom:[9,10,11] , + restrained_degrees_of_freedom:[false,false,false], + position: { x: 5, y: 7.5,z:5 }, + force:{ x: 0, y:-200,z:0 }, + displacement: { x: 0, y: 0,z:0 } + }, + { + id: 'n4', + parent: '11', + degrees_of_freedom:[12,13,14] , + restrained_degrees_of_freedom:[false,false,false], + position: { x: 5, y: 7.5,z: -5 }, + force:{ x: 0, y: -200,z:0 }, + displacement: { x: 0, y: 0,z:0 } + }, + { + id: 'n5', + parent: '11', + degrees_of_freedom:[15,16,17] , + restrained_degrees_of_freedom:[false,false,false], + position: { x: 0, y: 15,z: 0 }, + force:{ x: 0, y: -400,z:0 }, + displacement: { x: 0, y: 0,z:0 } + } + ], + edges: [ + { id: 'e0', source: 0, target: 1 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + { id: 'e1', source: 0, target: 2 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + { id: 'e2', source: 0, target: 3 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + { id: 'e3', source: 0, target: 4 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + + { id: 'e4', source: 1, target: 2 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + { id: 'e5', source: 2, target: 3 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + { id: 'e6', source: 3, target: 4 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + { id: 'e7', source: 4, target: 1 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + + { id: 'e8', source: 5, target: 1 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + { id: 'e9', source: 5, target: 2 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + { id: 'e10', source: 5, target: 3 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + { id: 'e11', source: 5, target: 4 ,area:1.0,density:0.284,stiffness:30.0e6,stress:0 }, + + ], + //material properties - AISI 1095 Carbon Steel (Spring Steel) + ndofs : 6*3, + + animation : { + + showDisplacement : true, + exageration : 10000, + speed:3.0 + + }, + viz : { + + + minStress:-500, + maxStress: 500, + colorMaps:[YlGnBu, winter, coolwarm,jet], + colorMap:0, + + }, + solve: solveFea, + bar:true + +}; + +var setupEmpty={//empty + nodes: [ + ], + edges: [ + ], + + //material properties - AISI 1095 Carbon Steel (Spring Steel) + ndofs : 3*6, + + animation : { + + showDisplacement : true, + exageration : 2000, + speed:3.0 + + }, + viz : { + + + minStress:-500, + maxStress: 500, + colorMaps:[coolwarm,YlGnBu, winter ,jet], + colorMap:0, + + }, + solve: solveFea, + bar:false + +}; + +/////////////////////drawing utils////////////////////// + +function addNode(position,restrained,force){ + var bar=setup.bar; + var numNode=setup.nodes.length; + setup.nodes.push({ + id: 'n'+numNode, + parent: '11', + degrees_of_freedom:[numNode*3,numNode*3+1,numNode*3+2] , + restrained_degrees_of_freedom:[restrained,restrained,restrained], + position: toPos(position), + force:toPos(force), + displacement: { x: 0, y: 0,z:0 }, + angle: { x: 0, y: 0,z:0 } + }); + + setup.nodes[numNode].id='n'+numNode; + setup.nodes[numNode].position=toPos(position); + setup.nodes[numNode].force=toPos(force); + setup.nodes[numNode].degrees_of_freedom=[numNode*3,numNode*3+1,numNode*3+2]; + setup.nodes[numNode].restrained_degrees_of_freedom=[restrained,restrained,restrained]; + setup.ndofs = 3 * setup.nodes.length; + if(!bar){ + setup.nodes[numNode].degrees_of_freedom=[numNode*6,numNode*6+1,numNode*6+2,numNode*6+3,numNode*6+4,numNode*6+5]; + if(restrained){ + restrained=[true,true,true,true,true,true]; + }else{ + restrained=[false,false,false,false,false,false]; + } + setup.nodes[numNode].restrained_degrees_of_freedom=restrained; + setup.ndofs = 6 * setup.nodes.length; + } +} + +function addEdge(source,target,area,density,stiffness){ + if (edgeNeeded(source,target)){ + var numEdge=setup.edges.length; + + setup.edges.push({ id: 'e'+numEdge, source: source, target: target ,area:area,density:density,stiffness:stiffness,stress:0 }); + + // setup.edges[numEdge].id='e'+numEdge; + // setup.edges[numEdge].source=source; + // setup.edges[numEdge].target=target; + // setup.edges[numEdge].area=area; + // setup.edges[numEdge].density=density; + // setup.edges[numEdge].stiffness=stiffness; + + } + +} + +function checkandAdd(pos){ + var restrained=false; + var force= new THREE.Vector3(0,0,0); + var node=nodeAt(setup,pos); + if(typeof node === 'undefined'){ //doesn't exist + addNode(toThreeVec(pos),restrained, force); + return parseInt(setup.nodes[setup.nodes.length-1].id.substring(1)); + + }else{ + + // setup.nodes.find(v => v.name === node.name).enabled = false; + // if(restrained){ + // restrain(node.id) + // } + // addForce(node.id,force); + return parseInt(node.id.substring(1));//return name + } + +} + +function linkNodes(nodesIndices){ //create square/circle + for(var i=0;i<nodesIndices.length-1;i++){ + addEdge(nodesIndices[i], nodesIndices[i+1], 1.0, 0.284 , 30.0e6); + + } + addEdge(nodesIndices[nodesIndices.length-1], nodesIndices[0], 1.0, 0.284 , 30.0e6); +} + +function restrain(name){ + var restrained; + if(!setup.bar){ + restrained=[true,true,true,true,true,true]; + }else{ + restrained=[true,true,true]; + } + setup.nodes.find(v => v.id === name).restrained_degrees_of_freedom=restrained; + +} + +function addForce(name,force){ + var node=setup.nodes.find(v => v.id === name); + node.force.x += force.x; + node.force.y += force.y; + node.force.z += force.z; +} + +function restrainBelow(y){ + for(var i=0;i<setup.nodes.length;i++){ + if(setup.nodes[i].position.y<=y){ + if(setup.bar){ + setup.nodes[i].restrained_degrees_of_freedom=[true,true,true]; + }else{ + setup.nodes[i].restrained_degrees_of_freedom=[true,true,true,true,true,true]; + } + } + } +} + +function addForceAbove(y,force){ + for(var i=0;i<setup.nodes.length;i++){ + if(setup.nodes[i].position.y>=y){ + setup.nodes[i].force.x += force.x; + setup.nodes[i].force.y += force.y; + setup.nodes[i].force.z += force.z; + } + } +} + +//////////// \ No newline at end of file diff --git a/01_Code/physical_computing_interface/simulation/visualization/main.js b/01_Code/physical_computing_interface/simulation/visualization/main.js new file mode 100644 index 0000000000000000000000000000000000000000..91f0247fe6b61bbed16b6bbbd35704bce1dd4cbf --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/visualization/main.js @@ -0,0 +1,379 @@ +var color1= 0xffffff; /*white*/ +var color2= 0x020227; /*kohly*/ +var color3= 0x1c5c61; /*teal*/ +var color4= "#fa6e70"; //red/orange +var color5="#380152"; //purple +var color6="#696767"; //grey +var setup; +var simulationContainerName="simulation"; +var simulationContainerName1="webgl1"; +var simulationContainer1=document.getElementById( simulationContainerName1 ); +var simulationContainer=document.getElementById( simulationContainerName ); + + + +function gui(){ + var gui = new dat.GUI(); + var f1 = gui.addFolder('Displacement Animation'); + f1.add(setup.animation, 'showDisplacement'); + f1.add(setup.animation, 'exageration', 0, 10000); + f1.add(setup.animation, 'speed', 0, 5); + + var f2 = gui.addFolder('Stresses Visualization'); + f2.add(setup.viz, 'minStress', -1000, 0).listen(); + f2.add(setup.viz, 'maxStress', 0, 1000).listen(); + f2.add(setup.viz, 'colorMap', {coolwarm:0, YlGnBu:1, winter:2,jet:3}); + + // gui.add(setup, 'solve'); + + for (j in f2.__controllers) f2.__controllers[j].onChange (colorEdges); + +} + +var line, renderer, scene, camera, camera2, controls; +var line1; +var matLineBasic, matLineDashed; +var stats; +// var gui; +// viewport +// var insetWidth; +// var insetHeight; +var counter=0; +var clock = new THREE.Clock(); + +function init() { + renderer = new THREE.WebGLRenderer( { antialias: true } ); + renderer.setPixelRatio( window.devicePixelRatio ); + renderer.setClearColor( color1, 1.0 ); + renderer.setSize( getWidth(), getHeight() ); + simulationContainer1.appendChild( renderer.domElement ); + scene = new THREE.Scene(); + camera = new THREE.PerspectiveCamera( 40, getWidth() / getHeight(), 1, 1000 ); + camera.position.set( - 40, 0, 60 ); + + controls = new THREE.OrbitControls( camera, renderer.domElement ); + controls.minDistance = 10; + controls.maxDistance = 500; + matLineBasic = new THREE.LineMaterial( { + color: 0xffffff, + linewidth: 5, // in pixels + vertexColors: THREE.VertexColors, + //resolution: // to be set by renderer, eventually + dashed: false, + visible:false + } ); + // matLineDashed = new THREE.LineMaterial( { + // color: 0xffffff, + // linewidth: 5, // in pixels + // vertexColors: THREE.VertexColors, + // //resolution: // to be set by renderer, eventually + // dashed: true, + // dashSize : 1.0, + // gapSize : 1.0 + + // } ); + + // matLineDashed.defines.USE_DASH = ""; + matLineDashed = new THREE.LineMaterial( { + color: 0xffffff, + linewidth: 5, // in pixels + vertexColors: THREE.VertexColors, + //resolution: // to be set by renderer, eventually + dashed: false + } ); + + + + + + + + var helper = new THREE.GridHelper( 50, 50 ); + helper.position.y = -5; + helper.material.opacity = 0.5; + helper.material.transparent = true; + // scene.add( helper ); + + // draw forces + + // draw degrees of freedom + simulationContainer.addEventListener( 'resize', onWindowResize, false ); + onWindowResize(); + + // gui(); + + +} +//////////////////////Threejs utils////////////////////////////////////// + +function drawStructure(){ + //draw edges + for(var i=0;i<setup.edges.length;i++){ + createEdge(setup.nodes[setup.edges[i].source].position,setup.nodes[setup.edges[i].target].position,setup.edges[i].id),false; + createEdge(setup.nodes[setup.edges[i].source].position,setup.nodes[setup.edges[i].target].position,setup.edges[i].id,true); + } + + // draw nodes + for(var i=0;i<setup.nodes.length;i++){ + createNode(setup.nodes[i].position,setup.nodes[i].id,false,setup.nodes[i].restrained_degrees_of_freedom[0]); + createNode(setup.nodes[i].position,setup.nodes[i].id,true,setup.nodes[i].restrained_degrees_of_freedom[0]); + } + + drawForces(); +} + +function createEdge(fromPoint,toPoint,name,displacement){ + + fromPoint=toThreeVec(fromPoint); + toPoint=toThreeVec(toPoint); + var positions = []; + var colors = []; + var points =[fromPoint,toPoint]; + + var spline = new THREE.CatmullRomCurve3( points ); + var divisions = Math.round( 12 * points.length ); + + var color = new THREE.Color(); + + for ( var i = 0, l = divisions; i <= l; i ++ ) { + var point = spline.getPoint( i / l ); + positions.push( point.x, point.y, point.z ); + + // color.setHSL( i / l, 1.0, 0.5 ); + color=interpolateLinearly(i / l, setup.viz.colorMaps[setup.viz.colorMap]); + // color=interpolateLinearly(i / l, coolwarm); + colors.push( color[0], color[1], color[2]); + } + + var geometry = new THREE.LineGeometry(); + geometry.setPositions( positions ); + geometry.setColors( colors ); + + + var line; + if(displacement){ + line = new THREE.Line2( geometry, matLineDashed ); + }else{ + line = new THREE.Line2( geometry, matLineBasic ); + } + line.computeLineDistances(); + line.scale.set( 1, 1, 1 ); + + if(displacement){ + line.name='d'+name; + }else{ + line.name=name; + } + + scene.add( line ); + +} + +function createNode(point,name,displacement,restrained){ + var geometry = new THREE.BoxGeometry( 1, 1, 1 ); + var material; + + if(restrained){ + material = new THREE.MeshBasicMaterial( {color: color4} ); + }else{ + material = new THREE.MeshBasicMaterial( {color: color3} ); + } + + if(displacement){ + material.transparent=true; + material.opacity=0.7; + }else{ + material.transparent=true; + material.opacity=0.0; + + } + var cube = new THREE.Mesh( geometry, material ); + cube.position.set(point.x, point.y, point.z); + cube.scale.set(0.5, 0.5,0.5); + + if(displacement){ + cube.name='d'+name; + }else{ + cube.name=name; + } + scene.add( cube ); + +} + +function editEdge(fromPoint,toPoint,name){ + var edge = scene.getObjectByName(name); + var positions = []; + var points =[fromPoint,toPoint]; + + var spline = new THREE.CatmullRomCurve3( points ); + var divisions = Math.round( 12 * points.length ); + + // var color = new THREE.Color(); + + for ( var i = 0, l = divisions; i <=l; i ++ ) { + var point = spline.getPoint( i / l ); + positions.push( point.x, point.y, point.z ); + + } + // edge.geometry.setDrawRange( 0, newValue ); + // edge.geometry.setPositions( positions ); + // edge.geometry.attributes.position.needsUpdate = true; + edge.geometry.setPositions( positions ); + // geometry.setColors( colors ); + + +} + +function drawForces(){ + for(var i=0;i<setup.nodes.length;i++){ + + var dx=0.1; + var o=toThreeVec(setup.nodes[i].position); + var dir = toThreeVec(setup.nodes[i].force); + var length = dir.length (); + dir.normalize(); + var scale=0.002; + if(length!=0){ + var arrowhelper=new THREE.ArrowHelper( dir, o.sub(dir), scale*length, color4 ,scale*length, scale*length); + // var arrowhelper=new THREE.ArrowHelper( dir, o.sub(dir), scale*length, color5); + scene.add(arrowhelper); + } + } +} + +/////// +function animate() { + requestAnimationFrame( animate ); + // main scene + onWindowResize() ; + + renderer.setClearColor( color1, 1 ); + renderer.setViewport( 0, 0, getWidth(), getHeight() ); + + // renderer will set this eventually + matLineBasic.resolution.set( getWidth(), getHeight() ); // resolution of the viewport + matLineDashed.resolution.set( getWidth(),getHeight() ); // resolution of the viewport + renderer.render( scene, camera ); + + var timeElapsed = clock.getElapsedTime(); + var speed=setup.animation.speed; + var exageration=setup.animation.exageration; + // var exageration=0.01; + + if(setup.animation.showDisplacement){ + //displacement animation edges + for(var i=0;i<setup.edges.length;i++){ + var fromPoint=new THREE.Vector3(0,0,0); + var toPoint=new THREE.Vector3(0,0,0); + var node1=setup.nodes[setup.edges[i].source]; + var node2=setup.nodes[setup.edges[i].target]; + fromPoint.x = node1.position.x+node1.displacement.x*exageration+ Math.sin(timeElapsed*speed)* node1.displacement.x*exageration ; + fromPoint.y = node1.position.y+node1.displacement.y*exageration+ Math.sin(timeElapsed*speed)* node1.displacement.y*exageration ; + fromPoint.z = node1.position.z+node1.displacement.z*exageration+ Math.sin(timeElapsed*speed)* node1.displacement.z*exageration ; + toPoint.x = node2.position.x+node2.displacement.x*exageration+ Math.sin(timeElapsed*speed)* node2.displacement.x*exageration ; + toPoint.y = node2.position.y+node2.displacement.y*exageration+ Math.sin(timeElapsed*speed)* node2.displacement.y*exageration ; + toPoint.z = node2.position.z+node2.displacement.z*exageration+ Math.sin(timeElapsed*speed)* node2.displacement.z*exageration ; + + editEdge(fromPoint,toPoint,'d'+setup.edges[i].id); + + } + //displacement animation nodes + for(var i=0;i<setup.nodes.length;i++){ + var node = scene.getObjectByName('d'+setup.nodes[i].id); + // var origPos=toThreeVec(setup.nodes[i].position); + // var displacement=toThreeVec(setup.nodes[i].displacement).multiplyScalar(exageration); + // var currPos=origPos.clone().addVectors(displacement,displacement.clone().multiplyScalar(Math.sin(timeElapsed*speed))); + // nodeD.position.set(currPos.x,currPos.y,currPos.z); + node.position.x = setup.nodes[i].position.x+setup.nodes[i].displacement.x*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].displacement.x*exageration ; + node.position.y = setup.nodes[i].position.y+setup.nodes[i].displacement.y*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].displacement.y*exageration ; + node.position.z = setup.nodes[i].position.z+setup.nodes[i].displacement.z*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].displacement.z*exageration ; + + node.rotation.x = 0+setup.nodes[i].angle.x*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].angle.x*exageration ; + node.rotation.y = 0+setup.nodes[i].angle.y*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].angle.y*exageration ; + node.rotation.z = 0+setup.nodes[i].angle.z*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].angle.z*exageration ; + + } + + } + +} + +function animateEuler() { + requestAnimationFrame( animateEuler ); + // main scene + renderer.setClearColor( color2, 1 ); + renderer.setViewport( 0, 0, getWidth(), getHeight() ); + // renderer will set this eventually + matLineBasic.resolution.set( getWidth(), getHeight() ); // resolution of the viewport + matLineDashed.resolution.set( getWidth(), getHeight() ); // resolution of the viewport + renderer.render( scene, camera ); + + var timeElapsed = clock.getElapsedTime(); + var speed=setup.animation.speed; + var exageration=setup.animation.exageration; + // var exageration=0.01; + + doTimeStep(setup,dt); + + if(setup.animation.showDisplacement){ + //displacement animation edges + // for(var i=0;i<setup.edges.length;i++){ + // var fromPoint=new THREE.Vector3(0,0,0); + // var toPoint=new THREE.Vector3(0,0,0); + // var node1=setup.nodes[setup.edges[i].source]; + // var node2=setup.nodes[setup.edges[i].target]; + // fromPoint.x = node1.position.x+node1.displacement.x*exageration+ Math.sin(timeElapsed*speed)* node1.displacement.x*exageration ; + // fromPoint.y = node1.position.y+node1.displacement.y*exageration+ Math.sin(timeElapsed*speed)* node1.displacement.y*exageration ; + // fromPoint.z = node1.position.z+node1.displacement.z*exageration+ Math.sin(timeElapsed*speed)* node1.displacement.z*exageration ; + // toPoint.x = node2.position.x+node2.displacement.x*exageration+ Math.sin(timeElapsed*speed)* node2.displacement.x*exageration ; + // toPoint.y = node2.position.y+node2.displacement.y*exageration+ Math.sin(timeElapsed*speed)* node2.displacement.y*exageration ; + // toPoint.z = node2.position.z+node2.displacement.z*exageration+ Math.sin(timeElapsed*speed)* node2.displacement.z*exageration ; + + // editEdge(fromPoint,toPoint,'d'+setup.edges[i].id); + + // } + //displacement animation nodes + for(var i=0;i<setup.nodes.length;i++){ + var node = scene.getObjectByName('d'+setup.nodes[i].id); + // var origPos=toThreeVec(setup.nodes[i].position); + // var displacement=toThreeVec(setup.nodes[i].displacement).multiplyScalar(exageration); + // var currPos=origPos.clone().addVectors(displacement,displacement.clone().multiplyScalar(Math.sin(timeElapsed*speed))); + // nodeD.position.set(currPos.x,currPos.y,currPos.z); + node.position.x = setup.nodes[i].currPosition.x; + node.position.y = setup.nodes[i].currPosition.y; + node.position.z = setup.nodes[i].currPosition.z; + + // node.rotation.x = 0+setup.nodes[i].angle.x*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].angle.x*exageration ; + // node.rotation.y = 0+setup.nodes[i].angle.y*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].angle.y*exageration ; + // node.rotation.z = 0+setup.nodes[i].angle.z*exageration+ Math.sin(timeElapsed*speed)* setup.nodes[i].angle.z*exageration ; + + } + + } + +} + +function onWindowResize() { + camera.aspect = getWidth() / getHeight(); + camera.updateProjectionMatrix(); + renderer.setSize( getWidth(), getHeight() ); +} + +var getWidth=function(){ + // return container.style.width; + return $('#'+simulationContainerName).width() ; +}; + +var getHeight=function(){ + // return container.style.height; + return $('#'+simulationContainerName).height() ; +}; + + + + + + + + + diff --git a/01_Code/physical_computing_interface/simulation/visualization/utils.js b/01_Code/physical_computing_interface/simulation/visualization/utils.js new file mode 100644 index 0000000000000000000000000000000000000000..8da5e8594ac94caeb4473dbd3f17ea3ba317871f --- /dev/null +++ b/01_Code/physical_computing_interface/simulation/visualization/utils.js @@ -0,0 +1,267 @@ +////////////utils///////////////////// +function map (value, x1, y1, x2, y2) { + return (value - x1) * (y2 - x2) / (y1 - x1) + x2; +} + +function enforceBounds(x) { + if (x < 0) { + return 0; + } else if (x > 1){ + return 1; + } else { + return x; + } +} + +function interpolateLinearly(x, values) { + // Split values into four lists + var x_values = []; + var r_values = []; + var g_values = []; + var b_values = []; + for (i in values) { + x_values.push(values[i][0]); + r_values.push(values[i][1][0]); + g_values.push(values[i][1][1]); + b_values.push(values[i][1][2]); + } + var i = 1; + while (x_values[i] < x) { + i = i+1; + } + i = i-1; + var width = Math.abs(x_values[i] - x_values[i+1]); + var scaling_factor = (x - x_values[i]) / width; + // Get the new color values though interpolation + var r = r_values[i] + scaling_factor * (r_values[i+1] - r_values[i]) + var g = g_values[i] + scaling_factor * (g_values[i+1] - g_values[i]) + var b = b_values[i] + scaling_factor * (b_values[i+1] - b_values[i]) + return [enforceBounds(r), enforceBounds(g), enforceBounds(b)]; +} + +function toThreeVec(point){ + return new THREE.Vector3(point.x,point.y,point.z); +} + +function toPosition(array){ + return { x:array[0] ,y:array[1],z:array[2]}; + +} + +function toTf3D(point){ + return tf.tensor([point.x,point.y,point.z]); + +} + +function toPos(point){ + return { x:point.x ,y:point.y,z:point.z}; + +} + +function tf_delete(tensor,remove_indices,axis){ + var unstacked=tf.unstack(tensor,axis); + var newTensor=[]; + for(var i=0;i<unstacked.length;i++){ + if(!remove_indices.includes(i)){ + newTensor.push(unstacked[i]); + } + } + return tf.stack(newTensor,axis); +} + +function add(p1,p2){ + return {x:p1.x+p2.x,y:p1.y+p2.y,z:p1.z+p2.z}; +} + +//////////nodes/////////////// + +function nodeAt(setup,pos){ + return setup.nodes.find(node => node.position.x==pos.x && node.position.y== pos.y && node.position.z== pos.z); + return setup.nodes.filter(node => node.position.x==pos.x && node.position.y== pos.y && node.position.z== pos.z); +} +function getNodebyName(setup,name){ + return setup.nodes.find(node => node.name===name); +} +function edgeNeeded(source,target){ + var e=setup.edges.find(edge => (edge.source===source && edge.target===target) || (edge.source===target && edge.target===source)); + var b=(typeof e === 'undefined'); + return b; +} + +//////////////// + +function updateDisplacement(X){ + var count=0; + for(var i=0;i<setup.nodes.length;i++){ + if(!setup.nodes[i].restrained_degrees_of_freedom[0]){ + setup.nodes[i].displacement.x =X[count++]; + } + if(!setup.nodes[i].restrained_degrees_of_freedom[1]){ + setup.nodes[i].displacement.y =X[count++]; + } + if(!setup.nodes[i].restrained_degrees_of_freedom[2]){ + setup.nodes[i].displacement.z =X[count++]; + } + if(!setup.bar){ + if(!setup.nodes[i].restrained_degrees_of_freedom[3]){ + setup.nodes[i].angle.x =X[count++]; + } + if(!setup.nodes[i].restrained_degrees_of_freedom[4]){ + setup.nodes[i].angle.y =X[count++]; + } + if(!setup.nodes[i].restrained_degrees_of_freedom[5]){ + setup.nodes[i].angle.z =X[count++]; + } + } + } +} + +function updateStresses(S){ + + setup.viz.minStress=Math.min(...S)*1.1; + setup.viz.maxStress=Math.max(...S)*1.1; + + var count=0; + for(var ii=0;ii<setup.edges.length;ii++){ + var element=setup.edges[ii]; + element.stress=S[ii]; + } + if(!node){ + colorEdges(); + } + +} + +function colorEdges(){ + for(var ii=0;ii<setup.edges.length;ii++){ + var element=setup.edges[ii]; + colorEdge(element.stress,element.id); + colorEdge(element.stress,'d'+element.id); + } +} + +function colorEdge(val,name){ + + var colors = []; + var val=map(val,setup.viz.minStress,setup.viz.maxStress,1.0,0.0); + var divisions = Math.round( 12 * 2 ); + + for ( var i = 0, l = divisions; i <= l; i ++ ) { + color=interpolateLinearly(val, setup.viz.colorMaps[setup.viz.colorMap]); + colors.push( color[0], color[1], color[2]); + } + var edge = scene.getObjectByName(name); + edge.geometry.setColors( colors ); + +} + +//////////inverse/////////////// +// Lower Upper Solver +function lusolve(A, b, update) { + var lu = ludcmp(A, update) + if (lu === undefined){ + console.log("Singular Matrix!") + return // Singular Matrix! + } + return lubksb(lu, b, update) +} + +// Lower Upper Decomposition +function ludcmp(A, update) { + // A is a matrix that we want to decompose into Lower and Upper matrices. + var d = true; + var n = A.length; + // var n= A.shape[0]; + var idx = new Array(n) // Output vector with row permutations from partial pivoting + var vv = new Array(n) // Scaling information + + for (var i=0; i<n; i++) { + var max = 0 + for (var j=0; j<n; j++) { + var temp = Math.abs(A[i][j]) + if (temp > max) max = temp + } + if (max == 0) return // Singular Matrix! + vv[i] = 1 / max // Scaling + } + + if (!update) { // make a copy of A + var Acpy = new Array(n) + for (var i=0; i<n; i++) { + var Ai = A[i] + Acpyi = new Array(Ai.length) + for (j=0; j<Ai.length; j+=1) Acpyi[j] = Ai[j] + Acpy[i] = Acpyi + } + A = Acpy + } + + var tiny = 1e-20 // in case pivot element is zero + for (var i=0; ; i++) { + for (var j=0; j<i; j++) { + var sum = A[j][i] + for (var k=0; k<j; k++) sum -= A[j][k] * A[k][i]; + A[j][i] = sum + } + var jmax = 0 + var max = 0; + for (var j=i; j<n; j++) { + var sum = A[j][i] + for (var k=0; k<i; k++) sum -= A[j][k] * A[k][i]; + A[j][i] = sum + var temp = vv[j] * Math.abs(sum) + if (temp >= max) { + max = temp + jmax = j + } + } + if (i <= jmax) { + for (var j=0; j<n; j++) { + var temp = A[jmax][j] + A[jmax][j] = A[i][j] + A[i][j] = temp + } + d = !d; + vv[jmax] = vv[i] + } + idx[i] = jmax; + if (i == n-1) break; + var temp = A[i][i] + if (temp == 0) A[i][i] = temp = tiny + temp = 1 / temp + for (var j=i+1; j<n; j++) A[j][i] *= temp + } + return {A:A, idx:idx, d:d} +} + +// Lower Upper Back Substitution +function lubksb(lu, b, update) { + // solves the set of n linear equations A*x = b. + // lu is the object containing A, idx and d as determined by the routine ludcmp. + var A = lu.A + var idx = lu.idx + var n = idx.length + + if (!update) { // make a copy of b + var bcpy = new Array(n) + for (var i=0; i<b.length; i+=1) bcpy[i] = b[i] + b = bcpy + } + + for (var ii=-1, i=0; i<n; i++) { + var ix = idx[i] + var sum = b[ix] + b[ix] = b[i] + if (ii > -1) + for (var j=ii; j<i; j++) sum -= A[i][j] * b[j] + else if (sum) + ii = i + b[i] = sum + } + for (var i=n-1; i>=0; i--) { + var sum = b[i] + for (var j=i+1; j<n; j++) sum -= A[i][j] * b[j] + b[i] = sum / A[i][i] + } + return b // solution vector x +} \ No newline at end of file diff --git a/01_Code/physical_computing_interface/style.css b/01_Code/physical_computing_interface/style.css index 106c2044b7b4f242ad93857a4e2f193ef7b9de4a..441e38d8dc098c82ea9a279ad432ec533dede4aa 100644 --- a/01_Code/physical_computing_interface/style.css +++ b/01_Code/physical_computing_interface/style.css @@ -94,6 +94,14 @@ body,html{width:100%;height:100%;padding:0;margin:0;} color: var(--color2); } +#webgl1{ + top:100; + bottom: var(--bottom); + overflow-y: hidden; + font-family: var(--font); + color: var(--color2); +} + #graph{ background-color: var(--color2); /* background-image: linear-gradient(+90deg, #ffffff, #ffffff); */